FLANG
|
Create a new box given a box reference. More...
Public Member Functions | |
llvm::LogicalResult | matchAndRewrite (fir::cg::XReboxOp rebox, OpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter) const override |
![]() | |
mlir::Value | getCharacterByteSize (mlir::Location loc, mlir::ConversionPatternRewriter &rewriter, fir::CharacterType charTy, mlir::ValueRange lenParams) const |
std::tuple< mlir::Value, mlir::Value > | getSizeAndTypeCode (mlir::Location loc, mlir::ConversionPatternRewriter &rewriter, mlir::Type boxEleTy, mlir::ValueRange lenParams={}) const |
mlir::Value | insertField (mlir::ConversionPatternRewriter &rewriter, mlir::Location loc, mlir::Value dest, llvm::ArrayRef< std::int64_t > fldIndexes, mlir::Value value, bool bitcast=false) const |
Basic pattern to write a field in the descriptor. | |
mlir::Value | insertBaseAddress (mlir::ConversionPatternRewriter &rewriter, mlir::Location loc, mlir::Value dest, mlir::Value base) const |
mlir::Value | insertLowerBound (mlir::ConversionPatternRewriter &rewriter, mlir::Location loc, mlir::Value dest, unsigned dim, mlir::Value lb) const |
mlir::Value | insertExtent (mlir::ConversionPatternRewriter &rewriter, mlir::Location loc, mlir::Value dest, unsigned dim, mlir::Value extent) const |
mlir::Value | insertStride (mlir::ConversionPatternRewriter &rewriter, mlir::Location loc, mlir::Value dest, unsigned dim, mlir::Value stride) const |
mlir::Value | getTypeDescriptor (ModOpTy mod, mlir::ConversionPatternRewriter &rewriter, mlir::Location loc, fir::RecordType recType) const |
mlir::Value | populateDescriptor (mlir::Location loc, ModOpTy mod, fir::BaseBoxType boxTy, mlir::Type inputType, mlir::ConversionPatternRewriter &rewriter, unsigned rank, mlir::Value eleSize, mlir::Value cfiTy, mlir::Value typeDesc, int allocatorIdx=kDefaultAllocator, mlir::Value extraField={}) const |
std::tuple< fir::BaseBoxType, mlir::Value, mlir::Value > | consDescriptorPrefix (BOX box, mlir::Type inputType, mlir::ConversionPatternRewriter &rewriter, unsigned rank, mlir::ValueRange substrParams, mlir::ValueRange lenParams, mlir::Value sourceBox={}, mlir::Type sourceBoxType={}) const |
std::tuple< fir::BaseBoxType, mlir::Value, mlir::Value > | consDescriptorPrefix (fir::cg::XReboxOp box, mlir::Value loweredBox, mlir::ConversionPatternRewriter &rewriter, unsigned rank, mlir::ValueRange substrParams, mlir::ValueRange lenParams, mlir::Value typeDesc={}) const |
mlir::Value | genBoxOffsetGep (mlir::ConversionPatternRewriter &rewriter, mlir::Location loc, mlir::Value base, mlir::Type llvmBaseObjectType, mlir::Value outerOffset, mlir::ValueRange cstInteriorIndices, mlir::ValueRange componentIndices, std::optional< mlir::Value > substringOffset) const |
void | getSubcomponentIndices (BOX xbox, mlir::Value memref, mlir::ValueRange operands, mlir::SmallVectorImpl< mlir::Value > &indices) const |
mlir::Value | placeInMemoryIfNotGlobalInit (mlir::ConversionPatternRewriter &rewriter, mlir::Location loc, mlir::Type boxTy, mlir::Value boxValue, bool needDeviceAllocation=false) const |
![]() | |
FIROpConversion (const LLVMTypeConverter &typeConverter, const fir::FIRToLLVMPassOptions &options, mlir::PatternBenefit benefit=1) | |
void | rewrite (mlir::Operation *op, mlir::ArrayRef< mlir::Value > operands, mlir::ConversionPatternRewriter &rewriter) const final |
Wrappers around the RewritePattern methods that pass the derived op type. | |
void | rewrite (mlir::Operation *op, mlir::ArrayRef< mlir::ValueRange > operands, mlir::ConversionPatternRewriter &rewriter) const final |
llvm::LogicalResult | match (mlir::Operation *op) const final |
llvm::LogicalResult | matchAndRewrite (mlir::Operation *op, mlir::ArrayRef< mlir::Value > operands, mlir::ConversionPatternRewriter &rewriter) const final |
llvm::LogicalResult | matchAndRewrite (mlir::Operation *op, mlir::ArrayRef< mlir::ValueRange > operands, mlir::ConversionPatternRewriter &rewriter) const final |
virtual llvm::LogicalResult | match (SourceOp op) const |
virtual void | rewrite (SourceOp op, OpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter) const |
virtual void | rewrite (SourceOp op, OneToNOpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter) const |
virtual llvm::LogicalResult | matchAndRewrite (SourceOp op, OpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter) const |
virtual llvm::LogicalResult | matchAndRewrite (SourceOp op, OneToNOpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter) const |
![]() | |
ConvertFIRToLLVMPattern (llvm::StringRef rootOpName, mlir::MLIRContext *context, const fir::LLVMTypeConverter &typeConverter, const fir::FIRToLLVMPassOptions &options, mlir::PatternBenefit benefit=1) | |
Additional Inherited Members | |
![]() | |
using | TypePair = typename fir::FIROpConversion< fir::cg::XReboxOp >::TypePair |
![]() | |
using | OpAdaptor = typename SourceOp::Adaptor |
using | OneToNOpAdaptor = typename SourceOp::template GenericAdaptor< mlir::ArrayRef< mlir::ValueRange > > |
![]() | |
static int | getCFIAttr (fir::BaseBoxType boxTy) |
static bool | isInGlobalOp (mlir::ConversionPatternRewriter &rewriter) |
![]() | |
mlir::Type | convertType (mlir::Type ty) const |
mlir::Type | convertObjectType (mlir::Type firType) const |
mlir::LLVM::ConstantOp | genI32Constant (mlir::Location loc, mlir::ConversionPatternRewriter &rewriter, int value) const |
mlir::LLVM::ConstantOp | genConstantOffset (mlir::Location loc, mlir::ConversionPatternRewriter &rewriter, int offset) const |
mlir::Value | integerCast (mlir::Location loc, mlir::ConversionPatternRewriter &rewriter, mlir::Type ty, mlir::Value val, bool fold=false) const |
TypePair | getBoxTypePair (mlir::Type firBoxTy) const |
mlir::Value | getValueFromBox (mlir::Location loc, TypePair boxTy, mlir::Value box, mlir::Type resultTy, mlir::ConversionPatternRewriter &rewriter, int boxValue) const |
Construct code sequence to extract the specific value from a fir.box . | |
llvm::SmallVector< mlir::Value, 3 > | getDimsFromBox (mlir::Location loc, llvm::ArrayRef< mlir::Type > retTys, TypePair boxTy, mlir::Value box, mlir::Value dim, mlir::ConversionPatternRewriter &rewriter) const |
llvm::SmallVector< mlir::Value, 3 > | getDimsFromBox (mlir::Location loc, llvm::ArrayRef< mlir::Type > retTys, TypePair boxTy, mlir::Value box, int dim, mlir::ConversionPatternRewriter &rewriter) const |
mlir::Value | loadDimFieldFromBox (mlir::Location loc, TypePair boxTy, mlir::Value box, mlir::Value dim, int off, mlir::Type ty, mlir::ConversionPatternRewriter &rewriter) const |
mlir::Value | getDimFieldFromBox (mlir::Location loc, TypePair boxTy, mlir::Value box, int dim, int off, mlir::Type ty, mlir::ConversionPatternRewriter &rewriter) const |
mlir::Value | getStrideFromBox (mlir::Location loc, TypePair boxTy, mlir::Value box, unsigned dim, mlir::ConversionPatternRewriter &rewriter) const |
mlir::Value | getBaseAddrFromBox (mlir::Location loc, TypePair boxTy, mlir::Value box, mlir::ConversionPatternRewriter &rewriter) const |
Read base address from a fir.box. Returned address has type ty. | |
mlir::Value | getElementSizeFromBox (mlir::Location loc, mlir::Type resultTy, TypePair boxTy, mlir::Value box, mlir::ConversionPatternRewriter &rewriter) const |
mlir::Value | getRankFromBox (mlir::Location loc, TypePair boxTy, mlir::Value box, mlir::ConversionPatternRewriter &rewriter) const |
Read base address from a fir.box. Returned address has type ty. | |
mlir::Value | getExtraFromBox (mlir::Location loc, TypePair boxTy, mlir::Value box, mlir::ConversionPatternRewriter &rewriter) const |
Read the extra field from a fir.box. | |
mlir::Type | getBoxEleTy (mlir::Type type, llvm::ArrayRef< std::int64_t > indexes) const |
mlir::Type | getLlvmObjectTypeFromBoxType (mlir::Type boxType) const |
mlir::Value | loadTypeDescAddress (mlir::Location loc, TypePair boxTy, mlir::Value box, mlir::ConversionPatternRewriter &rewriter) const |
Read the address of the type descriptor from a box. | |
mlir::Value | genBoxAttributeCheck (mlir::Location loc, TypePair boxTy, mlir::Value box, mlir::ConversionPatternRewriter &rewriter, unsigned maskValue) const |
mlir::Value | computeBoxSize (mlir::Location, TypePair boxTy, mlir::Value box, mlir::ConversionPatternRewriter &rewriter) const |
template<typename... ARGS> | |
mlir::LLVM::GEPOp | genGEP (mlir::Location loc, mlir::Type ty, mlir::ConversionPatternRewriter &rewriter, mlir::Value base, ARGS... args) const |
mlir::Block * | getBlockForAllocaInsert (mlir::Operation *op, mlir::Region *parentRegion) const |
mlir::Value | genAllocaAndAddrCastWithType (mlir::Location loc, mlir::Type llvmObjectTy, unsigned alignment, mlir::ConversionPatternRewriter &rewriter) const |
const fir::LLVMTypeConverter & | lowerTy () const |
void | attachTBAATag (mlir::LLVM::AliasAnalysisOpInterface op, mlir::Type baseFIRType, mlir::Type accessFIRType, mlir::LLVM::GEPOp gep) const |
unsigned | getAllocaAddressSpace (mlir::ConversionPatternRewriter &rewriter) const |
unsigned | getProgramAddressSpace (mlir::ConversionPatternRewriter &rewriter) const |
![]() | |
const fir::FIRToLLVMPassOptions & | options |
Create a new box given a box reference.