[llvm] 83ab875 - [AMDGPU] Handle phys regs in flat_scratch_base_hi operand check (#170395)

via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 2 17:22:11 PST 2025


Author: Stanislav Mekhanoshin
Date: 2025-12-02T17:22:07-08:00
New Revision: 83ab875b8337aad5970fb8f519fec91a43dce906

URL: https://github.com/llvm/llvm-project/commit/83ab875b8337aad5970fb8f519fec91a43dce906
DIFF: https://github.com/llvm/llvm-project/commit/83ab875b8337aad5970fb8f519fec91a43dce906.diff

LOG: [AMDGPU] Handle phys regs in flat_scratch_base_hi operand check (#170395)

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
    llvm/test/CodeGen/AMDGPU/hazard-gfx1250-flat-scr-hi.mir

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
index 50860a9a8e4c1..088533306c79b 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
@@ -6260,7 +6260,8 @@ bool SIInstrInfo::isLegalRegOperand(const MachineInstr &MI, unsigned OpIdx,
   if (ST.hasFlatScratchHiInB64InstHazard() &&
       MO.getReg() == AMDGPU::SRC_FLAT_SCRATCH_BASE_HI && isSALU(MI)) {
     if (const MachineOperand *Dst = getNamedOperand(MI, AMDGPU::OpName::sdst)) {
-      if (AMDGPU::getRegBitWidth(*MRI.getRegClass(Dst->getReg())) == 64)
+      if (AMDGPU::getRegBitWidth(*RI.getRegClassForReg(MRI, Dst->getReg())) ==
+          64)
         return false;
     }
     if (Opc == AMDGPU::S_BITCMP0_B64 || Opc == AMDGPU::S_BITCMP1_B64)

diff  --git a/llvm/test/CodeGen/AMDGPU/hazard-gfx1250-flat-scr-hi.mir b/llvm/test/CodeGen/AMDGPU/hazard-gfx1250-flat-scr-hi.mir
index e661b6859e09d..e3b28c5518695 100644
--- a/llvm/test/CodeGen/AMDGPU/hazard-gfx1250-flat-scr-hi.mir
+++ b/llvm/test/CodeGen/AMDGPU/hazard-gfx1250-flat-scr-hi.mir
@@ -143,3 +143,16 @@ body:             |
     %0:sreg_32 = COPY $src_flat_scratch_base_hi
     %1:sreg_64 = S_BITSET1_B64 %0, undef %1:sreg_64, implicit-def $scc
 ...
+
+---
+name:            s_ashr_i64_phys_dst
+tracksRegLiveness: true
+body:             |
+  bb.0:
+
+    ; GCN-LABEL: name: s_ashr_i64_phys_dst
+    ; GCN: [[COPY:%[0-9]+]]:sreg_32 = COPY $src_flat_scratch_base_hi
+    ; GCN-NEXT: $sgpr0_sgpr1 = S_ASHR_I64 undef %1:sreg_64, [[COPY]], implicit-def $scc
+    %0:sreg_32 = COPY $src_flat_scratch_base_hi
+    $sgpr0_sgpr1 = S_ASHR_I64 undef %1:sreg_64, %0, implicit-def $scc
+...


        


More information about the llvm-commits mailing list