[llvm] db4d6ef - AMDGPU: Directly emit fabs intrinsic instead of new libcall
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 31 16:20:00 PDT 2023
Author: Matt Arsenault
Date: 2023-07-31T19:19:56-04:00
New Revision: db4d6ef9efccb2781b4a2bb64eba0f40d0a8eec3
URL: https://github.com/llvm/llvm-project/commit/db4d6ef9efccb2781b4a2bb64eba0f40d0a8eec3
DIFF: https://github.com/llvm/llvm-project/commit/db4d6ef9efccb2781b4a2bb64eba0f40d0a8eec3.diff
LOG: AMDGPU: Directly emit fabs intrinsic instead of new libcall
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 bc916a3ec4a84b..5c1c9a2d97278e 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULibCalls.cpp
@@ -1036,11 +1036,7 @@ bool AMDGPULibCalls::fold_pow(FPMathOperator *FPOp, IRBuilder<> &B,
Value *nval;
if (needabs) {
- FunctionCallee AbsExpr =
- getFunction(M, AMDGPULibFunc(AMDGPULibFunc::EI_FABS, FInfo));
- if (!AbsExpr)
- return false;
- nval = CreateCallEx(B, AbsExpr, opr0, "__fabs");
+ nval = B.CreateUnaryIntrinsic(Intrinsic::fabs, opr0, nullptr, "__fabs");
} else {
nval = cnval ? cnval : opr0;
}
diff --git a/llvm/test/CodeGen/AMDGPU/simplify-libcalls.ll b/llvm/test/CodeGen/AMDGPU/simplify-libcalls.ll
index fa22244ecb621c..e6c4447ad0067e 100644
--- a/llvm/test/CodeGen/AMDGPU/simplify-libcalls.ll
+++ b/llvm/test/CodeGen/AMDGPU/simplify-libcalls.ll
@@ -347,7 +347,7 @@ declare float @_Z4pownfi(float, i32)
; GCN-LABEL: {{^}}define amdgpu_kernel void @test_pow
; GCN-POSTLINK: call fast float @_Z3powff(float %tmp, float 1.013000e+03)
-; GCN-PRELINK: %__fabs = tail call fast float @_Z4fabsf(float %tmp)
+; GCN-PRELINK: %__fabs = tail call fast float @llvm.fabs.f32(float %tmp)
; GCN-PRELINK: %__log2 = tail call fast float @_Z4log2f(float %__fabs)
; GCN-PRELINK: %__ylogx = fmul fast float %__log2, 1.013000e+03
; GCN-PRELINK: %__exp2 = tail call fast float @_Z4exp2f(float %__ylogx)
@@ -387,7 +387,7 @@ entry:
; GCN-LABEL: {{^}}define amdgpu_kernel void @test_pown
; GCN-POSTLINK: call fast float @_Z4pownfi(float %tmp, i32 %conv)
; GCN-PRELINK: %conv = fptosi float %tmp1 to i32
-; GCN-PRELINK: %__fabs = tail call fast float @_Z4fabsf(float %tmp)
+; GCN-PRELINK: %__fabs = tail call fast float @llvm.fabs.f32(float %tmp)
; GCN-PRELINK: %__log2 = tail call fast float @_Z4log2f(float %__fabs)
; GCN-PRELINK: %pownI2F = sitofp i32 %conv to float
; GCN-PRELINK: %__ylogx = fmul fast float %__log2, %pownI2F
@@ -784,8 +784,7 @@ entry:
ret void
}
-; GCN-PRELINK: declare float @_Z4fabsf(float) local_unnamed_addr #[[$NOUNWIND_READONLY:[0-9]+]]
-; GCN-PRELINK: declare float @_Z4cbrtf(float) local_unnamed_addr #[[$NOUNWIND_READONLY]]
+; GCN-PRELINK: declare float @_Z4cbrtf(float) local_unnamed_addr #[[$NOUNWIND_READONLY:[0-9]+]]
; GCN-PRELINK: declare float @_Z11native_sqrtf(float) local_unnamed_addr #[[$NOUNWIND_READONLY]]
; GCN-PRELINK: attributes #[[$NOUNWIND]] = { nounwind }
More information about the llvm-commits
mailing list