From c9db3190ec4eaa92aec6cd5ecd512cbba3ae0a00 Mon Sep 17 00:00:00 2001 From: Arvind Sudarsanam Date: Sun, 22 Oct 2023 08:53:27 -0700 Subject: [PATCH 1/2] [Builtin] Fix issue with attribute list update Signed-off-by: Arvind Sudarsanam --- lib/SPIRV/SPIRVBuiltinHelper.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/SPIRV/SPIRVBuiltinHelper.cpp b/lib/SPIRV/SPIRVBuiltinHelper.cpp index a648cbac6d..d44c13b06e 100644 --- a/lib/SPIRV/SPIRVBuiltinHelper.cpp +++ b/lib/SPIRV/SPIRVBuiltinHelper.cpp @@ -103,7 +103,10 @@ Value *BuiltinCallMutator::doConversion() { Builder.Insert(addCallInst(CI->getModule(), FuncName, ReturnTy, Args, &Attrs, nullptr, Mangler.get())); NewCall->copyMetadata(*CI); - NewCall->setAttributes(CI->getAttributes()); + if (CI->hasFnAttr("fpbuiltin-max-error")) { + auto Attr = CI->getFnAttr("fpbuiltin-max-error"); + NewCall->addFnAttr(Attr); + } Value *Result = MutateRet ? MutateRet(Builder, NewCall) : NewCall; Result->takeName(CI); if (!CI->getType()->isVoidTy()) From 0577fc28f301c11d440ab149a2b8bf88cd28ab87 Mon Sep 17 00:00:00 2001 From: Arvind Sudarsanam Date: Mon, 23 Oct 2023 19:18:32 -0700 Subject: [PATCH 2/2] Fix test fail Signed-off-by: Arvind Sudarsanam --- .../INTEL/SPV_INTEL_fp_max_error/IntelFPMaxError.ll | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/test/extensions/INTEL/SPV_INTEL_fp_max_error/IntelFPMaxError.ll b/test/extensions/INTEL/SPV_INTEL_fp_max_error/IntelFPMaxError.ll index 26714fc61e..79a0f01227 100644 --- a/test/extensions/INTEL/SPV_INTEL_fp_max_error/IntelFPMaxError.ll +++ b/test/extensions/INTEL/SPV_INTEL_fp_max_error/IntelFPMaxError.ll @@ -43,7 +43,6 @@ ; CHECK-SPIRV: Name [[#T31:]] "t31" ; CHECK-SPIRV: Name [[#T32:]] "t32" ; CHECK-SPIRV: Name [[#T33:]] "t33" -; CHECK-SPIRV: Name [[#T34:]] "t34" ; CHECK-SPIRV: Decorate [[#T3]] FPMaxErrorDecorationINTEL 1056964608 ; CHECK-SPIRV: Decorate [[#T4]] FPMaxErrorDecorationINTEL 1065353216 @@ -75,8 +74,7 @@ ; CHECK-SPIRV: Decorate [[#T30]] FPMaxErrorDecorationINTEL 1082130432 ; CHECK-SPIRV: Decorate [[#T31]] FPMaxErrorDecorationINTEL 1082130432 ; CHECK-SPIRV: Decorate [[#T32]] FPMaxErrorDecorationINTEL 1082130432 -; CHECK-SPIRV: Decorate [[#T33]] FPMaxErrorDecorationINTEL 1082130432 -; CHECK-SPIRV: Decorate [[#T34]] FPMaxErrorDecorationINTEL 1166016512 +; CHECK-SPIRV: Decorate [[#T33]] FPMaxErrorDecorationINTEL 1166016512 ; CHECK-SPIRV: 3 TypeFloat [[#FTYPE:]] 32 @@ -113,7 +111,6 @@ ; CHECK-SPIRV: ExtInst [[#FTYPE]] [[#T31]] [[#OCLEXTID]] ldexp ; CHECK-SPIRV: ExtInst [[#FTYPE]] [[#T32]] [[#OCLEXTID]] pow ; CHECK-SPIRV: ExtInst [[#FTYPE]] [[#T33]] [[#OCLEXTID]] hypot -; CHECK-SPIRV: ExtInst [[#FTYPE]] [[#T34]] [[#OCLEXTID]] hypot target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64" target triple = "spir64-unknown-unknown" @@ -189,14 +186,12 @@ entry: ; CHECK-LLVM: call spir_func float @_Z5atan2ff(float %f1, float %f2) #[[#AT4:]] ; CHECK-LLVM: call spir_func float @_Z5ldexpfi(float %f1, i32 %f4) #[[#AT4]] ; CHECK-LLVM: call spir_func float @_Z3powff(float %f1, float %f2) #[[#AT4]] -; CHECK-LLVM: call spir_func float @_Z5hypotff(float %f1, float %f2) #[[#AT4]] %t30 = call float @llvm.fpbuiltin.atan2.f32(float %f1, float %f2) #3 %t31 = call float @llvm.fpbuiltin.ldexp.f32.i32(float %f1, i32 %f4) #3 %t32 = call float @llvm.fpbuiltin.pow.f32(float %f1, float %f2) #3 - %t33 = call float @llvm.fpbuiltin.hypot.f32(float %f1, float %f2) #3 ; CHECK-LLVM: call spir_func float @_Z5hypotff(float %f1, float %f2) #[[#AT5:]] - %t34 = call float @llvm.fpbuiltin.hypot.f32(float %f1, float %f2) #4 + %t33 = call float @llvm.fpbuiltin.hypot.f32(float %f1, float %f2) #4 ret void }