[llvm] d951d93 - [AMDGPU] Increate hazard for store dwordx3/4 to 2 waitstates on gfx940

Stanislav Mekhanoshin via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 13 14:21:55 PDT 2022


Author: Stanislav Mekhanoshin
Date: 2022-04-13T14:21:45-07:00
New Revision: d951d937a07ea2f8fb811675dc776277d2d124d1

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

LOG: [AMDGPU] Increate hazard for store dwordx3/4 to 2 waitstates on gfx940

Fixes: SWDEV-327053

Differential Revision: https://reviews.llvm.org/D123687

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
    llvm/test/CodeGen/AMDGPU/gfx940-hazards.mir
    llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
index f61d71b02b7a6..7f5bc9af66196 100644
--- a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+++ b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
@@ -794,7 +794,7 @@ GCNHazardRecognizer::checkVALUHazardsHelper(const MachineOperand &Def,
   // 8 bytes can have there store data over written by the next instruction.
   const SIRegisterInfo *TRI = ST.getRegisterInfo();
 
-  const int VALUWaitStates = 1;
+  const int VALUWaitStates = ST.hasGFX940Insts() ? 2 : 1;
   int WaitStatesNeeded = 0;
 
   if (!TRI->isVectorRegister(MRI, Def.getReg()))

diff  --git a/llvm/test/CodeGen/AMDGPU/gfx940-hazards.mir b/llvm/test/CodeGen/AMDGPU/gfx940-hazards.mir
index 7f84babc72c21..0b5cc6c3552d2 100644
--- a/llvm/test/CodeGen/AMDGPU/gfx940-hazards.mir
+++ b/llvm/test/CodeGen/AMDGPU/gfx940-hazards.mir
@@ -215,3 +215,29 @@ body:             |
     $vgpr1 = V_ADD_CO_U32_e32 $vgpr0, $vgpr0, implicit-def $vcc, implicit $exec
     $sgpr1 = V_READFIRSTLANE_B32 $vgpr1, implicit $exec
 ...
+
+# GCN-LABEL: name: global_store_dwordx4_data_hazard
+# GCN:      GLOBAL_STORE_DWORDX4
+# GCN-NEXT: S_NOP 1
+# GCN-NEXT: V_MOV_B32_e32
+name: global_store_dwordx4_data_hazard
+
+body:             |
+  bb.0:
+    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5
+    GLOBAL_STORE_DWORDX4 $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5, 0, 0, implicit $exec
+    $vgpr2 = V_MOV_B32_e32 0, implicit $exec
+...
+
+# GCN-LABEL: name: global_store_dwordx3_data_hazard
+# GCN:      GLOBAL_STORE_DWORDX3
+# GCN-NEXT: S_NOP 1
+# GCN-NEXT: V_MOV_B32_e32
+name: global_store_dwordx3_data_hazard
+
+body:             |
+  bb.0:
+    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4
+    GLOBAL_STORE_DWORDX3 $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4, 0, 0, implicit $exec
+    $vgpr2 = V_MOV_B32_e32 0, implicit $exec
+...

diff  --git a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir
index d335cf73f510a..91dcfd7a6b3ec 100644
--- a/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir
+++ b/llvm/test/CodeGen/AMDGPU/mai-hazards-gfx940.mir
@@ -1155,7 +1155,7 @@ body:             |
 ...
 # GCN-LABEL: name: flat_store_data_agpr_overwritten
 # GCN:      FLAT_STORE_DWORDX4
-# GCN-NEXT: S_NOP 0
+# GCN-NEXT: S_NOP 1
 # GCN-NEXT: V_ACCVGPR_WRITE_B32_e64
 name: flat_store_data_agpr_overwritten
 body: |


        


More information about the llvm-commits mailing list