[PATCH] D94187: AMDGPU: Remove wrapper only call limitation
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 6 12:27:27 PST 2021
arsenm created this revision.
arsenm added reviewers: rampitec, aeubanks.
Herald added subscribers: kerbowa, hiraditya, t-tye, tpr, dstuttard, yaxunl, nhaehnle, jvesely, kzhuravl.
arsenm requested review of this revision.
Herald added a subscriber: wdng.
Herald added a project: LLVM.
This seems to only have overridden cold handling, which we probably
shouldn't do. As far as I can tell the wrapper library functions are still inlined as appropriate.
https://reviews.llvm.org/D94187
Files:
llvm/lib/Target/AMDGPU/AMDGPUInline.cpp
llvm/test/CodeGen/AMDGPU/amdgpu-inline.ll
Index: llvm/test/CodeGen/AMDGPU/amdgpu-inline.ll
===================================================================
--- llvm/test/CodeGen/AMDGPU/amdgpu-inline.ll
+++ llvm/test/CodeGen/AMDGPU/amdgpu-inline.ll
@@ -40,7 +40,7 @@
ret void
}
-define coldcc float @sin_wrapper(float %x) {
+define float @sin_wrapper(float %x) {
bb:
%call = tail call float @_Z3sinf(float %x)
ret float %call
@@ -83,7 +83,7 @@
%and = and i32 %tid, %n
%arrayidx11 = getelementptr inbounds [64 x float], [64 x float] addrspace(5)* %pvt_arr, i32 0, i32 %and
%tmp12 = load float, float addrspace(5)* %arrayidx11, align 4
- %c2 = call coldcc float @sin_wrapper(float %tmp12)
+ %c2 = call float @sin_wrapper(float %tmp12)
store float %c2, float addrspace(5)* %arrayidx7, align 4
%xor = xor i32 %tid, %n
%arrayidx16 = getelementptr inbounds [64 x float], [64 x float] addrspace(5)* %pvt_arr, i32 0, i32 %xor
Index: llvm/lib/Target/AMDGPU/AMDGPUInline.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/AMDGPUInline.cpp
+++ llvm/lib/Target/AMDGPU/AMDGPUInline.cpp
@@ -153,26 +153,6 @@
return (unsigned)Thres;
}
-// Check if call is just a wrapper around another call.
-// In this case we only have call and ret instructions.
-static bool isWrapperOnlyCall(CallBase &CB) {
- Function *Callee = CB.getCalledFunction();
- if (!Callee || Callee->size() != 1)
- return false;
- const BasicBlock &BB = Callee->getEntryBlock();
- if (const Instruction *I = BB.getFirstNonPHI()) {
- if (!isa<CallInst>(I)) {
- return false;
- }
- if (isa<ReturnInst>(*std::next(I->getIterator()))) {
- LLVM_DEBUG(dbgs() << " Wrapper only call detected: "
- << Callee->getName() << '\n');
- return true;
- }
- }
- return false;
-}
-
InlineCost AMDGPUInliner::getInlineCost(CallBase &CB) {
Function *Callee = CB.getCalledFunction();
Function *Caller = CB.getCaller();
@@ -194,9 +174,6 @@
return llvm::InlineCost::getNever(IsViable.getFailureReason());
}
- if (isWrapperOnlyCall(CB))
- return llvm::InlineCost::getAlways("wrapper-only call");
-
InlineParams LocalParams = Params;
LocalParams.DefaultThreshold = (int)getInlineThreshold(CB);
bool RemarksEnabled = false;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D94187.314958.patch
Type: text/x-patch
Size: 2289 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210106/f28e6041/attachment.bin>
More information about the llvm-commits
mailing list