MLIR  17.0.0git
Classes | Functions
mlir::arith Namespace Reference

Classes

class  AttrConvertFastMathToLLVM
 
class  AttrDropFastMath
 
class  ConstantIntOp
 Specialization of arith.constant op that returns an integer value. More...
 
class  ConstantFloatOp
 Specialization of arith.constant op that returns a floating point value. More...
 
class  ConstantIndexOp
 Specialization of arith.constant op that returns an integer of index type. More...
 
class  WideIntEmulationConverter
 Converts integer types that are too wide for the target by splitting them in two halves and thus turning into supported ones, i.e., i2*N --> iN, where N is the widest integer bitwidth supported by the target. More...
 

Functions

LLVM::FastmathFlags convertArithFastMathFlagsToLLVM (arith::FastMathFlags arithFMF)
 
LLVM::FastmathFlagsAttr convertArithFastMathAttrToLLVM (arith::FastMathFlagsAttr fmfAttr)
 
void populateArithToLLVMConversionPatterns (LLVMTypeConverter &converter, RewritePatternSet &patterns)
 
void populateArithToSPIRVPatterns (SPIRVTypeConverter &typeConverter, RewritePatternSet &patterns)
 
std::unique_ptr< OperationPass<> > createConvertArithToSPIRVPass ()
 
bool applyCmpPredicate (arith::CmpIPredicate predicate, const APInt &lhs, const APInt &rhs)
 Compute lhs pred rhs, where pred is one of the known integer comparison predicates. More...
 
bool applyCmpPredicate (arith::CmpFPredicate predicate, const APFloat &lhs, const APFloat &rhs)
 Compute lhs pred rhs, where pred is one of the known floating point comparison predicates. More...
 
Attribute getIdentityValueAttr (AtomicRMWKind kind, Type resultType, OpBuilder &builder, Location loc)
 Returns the identity value attribute associated with an AtomicRMWKind op. More...
 
Value getIdentityValue (AtomicRMWKind op, Type resultType, OpBuilder &builder, Location loc)
 Returns the identity value associated with an AtomicRMWKind op. More...
 
Value getReductionOp (AtomicRMWKind op, OpBuilder &builder, Location loc, Value lhs, Value rhs)
 Returns the value obtained by applying the reduction operation kind associated with a binary AtomicRMWKind op to lhs and rhs. More...
 
arith::CmpIPredicate invertPredicate (arith::CmpIPredicate pred)
 Invert an integer comparison predicate. More...
 
void registerBufferizableOpInterfaceExternalModels (DialectRegistry &registry)
 
std::unique_ptr< PasscreateArithBufferizePass ()
 Create a pass to bufferize Arith ops. More...
 
std::unique_ptr< PasscreateConstantBufferizePass (uint64_t alignment=0)
 Create a pass to bufferize arith.constant ops. More...
 
void populateArithWideIntEmulationPatterns (WideIntEmulationConverter &typeConverter, RewritePatternSet &patterns)
 Adds patterns to emulate wide Arith and Function ops over integer types into supported ones. More...
 
void populateCeilFloorDivExpandOpsPatterns (RewritePatternSet &patterns)
 Add patterns to expand Arith ceil/floor division ops. More...
 
void populateArithExpandOpsPatterns (RewritePatternSet &patterns)
 Add patterns to expand Arith ops. More...
 
std::unique_ptr< PasscreateArithExpandOpsPass ()
 Create a pass to legalize Arith ops. More...
 
std::unique_ptr< PasscreateArithUnsignedWhenEquivalentPass ()
 Create a pass to replace signed ops with unsigned ones where they are proven equivalent. More...
 
void populateIntRangeOptimizationsPatterns (RewritePatternSet &patterns, DataFlowSolver &solver)
 Add patterns for int range based optimizations. More...
 
std::unique_ptr< PasscreateIntRangeOptimizationsPass ()
 Create a pass which do optimizations based on integer range analysis. More...
 

Function Documentation

◆ applyCmpPredicate() [1/2]

bool mlir::arith::applyCmpPredicate ( arith::CmpFPredicate  predicate,
const APFloat &  lhs,
const APFloat &  rhs 
)

Compute lhs pred rhs, where pred is one of the known floating point comparison predicates.

Definition at line 1696 of file ArithOps.cpp.

◆ applyCmpPredicate() [2/2]

bool mlir::arith::applyCmpPredicate ( arith::CmpIPredicate  predicate,
const APInt &  lhs,
const APInt &  rhs 
)

Compute lhs pred rhs, where pred is one of the known integer comparison predicates.

Definition at line 1559 of file ArithOps.cpp.

◆ convertArithFastMathAttrToLLVM()

LLVM::FastmathFlagsAttr mlir::arith::convertArithFastMathAttrToLLVM ( arith::FastMathFlagsAttr  fmfAttr)

◆ convertArithFastMathFlagsToLLVM()

LLVM::FastmathFlags mlir::arith::convertArithFastMathFlagsToLLVM ( arith::FastMathFlags  arithFMF)

Definition at line 15 of file AttrToLLVMConverter.cpp.

References contract().

Referenced by convertArithFastMathAttrToLLVM().

◆ createArithBufferizePass()

std::unique_ptr< Pass > mlir::arith::createArithBufferizePass ( )

Create a pass to bufferize Arith ops.

