[mlir][math] Initial support for fastmath flag attributes for Math dialect.
authorSlava Zakharin <szakharin@nvidia.com>
Fri, 4 Nov 2022 16:52:47 +0000 (09:52 -0700)
committerSlava Zakharin <szakharin@nvidia.com>
Fri, 4 Nov 2022 17:41:56 +0000 (10:41 -0700)
commit589764a382642ae8374cfe21a6b10f839c8596da
tree21e65bd1eebb5036a9307c2edc2a3ce3db0746f6
parentd0d4b635786d510cd919cadbeb7e5e19983242cf
[mlir][math] Initial support for fastmath flag attributes for Math dialect.

Added arith::FastMathAttr and ArithFastMathInterface support for Math dialect
floating point operations.

This change-set creates ArithCommon conversion utils that currently
provide classes and methods to aid with arith::FastMathAttr conversion
into LLVM::FastmathFlags. These utils are used in ArithToLLVM and
MathToLLVM convertors, but may eventually be used by other converters
that need to convert fast math attributes.

Since Math dialect operations use arith::FastMathAttr, MathOps.td now
has to include enum and attributes definitions from Arith dialect.
To minimize the amount of TD code included from Arith dialect,
I moved FastMathAttr definition into ArithBase.td.

Differential Revision: https://reviews.llvm.org/D136312
14 files changed:
mlir/include/mlir/Conversion/ArithCommon/AttrToLLVMConverter.h [new file with mode: 0644]
mlir/include/mlir/Dialect/Arith/IR/ArithBase.td
mlir/include/mlir/Dialect/Arith/IR/ArithOps.td
mlir/include/mlir/Dialect/Math/IR/Math.h
mlir/include/mlir/Dialect/Math/IR/MathOps.td
mlir/lib/Conversion/ArithCommon/AttrToLLVMConverter.cpp [new file with mode: 0644]
mlir/lib/Conversion/ArithCommon/CMakeLists.txt [new file with mode: 0644]
mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp
mlir/lib/Conversion/ArithToLLVM/CMakeLists.txt
mlir/lib/Conversion/CMakeLists.txt
mlir/lib/Conversion/MathToLLVM/CMakeLists.txt
mlir/lib/Conversion/MathToLLVM/MathToLLVM.cpp
mlir/test/Conversion/MathToLLVM/math-to-llvm.mlir
mlir/test/Dialect/Math/ops.mlir