|
11 | 11 | #define MLIR_C_DIALECT_LLVM_H
|
12 | 12 |
|
13 | 13 | #include "mlir-c/IR.h"
|
| 14 | +#include "mlir-c/Support.h" |
14 | 15 |
|
15 | 16 | #ifdef __cplusplus
|
16 | 17 | extern "C" {
|
@@ -98,6 +99,236 @@ MLIR_CAPI_EXPORTED MlirLogicalResult
|
98 | 99 | mlirLLVMStructTypeSetBody(MlirType structType, intptr_t nFieldTypes,
|
99 | 100 | MlirType const *fieldTypes, bool isPacked);
|
100 | 101 |
|
| 102 | +enum MlirLLVMCConv { |
| 103 | + MlirLLVMCConvC = 0, |
| 104 | + MlirLLVMCConvFast = 8, |
| 105 | + MlirLLVMCConvCold = 9, |
| 106 | + MlirLLVMCConvGHC = 10, |
| 107 | + MlirLLVMCConvHiPE = 11, |
| 108 | + MlirLLVMCConvAnyReg = 13, |
| 109 | + MlirLLVMCConvPreserveMost = 14, |
| 110 | + MlirLLVMCConvPreserveAll = 15, |
| 111 | + MlirLLVMCConvSwift = 16, |
| 112 | + MlirLLVMCConvCXX_FAST_TLS = 17, |
| 113 | + MlirLLVMCConvTail = 18, |
| 114 | + MlirLLVMCConvCFGuard_Check = 19, |
| 115 | + MlirLLVMCConvSwiftTail = 20, |
| 116 | + MlirLLVMCConvX86_StdCall = 64, |
| 117 | + MlirLLVMCConvX86_FastCall = 65, |
| 118 | + MlirLLVMCConvARM_APCS = 66, |
| 119 | + MlirLLVMCConvARM_AAPCS = 67, |
| 120 | + MlirLLVMCConvARM_AAPCS_VFP = 68, |
| 121 | + MlirLLVMCConvMSP430_INTR = 69, |
| 122 | + MlirLLVMCConvX86_ThisCall = 70, |
| 123 | + MlirLLVMCConvPTX_Kernel = 71, |
| 124 | + MlirLLVMCConvPTX_Device = 72, |
| 125 | + MlirLLVMCConvSPIR_FUNC = 75, |
| 126 | + MlirLLVMCConvSPIR_KERNEL = 76, |
| 127 | + MlirLLVMCConvIntel_OCL_BI = 77, |
| 128 | + MlirLLVMCConvX86_64_SysV = 78, |
| 129 | + MlirLLVMCConvWin64 = 79, |
| 130 | + MlirLLVMCConvX86_VectorCall = 80, |
| 131 | + MlirLLVMCConvDUMMY_HHVM = 81, |
| 132 | + MlirLLVMCConvDUMMY_HHVM_C = 82, |
| 133 | + MlirLLVMCConvX86_INTR = 83, |
| 134 | + MlirLLVMCConvAVR_INTR = 84, |
| 135 | + MlirLLVMCConvAVR_BUILTIN = 86, |
| 136 | + MlirLLVMCConvAMDGPU_VS = 87, |
| 137 | + MlirLLVMCConvAMDGPU_GS = 88, |
| 138 | + MlirLLVMCConvAMDGPU_CS = 90, |
| 139 | + MlirLLVMCConvAMDGPU_KERNEL = 91, |
| 140 | + MlirLLVMCConvX86_RegCall = 92, |
| 141 | + MlirLLVMCConvAMDGPU_HS = 93, |
| 142 | + MlirLLVMCConvMSP430_BUILTIN = 94, |
| 143 | + MlirLLVMCConvAMDGPU_LS = 95, |
| 144 | + MlirLLVMCConvAMDGPU_ES = 96, |
| 145 | + MlirLLVMCConvAArch64_VectorCall = 97, |
| 146 | + MlirLLVMCConvAArch64_SVE_VectorCall = 98, |
| 147 | + MlirLLVMCConvWASM_EmscriptenInvoke = 99, |
| 148 | + MlirLLVMCConvAMDGPU_Gfx = 100, |
| 149 | + MlirLLVMCConvM68k_INTR = 101, |
| 150 | +}; |
| 151 | +typedef enum MlirLLVMCConv MlirLLVMCConv; |
| 152 | + |
| 153 | +/// Creates a LLVM CConv attribute. |
| 154 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMCConvAttrGet(MlirContext ctx, |
| 155 | + MlirLLVMCConv cconv); |
| 156 | + |
| 157 | +enum MlirLLVMComdat { |
| 158 | + MlirLLVMComdatAny = 0, |
| 159 | + MlirLLVMComdatExactMatch = 1, |
| 160 | + MlirLLVMComdatLargest = 2, |
| 161 | + MlirLLVMComdatNoDeduplicate = 3, |
| 162 | + MlirLLVMComdatSameSize = 4, |
| 163 | +}; |
| 164 | +typedef enum MlirLLVMComdat MlirLLVMComdat; |
| 165 | + |
| 166 | +/// Creates a LLVM Comdat attribute. |
| 167 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMComdatAttrGet(MlirContext ctx, |
| 168 | + MlirLLVMComdat comdat); |
| 169 | + |
| 170 | +enum MlirLLVMLinkage { |
| 171 | + MlirLLVMLinkagePrivate = 0, |
| 172 | + MlirLLVMLinkageInternal = 1, |
| 173 | + MlirLLVMLinkageAvailableExternally = 2, |
| 174 | + MlirLLVMLinkageLinkonce = 3, |
| 175 | + MlirLLVMLinkageWeak = 4, |
| 176 | + MlirLLVMLinkageCommon = 5, |
| 177 | + MlirLLVMLinkageAppending = 6, |
| 178 | + MlirLLVMLinkageExternWeak = 7, |
| 179 | + MlirLLVMLinkageLinkonceODR = 8, |
| 180 | + MlirLLVMLinkageWeakODR = 9, |
| 181 | + MlirLLVMLinkageExternal = 10, |
| 182 | +}; |
| 183 | +typedef enum MlirLLVMLinkage MlirLLVMLinkage; |
| 184 | + |
| 185 | +/// Creates a LLVM Linkage attribute. |
| 186 | +MLIR_CAPI_EXPORTED MlirAttribute |
| 187 | +mlirLLVMLinkageAttrGet(MlirContext ctx, MlirLLVMLinkage linkage); |
| 188 | + |
| 189 | +/// Creates a LLVM DINullType attribute. |
| 190 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDINullTypeAttrGet(MlirContext ctx); |
| 191 | + |
| 192 | +/// Creates a LLVM DIExpressionElem attribute. |
| 193 | +MLIR_CAPI_EXPORTED MlirAttribute |
| 194 | +mlirLLVMDIExpressionElemAttrGet(MlirContext ctx, unsigned int opcode, |
| 195 | + intptr_t nArguments, uint64_t const *arguments); |
| 196 | + |
| 197 | +/// Creates a LLVM DIExpression attribute. |
| 198 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIExpressionAttrGet( |
| 199 | + MlirContext ctx, intptr_t nOperations, MlirAttribute const *operations); |
| 200 | + |
| 201 | +enum MlirLLVMTypeEncoding { |
| 202 | + MlirLLVMTypeEncodingAddress = 0x1, |
| 203 | + MlirLLVMTypeEncodingBoolean = 0x2, |
| 204 | + MlirLLVMTypeEncodingComplexFloat = 0x31, |
| 205 | + MlirLLVMTypeEncodingFloatT = 0x4, |
| 206 | + MlirLLVMTypeEncodingSigned = 0x5, |
| 207 | + MlirLLVMTypeEncodingSignedChar = 0x6, |
| 208 | + MlirLLVMTypeEncodingUnsigned = 0x7, |
| 209 | + MlirLLVMTypeEncodingUnsignedChar = 0x08, |
| 210 | + MlirLLVMTypeEncodingImaginaryFloat = 0x09, |
| 211 | + MlirLLVMTypeEncodingPackedDecimal = 0x0a, |
| 212 | + MlirLLVMTypeEncodingNumericString = 0x0b, |
| 213 | + MlirLLVMTypeEncodingEdited = 0x0c, |
| 214 | + MlirLLVMTypeEncodingSignedFixed = 0x0d, |
| 215 | + MlirLLVMTypeEncodingUnsignedFixed = 0x0e, |
| 216 | + MlirLLVMTypeEncodingDecimalFloat = 0x0f, |
| 217 | + MlirLLVMTypeEncodingUTF = 0x10, |
| 218 | + MlirLLVMTypeEncodingUCS = 0x11, |
| 219 | + MlirLLVMTypeEncodingASCII = 0x12, |
| 220 | + MlirLLVMTypeEncodingLoUser = 0x80, |
| 221 | + MlirLLVMTypeEncodingHiUser = 0xff, |
| 222 | +}; |
| 223 | +typedef enum MlirLLVMTypeEncoding MlirLLVMTypeEncoding; |
| 224 | + |
| 225 | +/// Creates a LLVM DIBasicType attribute. |
| 226 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIBasicTypeAttrGet( |
| 227 | + MlirContext ctx, unsigned int tag, MlirAttribute name, uint64_t sizeInBits, |
| 228 | + MlirLLVMTypeEncoding encoding); |
| 229 | + |
| 230 | +/// Creates a LLVM DICompositeType attribute. |
| 231 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDICompositeTypeAttrGet( |
| 232 | + MlirContext ctx, unsigned int tag, MlirAttribute name, MlirAttribute file, |
| 233 | + uint32_t line, MlirAttribute scope, MlirAttribute baseType, int64_t flags, |
| 234 | + uint64_t sizeInBits, uint64_t alignInBits, intptr_t nElements, |
| 235 | + MlirAttribute const *elements); |
| 236 | + |
| 237 | +/// Creates a LLVM DIDerivedType attribute. |
| 238 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIDerivedTypeAttrGet( |
| 239 | + MlirContext ctx, unsigned int tag, MlirAttribute name, |
| 240 | + MlirAttribute baseType, uint64_t sizeInBits, uint32_t alignInBits, |
| 241 | + uint64_t offsetInBits); |
| 242 | + |
| 243 | +/// Gets the base type from a LLVM DIDerivedType attribute. |
| 244 | +MLIR_CAPI_EXPORTED MlirAttribute |
| 245 | +mlirLLVMDIDerivedTypeAttrGetBaseType(MlirAttribute diDerivedType); |
| 246 | + |
| 247 | +/// Creates a LLVM DIFileAttr attribute. |
| 248 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIFileAttrGet(MlirContext ctx, |
| 249 | + MlirAttribute name, |
| 250 | + MlirAttribute directory); |
| 251 | + |
| 252 | +enum MlirLLVMDIEmissionKind { |
| 253 | + MlirLLVMDIEmissionKindNone = 0, |
| 254 | + MlirLLVMDIEmissionKindFull = 1, |
| 255 | + MlirLLVMDIEmissionKindLineTablesOnly = 2, |
| 256 | + MlirLLVMDIEmissionKindDebugDirectivesOnly = 3, |
| 257 | +}; |
| 258 | +typedef enum MlirLLVMDIEmissionKind MlirLLVMDIEmissionKind; |
| 259 | + |
| 260 | +/// Creates a LLVM DICompileUnit attribute. |
| 261 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDICompileUnitAttrGet( |
| 262 | + MlirContext ctx, MlirAttribute id, unsigned int sourceLanguage, |
| 263 | + MlirAttribute file, MlirAttribute producer, bool isOptimized, |
| 264 | + MlirLLVMDIEmissionKind emissionKind); |
| 265 | + |
| 266 | +/// Creates a LLVM DIFlags attribute. |
| 267 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIFlagsAttrGet(MlirContext ctx, |
| 268 | + uint64_t value); |
| 269 | + |
| 270 | +/// Creates a LLVM DILexicalBlock attribute. |
| 271 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDILexicalBlockAttrGet( |
| 272 | + MlirContext ctx, MlirAttribute scope, MlirAttribute file, unsigned int line, |
| 273 | + unsigned int column); |
| 274 | + |
| 275 | +/// Creates a LLVM DILexicalBlockFile attribute. |
| 276 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDILexicalBlockFileAttrGet( |
| 277 | + MlirContext ctx, MlirAttribute scope, MlirAttribute file, |
| 278 | + unsigned int discriminator); |
| 279 | + |
| 280 | +/// Creates a LLVM DILocalVariableAttr attribute. |
| 281 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDILocalVariableAttrGet( |
| 282 | + MlirContext ctx, MlirAttribute scope, MlirAttribute name, |
| 283 | + MlirAttribute diFile, unsigned int line, unsigned int arg, |
| 284 | + unsigned int alignInBits, MlirAttribute diType); |
| 285 | + |
| 286 | +/// Creates a LLVM DISubprogramAttr attribute. |
| 287 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDISubprogramAttrGet( |
| 288 | + MlirContext ctx, MlirAttribute id, MlirAttribute compileUnit, |
| 289 | + MlirAttribute scope, MlirAttribute name, MlirAttribute linkageName, |
| 290 | + MlirAttribute file, unsigned int line, unsigned int scopeLine, |
| 291 | + uint64_t subprogramFlags, MlirAttribute type); |
| 292 | + |
| 293 | +/// Gets the scope from this DISubprogramAttr. |
| 294 | +MLIR_CAPI_EXPORTED MlirAttribute |
| 295 | +mlirLLVMDISubprogramAttrGetScope(MlirAttribute diSubprogram); |
| 296 | + |
| 297 | +/// Gets the line from this DISubprogramAttr. |
| 298 | +MLIR_CAPI_EXPORTED unsigned int |
| 299 | +mlirLLVMDISubprogramAttrGetLine(MlirAttribute diSubprogram); |
| 300 | + |
| 301 | +/// Gets the scope line from this DISubprogram. |
| 302 | +MLIR_CAPI_EXPORTED unsigned int |
| 303 | +mlirLLVMDISubprogramAttrGetScopeLine(MlirAttribute diSubprogram); |
| 304 | + |
| 305 | +/// Gets the compile unit from this DISubprogram. |
| 306 | +MLIR_CAPI_EXPORTED MlirAttribute |
| 307 | +mlirLLVMDISubprogramAttrGetCompileUnit(MlirAttribute diSubprogram); |
| 308 | + |
| 309 | +/// Gets the file from this DISubprogramAttr. |
| 310 | +MLIR_CAPI_EXPORTED MlirAttribute |
| 311 | +mlirLLVMDISubprogramAttrGetFile(MlirAttribute diSubprogram); |
| 312 | + |
| 313 | +/// Gets the type from this DISubprogramAttr. |
| 314 | +MLIR_CAPI_EXPORTED MlirAttribute |
| 315 | +mlirLLVMDISubprogramAttrGetType(MlirAttribute diSubprogram); |
| 316 | + |
| 317 | +/// Creates a LLVM DISubroutineTypeAttr attribute. |
| 318 | +MLIR_CAPI_EXPORTED MlirAttribute |
| 319 | +mlirLLVMDISubroutineTypeAttrGet(MlirContext ctx, unsigned int callingConvention, |
| 320 | + intptr_t nTypes, MlirAttribute const *types); |
| 321 | + |
| 322 | +/// Creates a LLVM DIModuleAttr attribute. |
| 323 | +MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIModuleAttrGet( |
| 324 | + MlirContext ctx, MlirAttribute file, MlirAttribute scope, |
| 325 | + MlirAttribute name, MlirAttribute configMacros, MlirAttribute includePath, |
| 326 | + MlirAttribute apinotes, unsigned int line, bool isDecl); |
| 327 | + |
| 328 | +/// Gets the scope of this DIModuleAttr. |
| 329 | +MLIR_CAPI_EXPORTED MlirAttribute |
| 330 | +mlirLLVMDIModuleAttrGetScope(MlirAttribute diModule); |
| 331 | + |
101 | 332 | #ifdef __cplusplus
|
102 | 333 | }
|
103 | 334 | #endif
|
|
0 commit comments