[Mlir-commits] [mlir] 626f406 - [mlir][SPIRVToLLVM] Add conversions for more GL ops (#200115)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu May 28 01:46:38 PDT 2026
Author: Arseniy Obolenskiy
Date: 2026-05-28T10:46:33+02:00
New Revision: 626f4061e7f2d84813f5307bd03f35592e4b70c1
URL: https://github.com/llvm/llvm-project/commit/626f4061e7f2d84813f5307bd03f35592e4b70c1
DIFF: https://github.com/llvm/llvm-project/commit/626f4061e7f2d84813f5307bd03f35592e4b70c1.diff
LOG: [mlir][SPIRVToLLVM] Add conversions for more GL ops (#200115)
Added:
Modified:
mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
mlir/test/Conversion/SPIRVToLLVM/gl-ops-to-llvm.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
index 64446fd8146f3..daa4d020ff063 100644
--- a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
+++ b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
@@ -1885,14 +1885,20 @@ void mlir::populateSPIRVToLLVMConversionPatterns(
DirectConversionPattern<spirv::GLCeilOp, LLVM::FCeilOp>,
DirectConversionPattern<spirv::GLCosOp, LLVM::CosOp>,
DirectConversionPattern<spirv::GLExpOp, LLVM::ExpOp>,
+ DirectConversionPattern<spirv::GLExp2Op, LLVM::Exp2Op>,
DirectConversionPattern<spirv::GLFAbsOp, LLVM::FAbsOp>,
DirectConversionPattern<spirv::GLFloorOp, LLVM::FFloorOp>,
DirectConversionPattern<spirv::GLFmaOp, LLVM::FMAOp>,
DirectConversionPattern<spirv::GLFMaxOp, LLVM::MaxNumOp>,
DirectConversionPattern<spirv::GLFMinOp, LLVM::MinNumOp>,
DirectConversionPattern<spirv::GLLogOp, LLVM::LogOp>,
+ DirectConversionPattern<spirv::GLLog2Op, LLVM::Log2Op>,
DirectConversionPattern<spirv::GLPowOp, LLVM::PowOp>,
+ DirectConversionPattern<spirv::GLRoundOp, LLVM::RoundOp>,
+ DirectConversionPattern<spirv::GLRoundEvenOp, LLVM::RoundEvenOp>,
DirectConversionPattern<spirv::GLSinOp, LLVM::SinOp>,
+ DirectConversionPattern<spirv::GLSinhOp, LLVM::SinhOp>,
+ DirectConversionPattern<spirv::GLCoshOp, LLVM::CoshOp>,
DirectConversionPattern<spirv::GLSMaxOp, LLVM::SMaxOp>,
DirectConversionPattern<spirv::GLSMinOp, LLVM::SMinOp>,
DirectConversionPattern<spirv::GLSqrtOp, LLVM::SqrtOp>,
diff --git a/mlir/test/Conversion/SPIRVToLLVM/gl-ops-to-llvm.mlir b/mlir/test/Conversion/SPIRVToLLVM/gl-ops-to-llvm.mlir
index 048519e391cb7..d0079de0688ba 100644
--- a/mlir/test/Conversion/SPIRVToLLVM/gl-ops-to-llvm.mlir
+++ b/mlir/test/Conversion/SPIRVToLLVM/gl-ops-to-llvm.mlir
@@ -243,6 +243,84 @@ spirv.func @tanh(%arg0: f32) "None" {
spirv.Return
}
+//===----------------------------------------------------------------------===//
+// spirv.GL.Exp2
+//===----------------------------------------------------------------------===//
+
+// CHECK-LABEL: @exp2
+spirv.func @exp2(%arg0: f32, %arg1: vector<3xf16>) "None" {
+ // CHECK: llvm.intr.exp2(%{{.*}}) : (f32) -> f32
+ %0 = spirv.GL.Exp2 %arg0 : f32
+ // CHECK: llvm.intr.exp2(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
+ %1 = spirv.GL.Exp2 %arg1 : vector<3xf16>
+ spirv.Return
+}
+
+//===----------------------------------------------------------------------===//
+// spirv.GL.Log2
+//===----------------------------------------------------------------------===//
+
+// CHECK-LABEL: @log2
+spirv.func @log2(%arg0: f32, %arg1: vector<3xf16>) "None" {
+ // CHECK: llvm.intr.log2(%{{.*}}) : (f32) -> f32
+ %0 = spirv.GL.Log2 %arg0 : f32
+ // CHECK: llvm.intr.log2(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
+ %1 = spirv.GL.Log2 %arg1 : vector<3xf16>
+ spirv.Return
+}
+
+//===----------------------------------------------------------------------===//
+// spirv.GL.Round
+//===----------------------------------------------------------------------===//
+
+// CHECK-LABEL: @round
+spirv.func @round(%arg0: f32, %arg1: vector<3xf16>) "None" {
+ // CHECK: llvm.intr.round(%{{.*}}) : (f32) -> f32
+ %0 = spirv.GL.Round %arg0 : f32
+ // CHECK: llvm.intr.round(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
+ %1 = spirv.GL.Round %arg1 : vector<3xf16>
+ spirv.Return
+}
+
+//===----------------------------------------------------------------------===//
+// spirv.GL.RoundEven
+//===----------------------------------------------------------------------===//
+
+// CHECK-LABEL: @round_even
+spirv.func @round_even(%arg0: f32, %arg1: vector<3xf16>) "None" {
+ // CHECK: llvm.intr.roundeven(%{{.*}}) : (f32) -> f32
+ %0 = spirv.GL.RoundEven %arg0 : f32
+ // CHECK: llvm.intr.roundeven(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
+ %1 = spirv.GL.RoundEven %arg1 : vector<3xf16>
+ spirv.Return
+}
+
+//===----------------------------------------------------------------------===//
+// spirv.GL.Sinh
+//===----------------------------------------------------------------------===//
+
+// CHECK-LABEL: @sinh
+spirv.func @sinh(%arg0: f32, %arg1: vector<3xf16>) "None" {
+ // CHECK: llvm.intr.sinh(%{{.*}}) : (f32) -> f32
+ %0 = spirv.GL.Sinh %arg0 : f32
+ // CHECK: llvm.intr.sinh(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
+ %1 = spirv.GL.Sinh %arg1 : vector<3xf16>
+ spirv.Return
+}
+
+//===----------------------------------------------------------------------===//
+// spirv.GL.Cosh
+//===----------------------------------------------------------------------===//
+
+// CHECK-LABEL: @cosh
+spirv.func @cosh(%arg0: f32, %arg1: vector<3xf16>) "None" {
+ // CHECK: llvm.intr.cosh(%{{.*}}) : (f32) -> f32
+ %0 = spirv.GL.Cosh %arg0 : f32
+ // CHECK: llvm.intr.cosh(%{{.*}}) : (vector<3xf16>) -> vector<3xf16>
+ %1 = spirv.GL.Cosh %arg1 : vector<3xf16>
+ spirv.Return
+}
+
//===----------------------------------------------------------------------===//
// spirv.GL.InverseSqrt
//===----------------------------------------------------------------------===//
More information about the Mlir-commits
mailing list