[llvm] [AMDGPU] Fix negative immediate offset for unbuffered smem loads (PR #79553)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 29 04:42:37 PST 2024
================
@@ -2096,21 +2099,53 @@ bool AMDGPUDAGToDAGISel::SelectSMRDBaseOffset(SDValue Addr, SDValue &SBase,
}
if (!N0 || !N1)
return false;
+
+ bool Selected = false;
if (SelectSMRDOffset(N1, SOffset, Offset, Imm32Only, IsBuffer)) {
SBase = N0;
- return true;
- }
- if (SelectSMRDOffset(N0, SOffset, Offset, Imm32Only, IsBuffer)) {
+ Selected = true;
+ } else if (SelectSMRDOffset(N0, SOffset, Offset, Imm32Only, IsBuffer)) {
SBase = N1;
+ Selected = true;
+ }
+
+ if (Selected) {
----------------
arsenm wrote:
This is confusing, you're allowing the invalid selection and then later trying to adjust the offset. It would be clearer if you adjusted the initial selection to reject cases where the immediate cannot be used
https://github.com/llvm/llvm-project/pull/79553
More information about the llvm-commits
mailing list