]> granicus.if.org Git - llvm/commit
AMDGPU/GlobalISel: Rewrite lowerFormalArguments
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 19 Jul 2019 14:15:18 +0000 (14:15 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 19 Jul 2019 14:15:18 +0000 (14:15 +0000)
commit348054fdef5c6ba0ef8bebca2d24c77769419926
tree08383c3b38396e01c0391e1652a77642afd9ceab
parent2aee67786875aec973a32849757fbf4cab27b4a2
AMDGPU/GlobalISel: Rewrite lowerFormalArguments

This should now handle everything except structs passed as multiple
registers.

I think most of the packing logic should be handled by
handleAssignments, but I'm unclear on what the contract is for
multiple registers. This is copying how x86 handles this.

This does change the behavior of the test_sgpr_alignment0 amdgpu_vs
test. I don't think shader arguments should try to follow the
alignment, and registers need to be repacked. I also don't think it
matters, since I think the pointers are packed to the beginning of the
argument list anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@366582 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AMDGPU/AMDGPUCallLowering.cpp
lib/Target/AMDGPU/AMDGPUCallLowering.h
lib/Target/AMDGPU/SIISelLowering.cpp
lib/Target/AMDGPU/SIISelLowering.h
test/CodeGen/AMDGPU/GlobalISel/irtranslator-amdgpu_vs.ll
test/CodeGen/AMDGPU/GlobalISel/irtranslator-function-args.ll [new file with mode: 0644]