MLIR-AIE 1.4.5.dev
VectorToAIEVecConversions.cpp File Reference
#include "AIE2PShufflePlanner.h"
#include "aie/Dialect/AIE/IR/AIEDialect.h"
#include "aie/Dialect/AIEVec/AIE1/IR/AIEVecAIE1Ops.h"
#include "aie/Dialect/AIEVec/AIEVecUtils.h"
#include "aie/Dialect/AIEVec/IR/AIEVecMatMul.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  ConvertVectorFMAOpToAIEVecFMAElemOpAIE2PPattern
struct  ConvertMulFToAIEVecMulElemOpAIE2PPattern
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  LowerVectorUMinMaxOpToCmpSelOp< SrcOpTy, Pred >
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  ConvertMathToAIEVecAccFloatUnaryOpPattern< MathOpTy, AIEVecOpTy >
struct  ComputeErfOpAIE2PPattern
struct  ComputeScalarMathOpByVectorAIE2PPattern< OpTy >
struct  ComputeOneLaneMathOpAIE2PPattern< OpTy >
struct  ComputeExpOpByLUTLLVMPattern
struct  ComputeExpOpByLUTPattern
struct  ConvertDivFToAIEVecInvOpPattern
struct  ComputeTanhOpByLUTPattern
struct  ComputeSqrtOpAIE2Pattern
struct  ComputeRsqrtOpLLVMAIE2Pattern
struct  ComputeRsqrtOpPattern
struct  ComputeErfOpPattern
struct  ComputeAbsOpPattern< SrcOpTy >
struct  LowerExtOpPattern< SrcOpTy >
struct  LowerVectorSIToFPI16BF16AIE2pPattern
struct  LowerExtUIOfBitcastI4ToUnpackPattern
struct  ScalarizeVectorIntFpConversionOpPattern< 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  ContractionTile
struct  LowerVectorContractionOpToAIEVecMatMulPattern< MatMulOpTy >
struct  LowerVectorTransposeOpToAIEVecShuffleOpPattern
struct  ConvertSplatToAIEBroadcastAIE2p
struct  FlattenElementwiseVectorToRank1Pattern< OpTy >
struct  NormalizeLanesAIE2PPattern< OpTy >
struct  AIE2PElementwiseOps< OpTys >
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
using LowerVectorMulFOpToAIEVecMulOp
using LowerVectorSubIOpToAIEVecSubOp
using LowerVectorSubFOpToAIEVecSubOp
using LowerVectorAddIOpToAIEVecAddElemOp
using LowerVectorSubIOpToAIEVecSubElemOp
using LowerVectorAddFOpToAIEVecAddElemOp
using LowerVectorSubFOpToAIEVecSubElemOp
using LowerVectorMinSIOpToAIEVecMinOp
using LowerVectorMaxSIOpToAIEVecMaxOp
using LowerVectorMinUIOpToCmpSelOp
using LowerVectorMaxUIOpToCmpSelOp
using LowerScalarMinSIOpToAIEVecMinOp
using LowerScalarMaxSIOpToAIEVecMaxOp
using LowerVectorMinimumFOpToAIEVecMinOp
using LowerVectorMaximumFOpToAIEVecMaxOp
using LowerVectorMaxNumFFOpToAIEVecMaxOp
using LowerVectorCmpIOpToAIEVecCmpOp
using LowerVectorCmpFOpToAIEVecCmpOp
using ComputeAbsFOpPattern = ComputeAbsOpPattern<math::AbsFOp>
using ComputeAbsIOpPattern = ComputeAbsOpPattern<math::AbsIOp>
using LowerExtFOpPattern = LowerExtOpPattern<arith::ExtFOp>
using LowerExtSIOpPattern = LowerExtOpPattern<arith::ExtSIOp>
using ScalarizeVectorSIToFPOpPattern
using ScalarizeVectorUIToFPOpPattern
using ScalarizeVectorFPToSIOpPattern
using ScalarizeVectorFPToUIOpPattern
using LowerTruncFOpPattern = LowerTruncOpPattern<arith::TruncFOp>
using LowerTruncIOpPattern = LowerTruncOpPattern<arith::TruncIOp>
using ComputeBorOpPattern
using ComputeBandOpPattern
using LowerVectorContractionOpToAIEVecMatMulOpAIE2
using LowerVectorContractionOpToAIEVecMatMulOpAIE2P
using AIE2PElementwise

