[llvm] 85705bb - [AMDGPU] Disable hasVALUMaskWriteHazard for GFX12 (#78187)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 15 10:19:36 PST 2024
Author: Jay Foad
Date: 2024-01-15T18:19:32Z
New Revision: 85705bbf1dada62c7ee266bb3071e9c4ab4a4bfb
URL: https://github.com/llvm/llvm-project/commit/85705bbf1dada62c7ee266bb3071e9c4ab4a4bfb
DIFF: https://github.com/llvm/llvm-project/commit/85705bbf1dada62c7ee266bb3071e9c4ab4a4bfb.diff
LOG: [AMDGPU] Disable hasVALUMaskWriteHazard for GFX12 (#78187)
Added:
Modified:
llvm/lib/Target/AMDGPU/GCNSubtarget.h
llvm/test/CodeGen/AMDGPU/valu-mask-write-hazard.mir
Removed:
################################################################################
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 350d0985fbfed9..87d81c767ed14e 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=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>]
@@ -44,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
@@ -60,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
@@ -82,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
@@ -96,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
@@ -110,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
@@ -124,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
@@ -138,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
@@ -152,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
@@ -166,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
@@ -180,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
@@ -194,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
@@ -208,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
@@ -222,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
@@ -236,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
@@ -250,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
@@ -264,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
@@ -278,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
@@ -292,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
@@ -306,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
@@ -320,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
@@ -334,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
@@ -349,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
@@ -364,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
@@ -379,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
@@ -396,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
@@ -413,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
@@ -430,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
@@ -449,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
@@ -470,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
@@ -489,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