[Mlir-commits] [mlir] b4e8f59 - [mlir][SPIR-V] Lower math.{exp2, log2, log10} operations (#196723)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon May 11 06:02:46 PDT 2026
Author: Arseniy Obolenskiy
Date: 2026-05-11T15:02:41+02:00
New Revision: b4e8f5911221dcac405cfcd4ac2cffadc0c4ddda
URL: https://github.com/llvm/llvm-project/commit/b4e8f5911221dcac405cfcd4ac2cffadc0c4ddda
DIFF: https://github.com/llvm/llvm-project/commit/b4e8f5911221dcac405cfcd4ac2cffadc0c4ddda.diff
LOG: [mlir][SPIR-V] Lower math.{exp2,log2,log10} operations (#196723)
Added:
Modified:
mlir/lib/Conversion/MathToSPIRV/MathToSPIRV.cpp
mlir/test/Conversion/MathToSPIRV/math-to-opencl-spirv.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Conversion/MathToSPIRV/MathToSPIRV.cpp b/mlir/lib/Conversion/MathToSPIRV/MathToSPIRV.cpp
index 8d850e01d5e62..ce603d4a85072 100644
--- a/mlir/lib/Conversion/MathToSPIRV/MathToSPIRV.cpp
+++ b/mlir/lib/Conversion/MathToSPIRV/MathToSPIRV.cpp
@@ -562,8 +562,6 @@ void populateMathToSPIRVPatterns(const SPIRVTypeConverter &typeConverter,
// OpenCL patterns
patterns.add<
Log1pOpPattern<spirv::CLLogOp>, ExpM1OpPattern<spirv::CLExpOp>,
- Log2Log10OpPattern<math::Log2Op, spirv::CLLogOp>,
- Log2Log10OpPattern<math::Log10Op, spirv::CLLogOp>,
CheckedElementwiseOpPattern<math::AbsFOp, spirv::CLFAbsOp>,
CheckedElementwiseOpPattern<math::AbsIOp, spirv::CLSAbsOp>,
CheckedElementwiseOpPattern<math::CountLeadingZerosOp, spirv::CLClzOp>,
@@ -573,9 +571,12 @@ void populateMathToSPIRVPatterns(const SPIRVTypeConverter &typeConverter,
CheckedElementwiseOpPattern<math::CosOp, spirv::CLCosOp>,
CheckedElementwiseOpPattern<math::ErfOp, spirv::CLErfOp>,
CheckedElementwiseOpPattern<math::ExpOp, spirv::CLExpOp>,
+ CheckedElementwiseOpPattern<math::Exp2Op, spirv::CLExp2Op>,
CheckedElementwiseOpPattern<math::FloorOp, spirv::CLFloorOp>,
CheckedElementwiseOpPattern<math::FmaOp, spirv::CLFmaOp>,
CheckedElementwiseOpPattern<math::LogOp, spirv::CLLogOp>,
+ CheckedElementwiseOpPattern<math::Log2Op, spirv::CLLog2Op>,
+ CheckedElementwiseOpPattern<math::Log10Op, spirv::CLLog10Op>,
CheckedElementwiseOpPattern<math::PowFOp, spirv::CLPowOp>, PowIOpPattern,
CheckedElementwiseOpPattern<math::RoundEvenOp, spirv::CLRintOp>,
CheckedElementwiseOpPattern<math::RoundOp, spirv::CLRoundOp>,
diff --git a/mlir/test/Conversion/MathToSPIRV/math-to-opencl-spirv.mlir b/mlir/test/Conversion/MathToSPIRV/math-to-opencl-spirv.mlir
index 037f69e63a2dc..1b7d63fb38d36 100644
--- a/mlir/test/Conversion/MathToSPIRV/math-to-opencl-spirv.mlir
+++ b/mlir/test/Conversion/MathToSPIRV/math-to-opencl-spirv.mlir
@@ -20,14 +20,12 @@ func.func @float32_unary_scalar(%arg0: f32) {
// CHECK: %[[ADDONE:.+]] = spirv.FAdd %[[ONE]], %{{.+}}
// CHECK: spirv.CL.log %[[ADDONE]]
%5 = math.log1p %arg0 : f32
- // CHECK: %[[LOG2_RECIPROCAL:.+]] = spirv.Constant 1.44269502 : f32
- // CHECK: %[[LOG0:.+]] = spirv.CL.log {{.+}}
- // CHECK: spirv.FMul %[[LOG0]], %[[LOG2_RECIPROCAL]]
+ // CHECK: spirv.CL.log2 %{{.*}}: f32
%6 = math.log2 %arg0 : f32
- // CHECK: %[[LOG10_RECIPROCAL:.+]] = spirv.Constant 0.434294492 : f32
- // CHECK: %[[LOG1:.+]] = spirv.CL.log {{.+}}
- // CHECK: spirv.FMul %[[LOG1]], %[[LOG10_RECIPROCAL]]
+ // CHECK: spirv.CL.log10 %{{.*}}: f32
%7 = math.log10 %arg0 : f32
+ // CHECK: spirv.CL.exp2 %{{.*}}: f32
+ %exp2_scalar = math.exp2 %arg0 : f32
// CHECK: spirv.CL.rint %{{.*}}: f32
%8 = math.roundeven %arg0 : f32
// CHECK: spirv.CL.rsqrt %{{.*}}: f32
@@ -85,14 +83,12 @@ func.func @float32_unary_vector(%arg0: vector<3xf32>) {
// CHECK: %[[ADDONE:.+]] = spirv.FAdd %[[ONE]], %{{.+}}
// CHECK: spirv.CL.log %[[ADDONE]]
%5 = math.log1p %arg0 : vector<3xf32>
- // CHECK: %[[LOG2_RECIPROCAL:.+]] = spirv.Constant dense<1.44269502> : vector<3xf32>
- // CHECK: %[[LOG0:.+]] = spirv.CL.log {{.+}}
- // CHECK: spirv.FMul %[[LOG0]], %[[LOG2_RECIPROCAL]]
+ // CHECK: spirv.CL.log2 %{{.*}}: vector<3xf32>
%6 = math.log2 %arg0 : vector<3xf32>
- // CHECK: %[[LOG10_RECIPROCAL:.+]] = spirv.Constant dense<0.434294492> : vector<3xf32>
- // CHECK: %[[LOG1:.+]] = spirv.CL.log {{.+}}
- // CHECK: spirv.FMul %[[LOG1]], %[[LOG10_RECIPROCAL]]
+ // CHECK: spirv.CL.log10 %{{.*}}: vector<3xf32>
%7 = math.log10 %arg0 : vector<3xf32>
+ // CHECK: spirv.CL.exp2 %{{.*}}: vector<3xf32>
+ %exp2_vec = math.exp2 %arg0 : vector<3xf32>
// CHECK: spirv.CL.rint %{{.*}}: vector<3xf32>
%8 = math.roundeven %arg0 : vector<3xf32>
// CHECK: spirv.CL.rsqrt %{{.*}}: vector<3xf32>
More information about the Mlir-commits
mailing list