MLIR 22.0.0git
LLVMDialect.cpp File Reference
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
#include "mlir/Dialect/LLVMIR/LLVMAttrs.h"
#include "mlir/Dialect/LLVMIR/LLVMTypes.h"
#include "mlir/IR/Attributes.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/BuiltinOps.h"
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/IR/DialectImplementation.h"
#include "mlir/IR/MLIRContext.h"
#include "mlir/IR/Matchers.h"
#include "mlir/Interfaces/FunctionImplementation.h"
#include "mlir/Transforms/InliningUtils.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/TypeSwitch.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/Support/Error.h"
#include "LLVMDialectBytecode.h"
#include <numeric>
#include <optional>
#include "mlir/Dialect/LLVMIR/LLVMOpsDialect.cpp.inc"
#include "mlir/Dialect/LLVMIR/LLVMOps.cpp.inc"
#include "mlir/Dialect/LLVMIR/LLVMIntrinsicOps.cpp.inc"

Go to the source code of this file.

Macros

#define REGISTER_ENUM_TYPE(Ty)
#define GET_OP_LIST
#define GET_OP_LIST
#define GET_OP_CLASSES
#define GET_OP_CLASSES

Functions

static auto processFMFAttr (ArrayRef< NamedAttribute > attrs)
static LogicalResult verifySymbolAttrUse (FlatSymbolRefAttr symbol, Operation *op, SymbolTableCollection &symbolTable)
 Verifies symbol's use in op to ensure the symbol is a valid and fully defined llvm.func.
static Type getI1SameShape (Type type)
 Returns a boolean type that has the same shape as type.
static int parseOptionalKeywordAlternative (OpAsmParser &parser, ArrayRef< StringRef > keywords)
template<typename EnumTy, typename RetTy = EnumTy>
static RetTy parseOptionalLLVMKeyword (OpAsmParser &parser, EnumTy defaultValue)
 Parse an enum from the keyword, or default to the provided default value.
static void printLLVMLinkage (OpAsmPrinter &p, Operation *, LinkageAttr val)
static ParseResult parseLLVMLinkage (OpAsmParser &p, LinkageAttr &val)
static ArrayAttr getLLVMAlignParamForCompressExpand (OpBuilder &builder, bool isExpandLoad, uint64_t alignment=1)
static void printOneOpBundle (OpAsmPrinter &p, OperandRange operands, TypeRange operandTypes, StringRef tag)
static void printOpBundles (OpAsmPrinter &p, Operation *op, OperandRangeRange opBundleOperands, TypeRangeRange opBundleOperandTypes, std::optional< ArrayAttr > opBundleTags)
static ParseResult parseOneOpBundle (OpAsmParser &p, SmallVector< SmallVector< OpAsmParser::UnresolvedOperand > > &opBundleOperands, SmallVector< SmallVector< Type > > &opBundleOperandTypes, SmallVector< Attribute > &opBundleTags)
static std::optional< ParseResult > parseOpBundles (OpAsmParser &p, SmallVector< SmallVector< OpAsmParser::UnresolvedOperand > > &opBundleOperands, SmallVector< SmallVector< Type > > &opBundleOperandTypes, ArrayAttr &opBundleTags)
template<typename CmpPredicateType>
static ParseResult parseCmpOp (OpAsmParser &parser, OperationState &result)
static Attribute getBoolAttribute (Type type, MLIRContext *ctx, bool value)
 Returns a scalar or vector boolean attribute of the given type.
