//===- PDLInterp.cpp - PDL Interpreter Dialect ------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "mlir/Dialect/PDLInterp/IR/PDLInterp.h" #include "mlir/Dialect/PDL/IR/PDLTypes.h" #include "mlir/IR/BuiltinTypes.h" #include "mlir/IR/DialectImplementation.h" #include "mlir/Interfaces/FunctionImplementation.h" usingnamespacemlir; usingnamespacemlir::pdl_interp; #include "mlir/Dialect/PDLInterp/IR/PDLInterpOpsDialect.cpp.inc" //===----------------------------------------------------------------------===// // PDLInterp Dialect //===----------------------------------------------------------------------===// void PDLInterpDialect::initialize() { … } template <typename OpT> static LogicalResult verifySwitchOp(OpT op) { … } //===----------------------------------------------------------------------===// // pdl_interp::CreateOperationOp //===----------------------------------------------------------------------===// LogicalResult CreateOperationOp::verify() { … } static ParseResult parseCreateOperationOpAttributes( OpAsmParser &p, SmallVectorImpl<OpAsmParser::UnresolvedOperand> &attrOperands, ArrayAttr &attrNamesAttr) { … } static void printCreateOperationOpAttributes(OpAsmPrinter &p, CreateOperationOp op, OperandRange attrArgs, ArrayAttr attrNames) { … } static ParseResult parseCreateOperationOpResults( OpAsmParser &p, SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resultOperands, SmallVectorImpl<Type> &resultTypes, UnitAttr &inferredResultTypes) { … } static void printCreateOperationOpResults(OpAsmPrinter &p, CreateOperationOp op, OperandRange resultOperands, TypeRange resultTypes, UnitAttr inferredResultTypes) { … } //===----------------------------------------------------------------------===// // pdl_interp::ForEachOp //===----------------------------------------------------------------------===// void ForEachOp::build(::mlir::OpBuilder &builder, ::mlir::OperationState &state, Value range, Block *successor, bool initLoop) { … } ParseResult ForEachOp::parse(OpAsmParser &parser, OperationState &result) { … } void ForEachOp::print(OpAsmPrinter &p) { … } LogicalResult ForEachOp::verify() { … } //===----------------------------------------------------------------------===// // pdl_interp::FuncOp //===----------------------------------------------------------------------===// void FuncOp::build(OpBuilder &builder, OperationState &state, StringRef name, FunctionType type, ArrayRef<NamedAttribute> attrs) { … } ParseResult FuncOp::parse(OpAsmParser &parser, OperationState &result) { … } void FuncOp::print(OpAsmPrinter &p) { … } //===----------------------------------------------------------------------===// // pdl_interp::GetValueTypeOp //===----------------------------------------------------------------------===// /// Given the result type of a `GetValueTypeOp`, return the expected input type. static Type getGetValueTypeOpValueType(Type type) { … } //===----------------------------------------------------------------------===// // pdl::CreateRangeOp //===----------------------------------------------------------------------===// static ParseResult parseRangeType(OpAsmParser &p, TypeRange argumentTypes, Type &resultType) { … } static void printRangeType(OpAsmPrinter &p, CreateRangeOp op, TypeRange argumentTypes, Type resultType) { … } LogicalResult CreateRangeOp::verify() { … } //===----------------------------------------------------------------------===// // pdl_interp::SwitchAttributeOp //===----------------------------------------------------------------------===// LogicalResult SwitchAttributeOp::verify() { … } //===----------------------------------------------------------------------===// // pdl_interp::SwitchOperandCountOp //===----------------------------------------------------------------------===// LogicalResult SwitchOperandCountOp::verify() { … } //===----------------------------------------------------------------------===// // pdl_interp::SwitchOperationNameOp //===----------------------------------------------------------------------===// LogicalResult SwitchOperationNameOp::verify() { … } //===----------------------------------------------------------------------===// // pdl_interp::SwitchResultCountOp //===----------------------------------------------------------------------===// LogicalResult SwitchResultCountOp::verify() { … } //===----------------------------------------------------------------------===// // pdl_interp::SwitchTypeOp //===----------------------------------------------------------------------===// LogicalResult SwitchTypeOp::verify() { … } //===----------------------------------------------------------------------===// // pdl_interp::SwitchTypesOp //===----------------------------------------------------------------------===// LogicalResult SwitchTypesOp::verify() { … } //===----------------------------------------------------------------------===// // TableGen Auto-Generated Op and Interface Definitions //===----------------------------------------------------------------------===// #define GET_OP_CLASSES #include "mlir/Dialect/PDLInterp/IR/PDLInterpOps.cpp.inc"