[llvm] [SPIRV] Implement translation for llvm.modf.* intrinsics (PR #147556)
Victor Lomuller via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 9 00:10:45 PDT 2025
================
@@ -337,3 +337,25 @@ entry:
}
declare float @llvm.fma.f32(float, float, float)
+
+; CHECK: OpFunction
+; CHECK: %[[#d:]] = OpFunctionParameter %[[#]]
+; CHECK: %[[#fracPtr:]] = OpFunctionParameter %[[#]]
+; CHECK: %[[#integralPtr:]] = OpFunctionParameter %[[#]]
+; CHECK: %[[#varPtr:]] = OpVariable %[[#]] Function
+; CHECK: %[[#frac:]] = OpExtInst %[[#var2]] %[[#extinst_id]] modf %[[#d]] %[[#varPtr]]
+; CHECK: %[[#integral:]] = OpLoad %[[#var2]] %[[#varPtr]]
+; CHECK: OpStore %[[#fracPtr]] %[[#frac]]
+; CHECK: OpStore %[[#integralPtr]] %[[#integral]]
+; CHECK: OpFunctionEnd
+define void @foo(double %d, ptr addrspace(1) %frac, ptr addrspace(1) %integral) {
+entry:
+ %4 = tail call { double, double } @llvm.modf.f64(double %d)
----------------
Naghasan wrote:
I'd like to see a test where `llvm.modf` is called outside the entry block (SPIR-V mandates the OpVariable to be in the entry block)
https://github.com/llvm/llvm-project/pull/147556
More information about the llvm-commits
mailing list