Definition at line 61 of file Bufferize.cpp.

◆ createArithExpandOpsPass()

std::unique_ptr< Pass > mlir::arith::createArithExpandOpsPass ( )

Create a pass to legalize Arith ops.

Definition at line 225 of file ExpandOps.cpp.

Referenced by mlir::sparse_tensor::buildSparseCompiler().

◆ createArithUnsignedWhenEquivalentPass()

std::unique_ptr< Pass > mlir::arith::createArithUnsignedWhenEquivalentPass ( )

Create a pass to replace signed ops with unsigned ones where they are proven equivalent.

Definition at line 156 of file UnsignedWhenEquivalent.cpp.

◆ createConstantBufferizePass()

std::unique_ptr< Pass > mlir::arith::createConstantBufferizePass ( uint64_t  alignment = 0)

Create a pass to bufferize arith.constant ops.

Definition at line 66 of file Bufferize.cpp.

◆ createConvertArithToSPIRVPass()

std::unique_ptr< OperationPass<> > mlir::arith::createConvertArithToSPIRVPass ( )

Definition at line 1178 of file ArithToSPIRV.cpp.

◆ createIntRangeOptimizationsPass()

std::unique_ptr< Pass > mlir::arith::createIntRangeOptimizationsPass ( )

Create a pass which do optimizations based on integer range analysis.

Definition at line 184 of file IntRangeOptimizations.cpp.

◆ getIdentityValue()

Value mlir::arith::getIdentityValue ( AtomicRMWKind  op,
Type  resultType,
OpBuilder builder,
Location  loc 
)

Returns the identity value associated with an AtomicRMWKind op.

Definition at line 2321 of file ArithOps.cpp.

References mlir::OpBuilder::create(), and getIdentityValueAttr().

◆ getIdentityValueAttr()

Attribute mlir::arith::getIdentityValueAttr ( AtomicRMWKind  kind,
Type  resultType,
OpBuilder builder,
Location  loc 
)

◆ getReductionOp()

Value mlir::arith::getReductionOp ( AtomicRMWKind  op,
OpBuilder builder,
Location  loc,
Value  lhs,
Value  rhs 
)

Returns the value obtained by applying the reduction operation kind associated with a binary AtomicRMWKind op to lhs and rhs.

Return the value obtained by applying the reduction operation kind associated with a binary AtomicRMWKind op to lhs and rhs.

Definition at line 2329 of file ArithOps.cpp.

References mlir::OpBuilder::create(), and mlir::emitOptionalError().

Referenced by mlir::loopUnrollJamByFactor(), and vectorizeAffineForOp().

◆ invertPredicate()

arith::CmpIPredicate mlir::arith::invertPredicate ( arith::CmpIPredicate  pred)

Invert an integer comparison predicate.

Definition at line 47 of file ArithOps.cpp.

Referenced by invertPredicate().

◆ populateArithExpandOpsPatterns()

void mlir::arith::populateArithExpandOpsPatterns ( RewritePatternSet patterns)

Add patterns to expand Arith ops.

Definition at line 215 of file ExpandOps.cpp.

References mlir::RewritePatternSet::add(), mlir::RewritePatternSet::getContext(), and populateCeilFloorDivExpandOpsPatterns().

◆ populateArithToLLVMConversionPatterns()

void mlir::arith::populateArithToLLVMConversionPatterns ( LLVMTypeConverter converter,
RewritePatternSet patterns 
)

Definition at line 446 of file ArithToLLVM.cpp.

References mlir::RewritePatternSet::add().

◆ populateArithToSPIRVPatterns()

void mlir::arith::populateArithToSPIRVPatterns ( SPIRVTypeConverter typeConverter,
RewritePatternSet patterns 
)

◆ populateArithWideIntEmulationPatterns()

void mlir::arith::populateArithWideIntEmulationPatterns ( WideIntEmulationConverter typeConverter,
RewritePatternSet patterns 
)

Adds patterns to emulate wide Arith and Function ops over integer types into supported ones.

This is done by splitting original power-of-two i2N integer types into two iN halves.

Definition at line 1056 of file EmulateWideInt.cpp.

References mlir::RewritePatternSet::add(), mlir::RewritePatternSet::getContext(), mlir::populateCallOpTypeConversionPattern(), and mlir::populateReturnOpTypeConversionPattern().

◆ populateCeilFloorDivExpandOpsPatterns()

void mlir::arith::populateCeilFloorDivExpandOpsPatterns ( RewritePatternSet patterns)

Add patterns to expand Arith ceil/floor division ops.

Definition at line 208 of file ExpandOps.cpp.

References mlir::RewritePatternSet::add(), and mlir::RewritePatternSet::getContext().

Referenced by populateArithExpandOpsPatterns().

◆ populateIntRangeOptimizationsPatterns()

void mlir::arith::populateIntRangeOptimizationsPatterns ( RewritePatternSet patterns,
DataFlowSolver solver 
)

Add patterns for int range based optimizations.

Definition at line 179 of file IntRangeOptimizations.cpp.

References mlir::RewritePatternSet::add(), and mlir::RewritePatternSet::getContext().

◆ registerBufferizableOpInterfaceExternalModels()

void mlir::arith::registerBufferizableOpInterfaceExternalModels ( DialectRegistry registry)