1 //===- EmitC.h - EmitC Dialect ----------------------------------*- 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 declares EmitC in MLIR. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #ifndef MLIR_DIALECT_EMITC_IR_EMITC_H 14 #define MLIR_DIALECT_EMITC_IR_EMITC_H 15 16 #include "mlir/Bytecode/BytecodeOpInterface.h" 17 #include "mlir/Dialect/EmitC/IR/EmitCTraits.h" 18 #include "mlir/IR/Builders.h" 19 #include "mlir/IR/BuiltinOps.h" 20 #include "mlir/IR/BuiltinTypes.h" 21 #include "mlir/IR/Dialect.h" 22 #include "mlir/Interfaces/CastInterfaces.h" 23 #include "mlir/Interfaces/ControlFlowInterfaces.h" 24 #include "mlir/Interfaces/FunctionInterfaces.h" 25 #include "mlir/Interfaces/SideEffectInterfaces.h" 26 27 #include "mlir/Dialect/EmitC/IR/EmitCDialect.h.inc" 28 #include "mlir/Dialect/EmitC/IR/EmitCEnums.h.inc" 29 30 namespace mlir { 31 namespace emitc { 32 void buildTerminatedBody(OpBuilder &builder, Location loc); 33 34 /// Determines whether \p type is valid in EmitC. 35 bool isSupportedEmitCType(mlir::Type type); 36 37 /// Determines whether \p type is a valid integer type in EmitC. 38 bool isSupportedIntegerType(mlir::Type type); 39 40 /// Determines whether \p type is integer like, i.e. it's a supported integer, 41 /// an index or opaque type. 42 bool isIntegerIndexOrOpaqueType(Type type); 43 44 /// Determines whether \p type is a valid floating-point type in EmitC. 45 bool isSupportedFloatType(mlir::Type type); 46 47 /// Determines whether \p type is a emitc.size_t/ssize_t type. 48 bool isPointerWideType(mlir::Type type); 49 50 } // namespace emitc 51 } // namespace mlir 52 53 #define GET_ATTRDEF_CLASSES 54 #include "mlir/Dialect/EmitC/IR/EmitCAttributes.h.inc" 55 56 #define GET_TYPEDEF_CLASSES 57 #include "mlir/Dialect/EmitC/IR/EmitCTypes.h.inc" 58 59 #define GET_OP_CLASSES 60 #include "mlir/Dialect/EmitC/IR/EmitC.h.inc" 61 62 #endif // MLIR_DIALECT_EMITC_IR_EMITC_H 63