MLIR
22.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/IR/Builders.h"
#include "mlir/IR/Matchers.h"
#include "mlir/IR/TypeUtilities.h"
#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
#include "mlir/Dialect/Math/Transforms/Passes.h.inc"
Go to the source code of this file.
Namespaces | |
mlir | |
Include the generated interface declarations. | |
mlir::math | |
Macros | |
#define | GEN_PASS_DEF_MATHEXPANDOPSPASS |
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 | 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 LogicalResult | convertClampfOp (math::ClampFOp op, PatternRewriter &rewriter) |
#define GEN_PASS_DEF_MATHEXPANDOPSPASS |
Definition at line 24 of file ExpandOps.cpp.
|
static |
Definition at line 175 of file ExpandOps.cpp.
References mlir::remark::add(), createFloatConst(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 159 of file ExpandOps.cpp.
References mlir::remark::add(), createFloatConst(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 191 of file ExpandOps.cpp.
References mlir::remark::add(), createFloatConst(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 226 of file ExpandOps.cpp.
References createFloatConst(), createTruncatedFPValue(), mlir::ImplicitLocOpBuilder::getLoc(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 669 of file ExpandOps.cpp.
References mlir::RewriterBase::replaceOpWithNewOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 91 of file ExpandOps.cpp.
References mlir::remark::add(), createFloatConst(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 472 of file ExpandOps.cpp.
References mlir::remark::add(), createIntConst(), mlir::getElementTypeOrSelf(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 400 of file ExpandOps.cpp.
References createFloatConst(), mlir::ImplicitLocOpBuilder::getLoc(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 209 of file ExpandOps.cpp.
References mlir::remark::add(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 255 of file ExpandOps.cpp.
References mlir::presburger::abs(), createFloatConst(), mlir::getElementTypeOrSelf(), mlir::ImplicitLocOpBuilder::getLoc(), mlir::Value::getType(), getZero(), mlir::m_Constant(), mlir::m_ConstantInt(), mlir::matchPattern(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 326 of file ExpandOps.cpp.
References createFloatConst(), mlir::getElementTypeOrSelf(), mlir::Value::getType(), mlir::m_ConstantFloat(), mlir::matchPattern(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 515 of file ExpandOps.cpp.
References createFloatConst(), createIntConst(), mlir::getElementTypeOrSelf(), mlir::Builder::getIntegerType(), mlir::Type::getIntOrFloatBitWidth(), mlir::RewriterBase::notifyMatchFailure(), mlir::RewriterBase::replaceOp(), and mlir::presburger::round().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 412 of file ExpandOps.cpp.
References mlir::remark::add(), createFloatConst(), createIntConst(), createTruncatedFPValue(), mlir::getElementTypeOrSelf(), mlir::Builder::getI32Type(), mlir::Value::getType(), mlir::Type::isF32(), mlir::RewriterBase::notifyMatchFailure(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 647 of file ExpandOps.cpp.
References createFloatConst(), mlir::getElementTypeOrSelf(), and mlir::RewriterBase::replaceOpWithNewOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 75 of file ExpandOps.cpp.
References createFloatConst(), mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
|
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 114 of file ExpandOps.cpp.
References createFloatConst(), and mlir::RewriterBase::replaceOpWithNewOp().
Referenced by mlir::math::populateExpansionPatterns().
|
static |
Definition at line 147 of file ExpandOps.cpp.
References mlir::Value::getType(), and mlir::RewriterBase::replaceOp().
Referenced by mlir::math::populateExpansionPatterns().
Create a float constant.
Definition at line 29 of file ExpandOps.cpp.
References mlir::DenseElementsAttr::get(), mlir::getElementTypeOrSelf(), and mlir::Builder::getFloatAttr().
Referenced by convertAcoshOp(), convertAsinhOp(), convertAtanhOp(), convertCeilOp(), convertCoshOp(), convertExp2fOp(), convertFPowIOp(), convertPowfOp(), convertRoundEvenOp(), convertRoundOp(), convertRsqrtOp(), convertSinhOp(), convertTanhOp(), and createFloatConst().
Definition at line 45 of file ExpandOps.cpp.
References createFloatConst().
Create an integer constant.
Definition at line 51 of file ExpandOps.cpp.
References mlir::DenseElementsAttr::get(), mlir::getElementTypeOrSelf(), and mlir::Builder::getIntegerAttr().
Referenced by convertCtlzOp(), convertRoundEvenOp(), and convertRoundOp().
|
static |
Definition at line 62 of file ExpandOps.cpp.
References mlir::Builder::getI64Type(), and mlir::Value::getType().
Referenced by convertCeilOp(), and convertRoundOp().