[llvm] [AMDGPU] Disable hasVALUMaskWriteHazard for GFX12 (PR #78187)

Jay Foad via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 15 08:46:09 PST 2024


https://github.com/jayfoad created https://github.com/llvm/llvm-project/pull/78187

- Add GFX12 testing to valu-mask-write-hazard.mir
- [AMDGPU] Disable hasVALUMaskWriteHazard for GFX12


>From 24c66af255d3b98c7cbb44a19811ab96b51c6190 Mon Sep 17 00:00:00 2001
From: Jay Foad <jay.foad at amd.com>
Date: Fri, 6 Jan 2023 08:07:50 +0000
Subject: [PATCH 1/2] Add GFX12 testing to valu-mask-write-hazard.mir

---
 llvm/test/CodeGen/AMDGPU/valu-mask-write-hazard.mir | 1 +
 1 file changed, 1 insertion(+)

diff --git a/llvm/test/CodeGen/AMDGPU/valu-mask-write-hazard.mir b/llvm/test/CodeGen/AMDGPU/valu-mask-write-hazard.mir
index 350d0985fbfed9..d85bfea8c32c28 100644
--- a/llvm/test/CodeGen/AMDGPU/valu-mask-write-hazard.mir
+++ b/llvm/test/CodeGen/AMDGPU/valu-mask-write-hazard.mir
@@ -1,5 +1,6 @@
 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
 # RUN: llc -march=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
+# RUN: llc -march=amdgcn -mcpu=gfx1200 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
 
 --- |
   @mem = internal unnamed_addr addrspace(4) constant [4 x <4 x i32>] [<4 x i32> <i32 0, i32 0, i32 0, i32 0>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>]

>From 8a440d50cc4c58d3ac70001a29d9456dd34c80de Mon Sep 17 00:00:00 2001
From: Jay Foad <jay.foad at amd.com>
Date: Fri, 6 Jan 2023 08:09:44 +0000
Subject: [PATCH 2/2] [AMDGPU] Disable hasVALUMaskWriteHazard for GFX12

---
 llvm/lib/Target/AMDGPU/GCNSubtarget.h         |   2 +-
 .../CodeGen/AMDGPU/valu-mask-write-hazard.mir | 475 +++++++++++-------
 2 files changed, 307 insertions(+), 170 deletions(-)

diff --git a/llvm/lib/Target/AMDGPU/GCNSubtarget.h b/llvm/lib/Target/AMDGPU/GCNSubtarget.h
index 070d165cdaadb8..ba1302e6bce8ee 100644
--- a/llvm/lib/Target/AMDGPU/GCNSubtarget.h
+++ b/llvm/lib/Target/AMDGPU/GCNSubtarget.h
@@ -1146,7 +1146,7 @@ class GCNSubtarget final : public AMDGPUGenSubtargetInfo,
 
   bool hasForceStoreSC0SC1() const { return HasForceStoreSC0SC1; }
 
-  bool hasVALUMaskWriteHazard() const { return getGeneration() >= GFX11; }
+  bool hasVALUMaskWriteHazard() const { return getGeneration() == GFX11; }
 
   /// Return if operations acting on VGPR tuples require even alignment.
   bool needsAlignedVGPRs() const { return GFX90AInsts; }
diff --git a/llvm/test/CodeGen/AMDGPU/valu-mask-write-hazard.mir b/llvm/test/CodeGen/AMDGPU/valu-mask-write-hazard.mir
index d85bfea8c32c28..87d81c767ed14e 100644
--- a/llvm/test/CodeGen/AMDGPU/valu-mask-write-hazard.mir
+++ b/llvm/test/CodeGen/AMDGPU/valu-mask-write-hazard.mir
@@ -1,6 +1,6 @@
 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
-# RUN: llc -march=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
-# RUN: llc -march=amdgcn -mcpu=gfx1200 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefix=GCN %s
+# RUN: llc -march=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefixes=GCN,GFX11 %s
+# RUN: llc -march=amdgcn -mcpu=gfx1200 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass post-RA-hazard-rec -o - %s | FileCheck -check-prefixes=GCN,GFX12 %s
 
 --- |
   @mem = internal unnamed_addr addrspace(4) constant [4 x <4 x i32>] [<4 x i32> <i32 0, i32 0, i32 0, i32 0>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>, <4 x i32> <i32 0, i32 0, i32 0, i32 0>]
@@ -45,12 +45,17 @@
 name:            mask_hazard_getpc1
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_getpc1
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
-    ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_getpc1
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
+    ; GFX11-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_getpc1
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
+    ; GFX12-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
+    ; GFX12-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
     $sgpr0_sgpr1 = S_GETPC_B64
     $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
@@ -61,15 +66,23 @@ body:            |
 name:            mask_hazard_getpc2
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_getpc2
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
-    ; GCN-NEXT: BUNDLE implicit-def $sgpr0_sgpr1 {
-    ; GCN-NEXT:   $sgpr0_sgpr1 = S_GETPC_B64
-    ; GCN-NEXT:   S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT:   $sgpr0 = S_ADD_U32 $sgpr0, target-flags(amdgpu-rel32-lo) @mem + 8, implicit-def $scc
-    ; GCN-NEXT:   $sgpr1 = S_ADDC_U32 $sgpr1, target-flags(amdgpu-rel32-lo) @mem + 16, implicit-def $scc, implicit $scc
-    ; GCN-NEXT: }
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_getpc2
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
+    ; GFX11-NEXT: BUNDLE implicit-def $sgpr0_sgpr1 {
+    ; GFX11-NEXT:   $sgpr0_sgpr1 = S_GETPC_B64
+    ; GFX11-NEXT:   S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT:   $sgpr0 = S_ADD_U32 $sgpr0, target-flags(amdgpu-rel32-lo) @mem + 8, implicit-def $scc
+    ; GFX11-NEXT:   $sgpr1 = S_ADDC_U32 $sgpr1, target-flags(amdgpu-rel32-lo) @mem + 16, implicit-def $scc, implicit $scc
+    ; GFX11-NEXT: }
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_getpc2
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
+    ; GFX12-NEXT: BUNDLE implicit-def $sgpr0_sgpr1 {
+    ; GFX12-NEXT:   $sgpr0_sgpr1 = S_GETPC_B64
+    ; GFX12-NEXT:   $sgpr0 = S_ADD_U32 $sgpr0, target-flags(amdgpu-rel32-lo) @mem + 4, implicit-def $scc
+    ; GFX12-NEXT:   $sgpr1 = S_ADDC_U32 $sgpr1, target-flags(amdgpu-rel32-lo) @mem + 12, implicit-def $scc, implicit $scc
+    ; GFX12-NEXT: }
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
     BUNDLE implicit-def $sgpr0_sgpr1 {
       $sgpr0_sgpr1 = S_GETPC_B64
@@ -83,11 +96,15 @@ body:            |
 name:            mask_hazard_vcc1
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_vcc1
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
-    ; GCN-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_vcc1
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
+    ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_vcc1
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
+    ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
     $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -97,11 +114,15 @@ body:            |
 name:            mask_hazard_vcc2
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_vcc2
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec
-    ; GCN-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_vcc2
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec
+    ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_vcc2
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec
+    ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec
     $vcc = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -111,11 +132,15 @@ body:            |
 name:            mask_hazard_cndmask_dpp1
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_cndmask_dpp1
-    ; GCN: $vgpr0 = V_CNDMASK_B32_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, 1, 15, 15, 1, implicit $vcc, implicit $exec
-    ; GCN-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_cndmask_dpp1
+    ; GFX11: $vgpr0 = V_CNDMASK_B32_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, 1, 15, 15, 1, implicit $vcc, implicit $exec
+    ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_cndmask_dpp1
+    ; GFX12: $vgpr0 = V_CNDMASK_B32_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, 1, 15, 15, 1, implicit $vcc, implicit $exec
+    ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr0 = V_CNDMASK_B32_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, 1, 15, 15, 1, implicit $vcc, implicit $exec
     $vcc = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -125,11 +150,15 @@ body:            |
 name:            mask_hazard_cndmask_dpp2
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_cndmask_dpp2
-    ; GCN: $vgpr0 = V_CNDMASK_B32_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec
-    ; GCN-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_cndmask_dpp2
+    ; GFX11: $vgpr0 = V_CNDMASK_B32_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec
+    ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_cndmask_dpp2
+    ; GFX12: $vgpr0 = V_CNDMASK_B32_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec
+    ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr0 = V_CNDMASK_B32_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec
     $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -139,11 +168,15 @@ body:            |
 name:            mask_hazard_cndmask_dpp4
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_cndmask_dpp4
-    ; GCN: $vgpr0 = V_CNDMASK_B16_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec
-    ; GCN-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_cndmask_dpp4
+    ; GFX11: $vgpr0 = V_CNDMASK_B16_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec
+    ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_cndmask_dpp4
+    ; GFX12: $vgpr0 = V_CNDMASK_B16_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec
+    ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr0 = V_CNDMASK_B16_e64_dpp $vgpr0, 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, 1, 15, 15, 1, implicit $exec
     $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -153,11 +186,15 @@ body:            |
 name:            mask_hazard_addc1
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_addc1
-    ; GCN: $vgpr1, $vcc = V_ADDC_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec
-    ; GCN-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_addc1
+    ; GFX11: $vgpr1, $vcc = V_ADDC_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec
+    ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_addc1
+    ; GFX12: $vgpr1, $vcc = V_ADDC_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec
+    ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1, $vcc = V_ADDC_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec
     $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -167,11 +204,15 @@ body:            |
 name:            mask_hazard_addc2
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_addc2
-    ; GCN: $vgpr1 = V_ADDC_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
-    ; GCN-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_addc2
+    ; GFX11: $vgpr1 = V_ADDC_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
+    ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_addc2
+    ; GFX12: $vgpr1 = V_ADDC_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
+    ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_ADDC_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
     $vcc = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -181,11 +222,15 @@ body:            |
 name:            mask_hazard_addc3
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_addc3
-    ; GCN: $vgpr0 = V_ADDC_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec
-    ; GCN-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_addc3
+    ; GFX11: $vgpr0 = V_ADDC_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec
+    ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_addc3
+    ; GFX12: $vgpr0 = V_ADDC_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec
+    ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr0 = V_ADDC_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec
     $vcc = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -195,11 +240,15 @@ body:            |
 name:            mask_hazard_addc4
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_addc4
-    ; GCN: $vgpr0, $sgpr2_sgpr3 = V_ADDC_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec
-    ; GCN-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_addc4
+    ; GFX11: $vgpr0, $sgpr2_sgpr3 = V_ADDC_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec
+    ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_addc4
+    ; GFX12: $vgpr0, $sgpr2_sgpr3 = V_ADDC_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec
+    ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr0, $sgpr2_sgpr3 = V_ADDC_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec
     $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -209,11 +258,15 @@ body:            |
 name:            mask_hazard_subb1
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subb1
-    ; GCN: $vgpr1, $vcc = V_SUBB_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec
-    ; GCN-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subb1
+    ; GFX11: $vgpr1, $vcc = V_SUBB_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec
+    ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subb1
+    ; GFX12: $vgpr1, $vcc = V_SUBB_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec
+    ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1, $vcc = V_SUBB_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec
     $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -223,11 +276,15 @@ body:            |
 name:            mask_hazard_subb2
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subb2
-    ; GCN: $vgpr1 = V_SUBB_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
-    ; GCN-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subb2
+    ; GFX11: $vgpr1 = V_SUBB_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
+    ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subb2
+    ; GFX12: $vgpr1 = V_SUBB_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
+    ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_SUBB_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
     $vcc = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -237,11 +294,15 @@ body:            |
 name:            mask_hazard_subb3
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subb3
-    ; GCN: $vgpr0 = V_SUBB_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec
-    ; GCN-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subb3
+    ; GFX11: $vgpr0 = V_SUBB_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec
+    ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subb3
+    ; GFX12: $vgpr0 = V_SUBB_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec
+    ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr0 = V_SUBB_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec
     $vcc = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -251,11 +312,15 @@ body:            |
 name:            mask_hazard_subb4
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subb4
-    ; GCN: $vgpr0, $sgpr2_sgpr3 = V_SUBB_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec
-    ; GCN-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subb4
+    ; GFX11: $vgpr0, $sgpr2_sgpr3 = V_SUBB_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec
+    ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subb4
+    ; GFX12: $vgpr0, $sgpr2_sgpr3 = V_SUBB_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec
+    ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr0, $sgpr2_sgpr3 = V_SUBB_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec
     $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -265,11 +330,15 @@ body:            |
 name:            mask_hazard_subbrev1
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subbrev1
-    ; GCN: $vgpr1, $vcc = V_SUBBREV_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec
-    ; GCN-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subbrev1
+    ; GFX11: $vgpr1, $vcc = V_SUBBREV_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec
+    ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subbrev1
+    ; GFX12: $vgpr1, $vcc = V_SUBBREV_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec
+    ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1, $vcc = V_SUBBREV_U32_e64 0, $vgpr1, $sgpr2_sgpr3, 0, implicit $exec
     $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -279,11 +348,15 @@ body:            |
 name:            mask_hazard_subbrev2
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subbrev2
-    ; GCN: $vgpr1 = V_SUBBREV_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
-    ; GCN-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subbrev2
+    ; GFX11: $vgpr1 = V_SUBBREV_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
+    ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subbrev2
+    ; GFX12: $vgpr1 = V_SUBBREV_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
+    ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_SUBBREV_U32_e32 0, $vgpr1, implicit-def $vcc, implicit $vcc, implicit $exec
     $vcc = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -293,11 +366,15 @@ body:            |
 name:            mask_hazard_subbrev3
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subbrev3
-    ; GCN: $vgpr0 = V_SUBBREV_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec
-    ; GCN-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subbrev3
+    ; GFX11: $vgpr0 = V_SUBBREV_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec
+    ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subbrev3
+    ; GFX12: $vgpr0 = V_SUBBREV_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec
+    ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr0 = V_SUBBREV_U32_dpp $vgpr0, $vgpr1, $vgpr2, 1, 15, 15, 1, implicit-def $vcc, implicit $vcc, implicit $exec
     $vcc = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -307,11 +384,15 @@ body:            |
 name:            mask_hazard_subbrev4
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subbrev4
-    ; GCN: $vgpr0, $sgpr2_sgpr3 = V_SUBBREV_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec
-    ; GCN-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subbrev4
+    ; GFX11: $vgpr0, $sgpr2_sgpr3 = V_SUBBREV_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec
+    ; GFX11-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subbrev4
+    ; GFX12: $vgpr0, $sgpr2_sgpr3 = V_SUBBREV_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec
+    ; GFX12-NEXT: $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr0, $sgpr2_sgpr3 = V_SUBBREV_U32_e64_dpp $vgpr0, $vgpr1, $vgpr2, $sgpr2_sgpr3, 0, 1, 15, 15, 1, implicit $exec
     $sgpr2_sgpr3 = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -321,11 +402,15 @@ body:            |
 name:            mask_hazard_div_fmas_f32
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_div_fmas_f32
-    ; GCN: $vgpr0 = V_DIV_FMAS_F32_e64 0, $vgpr1, 0, $vgpr2, 0, $vgpr3, 0, 0, implicit $mode, implicit $vcc, implicit $exec
-    ; GCN-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_div_fmas_f32
+    ; GFX11: $vgpr0 = V_DIV_FMAS_F32_e64 0, $vgpr1, 0, $vgpr2, 0, $vgpr3, 0, 0, implicit $mode, implicit $vcc, implicit $exec
+    ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_div_fmas_f32
+    ; GFX12: $vgpr0 = V_DIV_FMAS_F32_e64 0, $vgpr1, 0, $vgpr2, 0, $vgpr3, 0, 0, implicit $mode, implicit $vcc, implicit $exec
+    ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr0 = V_DIV_FMAS_F32_e64 0, $vgpr1, 0, $vgpr2, 0, $vgpr3, 0, 0, implicit $mode, implicit $vcc, implicit $exec
     $vcc = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -335,11 +420,15 @@ body:            |
 name:            mask_hazard_div_fmas_f64
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_div_fmas_f64
-    ; GCN: $vgpr0_vgpr1 = V_DIV_FMAS_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $vcc, implicit $exec
-    ; GCN-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_div_fmas_f64
+    ; GFX11: $vgpr0_vgpr1 = V_DIV_FMAS_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $vcc, implicit $exec
+    ; GFX11-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_div_fmas_f64
+    ; GFX12: $vgpr0_vgpr1 = V_DIV_FMAS_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $vcc, implicit $exec
+    ; GFX12-NEXT: $vcc = S_CSELECT_B64 -1, 0, implicit $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr0_vgpr1 = V_DIV_FMAS_F64_e64 0, $vgpr0_vgpr1, 0, $vgpr2_vgpr3, 0, $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $vcc, implicit $exec
     $vcc = S_CSELECT_B64 -1, 0, implicit $scc
     S_ENDPGM 0
@@ -350,11 +439,15 @@ body:            |
 name:            mask_hazard_subreg1
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subreg1
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
-    ; GCN-NEXT: $sgpr2 = S_MOV_B32 0
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subreg1
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
+    ; GFX11-NEXT: $sgpr2 = S_MOV_B32 0
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subreg1
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
+    ; GFX12-NEXT: $sgpr2 = S_MOV_B32 0
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
     $sgpr2 = S_MOV_B32 0
     S_ENDPGM 0
@@ -365,11 +458,15 @@ body:            |
 name:            mask_hazard_subreg2
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subreg2
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
-    ; GCN-NEXT: $sgpr3 = S_MOV_B32 0
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subreg2
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
+    ; GFX11-NEXT: $sgpr3 = S_MOV_B32 0
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subreg2
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
+    ; GFX12-NEXT: $sgpr3 = S_MOV_B32 0
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
     $sgpr3 = S_MOV_B32 0
     S_ENDPGM 0
@@ -380,12 +477,17 @@ body:            |
 name:            mask_hazard_subreg3
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subreg3
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
-    ; GCN-NEXT: $sgpr2 = S_MOV_B32 0
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: $sgpr3 = S_MOV_B32 0
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subreg3
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
+    ; GFX11-NEXT: $sgpr2 = S_MOV_B32 0
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: $sgpr3 = S_MOV_B32 0
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subreg3
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
+    ; GFX12-NEXT: $sgpr2 = S_MOV_B32 0
+    ; GFX12-NEXT: $sgpr3 = S_MOV_B32 0
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr2_sgpr3, implicit $exec
     $sgpr2 = S_MOV_B32 0
     $sgpr3 = S_MOV_B32 0
@@ -397,12 +499,17 @@ body:            |
 name:            mask_hazard_subreg4
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subreg4
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec
-    ; GCN-NEXT: $vcc_lo = S_MOV_B32 0
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: $sgpr2 = S_MOV_B32 $vcc_lo
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subreg4
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec
+    ; GFX11-NEXT: $vcc_lo = S_MOV_B32 0
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: $sgpr2 = S_MOV_B32 $vcc_lo
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subreg4
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec
+    ; GFX12-NEXT: $vcc_lo = S_MOV_B32 0
+    ; GFX12-NEXT: $sgpr2 = S_MOV_B32 $vcc_lo
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec
     $vcc_lo = S_MOV_B32 0
     $sgpr2 = S_MOV_B32 $vcc_lo
@@ -414,12 +521,17 @@ body:            |
 name:            mask_hazard_subreg5
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_subreg5
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec
-    ; GCN-NEXT: $vcc_hi = S_MOV_B32 0
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: $sgpr2 = S_MOV_B32 $vcc_hi
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_subreg5
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec
+    ; GFX11-NEXT: $vcc_hi = S_MOV_B32 0
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: $sgpr2 = S_MOV_B32 $vcc_hi
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_subreg5
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec
+    ; GFX12-NEXT: $vcc_hi = S_MOV_B32 0
+    ; GFX12-NEXT: $sgpr2 = S_MOV_B32 $vcc_hi
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e32 $vgpr1, $vgpr2, implicit $vcc, implicit $exec
     $vcc_hi = S_MOV_B32 0
     $sgpr2 = S_MOV_B32 $vcc_hi
@@ -431,13 +543,19 @@ body:            |
 name:            mask_hazard_waitcnt
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_waitcnt
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
-    ; GCN-NEXT: S_WAITCNT 0
-    ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_waitcnt
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
+    ; GFX11-NEXT: S_WAITCNT 0
+    ; GFX11-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_waitcnt
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
+    ; GFX12-NEXT: S_WAITCNT 0
+    ; GFX12-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
+    ; GFX12-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
     S_WAITCNT 0
     $sgpr0_sgpr1 = S_GETPC_B64
@@ -450,14 +568,21 @@ body:            |
 name:            mask_hazard_gap1
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_gap1
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
-    ; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
-    ; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec
-    ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_gap1
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
+    ; GFX11-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
+    ; GFX11-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec
+    ; GFX11-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_gap1
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
+    ; GFX12-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
+    ; GFX12-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec
+    ; GFX12-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
+    ; GFX12-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
     $vgpr2 = V_MOV_B32_e32 0, implicit $exec
     $vgpr3 = V_MOV_B32_e32 0, implicit $exec
@@ -471,13 +596,19 @@ body:            |
 name:            mask_hazard_gap2
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_gap2
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
-    ; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec, implicit $mode
-    ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_gap2
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
+    ; GFX11-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec, implicit $mode
+    ; GFX11-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_gap2
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
+    ; GFX12-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec, implicit $mode
+    ; GFX12-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
+    ; GFX12-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
     $vgpr2 = V_MOV_B32_e32 0, implicit $exec, implicit $mode
     $sgpr0_sgpr1 = S_GETPC_B64
@@ -490,13 +621,19 @@ body:            |
 name:            mask_hazard_gap3
 body:            |
   bb.0:
-    ; GCN-LABEL: name: mask_hazard_gap3
-    ; GCN: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
-    ; GCN-NEXT: $vgpr2 = V_WRITELANE_B32 $exec_lo, 0, $vgpr2
-    ; GCN-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
-    ; GCN-NEXT: S_WAITCNT_DEPCTR 65534
-    ; GCN-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
-    ; GCN-NEXT: S_ENDPGM 0
+    ; GFX11-LABEL: name: mask_hazard_gap3
+    ; GFX11: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
+    ; GFX11-NEXT: $vgpr2 = V_WRITELANE_B32 $exec_lo, 0, $vgpr2
+    ; GFX11-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
+    ; GFX11-NEXT: S_WAITCNT_DEPCTR 65534
+    ; GFX11-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
+    ; GFX11-NEXT: S_ENDPGM 0
+    ; GFX12-LABEL: name: mask_hazard_gap3
+    ; GFX12: $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
+    ; GFX12-NEXT: $vgpr2 = V_WRITELANE_B32 $exec_lo, 0, $vgpr2
+    ; GFX12-NEXT: $sgpr0_sgpr1 = S_GETPC_B64
+    ; GFX12-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, 0, implicit-def $scc
+    ; GFX12-NEXT: S_ENDPGM 0
     $vgpr1 = V_CNDMASK_B32_e64 0, $vgpr1, 0, $vgpr2, $sgpr0_sgpr1, implicit $exec
     $vgpr2 = V_WRITELANE_B32 $exec_lo, 0, $vgpr2
     $sgpr0_sgpr1 = S_GETPC_B64



More information about the llvm-commits mailing list