From 4e4747ee4c62a36afe27391a10bcfc03901fcc53 Mon Sep 17 00:00:00 2001 From: "Sidorov, Dmitry" Date: Thu, 31 Jul 2025 06:02:05 -0700 Subject: [PATCH 1/2] [SPIR-V][SYCL] Register llvm.fpbuiltin.* in the list of known intrinsics Otherwise their declarations would be left in the module. This patch is intel/llvm customization as these intrinsics are not part of upstream llvm. Signed-off-by: Sidorov, Dmitry --- llvm-spirv/lib/SPIRV/SPIRVWriter.cpp | 11 +++++++++++ .../INTEL/SPV_INTEL_fp_max_error/IntelFPMaxError.ll | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/llvm-spirv/lib/SPIRV/SPIRVWriter.cpp b/llvm-spirv/lib/SPIRV/SPIRVWriter.cpp index 5c98ef4f42230..9096b4b3c9211 100644 --- a/llvm-spirv/lib/SPIRV/SPIRVWriter.cpp +++ b/llvm-spirv/lib/SPIRV/SPIRVWriter.cpp @@ -3984,6 +3984,17 @@ bool LLVMToSPIRVBase::isKnownIntrinsic(Intrinsic::ID Id) { case Intrinsic::masked_gather: case Intrinsic::masked_scatter: case Intrinsic::modf: + // INTEL_CUSTOMIZATION begin + // fpbuiltin intrinsics are not part of upstream LLVM, yet we have to register + // them as known. + case Intrinsic::fpbuiltin_fadd: + case Intrinsic::fpbuiltin_fsub: + case Intrinsic::fpbuiltin_fmul: + case Intrinsic::fpbuiltin_fdiv: + case Intrinsic::fpbuiltin_frem: + case Intrinsic::fpbuiltin_sqrt: + case Intrinsic::fpbuiltin_ldexp: + // INTEL_CUSTOMIZATION end return true; default: // Unknown intrinsics' declarations should always be translated diff --git a/llvm-spirv/test/extensions/INTEL/SPV_INTEL_fp_max_error/IntelFPMaxError.ll b/llvm-spirv/test/extensions/INTEL/SPV_INTEL_fp_max_error/IntelFPMaxError.ll index 6ab2500093ba6..5395425f410c3 100644 --- a/llvm-spirv/test/extensions/INTEL/SPV_INTEL_fp_max_error/IntelFPMaxError.ll +++ b/llvm-spirv/test/extensions/INTEL/SPV_INTEL_fp_max_error/IntelFPMaxError.ll @@ -14,6 +14,10 @@ ; RUN: llvm-spirv -r %t.spv -o %t.rev.bc ; RUN: llvm-dis < %t.rev.bc | FileCheck %s --check-prefix=CHECK-LLVM +; INTEL_CUSTOMIZATION begin +; CHECK-SPIRV-NOT: Name [[#]] "llvm.fpbuiltin." +; INTEL_CUSTOMIZATION end + ; CHECK-SPIRV: Capability FPMaxErrorINTEL ; CHECK-SPIRV: Extension "SPV_INTEL_fp_max_error" ; CHECK-SPIRV: ExtInstImport [[#OCLEXTID:]] "OpenCL.std" From 7cac2efa880380c7611726a2b10f783286887c49 Mon Sep 17 00:00:00 2001 From: "Sidorov, Dmitry" Date: Thu, 31 Jul 2025 06:15:00 -0700 Subject: [PATCH 2/2] for --- llvm-spirv/lib/SPIRV/SPIRVWriter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm-spirv/lib/SPIRV/SPIRVWriter.cpp b/llvm-spirv/lib/SPIRV/SPIRVWriter.cpp index 9096b4b3c9211..b4f38ec5fee78 100644 --- a/llvm-spirv/lib/SPIRV/SPIRVWriter.cpp +++ b/llvm-spirv/lib/SPIRV/SPIRVWriter.cpp @@ -3994,7 +3994,7 @@ bool LLVMToSPIRVBase::isKnownIntrinsic(Intrinsic::ID Id) { case Intrinsic::fpbuiltin_frem: case Intrinsic::fpbuiltin_sqrt: case Intrinsic::fpbuiltin_ldexp: - // INTEL_CUSTOMIZATION end + // INTEL_CUSTOMIZATION end return true; default: // Unknown intrinsics' declarations should always be translated