[Mlir-commits] [mlir] [mlir][SPIR-V] Add SPIRVToLLVM conversions for CL copysign and fmod ops (PR #205993)

Arseniy Obolenskiy llvmlistbot at llvm.org
Fri Jun 26 00:02:01 PDT 2026


https://github.com/aobolensk created https://github.com/llvm/llvm-project/pull/205993

None

>From 789494d1e5437dff5897a921f6d3b1b8011040c9 Mon Sep 17 00:00:00 2001
From: Arseniy Obolenskiy <arseniy.obolenskiy at amd.com>
Date: Fri, 26 Jun 2026 08:57:26 +0200
Subject: [PATCH] [mlir][SPIR-V] Add SPIRVToLLVM conversions for CL copysign
 and fmod ops

---
 mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp      | 2 ++
 mlir/test/Conversion/SPIRVToLLVM/cl-ops-to-llvm.mlir | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
index c43415b27b1b3..7075daaef0cec 100644
--- a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
+++ b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
@@ -1946,6 +1946,8 @@ void mlir::populateSPIRVToLLVMConversionPatterns(
       DirectConversionPattern<spirv::CLAtan2Op, LLVM::ATan2Op>,
       DirectConversionPattern<spirv::CLSqrtOp, LLVM::SqrtOp>,
       DirectConversionPattern<spirv::CLTruncOp, LLVM::FTruncOp>,
+      DirectConversionPattern<spirv::CLCopysignOp, LLVM::CopySignOp>,
+      DirectConversionPattern<spirv::CLFmodOp, LLVM::FRemOp>,
       DirectConversionPattern<spirv::CLSMaxOp, LLVM::SMaxOp>,
       DirectConversionPattern<spirv::CLSMinOp, LLVM::SMinOp>,
       DirectConversionPattern<spirv::CLUMaxOp, LLVM::UMaxOp>,
diff --git a/mlir/test/Conversion/SPIRVToLLVM/cl-ops-to-llvm.mlir b/mlir/test/Conversion/SPIRVToLLVM/cl-ops-to-llvm.mlir
index f0568e1035cd9..d66c20c49cbce 100644
--- a/mlir/test/Conversion/SPIRVToLLVM/cl-ops-to-llvm.mlir
+++ b/mlir/test/Conversion/SPIRVToLLVM/cl-ops-to-llvm.mlir
@@ -69,6 +69,10 @@ spirv.func @cl_binary_float(%arg0: f32, %arg1: f32) "None" {
   %2 = spirv.CL.fmax %arg0, %arg1 : f32
   // CHECK: llvm.intr.minnum(%{{.*}}, %{{.*}}) : (f32, f32) -> f32
   %3 = spirv.CL.fmin %arg0, %arg1 : f32
+  // CHECK: llvm.intr.copysign(%{{.*}}, %{{.*}}) : (f32, f32) -> f32
+  %4 = spirv.CL.copysign %arg0, %arg1 : f32
+  // CHECK: llvm.frem %{{.*}}, %{{.*}} : f32
+  %5 = spirv.CL.fmod %arg0, %arg1 : f32
   spirv.Return
 }
 



More information about the Mlir-commits mailing list