Skip to content

Commit 384536b

Browse files
committed
[mlir-c] expand the mlir llvm dialect C api
1 parent 0ddb122 commit 384536b

File tree

3 files changed

+365
-16
lines changed

3 files changed

+365
-16
lines changed

mlir/include/mlir-c/Dialect/LLVM.h

Lines changed: 248 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -227,12 +227,54 @@ MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIBasicTypeAttrGet(
227227
MlirContext ctx, unsigned int tag, MlirAttribute name, uint64_t sizeInBits,
228228
MlirLLVMTypeEncoding encoding);
229229

230+
enum MlirLLVMDIFlags {
231+
MlirLLVMDIFlagsZero = 0,
232+
MlirLLVMDIFlagsBit0 = 1,
233+
MlirLLVMDIFlagsBit1 = 2,
234+
MlirLLVMDIFlagsPrivate = 1,
235+
MlirLLVMDIFlagsProtected = 2,
236+
MlirLLVMDIFlagsPublic = 3,
237+
MlirLLVMDIFlagsFwdDecl = 4,
238+
MlirLLVMDIFlagsAppleBlock = 8,
239+
MlirLLVMDIFlagsReservedBit4 = 16,
240+
MlirLLVMDIFlagsVirtual = 32,
241+
MlirLLVMDIFlagsArtificial = 64,
242+
MlirLLVMDIFlagsExplicit = 128,
243+
MlirLLVMDIFlagsPrototyped = 256,
244+
MlirLLVMDIFlagsObjcClassComplete = 512,
245+
MlirLLVMDIFlagsObjectPointer = 1024,
246+
MlirLLVMDIFlagsVector = 2048,
247+
MlirLLVMDIFlagsStaticMember = 4096,
248+
MlirLLVMDIFlagsLValueReference = 8192,
249+
MlirLLVMDIFlagsRValueReference = 16384,
250+
MlirLLVMDIFlagsExportSymbols = 32768,
251+
MlirLLVMDIFlagsSingleInheritance = 65536,
252+
MlirLLVMDIFlagsMultipleInheritance = 65536,
253+
MlirLLVMDIFlagsVirtualInheritance = 65536,
254+
MlirLLVMDIFlagsIntroducedVirtual = 262144,
255+
MlirLLVMDIFlagsBitField = 524288,
256+
MlirLLVMDIFlagsNoReturn = 1048576,
257+
MlirLLVMDIFlagsTypePassByValue = 4194304,
258+
MlirLLVMDIFlagsTypePassByReference = 8388608,
259+
MlirLLVMDIFlagsEnumClass = 16777216,
260+
MlirLLVMDIFlagsThunk = 33554432,
261+
MlirLLVMDIFlagsNonTrivial = 67108864,
262+
MlirLLVMDIFlagsBigEndian = 134217728,
263+
MlirLLVMDIFlagsLittleEndian = 268435456,
264+
MlirLLVMDIFlagsAllCallsDescribed = 536870912,
265+
};
266+
typedef enum MlirLLVMDIFlags MlirLLVMDIFlags;
267+
268+
/// Creates a LLVM DIFlags attribute.
269+
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIFlagsAttrGet(MlirContext ctx,
270+
MlirLLVMDIFlags value);
271+
230272
/// Creates a LLVM DICompositeType attribute.
231273
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDICompositeTypeAttrGet(
232274
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);
275+
uint32_t line, MlirAttribute scope, MlirAttribute baseType,
276+
MlirLLVMDIFlags flags, uint64_t sizeInBits, uint64_t alignInBits,
277+
intptr_t nElements, MlirAttribute const *elements);
236278

