[llvm] [AMDGPU] Fix negative immediate offset for unbuffered smem loads (PR #89165)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 18 11:54:39 PDT 2024
================
@@ -1980,28 +1980,50 @@ bool AMDGPUDAGToDAGISel::SelectScratchSVAddr(SDNode *N, SDValue Addr,
return true;
}
+// For unbuffered smem loads, it is illegal for the Immediate Offset to be
+// negative if the resulting (Offset + (M0 or SOffset or zero) is negative.
+// Handle the case where the Immediate Offset + SOffset is negative.
+bool AMDGPUDAGToDAGISel::isSOffsetLegalWithImmOffset(SDValue *SOffset,
+ bool Imm32Only,
+ bool IsBuffer,
+ int64_t ImmOffset) const {
+ if (AMDGPU::hasSMRDSignedImmOffset(*Subtarget) && !IsBuffer & !Imm32Only &&
+ ImmOffset < 0) {
----------------
arsenm wrote:
Move the AMDGPU::hasSMRDSignedImmOffset(*Subtarget) check last in this expression?
https://github.com/llvm/llvm-project/pull/89165
More information about the llvm-commits
mailing list