[PATCH] D73880: AMDGPU/GlobalISel: Fix move s.buffer.load to VALU
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Feb 5 08:49:51 PST 2020
arsenm marked 2 inline comments as done.
arsenm added inline comments.
================
Comment at: llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp:1375-1377
+ // Use the alignment to ensure that the required offsets will fit into the
+ // immediate offsets.
+ const unsigned Align = NumLoads > 1 ? 16 * NumLoads : 4;
----------------
nhaehnle wrote:
> What's the justification for the alignment in the `NumLoads > 1` case?
This ensures the last load's offset will fit in the immediate field
================
Comment at: llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-amdgcn-s-buffer-load.mir:79
; CHECK: [[BUILD_VECTOR:%[0-9]+]]:sgpr(<4 x s32>) = G_BUILD_VECTOR [[V_READFIRSTLANE_B32_]](s32), [[V_READFIRSTLANE_B32_1]](s32), [[V_READFIRSTLANE_B32_2]](s32), [[V_READFIRSTLANE_B32_3]](s32)
- ; CHECK: [[INT:%[0-9]+]]:sgpr(<4 x s32>) = G_INTRINSIC intrinsic(@llvm.amdgcn.s.buffer.load), [[BUILD_VECTOR]](<4 x s32>), [[COPY1]](s32), 0
+ ; CHECK: [[AMDGPU_BUFFER_LOAD:%[0-9]+]]:vgpr(<4 x s32>) = G_AMDGPU_BUFFER_LOAD [[BUILD_VECTOR]](<4 x s32>), [[C1]](s32), [[COPY2]], [[C]], 0, 0, 0 :: (dereferenceable invariant load 16, align 4)
; CHECK: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[S_AND_B64_]], implicit-def $exec, implicit-def $scc, implicit $exec
----------------
nhaehnle wrote:
> This should still be an s_buffer_load...
How can this be a scalar result with a vector resource?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D73880/new/
https://reviews.llvm.org/D73880
More information about the llvm-commits
mailing list