MLIR-AIE
Classes | Namespaces | Macros | Typedefs | Functions
VectorToAIEVecConversions.cpp File Reference
#include "aie/Dialect/AIEVec/AIE1/IR/AIEVecAIE1Ops.h"
#include "aie/Dialect/AIEVec/AIEVecUtils.h"
#include "aie/Dialect/AIEVec/IR/AIEVecOps.h"
#include "aie/Dialect/AIEVec/Pipelines/Passes.h"
#include "aie/Dialect/AIEVec/Utils/Utils.h"
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/EmitC/IR/EmitC.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/Math/IR/Math.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/Dialect/SCF/IR/SCF.h"
#include "mlir/Dialect/UB/IR/UBOps.h"
#include "mlir/IR/PatternMatch.h"
#include "mlir/IR/SymbolTable.h"
#include "mlir/IR/TypeUtilities.h"
#include "mlir/Pass/PassManager.h"
#include "mlir/Transforms/DialectConversion.h"
#include "mlir/Transforms/Passes.h"
#include "llvm/ADT/SmallSet.h"
#include <bitset>
#include <optional>
#include <tuple>
+ Include dependency graph for VectorToAIEVecConversions.cpp:

Go to the source code of this file.

Classes

struct  NarrowingResult
 
struct  FoldVectorExtractAndSplatToAIEBroadcast
 
struct  ConvertSplatToAIEBroadcast
 
struct  ConvertMulAddToAIEVecFMAElemOpPattern
 
struct  ConvertVectorFMAOpToAIEVecFMAElemOpPattern
 
struct  ConvertMulAddFToAIEVecFMAElemOpPattern
 
struct  ConvertMulFToAIEVecMulElemOpPattern
 
struct  ConvertMulIToAIEVecMulElemOpPattern
 
struct  FoldSplatToFMAOp
 
struct  ConvertMulAddToAIEVecFMAOpPattern
 
struct  LowerVectorTransferReadToAIEUPD
 
struct  OneToOneVectorOpToAIEVecOpPattern< SrcOpTy, DstOpTy >
 
struct  LowerVectorAddIOpToAIEVecAddOp
 
struct  LowerVectorMulIOpToAIEVecMulOp
 
struct  LowerVectorAddOrSubOpToAIEVecAddElemOrSubElemOp< SrcOpTy, DstOpTy >
 
struct  LowerVectorMinMaxOpToAIEVecMinMaxOp< SrcOpTy, DstOpTy >
 
struct  LowerScalarMinMaxToAIEVecMinMaxOp< SrcOpTy, DstOpTy >
 
struct  LowerVectorCmpOpToAIEVecCmpOp< SrcOpTy, CmpTy >
 
struct  LowerVectorSelectOpToAIEVecSelOp
 
struct  LowerVectorReductionMinOp
 
struct  LowerVectorReductionMaxOp
 
struct  LowerVectorReductionAddIntOp
 
struct  LowerVectorReductionAddFloatOp
 
struct  LowerVectorReductionAddBfloat16OpAIE2
 
struct  LowerVectorReductionAddBfloat16OpAIE2P
 
struct  LowerVectorExtractStridedSliceOpAIEv1Pattern
 
struct  LowerVectorExtractStridedSliceOpAIE2Pattern
 
struct  ExpandUPDToUPDAndExtPattern
 
struct  FuseExtIntoUPDPattern
 
struct  ConvertMathExpToAIEVecExpOpPattern
 
struct  ConvertMathTanhToAIEVecTanhOpPattern
 
struct  ComputeExpOpByLUTLLVMPattern
 
struct  ComputeExpOpByLUTPattern
 
struct  ComputeInvOpByLUTPattern
 
struct  ConvertDivFToAIEVecInvOpPattern
 
struct  ComputeTanhOpByLUTPattern
 
struct  ComputeSqrtOpAIE2Pattern
 
struct  ComputeRsqrtOpLLVMAIE2Pattern
 
struct  ComputeRsqrtOpPattern
 
struct  ComputeErfOpPattern
 
struct  ComputeAbsOpPattern< SrcOpTy >
 
struct  LowerExtOpPattern< SrcOpTy >
 
struct  LowerTruncOpPattern< SrcOpTy >
 
struct  ComputeSigmoidOpPattern
 
struct  ComputeCeilOpPattern
 
struct  ComputeFloorOpPattern
 
struct  ComputeNegOpPattern
 
struct  ComputeBxorAndBnegOpPattern
 
struct  ComputeBandAndBorOpPattern< SrcOpTy, DstOpTy >
 
struct  ComputeSignedIntRightShiftOpPattern
 
struct  ShiftClampTruncToSRSPattern
 
struct  LowerScalarShiftClampTruncToSRS
 
