[Mlir-commits] [mlir] [mlir][SPIRVToLLVM] Add conversions for more GL ops (PR #200115)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed May 27 22:51:53 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir
Author: Arseniy Obolenskiy (aobolensk)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/200115.diff
2 Files Affected:
- (modified) mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp (+6)
- (modified) mlir/test/Conversion/SPIRVToLLVM/gl-ops-to-llvm.mlir (+78)
``````````diff
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
//===----------------------------------------------------------------------===//
``````````
</details>
https://github.com/llvm/llvm-project/pull/200115
More information about the Mlir-commits
mailing list