Functions

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

Variables

constexpr int64_t kAIE2PMaxParts = 128

Macro Definition Documentation

◆ DEBUG_TYPE

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

Definition at line 40 of file VectorToAIEVecConversions.cpp.

Typedef Documentation

◆ AIE2PElementwise

Initial value:
arith::MulFOp, arith::DivFOp, arith::AddFOp, arith::SubFOp, arith::NegFOp,
arith::TruncFOp, arith::ExtFOp, math::ExpOp, math::TanhOp, math::ErfOp,
math::Exp2Op, arith::MaximumFOp, arith::MaxNumFOp, arith::MinimumFOp,
arith::CmpFOp, arith::CmpIOp, arith::SelectOp, arith::AddIOp, arith::SubIOp,
arith::MulIOp, arith::IndexCastOp>

Definition at line 5776 of file VectorToAIEVecConversions.cpp.

◆ ComputeAbsFOpPattern

Definition at line 3740 of file VectorToAIEVecConversions.cpp.

◆ ComputeAbsIOpPattern

Definition at line 3741 of file VectorToAIEVecConversions.cpp.

◆ ComputeBandOpPattern

◆ ComputeBorOpPattern

◆ LowerExtFOpPattern

using LowerExtFOpPattern = LowerExtOpPattern<arith::ExtFOp>

Definition at line 3776 of file VectorToAIEVecConversions.cpp.

◆ LowerExtSIOpPattern

using LowerExtSIOpPattern = LowerExtOpPattern<arith::ExtSIOp>

Definition at line 3777 of file VectorToAIEVecConversions.cpp.

◆ LowerScalarMaxSIOpToAIEVecMaxOp

◆ LowerScalarMinSIOpToAIEVecMinOp

◆ LowerTruncFOpPattern

using LowerTruncFOpPattern = LowerTruncOpPattern<arith::TruncFOp>

Definition at line 4016 of file VectorToAIEVecConversions.cpp.

◆ LowerTruncIOpPattern

using LowerTruncIOpPattern = LowerTruncOpPattern<arith::TruncIOp>

Definition at line 4017 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorAddFOpToAIEVecAddElemOp

◆ LowerVectorAddFOpToAIEVecAddOp

◆ LowerVectorAddIOpToAIEVecAddElemOp

Initial value:
aievec::AddElemOp>

Definition at line 2223 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorCmpFOpToAIEVecCmpOp

◆ LowerVectorCmpIOpToAIEVecCmpOp

◆ LowerVectorContractionOpToAIEVecMatMulOpAIE2

◆ LowerVectorContractionOpToAIEVecMatMulOpAIE2P

◆ LowerVectorMaximumFOpToAIEVecMaxOp

◆ LowerVectorMaxNumFFOpToAIEVecMaxOp

◆ LowerVectorMaxSIOpToAIEVecMaxOp

◆ LowerVectorMaxUIOpToCmpSelOp

◆ LowerVectorMinimumFOpToAIEVecMinOp

◆ LowerVectorMinSIOpToAIEVecMinOp

◆ LowerVectorMinUIOpToCmpSelOp

◆ LowerVectorMulFOpToAIEVecMulOp

◆ LowerVectorSubFOpToAIEVecSubElemOp

Initial value:
aievec::SubElemOp>

Definition at line 2232 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubFOpToAIEVecSubOp

◆ LowerVectorSubIOpToAIEVecSubElemOp

Initial value:
aievec::SubElemOp>

Definition at line 2226 of file VectorToAIEVecConversions.cpp.

◆ LowerVectorSubIOpToAIEVecSubOp

◆ ScalarizeVectorFPToSIOpPattern

◆ ScalarizeVectorFPToUIOpPattern

◆ ScalarizeVectorSIToFPOpPattern

◆ ScalarizeVectorUIToFPOpPattern

Variable Documentation

◆ kAIE2PMaxParts

int64_t kAIE2PMaxParts = 128
constexpr

Definition at line 5592 of file VectorToAIEVecConversions.cpp.