struct  LowerScalarShRSIToAIEVecUPSSRS
 
struct  LowerVectorContractionOpToAIEVecMatMulPattern< MatMulOpTy >
 
struct  LowerVectorTransposeOpToAIEVecShuffleOpPattern
 
struct  ConvertSplatToAIEBroadcastAIE2p
 
struct  LowerVectorToAIEVec
 Lower incoming vector operations into their corresponding AIE vector intrinsics. More...
 
struct  ExtendUPDOpsPass
 
struct  SimplifyUPDOpsPass
 

Namespaces

namespace  xilinx
 
namespace  xilinx::aievec
 

Macros

#define DEBUG_TYPE   "lower-vector-to-aievec"
 

Typedefs

using LowerVectorAddFOpToAIEVecAddOp = OneToOneVectorOpToAIEVecOpPattern< arith::AddFOp, aievec::aie1::AddOp >
 
using LowerVectorMulFOpToAIEVecMulOp = OneToOneVectorOpToAIEVecOpPattern< arith::MulFOp, aievec::aie1::MulOp >
 
using LowerVectorSubIOpToAIEVecSubOp = OneToOneVectorOpToAIEVecOpPattern< arith::SubIOp, aievec::aie1::SubOp >
 
using LowerVectorSubFOpToAIEVecSubOp = OneToOneVectorOpToAIEVecOpPattern< arith::SubFOp, aievec::aie1::SubOp >
 
using LowerVectorAddIOpToAIEVecAddElemOp = LowerVectorAddOrSubOpToAIEVecAddElemOrSubElemOp< arith::AddIOp, aievec::AddElemOp >
 
using LowerVectorSubIOpToAIEVecSubElemOp = LowerVectorAddOrSubOpToAIEVecAddElemOrSubElemOp< arith::SubIOp, aievec::SubElemOp >
 
using LowerVectorAddFOpToAIEVecAddElemOp = LowerVectorAddOrSubOpToAIEVecAddElemOrSubElemOp< arith::AddFOp, aievec::AddElemOp >
 
using LowerVectorSubFOpToAIEVecSubElemOp = LowerVectorAddOrSubOpToAIEVecAddElemOrSubElemOp< arith::SubFOp, aievec::SubElemOp >
 
using LowerVectorMinSIOpToAIEVecMinOp = LowerVectorMinMaxOpToAIEVecMinMaxOp< arith::MinSIOp, aievec::MinOp >
 
using LowerVectorMaxSIOpToAIEVecMaxOp = LowerVectorMinMaxOpToAIEVecMinMaxOp< arith::MaxSIOp, aievec::MaxOp >
 
using LowerScalarMinSIOpToAIEVecMinOp = LowerScalarMinMaxToAIEVecMinMaxOp< arith::MinSIOp, aievec::MinOp >
 
using LowerScalarMaxSIOpToAIEVecMaxOp = LowerScalarMinMaxToAIEVecMinMaxOp< arith::MaxSIOp, aievec::MaxOp >
 
using LowerVectorMinimumFOpToAIEVecMinOp = LowerVectorMinMaxOpToAIEVecMinMaxOp< arith::MinimumFOp, aievec::MinOp >
 
using LowerVectorMaximumFOpToAIEVecMaxOp = LowerVectorMinMaxOpToAIEVecMinMaxOp< arith::MaximumFOp, aievec::MaxOp >
 
using LowerVectorMaxNumFFOpToAIEVecMaxOp = LowerVectorMinMaxOpToAIEVecMinMaxOp< arith::MaxNumFOp, aievec::MaxOp >
 
using LowerVectorCmpIOpToAIEVecCmpOp = LowerVectorCmpOpToAIEVecCmpOp< arith::CmpIOp, CmpIPredicate >
 
using LowerVectorCmpFOpToAIEVecCmpOp = LowerVectorCmpOpToAIEVecCmpOp< arith::CmpFOp, CmpFPredicate >
 
using ComputeAbsFOpPattern = ComputeAbsOpPattern< math::AbsFOp >
 
using ComputeAbsIOpPattern = ComputeAbsOpPattern< math::AbsIOp >
 
using LowerExtFOpPattern = LowerExtOpPattern< arith::ExtFOp >
 
using LowerExtSIOpPattern = LowerExtOpPattern< arith::ExtSIOp >
 
using LowerTruncFOpPattern = LowerTruncOpPattern< arith::TruncFOp >
 
using LowerTruncIOpPattern = LowerTruncOpPattern< arith::TruncIOp >
 
using ComputeBorOpPattern = ComputeBandAndBorOpPattern< arith::OrIOp, aievec::BorOp >
 
using ComputeBandOpPattern = ComputeBandAndBorOpPattern< arith::AndIOp, aievec::BandOp >
 
