|
llvm::LogicalResult | doRewrite (fir::CoordinateOp coor, mlir::Type ty, OpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter) const override |
|
Public Member Functions inherited from fir::FIROpAndTypeConversion< fir::CoordinateOp > |
llvm::LogicalResult | matchAndRewrite (fir::CoordinateOp op, OpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter) const final |
|
virtual llvm::LogicalResult | doRewrite (fir::CoordinateOp addr, mlir::Type ty, OpAdaptor adaptor, mlir::ConversionPatternRewriter &rewriter) const=0 |
|
| 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) |
|
|
Public Types inherited from fir::FIROpAndTypeConversion< fir::CoordinateOp > |
using | OpAdaptor = typename FromOp::Adaptor |
|
using | OpAdaptor = typename SourceOp::Adaptor |
|
using | OneToNOpAdaptor = typename SourceOp::template GenericAdaptor< mlir::ArrayRef< mlir::ValueRange > > |
|
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 |
|
Convert to (memory) reference to a reference to a subobject. The coordinate_of op is a Swiss army knife operation that can be used on (memory) references to records, arrays, complex, etc. as well as boxes. With unboxed arrays, there is the restriction that the array have a static shape in all but the last column.