237279
/// Creates a LLVM DIDerivedType attribute.
238280
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIDerivedTypeAttrGet(
@@ -263,10 +305,6 @@ MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDICompileUnitAttrGet(
263305
MlirAttribute file, MlirAttribute producer, bool isOptimized,
264306
MlirLLVMDIEmissionKind emissionKind);
265307

266-
/// Creates a LLVM DIFlags attribute.
267-
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIFlagsAttrGet(MlirContext ctx,
268-
uint64_t value);
269-
270308
/// Creates a LLVM DILexicalBlock attribute.
271309
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDILexicalBlockAttrGet(
272310
MlirContext ctx, MlirAttribute scope, MlirAttribute file, unsigned int line,
@@ -283,12 +321,33 @@ MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDILocalVariableAttrGet(
283321
MlirAttribute diFile, unsigned int line, unsigned int arg,
284322
unsigned int alignInBits, MlirAttribute diType);
285323

324+
/// Creates a LLVM DINamespaceAttr attribute.
325+
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDINamespaceAttrGet(MlirContext ctx,
326+
MlirAttribute name,
327+
MlirAttribute scope,
328+
bool exportSymbols);
329+
330+
enum MlirLLVMDISubprogramFlags {
331+
MlirLLVMDISubprogramFlagsVirtual = 1,
332+
MlirLLVMDISubprogramFlagsPureVirtual = 2,
333+
MlirLLVMDISubprogramFlagsLocalToUnit = 4,
334+
MlirLLVMDISubprogramFlagsDefinition = 8,
335+
MlirLLVMDISubprogramFlagsOptimized = 16,
336+
MlirLLVMDISubprogramFlagsPure = 32,
337+
MlirLLVMDISubprogramFlagsElemental = 64,
338+
MlirLLVMDISubprogramFlagsRecursive = 128,
339+
MlirLLVMDISubprogramFlagsMainSubprogram = 256,
340+
MlirLLVMDISubprogramFlagsDeleted = 512,
341+
MlirLLVMDISubprogramFlagsObjCDirect = 2048,
342+
};
343+
typedef enum MlirLLVMDISubprogramFlags MlirLLVMDISubprogramFlags;
344+
286345
/// Creates a LLVM DISubprogramAttr attribute.
287346
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDISubprogramAttrGet(
288347
MlirContext ctx, MlirAttribute id, MlirAttribute compileUnit,
289348
MlirAttribute scope, MlirAttribute name, MlirAttribute linkageName,
290349
MlirAttribute file, unsigned int line, unsigned int scopeLine,
291-
uint64_t subprogramFlags, MlirAttribute type);
350+
MlirLLVMDISubprogramFlags subprogramFlags, MlirAttribute type);
292351

293352
/// Gets the scope from this DISubprogramAttr.
294353
MLIR_CAPI_EXPORTED MlirAttribute
@@ -314,6 +373,18 @@ mlirLLVMDISubprogramAttrGetFile(MlirAttribute diSubprogram);
314373
MLIR_CAPI_EXPORTED MlirAttribute
315374
mlirLLVMDISubprogramAttrGetType(MlirAttribute diSubprogram);
316375

376+
/// Gets the linkage name from this DISubprogramAttr.
377+
MLIR_CAPI_EXPORTED MlirIdentifier
378+
mlirLLVMDISubprogramAttrGetLinkageName(MlirAttribute diSubprogram);
379+
380+
/// Gets the name from this DISubprogramAttr.
381+
MLIR_CAPI_EXPORTED MlirIdentifier
382+
mlirLLVMDISubprogramAttrGetName(MlirAttribute diSubprogram);
383+
384+
/// Gets the subprogram flags from this DISubprogramAttr.
385+
MLIR_CAPI_EXPORTED MlirLLVMDISubprogramFlags
386+
mlirLLVMDISubprogramAttrGetSubprogramFlags(MlirAttribute diSubprogram);
387+
317388
/// Creates a LLVM DISubroutineTypeAttr attribute.
318389
MLIR_CAPI_EXPORTED MlirAttribute
319390
mlirLLVMDISubroutineTypeAttrGet(MlirContext ctx, unsigned int callingConvention,
@@ -329,6 +400,175 @@ MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIModuleAttrGet(
329400
MLIR_CAPI_EXPORTED MlirAttribute
330401
mlirLLVMDIModuleAttrGetScope(MlirAttribute diModule);
331402

403+
/// Gets the api notes of this DIModuleAttr.
404+
MLIR_CAPI_EXPORTED MlirIdentifier
405+
mlirLLVMDIModuleAttrGetApinotes(MlirAttribute diModule);
406+
407+
/// Gets the config macros of this DIModuleAttr.
408+
MLIR_CAPI_EXPORTED MlirIdentifier
409+
mlirLLVMDIModuleAttrGetConfigMacros(MlirAttribute diModule);
410+
411+
/// Gets the file of this DIModuleAttr.
412+
MLIR_CAPI_EXPORTED MlirAttribute
413+
mlirLLVMDIModuleAttrGetFile(MlirAttribute diModule);
414+
415+
/// Gets the include path of this DIModuleAttr.
416+
MLIR_CAPI_EXPORTED MlirIdentifier
417+
mlirLLVMDIModuleAttrGetIncludePath(MlirAttribute diModule);
418+
419+
/// Gets whether this DIModuleAttr is a declaration.
420+
MLIR_CAPI_EXPORTED bool mlirLLVMDIModuleAttrGetIsDecl(MlirAttribute diModule);
421+
422+
/// Creates a LLVM DISubrange attribute.
423+
///
424+
/// All parameters have the type IntegerAttr.
425+
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDISubrangeAttrGet(
426+
MlirContext ctx, MlirAttribute count, MlirAttribute lowerBound,
427+
MlirAttribute upperBound, MlirAttribute stride);
428+
429+
enum MlirLLVMAtomicOrdering {
430+
MlirLLVMAtomicOrderingNot_atomic = 0,
431+
MlirLLVMAtomicOrderingUnordered = 1,
432+
MlirLLVMAtomicOrderingMonotonic = 2,
433+
MlirLLVMAtomicOrderingAcquire = 4,
434+
MlirLLVMAtomicOrderingRelease = 5,
435+
MlirLLVMAtomicOrderingAcq_rel = 6,
436+
MlirLLVMAtomicOrderingSeq_cst = 7,
437+
};
438+
typedef enum MlirLLVMAtomicOrdering MlirLLVMAtomicOrdering;
439+
440+
/// Creates a LLVM AtomicOrderingAttr.
441+
MLIR_CAPI_EXPORTED MlirAttribute
442+
mlirLLVMAtomicOrderingAttrGet(MlirContext ctx, MlirLLVMAtomicOrdering ordering);
443+
444+
enum MlirLLVMAtomicBinOp {
445+
MlirLLVMAtomicBinOpxchg = 0,
446+
MlirLLVMAtomicBinOpadd = 1,
447+
MlirLLVMAtomicBinOpsub = 2,
448+
MlirLLVMAtomicBinOp_and = 3,
449+
MlirLLVMAtomicBinOpnand = 4,
450+
MlirLLVMAtomicBinOp_or = 5,
451+
MlirLLVMAtomicBinOp_xor = 6,
452+
MlirLLVMAtomicBinOpmax = 7,
453+
MlirLLVMAtomicBinOpmin = 8,
454+
MlirLLVMAtomicBinOpumax = 9,
455+
MlirLLVMAtomicBinOpumin = 10,
456+
MlirLLVMAtomicBinOpfadd = 11,
457+
MlirLLVMAtomicBinOpfsub = 12,
458+
MlirLLVMAtomicBinOpfmax = 13,
459+
MlirLLVMAtomicBinOpfmin = 14,
460+
MlirLLVMAtomicBinOpuinc_wrap = 15,
461+
MlirLLVMAtomicBinOpudec_wrap = 16,
462+
};
463+
typedef enum MlirLLVMAtomicBinOp MlirLLVMAtomicBinOp;
464+
465+
/// Creates a LLVM AtomicBinOpAttr.
466+
MLIR_CAPI_EXPORTED MlirAttribute
467+
mlirLLVMAtomicBinOpAttrGet(MlirContext ctx, MlirLLVMAtomicBinOp val);
468+
469+
enum MlirLLVMVisibility {
470+
MlirLLVMVisibilityDefault = 0,
471+
MlirLLVMVisibilityHidden = 1,
472+
MlirLLVMVisibilityProtected = 2,
473+
};
474+
typedef enum MlirLLVMVisibility MlirLLVMVisibility;
475+
476+
/// Creates a LLVM VisibilityAttr.
477+
MLIR_CAPI_EXPORTED MlirAttribute
478+
mlirLLVMVisibilityAttrGet(MlirContext ctx, MlirLLVMVisibility visibility);
479+
480+
enum MlirLLVMUnnamedAddr {
481+
MlirLLVMUnnamedAddrNone = 0,
482+
MlirLLVMUnnamedAddrLocal = 1,
483+
MlirLLVMUnnamedAddrGlobal = 2,
484+
};
485+
typedef enum MlirLLVMUnnamedAddr MlirLLVMUnnamedAddr;
486+
487+
/// Creates a LLVM UnnamedAddrAttr.
488+
MLIR_CAPI_EXPORTED MlirAttribute
489+
mlirLLVMUnnamedAddrAttrGet(MlirContext ctx, MlirLLVMUnnamedAddr val);
490+
491+
enum MlirLLVMICmpPredicate {
492+
MlirLLVMICmpPredicateEq = 0,
493+
MlirLLVMICmpPredicateNe = 1,
494+
MlirLLVMICmpPredicateSlt = 2,
495+
MlirLLVMICmpPredicateSle = 3,
496+
MlirLLVMICmpPredicateSgt = 4,
497+
MlirLLVMICmpPredicateSge = 5,
498+
MlirLLVMICmpPredicateUlt = 6,
499+
MlirLLVMICmpPredicateUle = 7,
500+
MlirLLVMICmpPredicateUgt = 8,
501+
MlirLLVMICmpPredicateUge = 9,
502+
};
503+
typedef enum MlirLLVMICmpPredicate MlirLLVMICmpPredicate;
504+
505+
/// Creates a LLVM ICmpPredicateAttr.
506+
MLIR_CAPI_EXPORTED MlirAttribute
507+
mlirLLVMICmpPredicateAttrGet(MlirContext ctx, MlirLLVMICmpPredicate val);
508+
509+
enum MlirLLVMFCmpPredicate {
510+
MlirLLVMFCmpPredicate_false = 0,
511+
MlirLLVMFCmpPredicateOeq = 1,
512+
MlirLLVMFCmpPredicateOgt = 2,
513+
MlirLLVMFCmpPredicateOge = 3,
514+
MlirLLVMFCmpPredicateOlt = 4,
515+
MlirLLVMFCmpPredicateOle = 5,
516+
MlirLLVMFCmpPredicateOne = 6,
517+
MlirLLVMFCmpPredicateOrd = 7,
518+
MlirLLVMFCmpPredicateUeq = 8,
519+
MlirLLVMFCmpPredicateUgt = 9,
520+
MlirLLVMFCmpPredicateUge = 10,
521+
MlirLLVMFCmpPredicateUlt = 11,
522+
MlirLLVMFCmpPredicateUle = 12,
523+
MlirLLVMFCmpPredicateUne = 13,
524+
MlirLLVMFCmpPredicateUno = 14,
525+
MlirLLVMFCmpPredicate_true = 15,
526+
};
527+
typedef enum MlirLLVMFCmpPredicate MlirLLVMFCmpPredicate;
528+
/// Creates a LLVM FCmpPredicateAttr.
529+
MLIR_CAPI_EXPORTED MlirAttribute
530+
mlirLLVMFCmpPredicateAttrGet(MlirContext ctx, MlirLLVMFCmpPredicate val);
531+
532+
enum MlirLLVMFramePointerKind {
533+
MlirLLVMFramePointerKindNone = 0,
534+
MlirLLVMFramePointerKindNonLeaf = 1,
535+
MlirLLVMFramePointerKindAll = 2,
536+
};
537+
typedef enum MlirLLVMFramePointerKind MlirLLVMFramePointerKind;
538+
539+
/// Creates a LLVM FramePointerKindAttr.
540+
MLIR_CAPI_EXPORTED MlirAttribute
541+
mlirLLVMFramePointerKindAttrGet(MlirContext ctx, MlirLLVMFramePointerKind val);
542+
543+
enum MlirLLVMFastmathFlags {
544+
MlirLLVMFastmathFlagsNone = 0,
545+
MlirLLVMFastmathFlagsNnan = 1,
546+
MlirLLVMFastmathFlagsNinf = 2,
547+
MlirLLVMFastmathFlagsNsz = 4,
548+
MlirLLVMFastmathFlagsArcp = 8,
549+
MlirLLVMFastmathFlagsContract = 16,
550+
MlirLLVMFastmathFlagsAfn = 32,
551+
MlirLLVMFastmathFlagsReassoc = 64,
552+
MlirLLVMFastmathFlagsFast = 127,
553+
};
554+
typedef enum MlirLLVMFastmathFlags MlirLLVMFastmathFlags;
555+
556+
/// Creates a LLVM FastmathFlagsAttr.
557+
MLIR_CAPI_EXPORTED MlirAttribute
558+
mlirLLVMFastmathFlagsAttrGet(MlirContext ctx, MlirLLVMFastmathFlags val);
559+
560+
enum MlirLLVMModRefInfo {
561+
MlirLLVMModRefInfoNoModRef = 0,
562+
MlirLLVMModRefInfoRef = 1,
563+
MlirLLVMModRefInfoMod = 2,
564+
MlirLLVMModRefInfoModRef = 3,
565+
};
566+
typedef enum MlirLLVMModRefInfo MlirLLVMModRefInfo;
567+
568+
/// Creates a LLVM ModRefInfoAttr.
569+
MLIR_CAPI_EXPORTED MlirAttribute
570+
mlirLLVMModRefInfoAttrGet(MlirContext ctx, MlirLLVMModRefInfo val);
571+
332572
#ifdef __cplusplus
333573
}
334574
#endif

0 commit comments

Comments
 (0)