AMDGPU/GlobalISel: Fall-back to SelectionDAG for non-void functions

Reviewers: arsenm, nhaehnle

Reviewed By: nhaehnle

Subscribers: kzhuravl, wdng, nhaehnle, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, llvm-commits

Differential Revision: https://reviews.llvm.org/D45843

llvm-svn: 330774
This commit is contained in:
Tom Stellard 2018-04-24 21:29:36 +00:00
parent 434d4c0b88
commit 257882ff72
2 changed files with 14 additions and 0 deletions

View File

@ -32,6 +32,10 @@ AMDGPUCallLowering::AMDGPUCallLowering(const AMDGPUTargetLowering &TLI)
bool AMDGPUCallLowering::lowerReturn(MachineIRBuilder &MIRBuilder,
const Value *Val, unsigned VReg) const {
// FIXME: Add support for non-void returns.
if (Val)
return false;
MIRBuilder.buildInstr(AMDGPU::S_ENDPGM);
return true;
}

View File

@ -0,0 +1,10 @@
; RUN: llc -mtriple=amdgcn-mesa-mesa3d -global-isel -global-isel-abort=2 %s -o - 2>&1 | FileCheck %s
; This isn't implemented, but we need to make sure we fall back to SelectionDAG
; instead of generating wrong code.
; CHECK: warning: Instruction selection used fallback path for non_void_ret
; CHECK: non_void_ret:
; CHECK-NOT: s_endpgm
define amdgpu_vs i32 @non_void_ret() {
ret i32 0
}