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/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  FoldVectorExtractAndSplatToAIEBroadcast
 
struct  ConvertSplatToAIEBroadcast
 
struct  ConvertMulAddToAIEVecFMAElemOpPattern
 
struct  ConvertVectorFMAOpToAIEVecFMAElemOpPattern
 
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  LowerVectorCmpOpToAIEVecCmpOp< SrcOpTy, CmpTy >
 
struct  LowerVectorSelectOpToAIEVecSelOp
 
struct  LowerVectorReductionMinOp
 
struct  LowerVectorReductionMaxOp
 
struct  LowerVectorReductionAddIntOp
 
struct  LowerVectorReductionAddFloatOp
 
struct  LowerVectorReductionAddBfloat16Op
 
struct  LowerVectorExtractStridedSliceOpAIEv1Pattern
 
struct  LowerVectorExtractStridedSliceOpAIE2Pattern
 
struct  ExpandUPDToUPDAndExtPattern
 
struct  FuseExtIntoUPDPattern
 
struct  ComputeExpOpByLUTLLVMPattern
 
struct  ComputeExpOpByLUTPattern
 
struct  ComputeInvOpByLUTPattern
 
struct  ComputeTanhOpByLUTPattern
 
struct  ComputeSqrtOpPattern
 
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  LowerVectorContractionOpToAIEVecMatMulPattern
 
struct  LowerVectorTransposeOpToAIEVecShuffleOpPattern
 
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 LowerVectorMinimumFOpToAIEVecMinOp = LowerVectorMinMaxOpToAIEVecMinMaxOp< arith::MinimumFOp, aievec::MinOp >
 
using LowerVectorMaximumFOpToAIEVecMaxOp = LowerVectorMinMaxOpToAIEVecMinMaxOp< arith::MaximumFOp, 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 >
 

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 38 of file VectorToAIEVecConversions.cpp.

Typedef Documentation

◆ ComputeAbsFOpPattern

Definition at line 2315 of file VectorToAIEVecConversions.cpp.

◆ ComputeAbsIOpPattern

Definition at line 2316 of file VectorToAIEVecConversions.cpp.

◆ ComputeBandOpPattern

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

Definition at line 2824 of file VectorToAIEVecConversions.cpp.

◆ ComputeBorOpPattern

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

Definition at line 2822 of file VectorToAIEVecConversions.cpp.

◆ LowerExtFOpPattern

using LowerExtFOpPattern = LowerExtOpPattern<arith::ExtFOp>

Definition at line 2346 of file VectorToAIEVecConversions.cpp.

◆ LowerExtSIOpPattern

using LowerExtSIOpPattern = LowerExtOpPattern<arith::ExtSIOp>

Definition at line 2347 of file VectorToAIEVecConversions.cpp.

◆ LowerTruncFOpPattern

using LowerTruncFOpPattern = LowerTruncOpPattern<arith::TruncFOp>

Definition at line 2385 of file VectorToAIEVecConversions.cpp.

◆ LowerTruncIOpPattern

using LowerTruncIOpPattern = LowerTruncOpPattern<arith::TruncIOp>

Definition at line 2386 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorAddFOpToAIEVecAddElemOp

Definition at line 1432 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorAddFOpToAIEVecAddOp

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

Definition at line 1153 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorAddIOpToAIEVecAddElemOp

Definition at line 1426 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorCmpFOpToAIEVecCmpOp

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

Definition at line 1533 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorCmpIOpToAIEVecCmpOp

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

Definition at line 1531 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMaximumFOpToAIEVecMaxOp

Definition at line 1476 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMaxSIOpToAIEVecMaxOp

Definition at line 1472 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMinimumFOpToAIEVecMinOp

Definition at line 1474 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMinSIOpToAIEVecMinOp

Definition at line 1470 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMulFOpToAIEVecMulOp

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

Definition at line 1155 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubFOpToAIEVecSubElemOp

Definition at line 1435 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubFOpToAIEVecSubOp

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

Definition at line 1159 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubIOpToAIEVecSubElemOp

Definition at line 1429 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubIOpToAIEVecSubOp

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

Definition at line 1157 of file VectorToAIEVecConversions.cpp.