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

Typedef Documentation

◆ ComputeAbsFOpPattern

Definition at line 2316 of file VectorToAIEVecConversions.cpp.

◆ ComputeAbsIOpPattern

Definition at line 2317 of file VectorToAIEVecConversions.cpp.

◆ ComputeBandOpPattern

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

Definition at line 2825 of file VectorToAIEVecConversions.cpp.

◆ ComputeBorOpPattern

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

Definition at line 2823 of file VectorToAIEVecConversions.cpp.

◆ LowerExtFOpPattern

using LowerExtFOpPattern = LowerExtOpPattern<arith::ExtFOp>

Definition at line 2347 of file VectorToAIEVecConversions.cpp.

◆ LowerExtSIOpPattern

using LowerExtSIOpPattern = LowerExtOpPattern<arith::ExtSIOp>

Definition at line 2348 of file VectorToAIEVecConversions.cpp.

◆ LowerTruncFOpPattern

using LowerTruncFOpPattern = LowerTruncOpPattern<arith::TruncFOp>

Definition at line 2386 of file VectorToAIEVecConversions.cpp.

◆ LowerTruncIOpPattern

using LowerTruncIOpPattern = LowerTruncOpPattern<arith::TruncIOp>

Definition at line 2387 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorAddFOpToAIEVecAddElemOp

Definition at line 1433 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorAddFOpToAIEVecAddOp

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

Definition at line 1154 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorAddIOpToAIEVecAddElemOp

Definition at line 1427 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorCmpFOpToAIEVecCmpOp

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

Definition at line 1534 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorCmpIOpToAIEVecCmpOp

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

Definition at line 1532 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMaximumFOpToAIEVecMaxOp

Definition at line 1477 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMaxSIOpToAIEVecMaxOp

Definition at line 1473 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMinimumFOpToAIEVecMinOp

Definition at line 1475 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMinSIOpToAIEVecMinOp

Definition at line 1471 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorMulFOpToAIEVecMulOp

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

Definition at line 1156 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubFOpToAIEVecSubElemOp

Definition at line 1436 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubFOpToAIEVecSubOp

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

Definition at line 1160 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubIOpToAIEVecSubElemOp

Definition at line 1430 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubIOpToAIEVecSubOp

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

Definition at line 1158 of file VectorToAIEVecConversions.cpp.