1 //===- PDLToPDLInterp.h - PDL to PDL Interpreter conversion -----*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // This file provides a pass for PDL to PDL Interpreter dialect conversion. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #ifndef MLIR_CONVERSION_PDLTOPDLINTERP_PDLTOPDLINTERP_H 14 #define MLIR_CONVERSION_PDLTOPDLINTERP_PDLTOPDLINTERP_H 15 16 #include "mlir/Support/LLVM.h" 17 18 namespace mlir { 19 class ModuleOp; 20 class Operation; 21 template <typename OpT> 22 class OperationPass; 23 class PDLPatternConfigSet; 24 25 #define GEN_PASS_DECL_CONVERTPDLTOPDLINTERP 26 #include "mlir/Conversion/Passes.h.inc" 27 28 /// Creates and returns a pass to convert PDL ops to PDL interpreter ops. 29 std::unique_ptr<OperationPass<ModuleOp>> createPDLToPDLInterpPass(); 30 31 /// Creates and returns a pass to convert PDL ops to PDL interpreter ops. 32 /// `configMap` holds a map of the configurations for each pattern being 33 /// compiled. 34 std::unique_ptr<OperationPass<ModuleOp>> createPDLToPDLInterpPass( 35 DenseMap<Operation *, PDLPatternConfigSet *> &configMap); 36 37 } // namespace mlir 38 39 #endif // MLIR_CONVERSION_PDLTOPDLINTERP_PDLTOPDLINTERP_H 40