AMDGPU/GlobalISel: Fix move s.buffer.load to VALU
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Sat, 1 Feb 2020 03:22:00 +0000 (22:22 -0500)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 7 Feb 2020 15:19:01 +0000 (07:19 -0800)
commit2f885cbe904f6281b73e9986c5b918e1d15c5aba
tree80f92c97b8f57ca74bc56063c9bf7db98131f750
parent5c6b1a6dfdb428a347a25527a4aebba72cd42a3a
AMDGPU/GlobalISel: Fix move s.buffer.load to VALU

We were executing this in a waterfall loop as a placeholder, but this
should really be converted to a MUBUF load. Also execute in a
waterfall loop if the resource isn't an SGPR. This is a case where the
DAG handling was wrong because doing the right thing was too hard.

Currently, this will mishandle 96-bit loads. There's currently no way
to track the original memory size with an MMO, so these loads will be
widened andd the resulting memory size will be 128-bits.
llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp
llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.h
llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-amdgcn-s-buffer-load.mir
llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-amdgcn.s.buffer.load.ll [new file with mode: 0644]
llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-amdgcn.s.buffer.load.mir [new file with mode: 0644]