MLIR
20.0.0git
|
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/Math/IR/Math.h"
#include "mlir/Dialect/Math/Transforms/Passes.h"
#include "mlir/Dialect/SCF/IR/SCF.h"
#include "mlir/Dialect/Vector/IR/VectorOps.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/ImplicitLocOpBuilder.h"
#include "mlir/IR/TypeUtilities.h"
#include "mlir/Transforms/DialectConversion.h"
Go to the source code of this file.
Functions | |
static Value | createFloatConst (Location loc, Type type, APFloat value, OpBuilder &b) |
Create a float constant. More... | |
static Value | createFloatConst (Location loc, Type type, double value, OpBuilder &b) |
static Value | createIntConst (Location loc, Type type, int64_t value, OpBuilder &b) |
Create an integer constant. More... | |
static Value | createTruncatedFPValue (Value operand, ImplicitLocOpBuilder &b) |
static LogicalResult | convertSinhOp (math::SinhOp op, PatternRewriter &rewriter) |
static LogicalResult | convertCoshOp (math::CoshOp op, PatternRewriter &rewriter) |
static LogicalResult | convertTanhOp (math::TanhOp op, PatternRewriter &rewriter) |
Expands tanh op into 1-exp^{-2x} / 1+exp^{-2x} To avoid overflow we exploit the reflection symmetry tanh(-x) = -tanh(x) . More... | |
static LogicalResult | convertTanOp (math::TanOp op, PatternRewriter &rewriter) |
static LogicalResult | convertAsinhOp (math::AsinhOp op, PatternRewriter &rewriter) |
static LogicalResult | convertAcoshOp (math::AcoshOp op, PatternRewriter &rewriter) |
static LogicalResult | convertAtanhOp (math::AtanhOp op, PatternRewriter &rewriter) |
static LogicalResult | convertFmaFOp (math::FmaOp op, PatternRewriter &rewriter) |
static LogicalResult | convertFloorOp (math::FloorOp op, PatternRewriter &rewriter) |
static LogicalResult | convertCeilOp (math::CeilOp op, PatternRewriter &rewriter) |
static LogicalResult | convertFPowIOp (math::FPowIOp op, PatternRewriter &rewriter) |
static LogicalResult | convertPowfOp (math::PowFOp op, PatternRewriter &rewriter) |
static LogicalResult | convertExp2fOp (math::Exp2Op op, PatternRewriter &rewriter) |
static LogicalResult | convertRoundOp (math::RoundOp op, PatternRewriter &rewriter) |
static LogicalResult | convertCtlzOp (math::CountLeadingZerosOp op, PatternRewriter &rewriter) |
static LogicalResult | convertRoundEvenOp (math::RoundEvenOp op, PatternRewriter &rewriter) |
static LogicalResult | convertRsqrtOp (math::RsqrtOp op, PatternRewriter &rewriter) |
|
static |
Definition at line 172 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), createFloatConst(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandAcoshPattern().
|
static |
Definition at line 156 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), createFloatConst(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandAsinhPattern().
|
static |
Definition at line 188 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), createFloatConst(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandAtanhPattern().
|
static |
Definition at line 248 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), createFloatConst(), createTruncatedFPValue(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandCeilFPattern().
|
static |
Definition at line 88 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), createFloatConst(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandCoshPattern().
|
static |
Definition at line 452 of file ExpandPatterns.cpp.
References mlir::OpBuilder::create(), createIntConst(), mlir::getElementTypeOrSelf(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandCtlzPattern().
|
static |
Definition at line 380 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), createFloatConst(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandExp2FPattern().
|
static |
Definition at line 223 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), createFloatConst(), createTruncatedFPValue(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandFloorFPattern().
|
static |
Definition at line 206 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandFmaFPattern().
|
static |
Definition at line 271 of file ExpandPatterns.cpp.
References mlir::presburger::abs(), mlir::ImplicitLocOpBuilder::create(), mlir::OpBuilder::create(), createFloatConst(), mlir::getElementTypeOrSelf(), mlir::Value::getType(), getZero(), mlir::m_Constant(), mlir::m_ConstantInt(), mlir::matchPattern(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandFPowIPattern().
|
static |
Definition at line 340 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), createFloatConst(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandPowFPattern().
|
static |
Definition at line 495 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), createFloatConst(), createIntConst(), mlir::getElementTypeOrSelf(), mlir::Builder::getIntegerType(), mlir::Type::getIntOrFloatBitWidth(), mlir::RewriterBase::notifyMatchFailure(), mlir::RewriterBase::replaceOp(), and mlir::presburger::round().
Referenced by mlir::populateExpandRoundEvenPattern().
|
static |
Definition at line 392 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), createFloatConst(), createIntConst(), createTruncatedFPValue(), mlir::getElementTypeOrSelf(), mlir::Builder::getI32Type(), mlir::Value::getType(), mlir::Type::isF32(), mlir::RewriterBase::notifyMatchFailure(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandRoundFPattern().
|
static |
Definition at line 627 of file ExpandPatterns.cpp.
References mlir::OpBuilder::create(), createFloatConst(), mlir::getElementTypeOrSelf(), and mlir::RewriterBase::replaceOpWithNewOp().
Referenced by mlir::populateExpandRsqrtPattern().
|
static |
Definition at line 72 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), createFloatConst(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandSinhPattern().
|
static |
Expands tanh op into 1-exp^{-2x} / 1+exp^{-2x} To avoid overflow we exploit the reflection symmetry tanh(-x) = -tanh(x)
.
We compute a "signs" value which is -1 if input is negative and +1 if input is positive. Then multiply the input by this value, guaranteeing that the result is positive, which also guarantees exp^{-2x * sign(x)}
is in (0, 1]. Expand the computation on the input x * sign(x)
, then multiply the result by sign(x)
to retain sign of the real result.
Definition at line 111 of file ExpandPatterns.cpp.
References mlir::OpBuilder::create(), createFloatConst(), and mlir::RewriterBase::replaceOpWithNewOp().
Referenced by mlir::populateExpandTanhPattern().
|
static |
Definition at line 144 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::populateExpandTanPattern().
Create a float constant.
Definition at line 26 of file ExpandPatterns.cpp.
References mlir::OpBuilder::create(), mlir::DenseElementsAttr::get(), mlir::getElementTypeOrSelf(), and mlir::Builder::getFloatAttr().
Referenced by convertAcoshOp(), convertAsinhOp(), convertAtanhOp(), convertCeilOp(), convertCoshOp(), convertExp2fOp(), convertFloorOp(), convertFPowIOp(), convertPowfOp(), convertRoundEvenOp(), convertRoundOp(), convertRsqrtOp(), convertSinhOp(), convertTanhOp(), and createFloatConst().
Definition at line 42 of file ExpandPatterns.cpp.
References createFloatConst().
Create an integer constant.
Definition at line 48 of file ExpandPatterns.cpp.
References mlir::OpBuilder::create(), mlir::DenseElementsAttr::get(), mlir::getElementTypeOrSelf(), and mlir::Builder::getIntegerAttr().
Referenced by convertCtlzOp(), convertRoundEvenOp(), and convertRoundOp().
|
static |
Definition at line 59 of file ExpandPatterns.cpp.
References mlir::ImplicitLocOpBuilder::create(), mlir::Builder::getI64Type(), and mlir::Value::getType().
Referenced by convertCeilOp(), convertFloorOp(), and convertRoundOp().