static ParseResult parseSwitchOpCases (OpAsmParser &parser, Type flagType, DenseIntElementsAttr &caseValues, SmallVectorImpl< Block * > &caseDestinations, SmallVectorImpl< SmallVector< OpAsmParser::UnresolvedOperand > > &caseOperands, SmallVectorImpl< SmallVector< Type > > &caseOperandTypes)
 <cases> ::= [ (case (, case )* )?
static void printSwitchOpCases (OpAsmPrinter &p, SwitchOp op, Type flagType, DenseIntElementsAttr caseValues, SuccessorRange caseDestinations, OperandRangeRange caseOperands, const TypeRangeRange &caseOperandTypes)
static Type extractVectorElementType (Type type)
 Returns the elemental type of any LLVM-compatible vector type or self.
static void destructureIndices (Type currType, ArrayRef< GEPArg > indices, SmallVectorImpl< int32_t > &rawConstantIndices, SmallVectorImpl< Value > &dynamicIndices)
 Destructures the 'indices' parameter into 'rawConstantIndices' and 'dynamicIndices', encoding the former in the process.
static ParseResult parseGEPIndices (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &indices, DenseI32ArrayAttr &rawConstantIndices)
static void printGEPIndices (OpAsmPrinter &printer, LLVM::GEPOp gepOp, OperandRange indices, DenseI32ArrayAttr rawConstantIndices)
static LogicalResult verifyStructIndices (Type baseGEPType, unsigned indexPos, GEPIndicesAdaptor< ValueRange > indices, function_ref< InFlightDiagnostic()> emitOpError)
 For the given indices, check if they comply with baseGEPType, especially check against LLVMStructTypes nested within.
static LogicalResult verifyStructIndices (Type baseGEPType, GEPIndicesAdaptor< ValueRange > indices, function_ref< InFlightDiagnostic()> emitOpError)
 Driver function around verifyStructIndices.
template<typename OpTy>
static LogicalResult verifyAtomicMemOp (OpTy memOp, Type valueType, ArrayRef< AtomicOrdering > unsupportedOrderings)
 Verifies the attributes and the type of atomic memory access operations.
static SmallVector< Type, 1 > getCallOpResultTypes (LLVMFunctionType calleeType)
 Gets the MLIR Op-like result types of a LLVMFunctionType.
static TypeAttr getCallOpVarCalleeType (LLVMFunctionType calleeType)
 Gets the variadic callee type for a LLVMFunctionType.
static LLVMFunctionType getLLVMFuncType (MLIRContext *context, TypeRange results, ValueRange args)
 Constructs a LLVMFunctionType from MLIR results and args.
static LogicalResult verifyCallOpDebugInfo (CallOp callOp, LLVMFuncOp callee)
 Verify that an inlinable callsite of a debug-info-bearing function in a debug-info-bearing function has a debug location attached to it.
template<typename OpTy>
static LogicalResult verifyCallOpVarCalleeType (OpTy callOp)
 Verify that the parameter and return types of the variadic callee type match the callOp argument and result types.
template<typename OpType>
static LogicalResult verifyOperandBundles (OpType &op)
static ParseResult parseCallTypeAndResolveOperands (OpAsmParser &parser, OperationState &result, bool isDirect, ArrayRef< OpAsmParser::UnresolvedOperand > operands, SmallVectorImpl< DictionaryAttr > &argAttrs, SmallVectorImpl< DictionaryAttr > &resultAttrs)
 Parses the type of a call operation and resolves the operands if the parsing succeeds.
static ParseResult parseOptionalCallFuncPtr (OpAsmParser &parser, SmallVectorImpl< OpAsmParser::UnresolvedOperand > &operands)
 Parses an optional function pointer operand before the call argument list for indirect calls, or stops parsing at the function identifier otherwise.
static ParseResult resolveOpBundleOperands (OpAsmParser &parser, SMLoc loc, OperationState &state, ArrayRef< SmallVector< OpAsmParser::UnresolvedOperand > > opBundleOperands, ArrayRef< SmallVector< Type > > opBundleOperandTypes, StringAttr opBundleSizesAttrName)
static Type getInsertExtractValueElementType (function_ref< InFlightDiagnostic(StringRef)> emitError, Type containerType, ArrayRef< int64_t > position)
 Extract the type at position in the LLVM IR aggregate type containerType.
static Type getInsertExtractValueElementType (Type llvmType, ArrayRef< int64_t > position)
 Extract the type at position in the wrapped LLVM IR aggregate type containerType.
static ParseResult parseInsertExtractValueElementType (AsmParser &parser, Type &valueType, Type containerType, DenseI64ArrayAttr position)
 Infer the value type from the container type and position.
static void printInsertExtractValueElementType (AsmPrinter &printer, Operation *op, Type valueType, Type containerType, DenseI64ArrayAttr position)
 Nothing to print for an inferred type.
template<typename OpType>
static void printCommonGlobalAndAlias (OpAsmPrinter &p, OpType op)
static LogicalResult verifyComdat (Operation *op, std::optional< SymbolRefAttr > attr)
static LogicalResult verifyBlockTags (LLVMFuncOp funcOp)
template<typename OpType>
static ParseResult parseCommonGlobalAndAlias (OpAsmParser &parser, OperationState &result)
 Parse common attributes that might show up in the same order in both GlobalOp and AliasOp.
static bool isZeroAttribute (Attribute value)
static LogicalResult checkGlobalXtorData (Operation *op, ArrayAttr data)
static ParseResult parseShuffleType (AsmParser &parser, Type v1Type, Type &resType, DenseI32ArrayAttr mask)
 Build the result type of a shuffle vector operation.
static void printShuffleType (AsmPrinter &printer, Operation *op, Type v1Type, Type resType, DenseI32ArrayAttr mask)
 Nothing to do when the result type is inferred.
static Type buildLLVMFunctionType (OpAsmParser &parser, SMLoc loc, ArrayRef< Type > inputs, ArrayRef< Type > outputs, function_interface_impl::VariadicFlag variadicFlag)
static int64_t getNumElements (Type t)
 Compute the total number of elements in the given type, also taking into account nested types.
static Type getElementType (Type type)
 Determine the element type of type.
static bool hasScalableVectorType (Type t)
 Check if the given type is a scalable vector type or a vector/array type that contains a nested scalable vector type.
static LogicalResult verifyStructArrayConstant (LLVM::ConstantOp op, LLVM::LLVMArrayType arrayType, ArrayAttr arrayAttr, int dim)
 Verifies the constant array represented by arrayAttr matches the provided arrayType.
static LLVMStructType getValAndBoolStructType (Type valType)
 Returns an LLVM struct type that contains a value type and a boolean type.
template<class ExtOp>
static LogicalResult verifyExtOp (ExtOp op)
 Verifies that the given extension operation operates on consistent scalars or vectors, and that the target width is larger than the input width.
template<typename T>
static OpFoldResult foldChainableCast (T castOp, typename T::FoldAdaptor adaptor)
 Folds a cast op that can be chained.
static ParseResult parseIndirectBrOpSucessors (OpAsmParser &parser, Type &flagType, SmallVectorImpl< Block * > &succOperandBlocks, SmallVectorImpl< SmallVector< OpAsmParser::UnresolvedOperand > > &succOperands, SmallVectorImpl< SmallVector< Type > > &succOperandsTypes)
static void printIndirectBrOpSucessors (OpAsmPrinter &p, IndirectBrOp op, Type flagType, SuccessorRange succs, OperandRangeRange succOperands, const TypeRangeRange &succOperandsTypes)

Variables

static constexpr const char kElemTypeAttrName [] = "elem_type"

Macro Definition Documentation

◆ GET_OP_CLASSES [1/2]

#define GET_OP_CLASSES

Definition at line 4285 of file LLVMDialect.cpp.

◆ GET_OP_CLASSES [2/2]

#define GET_OP_CLASSES

Definition at line 4285 of file LLVMDialect.cpp.

◆ GET_OP_LIST [1/2]

#define GET_OP_LIST

◆ GET_OP_LIST [2/2]

#define GET_OP_LIST

◆ REGISTER_ENUM_TYPE

#define REGISTER_ENUM_TYPE ( Ty)
Value:
template <> \
struct EnumTraits<Ty> { \
static StringRef stringify(Ty value) { return stringify##Ty(value); } \
static unsigned getMaxEnumVal() { return getMaxEnumValFor##Ty(); } \
}

Definition at line 105 of file LLVMDialect.cpp.

Function Documentation

◆ buildLLVMFunctionType()

◆ checkGlobalXtorData()

LogicalResult checkGlobalXtorData ( Operation * op,
ArrayAttr data )
static

Definition at line 2536 of file LLVMDialect.cpp.

References ArrayAttr(), mlir::Operation::emitError(), and success().

◆ destructureIndices()

void destructureIndices ( Type currType,
ArrayRef< GEPArg > indices,
SmallVectorImpl< int32_t > & rawConstantIndices,
SmallVectorImpl< Value > & dynamicIndices )
static

Destructures the 'indices' parameter into 'rawConstantIndices' and 'dynamicIndices', encoding the former in the process.

In the process, dynamic indices which are used to index into a structure type are converted to constant indices when possible. To do this, the GEPs element type should be passed as first parameter.

Definition at line 660 of file LLVMDialect.cpp.

References indices, mlir::LLVM::kGEPConstantBitWidth, mlir::m_ConstantInt(), and mlir::matchPattern().

◆ extractVectorElementType()

Type extractVectorElementType ( Type type)
static

Returns the elemental type of any LLVM-compatible vector type or self.

Definition at line 649 of file LLVMDialect.cpp.

◆ foldChainableCast()

template<typename T>
OpFoldResult foldChainableCast ( T castOp,
typename T::FoldAdaptor adaptor )
static

Folds a cast op that can be chained.

Definition at line 3652 of file LLVMDialect.cpp.

◆ getBoolAttribute()

Attribute getBoolAttribute ( Type type,
MLIRContext * ctx,
bool value )
static

Returns a scalar or vector boolean attribute of the given type.

Definition at line 350 of file LLVMDialect.cpp.

References mlir::BoolAttr::get(), and mlir::DenseElementsAttr::get().

◆ getCallOpResultTypes()

SmallVector< Type, 1 > getCallOpResultTypes ( LLVMFunctionType calleeType)
static

Gets the MLIR Op-like result types of a LLVMFunctionType.

Definition at line 955 of file LLVMDialect.cpp.

◆ getCallOpVarCalleeType()

TypeAttr getCallOpVarCalleeType ( LLVMFunctionType calleeType)
static

Gets the variadic callee type for a LLVMFunctionType.

Definition at line 964 of file LLVMDialect.cpp.

◆ getElementType()

◆ getI1SameShape()

Type getI1SameShape ( Type type)
static

Returns a boolean type that has the same shape as type.

It supports both fixed size vectors as well as scalable vectors.

Definition at line 82 of file LLVMDialect.cpp.

References mlir::Type::getContext(), mlir::LLVM::getVectorNumElements(), mlir::LLVM::getVectorType(), and mlir::LLVM::isCompatibleVectorType().

Referenced by parseCmpOp().

◆ getInsertExtractValueElementType() [1/2]

Type getInsertExtractValueElementType ( function_ref< InFlightDiagnostic(StringRef)> emitError,
Type containerType,
ArrayRef< int64_t > position )
static

Extract the type at position in the LLVM IR aggregate type containerType.

Each element of position is an index into a nested aggregate type. Return the resulting type or emit an error.

Definition at line 1853 of file LLVMDialect.cpp.

References mlir::emitError(), and mlir::LLVM::isCompatibleType().

Referenced by parseInsertExtractValueElementType().

◆ getInsertExtractValueElementType() [2/2]

Type getInsertExtractValueElementType ( Type llvmType,
ArrayRef< int64_t > position )
static

Extract the type at position in the wrapped LLVM IR aggregate type containerType.

Definition at line 1890 of file LLVMDialect.cpp.

◆ getLLVMAlignParamForCompressExpand()

ArrayAttr getLLVMAlignParamForCompressExpand ( OpBuilder & builder,
bool isExpandLoad,
uint64_t alignment = 1 )
static

◆ getLLVMFuncType()

LLVMFunctionType getLLVMFuncType ( MLIRContext * context,
TypeRange results,
ValueRange args )
static

Constructs a LLVMFunctionType from MLIR results and args.

Definition at line 969 of file LLVMDialect.cpp.

References mlir::ValueRange::getTypes().

◆ getNumElements()

int64_t getNumElements ( Type t)
static

Compute the total number of elements in the given type, also taking into account nested types.

Supported types are VectorType and LLVMArrayType. Everything else is treated as a scalar.

Definition at line 3225 of file LLVMDialect.cpp.

References getNumElements().

Referenced by mlir::LLVM::detail::extractNDVectorTypeInfo(), getNumElements(), hasAtMostSingleNonScalar(), mlir::DenseElementsAttr::tryGetComplexFloatValues(), and mlir::DenseElementsAttr::tryGetComplexIntValues().

◆ getValAndBoolStructType()

LLVMStructType getValAndBoolStructType ( Type valType)
static

Returns an LLVM struct type that contains a value type and a boolean type.

Definition at line 3533 of file LLVMDialect.cpp.

References mlir::Type::getContext().

◆ hasScalableVectorType()

bool hasScalableVectorType ( Type t)
static

Check if the given type is a scalable vector type or a vector/array type that contains a nested scalable vector type.

Definition at line 3251 of file LLVMDialect.cpp.

References hasScalableVectorType().

Referenced by hasScalableVectorType().

◆ isZeroAttribute()

bool isZeroAttribute ( Attribute value)
static

Definition at line 2431 of file LLVMDialect.cpp.

References isZeroAttribute().

Referenced by isZeroAttribute().

◆ parseCallTypeAndResolveOperands()

ParseResult parseCallTypeAndResolveOperands ( OpAsmParser & parser,
OperationState & result,
bool isDirect,
ArrayRef< OpAsmParser::UnresolvedOperand > operands,
SmallVectorImpl< DictionaryAttr > & argAttrs,
SmallVectorImpl< DictionaryAttr > & resultAttrs )
static

◆ parseCmpOp()

◆ parseCommonGlobalAndAlias()

template<typename OpType>
ParseResult parseCommonGlobalAndAlias ( OpAsmParser & parser,
OperationState & result )
static

Parse common attributes that might show up in the same order in both GlobalOp and AliasOp.

Definition at line 2331 of file LLVMDialect.cpp.

References mlir::AsmParser::getBuilder(), mlir::AsmParser::getContext(), mlir::Builder::getI64IntegerAttr(), mlir::Builder::getUnitAttr(), mlir::AsmParser::parseOptionalKeyword(), parseOptionalLLVMKeyword(), result, and success().

◆ parseGEPIndices()

◆ parseIndirectBrOpSucessors()

ParseResult parseIndirectBrOpSucessors ( OpAsmParser & parser,
Type & flagType,
SmallVectorImpl< Block * > & succOperandBlocks,
SmallVectorImpl< SmallVector< OpAsmParser::UnresolvedOperand > > & succOperands,
SmallVectorImpl< SmallVector< Type > > & succOperandsTypes )
static

◆ parseInsertExtractValueElementType()

ParseResult parseInsertExtractValueElementType ( AsmParser & parser,
Type & valueType,
Type containerType,
DenseI64ArrayAttr position )
static

◆ parseLLVMLinkage()

ParseResult parseLLVMLinkage ( OpAsmParser & p,
LinkageAttr & val )
static

◆ parseOneOpBundle()

◆ parseOpBundles()

◆ parseOptionalCallFuncPtr()

ParseResult parseOptionalCallFuncPtr ( OpAsmParser & parser,
SmallVectorImpl< OpAsmParser::UnresolvedOperand > & operands )
static

Parses an optional function pointer operand before the call argument list for indirect calls, or stops parsing at the function identifier otherwise.

Definition at line 1378 of file LLVMDialect.cpp.

References mlir::OptionalParseResult::has_value(), mlir::OpAsmParser::parseOptionalOperand(), and success().

◆ parseOptionalKeywordAlternative()

int parseOptionalKeywordAlternative ( OpAsmParser & parser,
ArrayRef< StringRef > keywords )
static

Definition at line 92 of file LLVMDialect.cpp.

References mlir::AsmParser::parseOptionalKeyword().

Referenced by parseOptionalLLVMKeyword().

◆ parseOptionalLLVMKeyword()

template<typename EnumTy, typename RetTy = EnumTy>
RetTy parseOptionalLLVMKeyword ( OpAsmParser & parser,
EnumTy defaultValue )
static

Parse an enum from the keyword, or default to the provided default value.

The return type is the enum type by default, unless overridden with the second template argument.

Definition at line 123 of file LLVMDialect.cpp.

References parseOptionalKeywordAlternative().

Referenced by parseCommonGlobalAndAlias(), and parseLLVMLinkage().

◆ parseShuffleType()

ParseResult parseShuffleType ( AsmParser & parser,
Type v1Type,
Type & resType,
DenseI32ArrayAttr mask )
static

◆ parseSwitchOpCases()

◆ printCommonGlobalAndAlias()

template<typename OpType>
void printCommonGlobalAndAlias ( OpAsmPrinter & p,
OpType op )
static

Definition at line 2249 of file LLVMDialect.cpp.

◆ printGEPIndices()

void printGEPIndices ( OpAsmPrinter & printer,
LLVM::GEPOp gepOp,
OperandRange indices,
DenseI32ArrayAttr rawConstantIndices )
static

Definition at line 758 of file LLVMDialect.cpp.

References indices, and mlir::OpAsmPrinter::printOperand().

◆ printIndirectBrOpSucessors()

void printIndirectBrOpSucessors ( OpAsmPrinter & p,
IndirectBrOp op,
Type flagType,
SuccessorRange succs,
OperandRangeRange succOperands,
const TypeRangeRange & succOperandsTypes )
static

◆ printInsertExtractValueElementType()

void printInsertExtractValueElementType ( AsmPrinter & printer,
Operation * op,
Type valueType,
Type containerType,
DenseI64ArrayAttr position )
static

Nothing to print for an inferred type.

Definition at line 2023 of file LLVMDialect.cpp.

◆ printLLVMLinkage()

void printLLVMLinkage ( OpAsmPrinter & p,
Operation * ,
LinkageAttr val )
static

Definition at line 135 of file LLVMDialect.cpp.

◆ printOneOpBundle()

void printOneOpBundle ( OpAsmPrinter & p,
OperandRange operands,
TypeRange operandTypes,
StringRef tag )
static

◆ printOpBundles()

void printOpBundles ( OpAsmPrinter & p,
Operation * op,
OperandRangeRange opBundleOperands,
TypeRangeRange opBundleOperandTypes,
std::optional< ArrayAttr > opBundleTags )
static

Definition at line 196 of file LLVMDialect.cpp.

References printOneOpBundle().

◆ printShuffleType()

void printShuffleType ( AsmPrinter & printer,
Operation * op,
Type v1Type,
Type resType,
DenseI32ArrayAttr mask )
static

Nothing to do when the result type is inferred.

Definition at line 2817 of file LLVMDialect.cpp.

◆ printSwitchOpCases()

void printSwitchOpCases ( OpAsmPrinter & p,
SwitchOp op,
Type flagType,
DenseIntElementsAttr caseValues,
SuccessorRange caseDestinations,
OperandRangeRange caseOperands,
const TypeRangeRange & caseOperandTypes )
static

◆ processFMFAttr()

auto processFMFAttr ( ArrayRef< NamedAttribute > attrs)
static

◆ resolveOpBundleOperands()

ParseResult resolveOpBundleOperands ( OpAsmParser & parser,
SMLoc loc,
OperationState & state,
ArrayRef< SmallVector< OpAsmParser::UnresolvedOperand > > opBundleOperands,
ArrayRef< SmallVector< Type > > opBundleOperandTypes,
StringAttr opBundleSizesAttrName )
static

◆ verifyAtomicMemOp()

template<typename OpTy>
LogicalResult verifyAtomicMemOp ( OpTy memOp,
Type valueType,
ArrayRef< AtomicOrdering > unsupportedOrderings )
static

Verifies the attributes and the type of atomic memory access operations.

Definition at line 872 of file LLVMDialect.cpp.

References mlir::DataLayout::closest(), mlir::LLVM::isTypeCompatibleWithAtomicOp(), and success().

◆ verifyBlockTags()

LogicalResult verifyBlockTags ( LLVMFuncOp funcOp)
static

◆ verifyCallOpDebugInfo()

LogicalResult verifyCallOpDebugInfo ( CallOp callOp,
LLVMFuncOp callee )
static

Verify that an inlinable callsite of a debug-info-bearing function in a debug-info-bearing function has a debug location attached to it.

This mirrors an LLVM IR verifier.

Definition at line 1098 of file LLVMDialect.cpp.

References success().

◆ verifyCallOpVarCalleeType()

template<typename OpTy>
LogicalResult verifyCallOpVarCalleeType ( OpTy callOp)
static

Verify that the parameter and return types of the variadic callee type match the callOp argument and result types.

Definition at line 1123 of file LLVMDialect.cpp.

References success().

◆ verifyComdat()

LogicalResult verifyComdat ( Operation * op,
std::optional< SymbolRefAttr > attr )
static

◆ verifyExtOp()

template<class ExtOp>
LogicalResult verifyExtOp ( ExtOp op)
static

Verifies that the given extension operation operates on consistent scalars or vectors, and that the target width is larger than the input width.

Definition at line 3594 of file LLVMDialect.cpp.

References mlir::LLVM::getVectorNumElements(), mlir::LLVM::isCompatibleVectorType(), and success().

◆ verifyOperandBundles()

template<typename OpType>
LogicalResult verifyOperandBundles ( OpType & op)
static

Definition at line 1161 of file LLVMDialect.cpp.

References success().

◆ verifyStructArrayConstant()

LogicalResult verifyStructArrayConstant ( LLVM::ConstantOp op,
LLVM::LLVMArrayType arrayType,
ArrayAttr arrayAttr,
int dim )
static

Verifies the constant array represented by arrayAttr matches the provided arrayType.

Definition at line 3264 of file LLVMDialect.cpp.

References ArrayAttr(), success(), and verifyStructArrayConstant().

Referenced by verifyStructArrayConstant().

◆ verifyStructIndices() [1/2]

LogicalResult verifyStructIndices ( Type baseGEPType,
GEPIndicesAdaptor< ValueRange > indices,
function_ref< InFlightDiagnostic()> emitOpError )
static

Driver function around verifyStructIndices.

Definition at line 814 of file LLVMDialect.cpp.

References emitOpError(), indices, and verifyStructIndices().

◆ verifyStructIndices() [2/2]

LogicalResult verifyStructIndices ( Type baseGEPType,
unsigned indexPos,
GEPIndicesAdaptor< ValueRange > indices,
function_ref< InFlightDiagnostic()> emitOpError )
static

For the given indices, check if they comply with baseGEPType, especially check against LLVMStructTypes nested within.

Definition at line 774 of file LLVMDialect.cpp.

References emitOpError(), indices, success(), and verifyStructIndices().

Referenced by verifyStructIndices(), and verifyStructIndices().

◆ verifySymbolAttrUse()

LogicalResult verifySymbolAttrUse ( FlatSymbolRefAttr symbol,
Operation * op,
SymbolTableCollection & symbolTable )
static

Verifies symbol's use in op to ensure the symbol is a valid and fully defined llvm.func.

Definition at line 66 of file LLVMDialect.cpp.

References mlir::Operation::emitOpError(), mlir::FlatSymbolRefAttr::getAttr(), mlir::FlatSymbolRefAttr::getValue(), mlir::SymbolTableCollection::lookupNearestSymbolFrom(), and success().

Variable Documentation

◆ kElemTypeAttrName

const char kElemTypeAttrName[] = "elem_type"
staticconstexpr

Definition at line 49 of file LLVMDialect.cpp.