clang 22.0.0git
|
Functions | |
std::unique_ptr< llvm::Module > | lowerDirectlyFromCIRToLLVMIR (mlir::ModuleOp mlirModule, llvm::LLVMContext &llvmCtx) |
std::unique_ptr< mlir::Pass > | createConvertCIRToLLVMPass () |
Create a pass that fully lowers CIR to the LLVMIR dialect. | |
void | populateCIRToLLVMPasses (mlir::OpPassManager &pm) |
Adds passes that fully lower CIR to the LLVMIR dialect. | |
static mlir::Type | convertTypeForMemory (const mlir::TypeConverter &converter, mlir::DataLayout const &dataLayout, mlir::Type type) |
Given a type convertor and a data layout, convert the given type to a type that is suitable for memory operations. | |
static mlir::Value | createIntCast (mlir::OpBuilder &bld, mlir::Value src, mlir::IntegerType dstTy, bool isSigned=false) |
static mlir::LLVM::Visibility | lowerCIRVisibilityToLLVMVisibility (cir::VisibilityKind visibilityKind) |
static mlir::Value | emitFromMemory (mlir::ConversionPatternRewriter &rewriter, mlir::DataLayout const &dataLayout, cir::LoadOp op, mlir::Value value) |
Emits the value from memory as expected by its users. | |
static mlir::Value | emitToMemory (mlir::ConversionPatternRewriter &rewriter, mlir::DataLayout const &dataLayout, mlir::Type origType, mlir::Value value) |
Emits a value to memory with the expected scalar type. | |
mlir::LLVM::Linkage | convertLinkage (cir::GlobalLinkageKind linkage) |
static mlir::Value | getLLVMIntCast (mlir::ConversionPatternRewriter &rewriter, mlir::Value llvmSrc, mlir::Type llvmDstIntTy, bool isUnsigned, uint64_t cirSrcWidth, uint64_t cirDstIntWidth) |
mlir::Value | lowerCirAttrAsValue (mlir::Operation *parentOp, const mlir::Attribute attr, mlir::ConversionPatternRewriter &rewriter, const mlir::TypeConverter *converter) |
Switches on the type of attribute and calls the appropriate conversion. | |
void | convertSideEffectForCall (mlir::Operation *callOp, bool isNothrow, cir::SideEffect sideEffect, mlir::LLVM::MemoryEffectsAttr &memoryEffect, bool &noUnwind, bool &willReturn) |
static mlir::LLVM::CallIntrinsicOp | createCallLLVMIntrinsicOp (mlir::ConversionPatternRewriter &rewriter, mlir::Location loc, const llvm::Twine &intrinsicName, mlir::Type resultTy, mlir::ValueRange operands) |
static mlir::LLVM::CallIntrinsicOp | replaceOpWithCallLLVMIntrinsicOp (mlir::ConversionPatternRewriter &rewriter, mlir::Operation *op, const llvm::Twine &intrinsicName, mlir::Type resultTy, mlir::ValueRange operands) |
static mlir::LogicalResult | rewriteCallOrInvoke (mlir::Operation *op, mlir::ValueRange callOperands, mlir::ConversionPatternRewriter &rewriter, const mlir::TypeConverter *converter, mlir::FlatSymbolRefAttr calleeAttr) |
static mlir::LLVM::AtomicOrdering | getLLVMMemOrder (std::optional< cir::MemOrder > memorder) |
bool | hasTrailingZeros (cir::ConstArrayAttr attr) |
static bool | isIntTypeUnsigned (mlir::Type type) |
static mlir::LLVM::ICmpPredicate | convertCmpKindToICmpPredicate (cir::CmpOpKind kind, bool isSigned) |
Convert from a CIR comparison kind to an LLVM IR integral comparison kind. | |
static mlir::LLVM::FCmpPredicate | convertCmpKindToFCmpPredicate (cir::CmpOpKind kind) |
Convert from a CIR comparison kind to an LLVM IR floating-point comparison kind. | |
static void | prepareTypeConverter (mlir::LLVMTypeConverter &converter, mlir::DataLayout &dataLayout) |
static void | collectUnreachable (mlir::Operation *parent, llvm::SmallVector< mlir::Operation * > &ops) |
void | createLLVMFuncOpIfNotExist (mlir::ConversionPatternRewriter &rewriter, mlir::Operation *srcOp, llvm::StringRef fnName, mlir::Type fnTy) |
static mlir::Value | getValueForVTableSymbol (mlir::Operation *op, mlir::ConversionPatternRewriter &rewriter, const mlir::TypeConverter *converter, mlir::FlatSymbolRefAttr nameAttr, mlir::Type &eltType) |
mlir::IntegerType | computeBitfieldIntType (mlir::Type storageType, mlir::MLIRContext *context, unsigned &storageSize) |
std::unique_ptr< llvm::Module > | lowerDirectlyFromCIRToLLVMIR (mlir::ModuleOp mlirModule, LLVMContext &llvmCtx) |
void | registerCIRDialectTranslation (mlir::DialectRegistry ®istry) |
|
static |
Definition at line 2330 of file LowerToLLVM.cpp.
Referenced by cir::direct::ConvertCIRToLLVMPass::runOnOperation().
mlir::IntegerType cir::direct::computeBitfieldIntType | ( | mlir::Type | storageType, |
mlir::MLIRContext * | context, | ||
unsigned & | storageSize | ||
) |
Definition at line 3019 of file LowerToLLVM.cpp.
Referenced by cir::direct::CIRToLLVMGetBitfieldOpLowering::matchAndRewrite(), and cir::direct::CIRToLLVMSetBitfieldOpLowering::matchAndRewrite().
|
static |
Convert from a CIR comparison kind to an LLVM IR floating-point comparison kind.
Definition at line 1989 of file LowerToLLVM.cpp.
Referenced by cir::direct::CIRToLLVMCmpOpLowering::matchAndRewrite(), and cir::direct::CIRToLLVMVecCmpOpLowering::matchAndRewrite().
|
static |
Convert from a CIR comparison kind to an LLVM IR integral comparison kind.
Definition at line 1966 of file LowerToLLVM.cpp.
Referenced by cir::direct::CIRToLLVMCmpOpLowering::matchAndRewrite(), and cir::direct::CIRToLLVMVecCmpOpLowering::matchAndRewrite().
mlir::LLVM::Linkage cir::direct::convertLinkage | ( | cir::GlobalLinkageKind | linkage | ) |
Definition at line 147 of file LowerToLLVM.cpp.
Referenced by cir::direct::CIRToLLVMFuncOpLowering::matchAndRewrite(), and cir::direct::CIRToLLVMGlobalOpLowering::matchAndRewrite().
void cir::direct::convertSideEffectForCall | ( | mlir::Operation * | callOp, |
bool | isNothrow, | ||
cir::SideEffect | sideEffect, | ||
mlir::LLVM::MemoryEffectsAttr & | memoryEffect, | ||
bool & | noUnwind, | ||
bool & | willReturn | ||
) |
Definition at line 239 of file LowerToLLVM.cpp.
Referenced by rewriteCallOrInvoke().
|
static |
Given a type convertor and a data layout, convert the given type to a type that is suitable for memory operations.
For example, this can be used to lower cir.bool accesses to i8.
Definition at line 68 of file LowerToLLVM.cpp.
Referenced by cir::direct::CIRToLLVMAllocaOpLowering::matchAndRewrite(), cir::direct::CIRToLLVMCastOpLowering::matchAndRewrite(), cir::direct::CIRToLLVMGlobalOpLowering::matchAndRewrite(), cir::direct::CIRToLLVMInlineAsmOpLowering::matchAndRewrite(), cir::direct::CIRToLLVMLoadOpLowering::matchAndRewrite(), cir::direct::CIRToLLVMPtrStrideOpLowering::matchAndRewrite(), prepareTypeConverter(), and cir::direct::CIRAttrToValue::visitCirAttr().
|
static |
Definition at line 273 of file LowerToLLVM.cpp.
Referenced by replaceOpWithCallLLVMIntrinsicOp().
std::unique_ptr< mlir::Pass > cir::direct::createConvertCIRToLLVMPass | ( | ) |
Create a pass that fully lowers CIR to the LLVMIR dialect.
Definition at line 3276 of file LowerToLLVM.cpp.
Referenced by populateCIRToLLVMPasses().
|
static |
Definition at line 81 of file LowerToLLVM.cpp.
Referenced by emitFromMemory(), emitToMemory(), cir::direct::CIRToLLVMGetBitfieldOpLowering::matchAndRewrite(), and cir::direct::CIRToLLVMSetBitfieldOpLowering::matchAndRewrite().
void cir::direct::createLLVMFuncOpIfNotExist | ( | mlir::ConversionPatternRewriter & | rewriter, |
mlir::Operation * | srcOp, | ||
llvm::StringRef | fnName, | ||
mlir::Type | fnTy | ||
) |
Definition at line 2520 of file LowerToLLVM.cpp.
Referenced by cir::direct::CIRToLLVMThrowOpLowering::matchAndRewrite().
|
static |
Emits the value from memory as expected by its users.
Should be called when the memory represetnation of a CIR type is not equal to its scalar representation.
Definition at line 115 of file LowerToLLVM.cpp.
References createIntCast().
Referenced by cir::direct::CIRToLLVMLoadOpLowering::matchAndRewrite().
|
static |
Emits a value to memory with the expected scalar type.
Should be called when the memory represetnation of a CIR type is not equal to its scalar representation.
Definition at line 132 of file LowerToLLVM.cpp.
References createIntCast().
Referenced by cir::direct::CIRToLLVMStoreOpLowering::matchAndRewrite().
|
static |
Definition at line 176 of file LowerToLLVM.cpp.
References isUnsigned().
Referenced by cir::direct::CIRToLLVMCastOpLowering::matchAndRewrite(), cir::direct::CIRToLLVMPtrStrideOpLowering::matchAndRewrite(), and cir::direct::CIRToLLVMShiftOpLowering::matchAndRewrite().
|
static |
Definition at line 1185 of file LowerToLLVM.cpp.
Referenced by cir::direct::CIRToLLVMLoadOpLowering::matchAndRewrite(), and cir::direct::CIRToLLVMStoreOpLowering::matchAndRewrite().
|
static |
Definition at line 2573 of file LowerToLLVM.cpp.
Referenced by cir::direct::CIRToLLVMVTableAddrPointOpLowering::matchAndRewrite(), and cir::direct::CIRToLLVMVTTAddrPointOpLowering::matchAndRewrite().
bool cir::direct::hasTrailingZeros | ( | cir::ConstArrayAttr | attr | ) |
Definition at line 1258 of file LowerToLLVM.cpp.
Referenced by cir::direct::CIRToLLVMConstantOpLowering::matchAndRewrite().
|
static |
Definition at line 1855 of file LowerToLLVM.cpp.
Referenced by cir::direct::CIRToLLVMBinOpLowering::matchAndRewrite().
mlir::Value cir::direct::lowerCirAttrAsValue | ( | mlir::Operation * | parentOp, |
mlir::Attribute | attr, | ||
mlir::ConversionPatternRewriter & | rewriter, | ||
const mlir::TypeConverter * | converter | ||
) |
Switches on the type of attribute and calls the appropriate conversion.
Convert a CIR attribute to an LLVM attribute.
May use the datalayout for lowering attributes to-be-stored in memory.
Definition at line 228 of file LowerToLLVM.cpp.
References cir::direct::CIRAttrToValue::visit().
Referenced by cir::direct::CIRToLLVMConstantOpLowering::matchAndRewrite().
|
static |
Definition at line 101 of file LowerToLLVM.cpp.
Referenced by cir::direct::CIRToLLVMFuncOpLowering::matchAndRewrite().
std::unique_ptr< llvm::Module > cir::direct::lowerDirectlyFromCIRToLLVMIR | ( | mlir::ModuleOp | mlirModule, |
llvm::LLVMContext & | llvmCtx | ||
) |
Referenced by cir::lowerFromCIRToLLVMIR().
std::unique_ptr< llvm::Module > cir::direct::lowerDirectlyFromCIRToLLVMIR | ( | mlir::ModuleOp | mlirModule, |
LLVMContext & | llvmCtx | ||
) |
Definition at line 3286 of file LowerToLLVM.cpp.
References populateCIRToLLVMPasses(), and mlir::registerCIRDialectTranslation().
void cir::direct::populateCIRToLLVMPasses | ( | mlir::OpPassManager & | pm | ) |
Adds passes that fully lower CIR to the LLVMIR dialect.
Definition at line 3280 of file LowerToLLVM.cpp.
References createConvertCIRToLLVMPass(), and mlir::populateCIRPreLoweringPasses().
Referenced by lowerDirectlyFromCIRToLLVMIR().
|
static |
Definition at line 2187 of file LowerToLLVM.cpp.
References cir::MissingFeatures::addressSpace(), and convertTypeForMemory().
Referenced by cir::direct::ConvertCIRToLLVMPass::runOnOperation().
void cir::direct::registerCIRDialectTranslation | ( | mlir::DialectRegistry & | registry | ) |
Definition at line 52 of file LowerToLLVMIR.cpp.
Referenced by mlir::registerCIRDialectTranslation().
|
static |
Definition at line 282 of file LowerToLLVM.cpp.
References createCallLLVMIntrinsicOp().
Referenced by cir::direct::CIRToLLVMFrameAddrOpLowering::matchAndRewrite(), and cir::direct::CIRToLLVMReturnAddrOpLowering::matchAndRewrite().
|
static |
Definition at line 1075 of file LowerToLLVM.cpp.
References convertSideEffectForCall(), cir::MissingFeatures::opCallCallConv(), cir::MissingFeatures::opCallContinueBlock(), and cir::MissingFeatures::opCallLandingPad().
Referenced by cir::direct::CIRToLLVMCallOpLowering::matchAndRewrite().