MLIR
18.0.0git
|
#include "mlir/Target/LLVMIR/ModuleImport.h"
#include "mlir/Target/LLVMIR/Import.h"
#include "AttrKindDetail.h"
#include "DataLayoutImporter.h"
#include "DebugImporter.h"
#include "LoopAnnotationImporter.h"
#include "mlir/Dialect/DLTI/DLTI.h"
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/Matchers.h"
#include "mlir/Interfaces/DataLayoutInterfaces.h"
#include "mlir/Tools/mlir-translate/Translation.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/ADT/ScopeExit.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/ADT/TypeSwitch.h"
#include "llvm/IR/Comdat.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Metadata.h"
#include "llvm/IR/Operator.h"
#include "llvm/Support/ModRef.h"
#include "mlir/Dialect/LLVMIR/LLVMConversionEnumsFromLLVM.inc"
#include "mlir/Dialect/LLVMIR/LLVMOpFromLLVMIRConversions.inc"
Go to the source code of this file.
Functions | |
static std::string | diag (const llvm::Value &value) |
static std::string | diagMD (const llvm::Metadata *node, const llvm::Module *module) |
static constexpr StringRef | getGlobalCtorsVarName () |
Returns the name of the global_ctors global variables. More... | |
static constexpr StringRef | getGlobalDtorsVarName () |
Returns the name of the global_dtors global variables. More... | |
static constexpr StringRef | getGlobalComdatOpName () |
Returns the symbol name for the module-level comdat operation. More... | |
static StringRef | getLLVMSyncScope (llvm::Instruction *inst) |
Converts the sync scope identifier of inst to the string representation necessary to build an atomic LLVM dialect operation. More... | |
static SmallVector< int64_t > | getPositionFromIndices (ArrayRef< unsigned > indices) |
Converts an array of unsigned indices to a signed integer position array. More... | |
static LogicalResult | convertInstructionImpl (OpBuilder &odsBuilder, llvm::Instruction *inst, ModuleImport &moduleImport) |
Converts the LLVM instructions that have a generated MLIR builder. More... | |
static SetVector< llvm::BasicBlock * > | getTopologicallySortedBlocks (llvm::Function *func) |
Get a topologically sorted list of blocks for the given function. More... | |
static bool | isScalarType (Type type) |
Returns if type is a scalar integer or floating-point type. More... | |
static Type | getVectorTypeForAttr (Type type, ArrayRef< int64_t > arrayShape={}) |
Returns type if it is a builtin integer or floating-point vector type that can be used to create an attribute or nullptr otherwise. More... | |
static Attribute | getScalarConstantAsAttr (OpBuilder &builder, llvm::Constant *constScalar) |
Returns an integer or float attribute for the provided scalar constant constScalar or nullptr if the conversion fails. More... | |
static SmallVector< Attribute > | getSequenceConstantAsAttrs (OpBuilder &builder, llvm::ConstantDataSequential *constSequence) |
Returns an integer or float attribute array for the provided constant sequence constSequence or nullptr if the conversion fails. More... | |
static void | processMemoryEffects (llvm::Function *func, LLVMFuncOp funcOp) |
static void | processPassthroughAttrs (llvm::Function *func, LLVMFuncOp funcOp) |
static bool | isMetadataKillLocation (llvm::DbgVariableIntrinsic *dbgIntr) |
Checks if dbgIntr is a kill location that holds metadata instead of an SSA value. More... | |
|
static |
Converts the LLVM instructions that have a generated MLIR builder.
Using a static implementation method called from the module import ensures the builders have to use the moduleImport
argument and cannot directly call import methods. As a result, both the intrinsic and the instruction MLIR builders have to use the moduleImport
argument and none of them has direct access to the private module import methods.
Definition at line 123 of file ModuleImport.cpp.
References mlir::failure().
|
static |
Definition at line 52 of file ModuleImport.cpp.
Referenced by mlir::transform::gpu::alterGpuLaunch(), mlir::transform::detail::checkApplyToOne(), checkDoubleConsume(), checkMappingSpec(), mlir::transform::detail::checkNestedConsumption(), checkRepeatedConsumptionInOperand(), cloneAndFuseFirstUse(), mlir::lsp::MLIRServer::convertFromBytecode(), mlir::LLVM::ModuleImport::convertGlobals(), mlir::LLVM::ModuleImport::convertValue(), mlir::transform::gpu::createGpuLaunch(), mlir::DiagnosticEngine::emit(), mlir::detail::DiagnosticEngineImpl::emit(), emitDiag(), mlir::SourceMgrDiagnosticHandler::emitDiagnostic(), mlir::detail::ParallelDiagnosticHandlerImpl::emitDiagnostics(), mlir::Operation::emitError(), mlir::detail::Parser::emitError(), mlir::Operation::emitRemark(), mlir::Operation::emitWarning(), ensurePayloadIsSeparateFromTransform(), mlir::detail::PassCrashReproducerGenerator::finalize(), findTopLevelTransform(), getLspDiagnoticFromDiag(), getThreadIdBuilder(), mlir::transform::detail::interpreterBaseRunOnOperationImpl(), mlir::pdll::Lexer::Lexer(), mlir::transform::gpu::mapForallToBlocksImpl(), mlir::transform::gpu::mapNestedForallToThreadsImpl(), mlir::transform::gpu::mapOneForallToThreadsImpl(), mlir::GPUFuncOpLowering::matchAndRewrite(), mlir::RewriterBase::notifyMatchFailure(), mlir::detail::ConversionPatternRewriterImpl::notifyMatchFailure(), mlir::transform::TrackingListener::notifyMatchFailure(), mlir::operator<<(), mlir::detail::ParallelDiagnosticHandlerImpl::ParallelDiagnosticHandlerImpl(), mlir::tracing::FileLineColLocBreakpoint::parseFromString(), mlir::detail::ParallelDiagnosticHandlerImpl::print(), printRegionEdgeName(), mlir::BytecodeReader::Impl::read(), mlir::DiagnosticEngine::registerHandler(), mlir::detail::ConversionPatternRewriterImpl::remapValues(), mlir::transform::TransformResults::setMappedValues(), mlir::DiagnosedSilenceableFailure::silenceableFailure(), mlir::SourceMgrDiagnosticHandler::SourceMgrDiagnosticHandler(), mlir::SourceMgrDiagnosticVerifierHandler::SourceMgrDiagnosticVerifierHandler(), tileAndFuseFirstExtractUse(), tileAndFuseFirstExtractUseThroughContainingOpBlockArgument(), mlir::lsp::toJSON(), mlir::irdl::RegionConstraint::verify(), and mlir::detail::ParallelDiagnosticHandlerImpl::~ParallelDiagnosticHandlerImpl().
|
static |
Definition at line 62 of file ModuleImport.cpp.
|
staticconstexpr |
Returns the symbol name for the module-level comdat operation.
It must not conflict with the user namespace.
Definition at line 82 of file ModuleImport.cpp.
|
staticconstexpr |
Returns the name of the global_ctors global variables.
Definition at line 71 of file ModuleImport.cpp.
Referenced by mlir::LLVM::ModuleImport::convertGlobals().
|
staticconstexpr |
Returns the name of the global_dtors global variables.
Definition at line 76 of file ModuleImport.cpp.
Referenced by mlir::LLVM::ModuleImport::convertGlobals().
|
static |
Converts the sync scope identifier of inst
to the string representation necessary to build an atomic LLVM dialect operation.
Returns the empty string if the operation has either no sync scope or the default system-level sync scope attached. The atomic operations only set their sync scope attribute if they have a non-default sync scope attached.
Definition at line 91 of file ModuleImport.cpp.
|
static |
Converts an array of unsigned indices to a signed integer position array.
Definition at line 111 of file ModuleImport.cpp.
|
static |
Returns an integer or float attribute for the provided scalar constant constScalar
or nullptr if the conversion fails.
Definition at line 684 of file ModuleImport.cpp.
References mlir::emitError(), mlir::get(), mlir::FloatType::getBF16(), mlir::Builder::getContext(), mlir::Builder::getFloatAttr(), mlir::LLVM::detail::getFloatType(), and mlir::Builder::getIntegerAttr().
Referenced by getSequenceConstantAsAttrs().
|
static |
Returns an integer or float attribute array for the provided constant sequence constSequence
or nullptr if the conversion fails.
Definition at line 715 of file ModuleImport.cpp.
References getScalarConstantAsAttr().
|
static |
Get a topologically sorted list of blocks for the given function.
Definition at line 137 of file ModuleImport.cpp.
Returns type
if it is a builtin integer or floating-point vector type that can be used to create an attribute or nullptr otherwise.
If provided, arrayShape
is added to the shape of the vector to create an attribute that matches an array of vectors.
Definition at line 637 of file ModuleImport.cpp.
|
static |
Checks if dbgIntr
is a kill location that holds metadata instead of an SSA value.
Definition at line 1774 of file ModuleImport.cpp.
|
static |
Returns if type
is a scalar integer or floating-point type.
Definition at line 629 of file ModuleImport.cpp.
|
static |
Definition at line 1540 of file ModuleImport.cpp.
References mlir::get().
Referenced by mlir::LLVM::ModuleImport::processFunctionAttributes().
|
static |
Definition at line 1557 of file ModuleImport.cpp.
References mlir::emitWarning(), and mlir::get().
Referenced by mlir::LLVM::ModuleImport::processFunctionAttributes().