MLIR 23.0.0git
TosaCanonicalizations.cpp File Reference

Go to the source code of this file.

Classes

struct  AvgPool2dAdaptiveToAvgPool2d
struct  MaxPool2dIsNoOp
struct  MaxPool2dAdaptiveToMaxPool2d
struct  ConcatOptimization
struct  ConsolidateTransposeOptimization
struct  TransposeIsReshape
struct  ClampIsNoOp
struct  ClampClampOptimization
struct  ClampClampOptimization::ClampRange< T >
struct  ConcatSliceOptimization
struct  PadSliceOptimization
struct  SliceDynamicSizeCanonicalization
struct  NonNarrowingCastsOptimization
struct  CancellingBlockScaledCastsOptimization
struct  AddFoldAdaptor
struct  SubFoldAdaptor
struct  MulFoldAdaptor
struct  DivFoldAdaptor< Ceil >
struct  ModFoldAdaptor
struct  MaxFoldAdaptor
struct  MinFoldAdaptor
struct  Exp2FoldAdaptor
struct  Log2CeilFoldAdaptor
struct  Log2FloorFoldAdaptor
struct  GreaterFoldAdaptor
struct  GreaterEqualFoldAdaptor
struct  EqualFoldAdaptor

Macros

#define REDUCE_FOLDER(OP)

Functions

static bool checkMatchingPadConstAndZp (Value padConst, Value zp)
template<typename Folder>
static DenseElementsAttr binaryFolder (DenseElementsAttr lhs, DenseElementsAttr rhs, ShapedType returnTy, bool foldDenseValues=false)
template<typename Folder>
static DenseElementsAttr unaryFolder (DenseElementsAttr val, ShapedType returnTy, bool foldDenseValues=false)
static FailureOr< int64_tgetSingleI64From1ElementTensor (Value v)
static bool signsDiffer (const APInt &a, const APInt &b)
static bool isSplatZero (Type elemType, DenseElementsAttr val)
static bool isSplatOne (Type elemType, DenseElementsAttr val, int64_t shift)
template<typename Op, typename OpFoldAdaptor>
OpFoldResult unaryShapeFold (Op *op)
template<typename Op, typename OpFoldAdaptor>
OpFoldResult binaryFold (Op *op)
OpFoldResult concatShapeFold (tosa::ConcatShapeOp *op)
OpFoldResult sliceShapeFold (tosa::SliceShapeOp *op)

Macro Definition Documentation

◆ REDUCE_FOLDER

#define REDUCE_FOLDER ( OP)
Value:
OpFoldResult OP::fold(FoldAdaptor adaptor) { \
ShapedType inputTy = llvm::cast<ShapedType>(getInput().getType()); \
if (!inputTy.hasRank()) \
return {}; \
if (inputTy != getType()) \
return {}; \
if (inputTy.getRank() == 0 || inputTy.getDimSize(getAxis()) == 1) \
return getInput(); \
return {}; \
}
This class represents a single result from folding an operation.
Type getType(OpFoldResult ofr)
Returns the int type of the integer in ofr.
Definition Utils.cpp:307

Definition at line 1887 of file TosaCanonicalizations.cpp.

Function Documentation

◆ binaryFold()

template<typename Op, typename OpFoldAdaptor>
OpFoldResult binaryFold ( Op * op)

Definition at line 2294 of file TosaCanonicalizations.cpp.

References binaryFolder().

◆ binaryFolder()

template<typename Folder>
DenseElementsAttr binaryFolder ( DenseElementsAttr lhs,
DenseElementsAttr rhs,
ShapedType returnTy,
bool foldDenseValues = false )
static

◆ checkMatchingPadConstAndZp()

bool checkMatchingPadConstAndZp ( Value padConst,
Value zp )
static

◆ concatShapeFold()

OpFoldResult concatShapeFold ( tosa::ConcatShapeOp * op)

Definition at line 2325 of file TosaCanonicalizations.cpp.

References mlir::DenseElementsAttr::get().

◆ getSingleI64From1ElementTensor()

FailureOr< int64_t > getSingleI64From1ElementTensor ( Value v)
static

Definition at line 1283 of file TosaCanonicalizations.cpp.

References mlir::m_Constant(), and mlir::matchPattern().

Referenced by sliceShapeFold().

◆ isSplatOne()

bool isSplatOne ( Type elemType,
DenseElementsAttr val,
int64_t shift )
static

◆ isSplatZero()

bool isSplatZero ( Type elemType,
DenseElementsAttr val )
static

◆ signsDiffer()

bool signsDiffer ( const APInt & a,
const APInt & b )
static

Definition at line 1355 of file TosaCanonicalizations.cpp.

References b.

Referenced by DivFoldAdaptor< Ceil >::fold().

◆ sliceShapeFold()

OpFoldResult sliceShapeFold ( tosa::SliceShapeOp * op)

◆ unaryFolder()

◆ unaryShapeFold()

template<typename Op, typename OpFoldAdaptor>
OpFoldResult unaryShapeFold ( Op * op)

Definition at line 2281 of file TosaCanonicalizations.cpp.

References unaryFolder().