[llvm] 8a677a7 - AMDGPU: Partially respect nobuiltin in libcall simplifier
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 31 08:00:30 PDT 2023
Author: Matt Arsenault
Date: 2023-07-31T10:56:46-04:00
New Revision: 8a677a7ff0c6f59b392a03108f2dba86d1606183
URL: https://github.com/llvm/llvm-project/commit/8a677a7ff0c6f59b392a03108f2dba86d1606183
DIFF: https://github.com/llvm/llvm-project/commit/8a677a7ff0c6f59b392a03108f2dba86d1606183.diff
LOG: AMDGPU: Partially respect nobuiltin in libcall simplifier
There are more contexts where it's not handled correctly but this is
the simplest one.
https://reviews.llvm.org/D156682
Added:
Modified:
llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp
llvm/test/CodeGen/AMDGPU/simplify-libcalls.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp b/llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp
index c6cd196c2579f7..1a1bdb7831300c 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp
@@ -500,7 +500,7 @@ bool AMDGPULibCalls::sincosUseNative(CallInst *aCI, const FuncInfo &FInfo) {
bool AMDGPULibCalls::useNative(CallInst *aCI) {
CI = aCI;
Function *Callee = aCI->getCalledFunction();
- if (!Callee)
+ if (!Callee || aCI->isNoBuiltin())
return false;
FuncInfo FInfo;
@@ -593,7 +593,7 @@ bool AMDGPULibCalls::fold(CallInst *CI, AliasAnalysis *AA) {
this->CI = CI;
Function *Callee = CI->getCalledFunction();
// Ignore indirect calls.
- if (!Callee)
+ if (!Callee || CI->isNoBuiltin())
return false;
IRBuilder<> B(CI);
diff --git a/llvm/test/CodeGen/AMDGPU/simplify-libcalls.ll b/llvm/test/CodeGen/AMDGPU/simplify-libcalls.ll
index 3c75d3487aa0a4..fa22244ecb621c 100644
--- a/llvm/test/CodeGen/AMDGPU/simplify-libcalls.ll
+++ b/llvm/test/CodeGen/AMDGPU/simplify-libcalls.ll
@@ -630,6 +630,18 @@ entry:
ret void
}
+; GCN-LABEL: {{^}}define amdgpu_kernel void @test_use_native_powr_nobuiltin
+; GCN: %call = tail call fast float @_Z4powrff(float %tmp, float %tmp1)
+define amdgpu_kernel void @test_use_native_powr_nobuiltin(ptr addrspace(1) nocapture %a) {
+entry:
+ %tmp = load float, ptr addrspace(1) %a, align 4
+ %arrayidx1 = getelementptr inbounds float, ptr addrspace(1) %a, i64 1
+ %tmp1 = load float, ptr addrspace(1) %arrayidx1, align 4
+ %call = call fast float @_Z4powrff(float %tmp, float %tmp1) nobuiltin
+ store float %call, ptr addrspace(1) %a, align 4
+ ret void
+}
+
; GCN-LABEL: {{^}}define amdgpu_kernel void @test_use_native_sqrt
; GCN-NATIVE: call fast float @_Z11native_sqrtf(float %tmp)
define amdgpu_kernel void @test_use_native_sqrt(ptr addrspace(1) nocapture %a) {
More information about the llvm-commits
mailing list