using LowerVectorContractionOpToAIEVecMatMulOpAIE2 = LowerVectorContractionOpToAIEVecMatMulPattern< aievec::MatMulOp >
 
using LowerVectorContractionOpToAIEVecMatMulOpAIE2P = LowerVectorContractionOpToAIEVecMatMulPattern< aievec::MatMulOp_AIE2P >
 

Functions

SmallVector< NamedAttribute > xilinx::aievec::buildFMAOpSplatAttrForElemTy (aievec::aie1::FMAOp fmaOp, int64_t bcastPos, int64_t step=1)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "lower-vector-to-aievec"

Definition at line 39 of file VectorToAIEVecConversions.cpp.

Typedef Documentation

◆ ComputeAbsFOpPattern

Definition at line 3441 of file VectorToAIEVecConversions.cpp.

◆ ComputeAbsIOpPattern

Definition at line 3442 of file VectorToAIEVecConversions.cpp.

◆ ComputeBandOpPattern

using ComputeBandOpPattern = ComputeBandAndBorOpPattern<arith::AndIOp, aievec::BandOp>

Definition at line 3957 of file VectorToAIEVecConversions.cpp.

◆ ComputeBorOpPattern

using ComputeBorOpPattern = ComputeBandAndBorOpPattern<arith::OrIOp, aievec::BorOp>

Definition at line 3955 of file VectorToAIEVecConversions.cpp.

◆ LowerExtFOpPattern

using LowerExtFOpPattern = LowerExtOpPattern<arith::ExtFOp>

Definition at line 3477 of file VectorToAIEVecConversions.cpp.

◆ LowerExtSIOpPattern

using LowerExtSIOpPattern = LowerExtOpPattern<arith::ExtSIOp>

Definition at line 3478 of file VectorToAIEVecConversions.cpp.

◆ LowerScalarMaxSIOpToAIEVecMaxOp

Definition at line 2137 of file VectorToAIEVecConversions.cpp.

◆ LowerScalarMinSIOpToAIEVecMinOp

Definition at line 2135 of file VectorToAIEVecConversions.cpp.

◆ LowerTruncFOpPattern

using LowerTruncFOpPattern = LowerTruncOpPattern<arith::TruncFOp>

Definition at line 3515 of file VectorToAIEVecConversions.cpp.

◆ LowerTruncIOpPattern

using LowerTruncIOpPattern = LowerTruncOpPattern<arith::TruncIOp>

Definition at line 3516 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorAddFOpToAIEVecAddElemOp

Definition at line 2031 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorAddFOpToAIEVecAddOp

using LowerVectorAddFOpToAIEVecAddOp = OneToOneVectorOpToAIEVecOpPattern<arith::AddFOp, aievec::aie1::AddOp>

Definition at line 1686 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorAddIOpToAIEVecAddElemOp

Definition at line 2025 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorCmpFOpToAIEVecCmpOp

using LowerVectorCmpFOpToAIEVecCmpOp = LowerVectorCmpOpToAIEVecCmpOp<arith::CmpFOp, CmpFPredicate>

Definition at line 2211 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorCmpIOpToAIEVecCmpOp

using LowerVectorCmpIOpToAIEVecCmpOp = LowerVectorCmpOpToAIEVecCmpOp<arith::CmpIOp, CmpIPredicate>

Definition at line 2209 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorContractionOpToAIEVecMatMulOpAIE2

Definition at line 4554 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorContractionOpToAIEVecMatMulOpAIE2P

Definition at line 4556 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMaximumFOpToAIEVecMaxOp

Definition at line 2142 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMaxNumFFOpToAIEVecMaxOp

Definition at line 2144 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMaxSIOpToAIEVecMaxOp

Definition at line 2087 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMinimumFOpToAIEVecMinOp

Definition at line 2140 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMinSIOpToAIEVecMinOp

Definition at line 2085 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMulFOpToAIEVecMulOp

using LowerVectorMulFOpToAIEVecMulOp = OneToOneVectorOpToAIEVecOpPattern<arith::MulFOp, aievec::aie1::MulOp>

Definition at line 1688 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubFOpToAIEVecSubElemOp

Definition at line 2034 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubFOpToAIEVecSubOp

using LowerVectorSubFOpToAIEVecSubOp = OneToOneVectorOpToAIEVecOpPattern<arith::SubFOp, aievec::aie1::SubOp>

Definition at line 1692 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubIOpToAIEVecSubElemOp

Definition at line 2028 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubIOpToAIEVecSubOp

using LowerVectorSubIOpToAIEVecSubOp = OneToOneVectorOpToAIEVecOpPattern<arith::SubIOp, aievec::aie1::SubOp>

Definition at line 1690 of file VectorToAIEVecConversions.cpp.