MLIR 24.0.0git
LLVM.cpp
Go to the documentation of this file.
1//===- LLVM.cpp - C Interface for LLVM dialect ----------------------------===//
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
10#include "mlir-c/IR.h"
11#include "mlir-c/Support.h"
13#include "mlir/CAPI/Wrap.h"
17#include "llvm-c/Core.h"
18#include "llvm/ADT/SmallVector.h"
19#include "llvm/ADT/SmallVectorExtras.h"
20
21using namespace mlir;
22using namespace mlir::LLVM;
23
25
26MlirType mlirLLVMPointerTypeGet(MlirContext ctx, unsigned addressSpace) {
27 return wrap(LLVMPointerType::get(unwrap(ctx), addressSpace));
28}
29
31 return wrap(LLVM::LLVMPointerType::name);
32}
33
35 return wrap(LLVM::LLVMPointerType::getTypeID());
36}
37
38bool mlirTypeIsALLVMPointerType(MlirType type) {
39 return isa<LLVM::LLVMPointerType>(unwrap(type));
40}
41
42unsigned mlirLLVMPointerTypeGetAddressSpace(MlirType pointerType) {
43 return cast<LLVM::LLVMPointerType>(unwrap(pointerType)).getAddressSpace();
44}
45
46MlirType mlirLLVMVoidTypeGet(MlirContext ctx) {
47 return wrap(LLVMVoidType::get(unwrap(ctx)));
48}
49
50MlirStringRef mlirLLVMVoidTypeGetName(void) { return wrap(LLVMVoidType::name); }
51
52bool mlirTypeIsALLVMArrayType(MlirType type) {
53 return isa<LLVM::LLVMArrayType>(unwrap(type));
54}
55
57 return wrap(LLVM::LLVMArrayType::getTypeID());
58}
59
60MlirType mlirLLVMArrayTypeGet(MlirType elementType, unsigned numElements) {
61 return wrap(LLVMArrayType::get(unwrap(elementType), numElements));
62}
63
65 return wrap(LLVMArrayType::name);
66}
67
68MlirType mlirLLVMArrayTypeGetElementType(MlirType type) {
69 return wrap(cast<LLVM::LLVMArrayType>(unwrap(type)).getElementType());
70}
71
72unsigned mlirLLVMArrayTypeGetNumElements(MlirType type) {
73 return cast<LLVM::LLVMArrayType>(unwrap(type)).getNumElements();
74}
75
76MlirType mlirLLVMFunctionTypeGet(MlirType resultType, intptr_t nArgumentTypes,
77 MlirType const *argumentTypes, bool isVarArg) {
78 SmallVector<Type, 2> argumentStorage;
79 return wrap(LLVMFunctionType::get(
80 unwrap(resultType),
81 unwrapList(nArgumentTypes, argumentTypes, argumentStorage), isVarArg));
82}
83
85 return wrap(LLVMFunctionType::name);
86}
87
88bool mlirTypeIsALLVMFunctionType(MlirType type) {
89 return isa<LLVM::LLVMFunctionType>(unwrap(type));
90}
91
93 return wrap(LLVM::LLVMFunctionType::getTypeID());
94}
95
97 return llvm::cast<LLVM::LLVMFunctionType>(unwrap(type)).getNumParams();
98}
99
100MlirType mlirLLVMFunctionTypeGetInput(MlirType type, intptr_t pos) {
101 assert(pos >= 0 && "pos in array must be positive");
102 return wrap(llvm::cast<LLVM::LLVMFunctionType>(unwrap(type))
103 .getParamType(static_cast<unsigned>(pos)));
104}
105
106MlirType mlirLLVMFunctionTypeGetReturnType(MlirType type) {
107 return wrap(llvm::cast<LLVM::LLVMFunctionType>(unwrap(type)).getReturnType());
108}
109
110bool mlirLLVMFunctionTypeIsVarArg(MlirType type) {
111 return llvm::cast<LLVM::LLVMFunctionType>(unwrap(type)).isVarArg();
112}
113
114bool mlirTypeIsALLVMStructType(MlirType type) {
115 return isa<LLVM::LLVMStructType>(unwrap(type));
116}
117
119 return wrap(LLVM::LLVMStructType::getTypeID());
120}
121
123 return wrap(LLVM::LLVMStructType::name);
124}
125
126bool mlirLLVMStructTypeIsLiteral(MlirType type) {
127 return !cast<LLVM::LLVMStructType>(unwrap(type)).isIdentified();
128}
129
131 return cast<LLVM::LLVMStructType>(unwrap(type)).getBody().size();
132}
133
134MlirType mlirLLVMStructTypeGetElementType(MlirType type, intptr_t position) {
135 return wrap(cast<LLVM::LLVMStructType>(unwrap(type)).getBody()[position]);
136}
137
138bool mlirLLVMStructTypeIsPacked(MlirType type) {
139 return cast<LLVM::LLVMStructType>(unwrap(type)).isPacked();
140}
141
143 return wrap(cast<LLVM::LLVMStructType>(unwrap(type)).getName());
144}
145
146bool mlirLLVMStructTypeIsOpaque(MlirType type) {
147 return cast<LLVM::LLVMStructType>(unwrap(type)).isOpaque();
148}
149
150MlirType mlirLLVMStructTypeLiteralGet(MlirContext ctx, intptr_t nFieldTypes,
151 MlirType const *fieldTypes,
152 bool isPacked) {
153 SmallVector<Type> fieldStorage;
154 return wrap(LLVMStructType::getLiteral(
155 unwrap(ctx), unwrapList(nFieldTypes, fieldTypes, fieldStorage),
156 isPacked));
157}
158
159MlirType mlirLLVMStructTypeLiteralGetChecked(MlirLocation loc,
160 intptr_t nFieldTypes,
161 MlirType const *fieldTypes,
162 bool isPacked) {
163 SmallVector<Type> fieldStorage;
164 return wrap(LLVMStructType::getLiteralChecked(
165 [loc]() { return emitError(unwrap(loc)); }, unwrap(loc)->getContext(),
166 unwrapList(nFieldTypes, fieldTypes, fieldStorage), isPacked));
167}
168
169MlirType mlirLLVMStructTypeOpaqueGet(MlirContext ctx, MlirStringRef name) {
170 return wrap(LLVMStructType::getOpaque(unwrap(name), unwrap(ctx)));
171}
172
173MlirType mlirLLVMStructTypeIdentifiedGet(MlirContext ctx, MlirStringRef name) {
174 return wrap(LLVMStructType::getIdentified(unwrap(ctx), unwrap(name)));
175}
176
178 intptr_t nFieldTypes,
179 MlirType const *fieldTypes,
180 bool isPacked) {
181 SmallVector<Type> fields;
182 return wrap(LLVMStructType::getNewIdentified(
183 unwrap(ctx), unwrap(name), unwrapList(nFieldTypes, fieldTypes, fields),
184 isPacked));
185}
186
188 intptr_t nFieldTypes,
189 MlirType const *fieldTypes,
190 bool isPacked) {
191 SmallVector<Type> fields;
192 return wrap(
193 cast<LLVM::LLVMStructType>(unwrap(structType))
194 .setBody(unwrapList(nFieldTypes, fieldTypes, fields), isPacked));
195}
196
197MlirAttribute mlirLLVMDIExpressionElemAttrGet(MlirContext ctx,
198 unsigned int opcode,
199 intptr_t nArguments,
200 uint64_t const *arguments) {
201 auto list = ArrayRef<uint64_t>(arguments, nArguments);
202 return wrap(DIExpressionElemAttr::get(unwrap(ctx), opcode, list));
203}
204
206 return wrap(DIExpressionElemAttr::name);
207}
208
209MlirAttribute mlirLLVMDIExpressionAttrGet(MlirContext ctx, intptr_t nOperations,
210 MlirAttribute const *operations) {
211 SmallVector<Attribute> attrStorage;
212 attrStorage.reserve(nOperations);
213
214 return wrap(DIExpressionAttr::get(
215 unwrap(ctx),
216 llvm::map_to_vector(unwrapList(nOperations, operations, attrStorage),
217 llvm::CastTo<DIExpressionElemAttr>)));
218}
219
221 return wrap(DIExpressionAttr::name);
222}
223
224MlirAttribute mlirLLVMDINullTypeAttrGet(MlirContext ctx) {
225 return wrap(DINullTypeAttr::get(unwrap(ctx)));
226}
227
229 return wrap(DINullTypeAttr::name);
230}
231
232MlirAttribute mlirLLVMDIBasicTypeAttrGet(MlirContext ctx, unsigned int tag,
233 MlirAttribute name,
234 uint64_t sizeInBits,
235 MlirLLVMTypeEncoding encoding) {
236
237 return wrap(DIBasicTypeAttr::get(
238 unwrap(ctx), tag, cast<StringAttr>(unwrap(name)), sizeInBits, encoding));
239}
240
242 return wrap(DIBasicTypeAttr::name);
243}
244
245MlirAttribute mlirLLVMDICompositeTypeAttrGetRecSelf(MlirAttribute recId) {
246 return wrap(
247 DICompositeTypeAttr::getRecSelf(cast<DistinctAttr>(unwrap(recId))));
248}
249
251 MlirContext ctx, MlirAttribute recId, bool isRecSelf, unsigned int tag,
252 MlirAttribute name, MlirAttribute file, uint32_t line, MlirAttribute scope,
253 MlirAttribute baseType, int64_t flags, uint64_t sizeInBits,
254 uint64_t alignInBits, intptr_t nElements, MlirAttribute const *elements,
255 MlirAttribute dataLocation, MlirAttribute rank, MlirAttribute allocated,
256 MlirAttribute associated, MlirAttribute identifier,
257 MlirAttribute discriminator) {
258 SmallVector<Attribute> elementsStorage;
259 elementsStorage.reserve(nElements);
260
261 return wrap(DICompositeTypeAttr::get(
262 unwrap(ctx), cast<DistinctAttr>(unwrap(recId)), isRecSelf, tag,
263 cast<StringAttr>(unwrap(name)), cast<DIFileAttr>(unwrap(file)), line,
264 cast<DIScopeAttr>(unwrap(scope)), cast<DITypeAttr>(unwrap(baseType)),
265 DIFlags(flags), sizeInBits, alignInBits,
266 cast<DIExpressionAttr>(unwrap(dataLocation)),
267 cast<DIExpressionAttr>(unwrap(rank)),
268 cast<DIExpressionAttr>(unwrap(allocated)),
269 cast<DIExpressionAttr>(unwrap(associated)),
270 cast<StringAttr>(unwrap(identifier)),
271 cast<DIDerivedTypeAttr>(unwrap(discriminator)),
272 llvm::map_to_vector(unwrapList(nElements, elements, elementsStorage),
273 llvm::CastTo<DINodeAttr>)));
274}
275
277 return wrap(DICompositeTypeAttr::name);
278}
279
281 MlirContext ctx, unsigned int tag, MlirAttribute name, MlirAttribute file,
282 uint32_t line, MlirAttribute scope, MlirAttribute baseType,
283 uint64_t sizeInBits, uint32_t alignInBits, uint64_t offsetInBits,
284 int64_t dwarfAddressSpace, int64_t flags, MlirAttribute extraData) {
285 std::optional<unsigned> addressSpace = std::nullopt;
286 if (dwarfAddressSpace >= 0)
287 addressSpace = (unsigned)dwarfAddressSpace;
288 return wrap(DIDerivedTypeAttr::get(
289 unwrap(ctx), tag, cast<StringAttr>(unwrap(name)),
290 cast<DIFileAttr>(unwrap(file)), line, cast<DIScopeAttr>(unwrap(scope)),
291 cast<DITypeAttr>(unwrap(baseType)), sizeInBits, alignInBits, offsetInBits,
292 addressSpace, DIFlags(flags), unwrap(extraData)));
293}
294
296 return wrap(DIDerivedTypeAttr::name);
297}
298
300 MlirContext ctx, unsigned int tag, MlirAttribute name, uint64_t sizeInBits,
301 uint32_t alignInBits, MlirAttribute stringLength,
302 MlirAttribute stringLengthExp, MlirAttribute stringLocationExp,
303 MlirLLVMTypeEncoding encoding, MlirAttribute charType) {
304 return wrap(DIStringTypeAttr::get(
305 unwrap(ctx), tag, cast<StringAttr>(unwrap(name)), sizeInBits, alignInBits,
306 cast<DIVariableAttr>(unwrap(stringLength)),
307 cast<DIExpressionAttr>(unwrap(stringLengthExp)),
308 cast<DIExpressionAttr>(unwrap(stringLocationExp)), encoding,
309 cast<DITypeAttr>(unwrap(charType))));
310}
311
313 return wrap(DIStringTypeAttr::name);
314}
315
316MlirAttribute
317mlirLLVMDIDerivedTypeAttrGetBaseType(MlirAttribute diDerivedType) {
318 return wrap(cast<DIDerivedTypeAttr>(unwrap(diDerivedType)).getBaseType());
319}
320
321MlirAttribute mlirLLVMCConvAttrGet(MlirContext ctx, MlirLLVMCConv cconv) {
322 return wrap(CConvAttr::get(unwrap(ctx), CConv(cconv)));
323}
324
325MlirStringRef mlirLLVMCConvAttrGetName(void) { return wrap(CConvAttr::name); }
326
327MlirAttribute mlirLLVMComdatAttrGet(MlirContext ctx, MlirLLVMComdat comdat) {
328 return wrap(ComdatAttr::get(unwrap(ctx), comdat::Comdat(comdat)));
329}
330
331MlirStringRef mlirLLVMComdatAttrGetName(void) { return wrap(ComdatAttr::name); }
332
333MlirAttribute mlirLLVMLinkageAttrGet(MlirContext ctx, MlirLLVMLinkage linkage) {
334 return wrap(LinkageAttr::get(unwrap(ctx), linkage::Linkage(linkage)));
335}
336
338 return wrap(LinkageAttr::name);
339}
340
341MlirAttribute mlirLLVMDIFileAttrGet(MlirContext ctx, MlirAttribute name,
342 MlirAttribute directory) {
343 return wrap(DIFileAttr::get(unwrap(ctx), cast<StringAttr>(unwrap(name)),
344 cast<StringAttr>(unwrap(directory))));
345}
346
347MlirStringRef mlirLLVMDIFileAttrGetName(void) { return wrap(DIFileAttr::name); }
348
349MlirAttribute mlirLLVMDICompileUnitAttrGetRecSelf(MlirAttribute recId) {
350 return wrap(DICompileUnitAttr::getRecSelf(cast<DistinctAttr>(unwrap(recId))));
351}
352
354 MlirContext ctx, MlirAttribute recId, bool isRecSelf, MlirAttribute id,
355 unsigned int sourceLanguage, MlirAttribute file, MlirAttribute producer,
356 bool isOptimized, MlirLLVMDIEmissionKind emissionKind,
357 bool isDebugInfoForProfiling, MlirLLVMDINameTableKind nameTableKind,
358 MlirAttribute splitDebugFilename, intptr_t nImportedEntities,
359 MlirAttribute const *importedEntities) {
361 ctx, recId, isRecSelf, id, sourceLanguage,
362 /*sourceLanguageDialect=*/0, file, producer, isOptimized, emissionKind,
363 isDebugInfoForProfiling, nameTableKind, splitDebugFilename,
364 nImportedEntities, importedEntities);
365}
366
368 MlirContext ctx, MlirAttribute recId, bool isRecSelf, MlirAttribute id,
369 unsigned int sourceLanguage, unsigned int sourceLanguageDialect,
370 MlirAttribute file, MlirAttribute producer, bool isOptimized,
371 MlirLLVMDIEmissionKind emissionKind, bool isDebugInfoForProfiling,
372 MlirLLVMDINameTableKind nameTableKind, MlirAttribute splitDebugFilename,
373 intptr_t nImportedEntities, MlirAttribute const *importedEntities) {
374 SmallVector<Attribute> importsStorage;
375 importsStorage.reserve(nImportedEntities);
376 auto sourceLanguageAttr = DISourceLanguageNameAttr::get(
377 unwrap(ctx), sourceLanguage, /*name=*/0, /*version=*/std::nullopt,
378 sourceLanguageDialect);
379 return wrap(DICompileUnitAttr::get(
380 unwrap(ctx), cast<DistinctAttr>(unwrap(recId)), isRecSelf,
381 cast<DistinctAttr>(unwrap(id)), sourceLanguageAttr,
382 cast<DIFileAttr>(unwrap(file)), cast<StringAttr>(unwrap(producer)),
383 isOptimized, DIEmissionKind(emissionKind), isDebugInfoForProfiling,
384 DINameTableKind(nameTableKind),
385 cast<StringAttr>(unwrap(splitDebugFilename)),
386 llvm::map_to_vector(
387 unwrapList(nImportedEntities, importedEntities, importsStorage),
388 llvm::CastTo<DINodeAttr>)));
389}
390
392 MlirContext ctx, MlirAttribute recId, bool isRecSelf, MlirAttribute id,
393 unsigned int sourceLanguageName, uint32_t sourceLanguageVersion,
394 unsigned int sourceLanguageDialect, MlirAttribute file,
395 MlirAttribute producer, bool isOptimized,
396 MlirLLVMDIEmissionKind emissionKind, bool isDebugInfoForProfiling,
397 MlirLLVMDINameTableKind nameTableKind, MlirAttribute splitDebugFilename,
398 intptr_t nImportedEntities, MlirAttribute const *importedEntities) {
399 SmallVector<Attribute> importsStorage;
400 importsStorage.reserve(nImportedEntities);
401 auto sourceLanguageAttr = DISourceLanguageNameAttr::get(
402 unwrap(ctx), /*language=*/0, sourceLanguageName,
403 std::optional<uint32_t>(sourceLanguageVersion), sourceLanguageDialect);
404 return wrap(DICompileUnitAttr::get(
405 unwrap(ctx), cast<DistinctAttr>(unwrap(recId)), isRecSelf,
406 cast<DistinctAttr>(unwrap(id)), sourceLanguageAttr,
407 cast<DIFileAttr>(unwrap(file)), cast<StringAttr>(unwrap(producer)),
408 isOptimized, DIEmissionKind(emissionKind), isDebugInfoForProfiling,
409 DINameTableKind(nameTableKind),
410 cast<StringAttr>(unwrap(splitDebugFilename)),
411 llvm::map_to_vector(
412 unwrapList(nImportedEntities, importedEntities, importsStorage),
413 llvm::CastTo<DINodeAttr>)));
414}
415
417 return wrap(DICompileUnitAttr::name);
418}
419
420MlirAttribute mlirLLVMDIFlagsAttrGet(MlirContext ctx, uint64_t value) {
421 return wrap(DIFlagsAttr::get(unwrap(ctx), DIFlags(value)));
422}
423
425 return wrap(DIFlagsAttr::name);
426}
427
428MlirAttribute mlirLLVMDILexicalBlockAttrGet(MlirContext ctx,
429 MlirAttribute scope,
430 MlirAttribute file,
431 unsigned int line,
432 unsigned int column) {
433 return wrap(
434 DILexicalBlockAttr::get(unwrap(ctx), cast<DIScopeAttr>(unwrap(scope)),
435 cast<DIFileAttr>(unwrap(file)), line, column));
436}
437
439 return wrap(DILexicalBlockAttr::name);
440}
441
442MlirAttribute mlirLLVMDILexicalBlockFileAttrGet(MlirContext ctx,
443 MlirAttribute scope,
444 MlirAttribute file,
445 unsigned int discriminator) {
446 return wrap(DILexicalBlockFileAttr::get(
447 unwrap(ctx), cast<DIScopeAttr>(unwrap(scope)),
448 cast<DIFileAttr>(unwrap(file)), discriminator));
449}
450
452 return wrap(DILexicalBlockFileAttr::name);
453}
454
456 MlirContext ctx, MlirAttribute scope, MlirAttribute name,
457 MlirAttribute diFile, unsigned int line, unsigned int arg,
458 unsigned int alignInBits, MlirAttribute diType, int64_t flags) {
459 return wrap(DILocalVariableAttr::get(
460 unwrap(ctx), cast<DIScopeAttr>(unwrap(scope)),
461 cast<StringAttr>(unwrap(name)), cast<DIFileAttr>(unwrap(diFile)), line,
462 arg, alignInBits, cast<DITypeAttr>(unwrap(diType)), DIFlags(flags)));
463}
464
466 return wrap(DILocalVariableAttr::name);
467}
468
469MlirAttribute mlirLLVMDISubroutineTypeAttrGet(MlirContext ctx,
470 unsigned int callingConvention,
471 intptr_t nTypes,
472 MlirAttribute const *types) {
473 SmallVector<Attribute> attrStorage;
474 attrStorage.reserve(nTypes);
475
476 return wrap(DISubroutineTypeAttr::get(
477 unwrap(ctx), callingConvention,
478 llvm::map_to_vector(unwrapList(nTypes, types, attrStorage),
479 llvm::CastTo<DITypeAttr>)));
480}
481
483 return wrap(DISubroutineTypeAttr::name);
484}
485
486MlirAttribute mlirLLVMDISubprogramAttrGetRecSelf(MlirAttribute recId) {
487 return wrap(DISubprogramAttr::getRecSelf(cast<DistinctAttr>(unwrap(recId))));
488}
489
491 MlirContext ctx, MlirAttribute recId, bool isRecSelf, MlirAttribute id,
492 MlirAttribute compileUnit, MlirAttribute scope, MlirAttribute name,
493 MlirAttribute linkageName, MlirAttribute file, unsigned int line,
494 unsigned int scopeLine, uint64_t subprogramFlags, MlirAttribute type,
495 intptr_t nRetainedNodes, MlirAttribute const *retainedNodes,
496 intptr_t nAnnotations, MlirAttribute const *annotations) {
497 SmallVector<Attribute> nodesStorage;
498 nodesStorage.reserve(nRetainedNodes);
499
500 SmallVector<Attribute> annotationsStorage;
501 annotationsStorage.reserve(nAnnotations);
502
503 return wrap(DISubprogramAttr::get(
504 unwrap(ctx), cast<DistinctAttr>(unwrap(recId)), isRecSelf,
505 cast<DistinctAttr>(unwrap(id)),
506 cast<DICompileUnitAttr>(unwrap(compileUnit)),
507 cast<DIScopeAttr>(unwrap(scope)), cast<StringAttr>(unwrap(name)),
508 cast<StringAttr>(unwrap(linkageName)), cast<DIFileAttr>(unwrap(file)),
509 line, scopeLine, DISubprogramFlags(subprogramFlags),
510 cast<DISubroutineTypeAttr>(unwrap(type)),
511 llvm::map_to_vector(
512 unwrapList(nRetainedNodes, retainedNodes, nodesStorage),
513 llvm::CastTo<Attribute>),
514 llvm::map_to_vector(
515 unwrapList(nAnnotations, annotations, annotationsStorage),
516 llvm::CastTo<DINodeAttr>)));
517}
518
520 return wrap(DISubprogramAttr::name);
521}
522
523MlirAttribute mlirLLVMDISubprogramAttrGetScope(MlirAttribute diSubprogram) {
524 return wrap(cast<DISubprogramAttr>(unwrap(diSubprogram)).getScope());
525}
526
527unsigned int mlirLLVMDISubprogramAttrGetLine(MlirAttribute diSubprogram) {
528 return cast<DISubprogramAttr>(unwrap(diSubprogram)).getLine();
529}
530
531unsigned int mlirLLVMDISubprogramAttrGetScopeLine(MlirAttribute diSubprogram) {
532 return cast<DISubprogramAttr>(unwrap(diSubprogram)).getScopeLine();
533}
534
535MlirAttribute
536mlirLLVMDISubprogramAttrGetCompileUnit(MlirAttribute diSubprogram) {
537 return wrap(cast<DISubprogramAttr>(unwrap(diSubprogram)).getCompileUnit());
538}
539
540MlirAttribute mlirLLVMDISubprogramAttrGetFile(MlirAttribute diSubprogram) {
541 return wrap(cast<DISubprogramAttr>(unwrap(diSubprogram)).getFile());
542}
543
544MlirAttribute mlirLLVMDISubprogramAttrGetType(MlirAttribute diSubprogram) {
545 return wrap(cast<DISubprogramAttr>(unwrap(diSubprogram)).getType());
546}
547
548MlirAttribute mlirLLVMDIModuleAttrGet(MlirContext ctx, MlirAttribute file,
549 MlirAttribute scope, MlirAttribute name,
550 MlirAttribute configMacros,
551 MlirAttribute includePath,
552 MlirAttribute apinotes, unsigned int line,
553 bool isDecl) {
554 return wrap(DIModuleAttr::get(
555 unwrap(ctx), cast<DIFileAttr>(unwrap(file)),
556 cast<DIScopeAttr>(unwrap(scope)), cast<StringAttr>(unwrap(name)),
557 cast<StringAttr>(unwrap(configMacros)),
558 cast<StringAttr>(unwrap(includePath)), cast<StringAttr>(unwrap(apinotes)),
559 line, isDecl));
560}
561
563 return wrap(DIModuleAttr::name);
564}
565
566MlirAttribute mlirLLVMDIModuleAttrGetScope(MlirAttribute diModule) {
567 return wrap(cast<DIModuleAttr>(unwrap(diModule)).getScope());
568}
569
571 MlirContext ctx, unsigned int tag, MlirAttribute scope,
572 MlirAttribute entity, MlirAttribute file, unsigned int line,
573 MlirAttribute name, intptr_t nElements, MlirAttribute const *elements) {
574 SmallVector<Attribute> elementsStorage;
575 elementsStorage.reserve(nElements);
576 return wrap(DIImportedEntityAttr::get(
577 unwrap(ctx), tag, cast<DIScopeAttr>(unwrap(scope)),
578 cast<DINodeAttr>(unwrap(entity)), cast<DIFileAttr>(unwrap(file)), line,
579 cast<StringAttr>(unwrap(name)),
580 llvm::map_to_vector(unwrapList(nElements, elements, elementsStorage),
581 llvm::CastTo<DINodeAttr>)));
582}
583
585 return wrap(DIImportedEntityAttr::name);
586}
587
588MlirAttribute mlirLLVMDIAnnotationAttrGet(MlirContext ctx, MlirAttribute name,
589 MlirAttribute value) {
590 return wrap(DIAnnotationAttr::get(unwrap(ctx), cast<StringAttr>(unwrap(name)),
591 cast<StringAttr>(unwrap(value))));
592}
593
595 return wrap(DIAnnotationAttr::name);
596}
597
598//===----------------------------------------------------------------------===//
599// Metadata Attributes
600//===----------------------------------------------------------------------===//
601
602MlirAttribute mlirLLVMMDStringAttrGet(MlirContext ctx, MlirStringRef value) {
603 return wrap(MDStringAttr::get(unwrap(ctx),
604 StringAttr::get(unwrap(ctx), unwrap(value))));
605}
606
607bool mlirLLVMAttrIsAMDStringAttr(MlirAttribute attr) {
608 return isa<MDStringAttr>(unwrap(attr));
609}
610
612 return wrap(MDStringAttr::getTypeID());
613}
614
616 return wrap(cast<MDStringAttr>(unwrap(attr)).getValue().getValue());
617}
618
619MlirAttribute mlirLLVMMDConstantAttrGet(MlirContext ctx,
620 MlirAttribute valueAttr) {
621 return wrap(MDConstantAttr::get(unwrap(ctx), unwrap(valueAttr)));
622}
623
624bool mlirLLVMAttrIsAMDConstantAttr(MlirAttribute attr) {
625 return isa<MDConstantAttr>(unwrap(attr));
626}
627
629 return wrap(MDConstantAttr::getTypeID());
630}
631
632MlirAttribute mlirLLVMMDConstantAttrGetValue(MlirAttribute attr) {
633 return wrap((Attribute)cast<MDConstantAttr>(unwrap(attr)).getValue());
634}
635
636MlirAttribute mlirLLVMMDGlobalValueAttrGet(MlirContext ctx,
637 MlirAttribute name) {
638 return wrap(MDGlobalValueAttr::get(unwrap(ctx),
639 cast<FlatSymbolRefAttr>(unwrap(name))));
640}
641
642bool mlirLLVMAttrIsAMDGlobalValueAttr(MlirAttribute attr) {
643 return isa<MDGlobalValueAttr>(unwrap(attr));
644}
645
647 return wrap(MDGlobalValueAttr::getTypeID());
648}
649
650MlirAttribute mlirLLVMMDGlobalValueAttrGetName(MlirAttribute attr) {
651 return wrap((Attribute)cast<MDGlobalValueAttr>(unwrap(attr)).getName());
652}
653
654MlirAttribute mlirLLVMMDNodeAttrGet(MlirContext ctx, intptr_t nOperands,
655 MlirAttribute const *operands) {
656 SmallVector<Attribute> attrStorage;
657 attrStorage.reserve(nOperands);
658 return wrap(MDNodeAttr::get(unwrap(ctx),
659 unwrapList(nOperands, operands, attrStorage)));
660}
661
662bool mlirLLVMAttrIsAMDNodeAttr(MlirAttribute attr) {
663 return isa<MDNodeAttr>(unwrap(attr));
664}
665
667 return wrap(MDNodeAttr::getTypeID());
668}
669
671 return cast<MDNodeAttr>(unwrap(attr)).getOperands().size();
672}
673
674MlirAttribute mlirLLVMMDNodeAttrGetOperand(MlirAttribute attr, intptr_t index) {
675 return wrap(cast<MDNodeAttr>(unwrap(attr)).getOperands()[index]);
676}
MlirStringRef mlirLLVMDIFlagsAttrGetName(void)
Definition LLVM.cpp:424
intptr_t mlirLLVMMDNodeAttrGetNumOperands(MlirAttribute attr)
Returns the number of operands in an LLVM MDNodeAttr.
Definition LLVM.cpp:670
MlirStringRef mlirLLVMDIModuleAttrGetName(void)
Definition LLVM.cpp:562
MlirAttribute mlirLLVMDICompositeTypeAttrGet(MlirContext ctx, MlirAttribute recId, bool isRecSelf, unsigned int tag, MlirAttribute name, MlirAttribute file, uint32_t line, MlirAttribute scope, MlirAttribute baseType, int64_t flags, uint64_t sizeInBits, uint64_t alignInBits, intptr_t nElements, MlirAttribute const *elements, MlirAttribute dataLocation, MlirAttribute rank, MlirAttribute allocated, MlirAttribute associated, MlirAttribute identifier, MlirAttribute discriminator)
Creates a LLVM DICompositeType attribute.
Definition LLVM.cpp:250
MlirStringRef mlirLLVMDIAnnotationAttrGetName(void)
Definition LLVM.cpp:594
bool mlirLLVMStructTypeIsLiteral(MlirType type)
Returns true if the type is a literal (unnamed) LLVM struct type.
Definition LLVM.cpp:126
MlirAttribute mlirLLVMLinkageAttrGet(MlirContext ctx, MlirLLVMLinkage linkage)
Creates a LLVM Linkage attribute.
Definition LLVM.cpp:333
MlirStringRef mlirLLVMDIImportedEntityAttrGetName(void)
Definition LLVM.cpp:584
MlirTypeID mlirLLVMMDConstantAttrGetTypeID(void)
Returns the TypeID of MDConstantAttr.
Definition LLVM.cpp:628
MlirAttribute mlirLLVMDISubprogramAttrGetFile(MlirAttribute diSubprogram)
Gets the file from this DISubprogramAttr.
Definition LLVM.cpp:540
bool mlirLLVMAttrIsAMDConstantAttr(MlirAttribute attr)
Returns true if the attribute is an LLVM MDConstantAttr.
Definition LLVM.cpp:624
MlirStringRef mlirLLVMDICompileUnitAttrGetName(void)
Definition LLVM.cpp:416
MlirStringRef mlirLLVMMDStringAttrGetValue(MlirAttribute attr)
Returns the string value of an LLVM MDStringAttr.
Definition LLVM.cpp:615
MlirType mlirLLVMFunctionTypeGet(MlirType resultType, intptr_t nArgumentTypes, MlirType const *argumentTypes, bool isVarArg)
Creates an llvm.func type.
Definition LLVM.cpp:76
MlirAttribute mlirLLVMDIModuleAttrGetScope(MlirAttribute diModule)
Gets the scope of this DIModuleAttr.
Definition LLVM.cpp:566
bool mlirTypeIsALLVMArrayType(MlirType type)
Returns true if the type is an LLVM dialect array type.
Definition LLVM.cpp:52
MlirStringRef mlirLLVMDISubroutineTypeAttrGetName(void)
Definition LLVM.cpp:482
MlirAttribute mlirLLVMMDStringAttrGet(MlirContext ctx, MlirStringRef value)
Creates an LLVM MDStringAttr.
Definition LLVM.cpp:602
MlirType mlirLLVMFunctionTypeGetInput(MlirType type, intptr_t pos)
Returns the pos-th input type.
Definition LLVM.cpp:100
MlirStringRef mlirLLVMCConvAttrGetName(void)
Definition LLVM.cpp:325
MlirStringRef mlirLLVMDILexicalBlockAttrGetName(void)
Definition LLVM.cpp:438
bool mlirTypeIsALLVMFunctionType(MlirType type)
Returns true if the type is an LLVM dialect function type.
Definition LLVM.cpp:88
MlirStringRef mlirLLVMDIStringTypeAttrGetName(void)
Definition LLVM.cpp:312
intptr_t mlirLLVMStructTypeGetNumElementTypes(MlirType type)
Returns the number of fields in the struct.
Definition LLVM.cpp:130
bool mlirLLVMAttrIsAMDNodeAttr(MlirAttribute attr)
Returns true if the attribute is an LLVM MDNodeAttr.
Definition LLVM.cpp:662
MlirAttribute mlirLLVMDICompileUnitAttrGet(MlirContext ctx, MlirAttribute recId, bool isRecSelf, MlirAttribute id, unsigned int sourceLanguage, MlirAttribute file, MlirAttribute producer, bool isOptimized, MlirLLVMDIEmissionKind emissionKind, bool isDebugInfoForProfiling, MlirLLVMDINameTableKind nameTableKind, MlirAttribute splitDebugFilename, intptr_t nImportedEntities, MlirAttribute const *importedEntities)
Creates a LLVM DICompileUnit attribute.
Definition LLVM.cpp:353
MlirTypeID mlirLLVMMDStringAttrGetTypeID(void)
Returns the TypeID of MDStringAttr.
Definition LLVM.cpp:611
MlirStringRef mlirLLVMStructTypeGetName(void)
Definition LLVM.cpp:122
intptr_t mlirLLVMFunctionTypeGetNumInputs(MlirType type)
Returns the number of input types.
Definition LLVM.cpp:96
MlirStringRef mlirLLVMDILexicalBlockFileAttrGetName(void)
Definition LLVM.cpp:451
MlirAttribute mlirLLVMDINullTypeAttrGet(MlirContext ctx)
Creates a LLVM DINullType attribute.
Definition LLVM.cpp:224
MlirStringRef mlirLLVMPointerTypeGetName(void)
Definition LLVM.cpp:30
unsigned mlirLLVMArrayTypeGetNumElements(MlirType type)
Returns the number of elements in the llvm.array type.
Definition LLVM.cpp:72
MlirTypeID mlirLLVMArrayTypeGetTypeID()
Definition LLVM.cpp:56
MlirStringRef mlirLLVMDIFileAttrGetName(void)
Definition LLVM.cpp:347
MlirType mlirLLVMArrayTypeGetElementType(MlirType type)
Returns the element type of the llvm.array type.
Definition LLVM.cpp:68
MlirLogicalResult mlirLLVMStructTypeSetBody(MlirType structType, intptr_t nFieldTypes, MlirType const *fieldTypes, bool isPacked)
Sets the body of the identified struct if it hasn't been set yet.
Definition LLVM.cpp:187
MlirAttribute mlirLLVMDIFileAttrGet(MlirContext ctx, MlirAttribute name, MlirAttribute directory)
Creates a LLVM DIFileAttr attribute.
Definition LLVM.cpp:341
MlirTypeID mlirLLVMPointerTypeGetTypeID()
Definition LLVM.cpp:34
bool mlirTypeIsALLVMStructType(MlirType type)
Returns true if the type is an LLVM dialect struct type.
Definition LLVM.cpp:114
MlirStringRef mlirLLVMStructTypeGetIdentifier(MlirType type)
Returns the identifier of the identified struct.
Definition LLVM.cpp:142
MlirAttribute mlirLLVMDISubprogramAttrGetScope(MlirAttribute diSubprogram)
Gets the scope from this DISubprogramAttr.
Definition LLVM.cpp:523
MlirAttribute mlirLLVMMDGlobalValueAttrGetName(MlirAttribute attr)
Returns the symbol name of an LLVM MDGlobalValueAttr.
Definition LLVM.cpp:650
MlirAttribute mlirLLVMDILexicalBlockAttrGet(MlirContext ctx, MlirAttribute scope, MlirAttribute file, unsigned int line, unsigned int column)
Creates a LLVM DILexicalBlock attribute.
Definition LLVM.cpp:428
bool mlirLLVMAttrIsAMDGlobalValueAttr(MlirAttribute attr)
Returns true if the attribute is an LLVM MDGlobalValueAttr.
Definition LLVM.cpp:642
MlirAttribute mlirLLVMMDNodeAttrGet(MlirContext ctx, intptr_t nOperands, MlirAttribute const *operands)
Creates an LLVM MDNodeAttr.
Definition LLVM.cpp:654
MlirAttribute mlirLLVMDIExpressionElemAttrGet(MlirContext ctx, unsigned int opcode, intptr_t nArguments, uint64_t const *arguments)
Creates a LLVM DIExpressionElem attribute.
Definition LLVM.cpp:197
MlirAttribute mlirLLVMDICompileUnitAttrGetRecSelf(MlirAttribute recId)
Creates a self-referencing LLVM DICompileUnitAttr attribute.
Definition LLVM.cpp:349
MlirAttribute mlirLLVMDICompositeTypeAttrGetRecSelf(MlirAttribute recId)
Creates a self-referencing LLVM DICompositeType attribute.
Definition LLVM.cpp:245
MlirStringRef mlirLLVMArrayTypeGetName(void)
Definition LLVM.cpp:64
MlirTypeID mlirLLVMStructTypeGetTypeID()
Definition LLVM.cpp:118
MlirAttribute mlirLLVMDIBasicTypeAttrGet(MlirContext ctx, unsigned int tag, MlirAttribute name, uint64_t sizeInBits, MlirLLVMTypeEncoding encoding)
Creates a LLVM DIBasicType attribute.
Definition LLVM.cpp:232
MlirType mlirLLVMFunctionTypeGetReturnType(MlirType type)
Returns the return type of the function type.
Definition LLVM.cpp:106
MlirAttribute mlirLLVMDIDerivedTypeAttrGet(MlirContext ctx, unsigned int tag, MlirAttribute name, MlirAttribute file, uint32_t line, MlirAttribute scope, MlirAttribute baseType, uint64_t sizeInBits, uint32_t alignInBits, uint64_t offsetInBits, int64_t dwarfAddressSpace, int64_t flags, MlirAttribute extraData)
Creates a LLVM DIDerivedType attribute.
Definition LLVM.cpp:280
MlirStringRef mlirLLVMDINullTypeAttrGetName(void)
Definition LLVM.cpp:228
MlirStringRef mlirLLVMDIDerivedTypeAttrGetName(void)
Definition LLVM.cpp:295
MlirAttribute mlirLLVMComdatAttrGet(MlirContext ctx, MlirLLVMComdat comdat)
Creates a LLVM Comdat attribute.
Definition LLVM.cpp:327
MlirAttribute mlirLLVMDISubprogramAttrGetRecSelf(MlirAttribute recId)
Creates a self-referencing LLVM DISubprogramAttr attribute.
Definition LLVM.cpp:486
MlirType mlirLLVMVoidTypeGet(MlirContext ctx)
Creates an llmv.void type.
Definition LLVM.cpp:46
MlirStringRef mlirLLVMDIBasicTypeAttrGetName(void)
Definition LLVM.cpp:241
MlirAttribute mlirLLVMDIImportedEntityAttrGet(MlirContext ctx, unsigned int tag, MlirAttribute scope, MlirAttribute entity, MlirAttribute file, unsigned int line, MlirAttribute name, intptr_t nElements, MlirAttribute const *elements)
Creates a LLVM DIImportedEntityAttr attribute.
Definition LLVM.cpp:570
MlirType mlirLLVMStructTypeIdentifiedNewGet(MlirContext ctx, MlirStringRef name, intptr_t nFieldTypes, MlirType const *fieldTypes, bool isPacked)
Creates an LLVM identified struct type with no body and a name starting with the given prefix.
Definition LLVM.cpp:177
MlirAttribute mlirLLVMMDConstantAttrGet(MlirContext ctx, MlirAttribute valueAttr)
Creates an LLVM MDConstantAttr wrapping an attribute.
Definition LLVM.cpp:619
MlirType mlirLLVMStructTypeGetElementType(MlirType type, intptr_t position)
Returns the positions-th field of the struct.
Definition LLVM.cpp:134
MlirType mlirLLVMStructTypeOpaqueGet(MlirContext ctx, MlirStringRef name)
Definition LLVM.cpp:169
MlirAttribute mlirLLVMMDNodeAttrGetOperand(MlirAttribute attr, intptr_t index)
Returns the operand at the given index of an LLVM MDNodeAttr.
Definition LLVM.cpp:674
MlirType mlirLLVMArrayTypeGet(MlirType elementType, unsigned numElements)
Creates an llvm.array type.
Definition LLVM.cpp:60
MlirAttribute mlirLLVMDISubprogramAttrGetType(MlirAttribute diSubprogram)
Gets the type from this DISubprogramAttr.
Definition LLVM.cpp:544
MlirTypeID mlirLLVMMDNodeAttrGetTypeID(void)
Returns the TypeID of MDNodeAttr.
Definition LLVM.cpp:666
MlirAttribute mlirLLVMDICompileUnitAttrGetWithSourceLanguageName(MlirContext ctx, MlirAttribute recId, bool isRecSelf, MlirAttribute id, unsigned int sourceLanguageName, uint32_t sourceLanguageVersion, unsigned int sourceLanguageDialect, MlirAttribute file, MlirAttribute producer, bool isOptimized, MlirLLVMDIEmissionKind emissionKind, bool isDebugInfoForProfiling, MlirLLVMDINameTableKind nameTableKind, MlirAttribute splitDebugFilename, intptr_t nImportedEntities, MlirAttribute const *importedEntities)
Creates an LLVM DICompileUnit attribute with a DWARF v6 source language name, version,...
Definition LLVM.cpp:391
bool mlirLLVMFunctionTypeIsVarArg(MlirType type)
Returns true if the function type is variadic.
Definition LLVM.cpp:110
MlirAttribute mlirLLVMDISubprogramAttrGetCompileUnit(MlirAttribute diSubprogram)
Gets the compile unit from this DISubprogram.
Definition LLVM.cpp:536
MlirAttribute mlirLLVMDIModuleAttrGet(MlirContext ctx, MlirAttribute file, MlirAttribute scope, MlirAttribute name, MlirAttribute configMacros, MlirAttribute includePath, MlirAttribute apinotes, unsigned int line, bool isDecl)
Creates a LLVM DIModuleAttr attribute.
Definition LLVM.cpp:548
MlirStringRef mlirLLVMDICompositeTypeAttrGetName(void)
Definition LLVM.cpp:276
bool mlirLLVMAttrIsAMDStringAttr(MlirAttribute attr)
Returns true if the attribute is an LLVM MDStringAttr.
Definition LLVM.cpp:607
MlirStringRef mlirLLVMDIExpressionAttrGetName(void)
Definition LLVM.cpp:220
MlirStringRef mlirLLVMComdatAttrGetName(void)
Definition LLVM.cpp:331
MlirStringRef mlirLLVMDILocalVariableAttrGetName(void)
Definition LLVM.cpp:465
MlirStringRef mlirLLVMDISubprogramAttrGetName(void)
Definition LLVM.cpp:519
MlirAttribute mlirLLVMCConvAttrGet(MlirContext ctx, MlirLLVMCConv cconv)
Creates a LLVM CConv attribute.
Definition LLVM.cpp:321
MlirStringRef mlirLLVMLinkageAttrGetName(void)
Definition LLVM.cpp:337
MlirAttribute mlirLLVMDIAnnotationAttrGet(MlirContext ctx, MlirAttribute name, MlirAttribute value)
Creates a LLVM DIAnnotation attribute.
Definition LLVM.cpp:588
MlirType mlirLLVMStructTypeLiteralGetChecked(MlirLocation loc, intptr_t nFieldTypes, MlirType const *fieldTypes, bool isPacked)
Creates an LLVM literal (unnamed) struct type if possible.
Definition LLVM.cpp:159
MlirAttribute mlirLLVMMDConstantAttrGetValue(MlirAttribute attr)
Returns the attribute value of an LLVM MDConstantAttr.
Definition LLVM.cpp:632
MlirAttribute mlirLLVMDILexicalBlockFileAttrGet(MlirContext ctx, MlirAttribute scope, MlirAttribute file, unsigned int discriminator)
Creates a LLVM DILexicalBlockFile attribute.
Definition LLVM.cpp:442
MlirAttribute mlirLLVMDIExpressionAttrGet(MlirContext ctx, intptr_t nOperations, MlirAttribute const *operations)
Creates a LLVM DIExpression attribute.
Definition LLVM.cpp:209
bool mlirLLVMStructTypeIsPacked(MlirType type)
Returns true if the struct is packed.
Definition LLVM.cpp:138
MlirAttribute mlirLLVMDISubprogramAttrGet(MlirContext ctx, MlirAttribute recId, bool isRecSelf, MlirAttribute id, MlirAttribute compileUnit, MlirAttribute scope, MlirAttribute name, MlirAttribute linkageName, MlirAttribute file, unsigned int line, unsigned int scopeLine, uint64_t subprogramFlags, MlirAttribute type, intptr_t nRetainedNodes, MlirAttribute const *retainedNodes, intptr_t nAnnotations, MlirAttribute const *annotations)
Creates a LLVM DISubprogramAttr attribute.
Definition LLVM.cpp:490
unsigned mlirLLVMPointerTypeGetAddressSpace(MlirType pointerType)
Returns address space of llvm.ptr.
Definition LLVM.cpp:42
MlirAttribute mlirLLVMDIFlagsAttrGet(MlirContext ctx, uint64_t value)
Creates a LLVM DIFlags attribute.
Definition LLVM.cpp:420
MlirType mlirLLVMStructTypeIdentifiedGet(MlirContext ctx, MlirStringRef name)
Creates an LLVM identified struct type with no body.
Definition LLVM.cpp:173
MlirAttribute mlirLLVMDISubroutineTypeAttrGet(MlirContext ctx, unsigned int callingConvention, intptr_t nTypes, MlirAttribute const *types)
Creates a LLVM DISubroutineTypeAttr attribute.
Definition LLVM.cpp:469
MlirAttribute mlirLLVMDIDerivedTypeAttrGetBaseType(MlirAttribute diDerivedType)
Gets the base type from a LLVM DIDerivedType attribute.
Definition LLVM.cpp:317
bool mlirLLVMStructTypeIsOpaque(MlirType type)
Returns true is the struct is explicitly opaque (will not have a body) or uninitialized (will eventua...
Definition LLVM.cpp:146
bool mlirTypeIsALLVMPointerType(MlirType type)
Returns true if the type is an LLVM dialect pointer type.
Definition LLVM.cpp:38
MlirTypeID mlirLLVMFunctionTypeGetTypeID(void)
Returns the TypeID of an LLVM function type.
Definition LLVM.cpp:92
unsigned int mlirLLVMDISubprogramAttrGetLine(MlirAttribute diSubprogram)
Gets the line from this DISubprogramAttr.
Definition LLVM.cpp:527
MlirAttribute mlirLLVMDILocalVariableAttrGet(MlirContext ctx, MlirAttribute scope, MlirAttribute name, MlirAttribute diFile, unsigned int line, unsigned int arg, unsigned int alignInBits, MlirAttribute diType, int64_t flags)
Creates a LLVM DILocalVariableAttr attribute.
Definition LLVM.cpp:455
MlirStringRef mlirLLVMVoidTypeGetName(void)
Definition LLVM.cpp:50
unsigned int mlirLLVMDISubprogramAttrGetScopeLine(MlirAttribute diSubprogram)
Gets the scope line from this DISubprogram.
Definition LLVM.cpp:531
MlirTypeID mlirLLVMMDGlobalValueAttrGetTypeID(void)
Returns the TypeID of MDGlobalValueAttr.
Definition LLVM.cpp:646
MlirAttribute mlirLLVMDICompileUnitAttrGetWithSourceLanguageDialect(MlirContext ctx, MlirAttribute recId, bool isRecSelf, MlirAttribute id, unsigned int sourceLanguage, unsigned int sourceLanguageDialect, MlirAttribute file, MlirAttribute producer, bool isOptimized, MlirLLVMDIEmissionKind emissionKind, bool isDebugInfoForProfiling, MlirLLVMDINameTableKind nameTableKind, MlirAttribute splitDebugFilename, intptr_t nImportedEntities, MlirAttribute const *importedEntities)
Creates a LLVM DICompileUnit attribute with a source language dialect.
Definition LLVM.cpp:367
MlirAttribute mlirLLVMDIStringTypeAttrGet(MlirContext ctx, unsigned int tag, MlirAttribute name, uint64_t sizeInBits, uint32_t alignInBits, MlirAttribute stringLength, MlirAttribute stringLengthExp, MlirAttribute stringLocationExp, MlirLLVMTypeEncoding encoding, MlirAttribute charType)
Definition LLVM.cpp:299
MlirType mlirLLVMStructTypeLiteralGet(MlirContext ctx, intptr_t nFieldTypes, MlirType const *fieldTypes, bool isPacked)
Creates an LLVM literal (unnamed) struct type.
Definition LLVM.cpp:150
MlirStringRef mlirLLVMDIExpressionElemAttrGetName(void)
Definition LLVM.cpp:205
MlirAttribute mlirLLVMMDGlobalValueAttrGet(MlirContext ctx, MlirAttribute name)
Creates an LLVM MDGlobalValueAttr referencing a symbol-backed global value.
Definition LLVM.cpp:636
MlirStringRef mlirLLVMFunctionTypeGetName(void)
Definition LLVM.cpp:84
#define MLIR_DEFINE_CAPI_DIALECT_REGISTRATION(Name, Namespace, ClassName)
static Type getElementType(Type type, ArrayRef< int32_t > indices, function_ref< InFlightDiagnostic(StringRef)> emitErrorFn)
Walks the given type hierarchy with the given indices, potentially down to component granularity,...
Definition SPIRVOps.cpp:229
llvm::ArrayRef< CppTy > unwrapList(size_t size, CTy *first, llvm::SmallVectorImpl< CppTy > &storage)
Definition Wrap.h:40
Attributes are known-constant values of operations.
Definition Attributes.h:25
MlirDiagnostic wrap(mlir::Diagnostic &diagnostic)
Definition Diagnostics.h:24
mlir::Diagnostic & unwrap(MlirDiagnostic diagnostic)
Definition Diagnostics.h:19
MlirLLVMDINameTableKind
Definition LLVM.h:357
MLIR_CAPI_EXPORTED MlirType mlirLLVMPointerTypeGet(MlirContext ctx, unsigned addressSpace)
Creates an llvm.ptr type.
Definition LLVM.cpp:26
MlirLLVMLinkage
Definition LLVM.h:227
MlirLLVMComdat
Definition LLVM.h:211
MlirLLVMCConv
Definition LLVM.h:153
MlirLLVMDIEmissionKind
Definition LLVM.h:348
MlirLLVMTypeEncoding
Definition LLVM.h:267
The OpAsmOpInterface, see OpAsmInterface.td for more details.
Definition CallGraph.h:227
Include the generated interface declarations.
Type getType(OpFoldResult ofr)
Returns the int type of the integer in ofr.
Definition Utils.cpp:311
InFlightDiagnostic emitError(Location loc)
Utility method to emit an error message using this location.
A logical result value, essentially a boolean with named states.
Definition Support.h:121
A pointer to a sized fragment of a string, not necessarily null-terminated.
Definition Support.h:78