[llvm] [AMDGPU][NFC] Autogenerate gfx950 hazard tests. (PR #118794)

via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 5 04:38:30 PST 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-amdgpu

Author: Pravin Jagtap (pravinjagtap)

<details>
<summary>Changes</summary>



---

Patch is 44.19 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/118794.diff


1 Files Affected:

- (modified) llvm/test/CodeGen/AMDGPU/hazards-gfx950.mir (+342-178) 


``````````diff
diff --git a/llvm/test/CodeGen/AMDGPU/hazards-gfx950.mir b/llvm/test/CodeGen/AMDGPU/hazards-gfx950.mir
index 6a25e346c89447..e2ee117bdd5c26 100644
--- a/llvm/test/CodeGen/AMDGPU/hazards-gfx950.mir
+++ b/llvm/test/CodeGen/AMDGPU/hazards-gfx950.mir
@@ -1,121 +1,140 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
 # RUN: llc -mtriple=amdgcn -mcpu=gfx950 -verify-machineinstrs -run-pass=post-RA-hazard-rec %s -o - | FileCheck -check-prefix=GCN %s
 
 ---
-# GCN-LABEL: name: vcmpx_vopc_write_exec_permlane16_swap_vop1
-# GCN:      V_CMPX_EQ_I32_e32
-# GCN-NEXT: S_NOP 3
-# GCN-NEXT: V_PERMLANE
 name:            vcmpx_vopc_write_exec_permlane16_swap_vop1
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1
+    ; GCN-LABEL: name: vcmpx_vopc_write_exec_permlane16_swap_vop1
+    ; GCN: liveins: $vgpr0, $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit-def $exec, implicit-def $vcc, implicit $exec
+    ; GCN-NEXT: S_NOP 3
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
     V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit-def $exec, implicit-def $vcc, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: vcmpx_vop3_write_exec_permlane16_swap_vop1
-# GCN:      V_CMPX_EQ_I32_e64
-# GCN-NEXT: S_NOP 3
-# GCN-NEXT: V_PERMLANE
 name:            vcmpx_vop3_write_exec_permlane16_swap_vop1
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1
+    ; GCN-LABEL: name: vcmpx_vop3_write_exec_permlane16_swap_vop1
+    ; GCN: liveins: $vgpr0, $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: $exec = V_CMPX_EQ_I32_e64 $vgpr0, $vgpr1, implicit $exec
+    ; GCN-NEXT: S_NOP 3
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
     $exec = V_CMPX_EQ_I32_e64 $vgpr0, $vgpr1, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: vcmpx_vopc_write_exec_permlane16_swap_vop3
-# GCN:      V_CMPX_EQ_I32_e32
-# GCN-NEXT: S_NOP 3
-# GCN-NEXT: V_PERMLANE
 name:            vcmpx_vopc_write_exec_permlane16_swap_vop3
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1
+    ; GCN-LABEL: name: vcmpx_vopc_write_exec_permlane16_swap_vop3
+    ; GCN: liveins: $vgpr0, $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit-def $exec, implicit-def $vcc, implicit $exec
+    ; GCN-NEXT: S_NOP 3
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
     V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit-def $exec, implicit-def $vcc, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: vcmpx_vop3_write_exec_permlane16_swap_vop3
-# GCN:      V_CMPX_EQ_I32_e64
-# GCN-NEXT: S_NOP 3
-# GCN-NEXT: V_PERMLANE
 name:            vcmpx_vop3_write_exec_permlane16_swap_vop3
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1
+    ; GCN-LABEL: name: vcmpx_vop3_write_exec_permlane16_swap_vop3
+    ; GCN: liveins: $vgpr0, $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: $exec = V_CMPX_EQ_I32_e64 $vgpr0, $vgpr1, implicit $exec
+    ; GCN-NEXT: S_NOP 3
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
     $exec = V_CMPX_EQ_I32_e64 $vgpr0, $vgpr1, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: vcmpx_vopc_write_exec_permlane32_swap_vop1
-# GCN:      V_CMPX_EQ_I32_e32
-# GCN-NEXT: S_NOP 3
-# GCN-NEXT: V_PERMLANE
 name:            vcmpx_vopc_write_exec_permlane32_swap_vop1
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1
+    ; GCN-LABEL: name: vcmpx_vopc_write_exec_permlane32_swap_vop1
+    ; GCN: liveins: $vgpr0, $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit-def $exec, implicit-def $vcc, implicit $exec
+    ; GCN-NEXT: S_NOP 3
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
     V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit-def $exec, implicit-def $vcc, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: vcmpx_vop3_write_exec_permlane32_swap_vop1
-# GCN:      V_CMPX_EQ_I32_e64
-# GCN-NEXT: S_NOP 3
-# GCN-NEXT: V_PERMLANE
 name:            vcmpx_vop3_write_exec_permlane32_swap_vop1
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1
+    ; GCN-LABEL: name: vcmpx_vop3_write_exec_permlane32_swap_vop1
+    ; GCN: liveins: $vgpr0, $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: $exec = V_CMPX_EQ_I32_e64 $vgpr0, $vgpr1, implicit $exec
+    ; GCN-NEXT: S_NOP 3
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
     $exec = V_CMPX_EQ_I32_e64 $vgpr0, $vgpr1, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: vcmpx_vopc_write_exec_permlane32_swap_vop3
-# GCN:      V_CMPX_EQ_I32_e32
-# GCN-NEXT: S_NOP 3
-# GCN-NEXT: V_PERMLANE
 name:            vcmpx_vopc_write_exec_permlane32_swap_vop3
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1
+    ; GCN-LABEL: name: vcmpx_vopc_write_exec_permlane32_swap_vop3
+    ; GCN: liveins: $vgpr0, $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit-def $exec, implicit-def $vcc, implicit $exec
+    ; GCN-NEXT: S_NOP 3
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
     V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit-def $exec, implicit-def $vcc, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: vcmpx_vop3_write_exec_permlane32_swap_vop3
-# GCN:      V_CMPX_EQ_I32_e64
-# GCN-NEXT: S_NOP 3
-# GCN-NEXT: V_PERMLANE
 name:            vcmpx_vop3_write_exec_permlane32_swap_vop3
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1
+    ; GCN-LABEL: name: vcmpx_vop3_write_exec_permlane32_swap_vop3
+    ; GCN: liveins: $vgpr0, $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: $exec = V_CMPX_EQ_I32_e64 $vgpr0, $vgpr1, implicit $exec
+    ; GCN-NEXT: S_NOP 3
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
     $exec = V_CMPX_EQ_I32_e64 $vgpr0, $vgpr1, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: vcmpx_vopc_write_exec_permlane16_swap_vop1__nowait
-# GCN:      V_CMPX_EQ_I32_e32
-# GCN-NEXT: V_MOV_B32
-# GCN-NEXT: V_MOV_B32
-# GCN-NEXT: V_MOV_B32
-# GCN-NEXT: V_MOV_B32
-# GCN-NEXT: V_PERMLANE
 name:            vcmpx_vopc_write_exec_permlane16_swap_vop1__nowait
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1
+    ; GCN-LABEL: name: vcmpx_vopc_write_exec_permlane16_swap_vop1__nowait
+    ; GCN: liveins: $vgpr0, $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit-def $exec, implicit-def $vcc, implicit $exec
+    ; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: $vgpr4 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: $vgpr5 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
     V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit-def $exec, implicit-def $vcc, implicit $exec
     $vgpr2 = V_MOV_B32_e32 0, implicit $exec
     $vgpr3 = V_MOV_B32_e32 0, implicit $exec
@@ -125,17 +144,19 @@ body:             |
 ...
 
 ---
-# GCN-LABEL: name: vcmpx_vopc_write_exec_permlane16_swap_vop1__wait1
-# GCN:      V_CMPX_EQ_I32_e32
-# GCN-NEXT: V_MOV_B32
-# GCN-NEXT: V_MOV_B32
-# GCN-NEXT: V_MOV_B32
-# GCN-NEXT: S_NOP 0
-# GCN-NEXT: V_PERMLANE
 name:            vcmpx_vopc_write_exec_permlane16_swap_vop1__wait1
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1
+    ; GCN-LABEL: name: vcmpx_vopc_write_exec_permlane16_swap_vop1__wait1
+    ; GCN: liveins: $vgpr0, $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit-def $exec, implicit-def $vcc, implicit $exec
+    ; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: $vgpr3 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: $vgpr4 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: S_NOP 0
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
     V_CMPX_EQ_I32_e32 $vgpr0, $vgpr1, implicit-def $exec, implicit-def $vcc, implicit $exec
     $vgpr2 = V_MOV_B32_e32 0, implicit $exec
     $vgpr3 = V_MOV_B32_e32 0, implicit $exec
@@ -144,112 +165,128 @@ body:             |
 ...
 
 ---
-# GCN-LABEL: name: valu_write_vdst_read_permlane16_swap_0
-# GCN:      V_MOV_B32
-# GCN-NEXT: S_NOP 1
-# GCN-NEXT: V_PERMLANE
 name:            valu_write_vdst_read_permlane16_swap_0
 body:             |
   bb.0:
     liveins: $vgpr1
+    ; GCN-LABEL: name: valu_write_vdst_read_permlane16_swap_0
+    ; GCN: liveins: $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: S_NOP 1
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: valu_write_vdst_read_permlane16_swap_1
-# GCN:      V_MOV_B32
-# GCN-NEXT: S_NOP 1
-# GCN-NEXT: V_PERMLANE
 name:            valu_write_vdst_read_permlane16_swap_1
 body:             |
   bb.0:
     liveins: $vgpr0
+    ; GCN-LABEL: name: valu_write_vdst_read_permlane16_swap_1
+    ; GCN: liveins: $vgpr0
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: S_NOP 1
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
     $vgpr1 = V_MOV_B32_e32 0, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: valu_write_vdst_read_permlane32_swap_0
-# GCN:      V_MOV_B32
-# GCN-NEXT: S_NOP 1
-# GCN-NEXT: V_PERMLANE
 name:            valu_write_vdst_read_permlane32_swap_0
 body:             |
   bb.0:
     liveins: $vgpr1
+    ; GCN-LABEL: name: valu_write_vdst_read_permlane32_swap_0
+    ; GCN: liveins: $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: S_NOP 1
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: valu_write_vdst_read_permlane32_swap_1
-# GCN:      V_MOV_B32
-# GCN-NEXT: S_NOP 1
-# GCN-NEXT: V_PERMLANE
 name:            valu_write_vdst_read_permlane32_swap_1
 body:             |
   bb.0:
     liveins: $vgpr0
+    ; GCN-LABEL: name: valu_write_vdst_read_permlane32_swap_1
+    ; GCN: liveins: $vgpr0
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: S_NOP 1
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
     $vgpr1 = V_MOV_B32_e32 0, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
 ...
 
 ---
 # No hazard, write of other register
-# GCN-LABEL: name: valu_write_vdst_read_permlane16_swap_0_otherreg
-# GCN:      V_MOV_B32
-# GCN-NEXT: V_PERMLANE
 name:            valu_write_vdst_read_permlane16_swap_0_otherreg
 body:             |
   bb.0:
     liveins: $vgpr1
+    ; GCN-LABEL: name: valu_write_vdst_read_permlane16_swap_0_otherreg
+    ; GCN: liveins: $vgpr1
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: $vgpr2 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
     $vgpr2 = V_MOV_B32_e32 0, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE16_SWAP_B32_e64 killed $vgpr0, killed $vgpr1, -1, 1, implicit $exec
 ...
 
 ---
 # Both permlane hazards at once.
-# GCN-LABEL: name: valu_writes_vdst__vcmpx_write_exec__permlane32_swap
-# GCN:      V_MOV_B32
-# GCN:      V_CMPX_EQ_I32
-# GCN-NEXT: S_NOP 3
-# GCN-NEXT: V_PERMLANE
 name:            valu_writes_vdst__vcmpx_write_exec__permlane32_swap
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr2, $vgpr3
+    ; GCN-LABEL: name: valu_writes_vdst__vcmpx_write_exec__permlane32_swap
+    ; GCN: liveins: $vgpr0, $vgpr2, $vgpr3
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: $exec = V_CMPX_EQ_I32_e64 $vgpr2, $vgpr3, implicit $exec
+    ; GCN-NEXT: S_NOP 3
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
     $vgpr1 = V_MOV_B32_e32 0, implicit $exec
     $exec = V_CMPX_EQ_I32_e64 $vgpr2, $vgpr3, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: vcmpx_write_exec__valu_writes_vdst___permlane32_swap
-# GCN:      V_CMPX_EQ_I32
-# GCN:      V_MOV_B32
-# GCN-NEXT: S_NOP 2
-# GCN-NEXT: V_PERMLANE
 name:            vcmpx_write_exec__valu_writes_vdst___permlane32_swap
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr2, $vgpr3
+    ; GCN-LABEL: name: vcmpx_write_exec__valu_writes_vdst___permlane32_swap
+    ; GCN: liveins: $vgpr0, $vgpr2, $vgpr3
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: $exec = V_CMPX_EQ_I32_e64 $vgpr2, $vgpr3, implicit $exec
+    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: S_NOP 2
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
     $exec = V_CMPX_EQ_I32_e64 $vgpr2, $vgpr3, implicit $exec
     $vgpr1 = V_MOV_B32_e32 0, implicit $exec
     renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
 ...
 
 ---
-# GCN-LABEL: name: vcmpx_write_exec__valu_writes_vdstx2___permlane32_swap
-# GCN:      V_CMPX_EQ_I32
-# GCN:      V_MOV_B32
-# GCN:      V_MOV_B32
-# GCN-NEXT: S_NOP 1
-# GCN-NEXT: V_PERMLANE
 name:            vcmpx_write_exec__valu_writes_vdstx2___permlane32_swap
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr2, $vgpr3
+    ; GCN-LABEL: name: vcmpx_write_exec__valu_writes_vdstx2___permlane32_swap
+    ; GCN: liveins: $vgpr0, $vgpr2, $vgpr3
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: $exec = V_CMPX_EQ_I32_e64 $vgpr2, $vgpr3, implicit $exec
+    ; GCN-NEXT: $vgpr1 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
+    ; GCN-NEXT: S_NOP 1
+    ; GCN-NEXT: renamable $vgpr0, renamable $vgpr1 = V_PERMLANE32_SWAP_B32_e32 killed $vgpr0, killed $vgpr1, implicit $exec
     $exec = V_CMPX_EQ_I32_e64 $vgpr2, $vgpr3, implicit $exec
     $vgpr1 = V_MOV_B32_e32 0, implicit $exec
     $vgpr0 = V_MOV_B32_e32 0, implicit $exec
@@ -258,13 +295,18 @@ body:             |
 
 
 ---
-# GCN-LABEL: name: test_cvt_scalef32_sr_fp8_bf16_hazard
-# GCN:      V_CVT_SCALEF32_SR_FP8_BF16_e64
-# GCN:      GLOBAL_STORE_DWORD
 name:            test_cvt_scalef32_sr_fp8_bf16_hazard
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
+    ; GCN-LABEL: name: test_cvt_scalef32_sr_fp8_bf16_hazard
+    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: renamable $vgpr5 = GLOBAL_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec
+    ; GCN-NEXT: S_WAITCNT 3952
+    ; GCN-NEXT: renamable $vgpr5 = V_CVT_SCALEF32_SR_FP8_BF16_e64 8, killed $vgpr2, 0, killed $vgpr3, 4, killed $vgpr4, killed $vgpr5, 0, implicit $mode, implicit $exec
+    ; GCN-NEXT: GLOBAL_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr5, 0, 0, implicit $exec
+    ; GCN-NEXT: S_ENDPGM 0
     renamable $vgpr5 = GLOBAL_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec
     S_WAITCNT 3952
     renamable $vgpr5 = V_CVT_SCALEF32_SR_FP8_BF16_e64 8, killed $vgpr2, 0, killed $vgpr3, 4, killed $vgpr4, killed $vgpr5, 0, implicit $mode, implicit $exec
@@ -273,13 +315,18 @@ body:             |
 ...
 
 ---
-# GCN-LABEL: name: test_cvt_scalef32_sr_fp8_f16_hazard
-# GCN:      V_CVT_SCALEF32_SR_FP8_F16_e64
-# GCN:      GLOBAL_STORE_DWORD
 name:            test_cvt_scalef32_sr_fp8_f16_hazard
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
+    ; GCN-LABEL: name: test_cvt_scalef32_sr_fp8_f16_hazard
+    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: renamable $vgpr5 = GLOBAL_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec
+    ; GCN-NEXT: S_WAITCNT 3952
+    ; GCN-NEXT: renamable $vgpr5 = V_CVT_SCALEF32_SR_FP8_F16_e64 8, killed $vgpr2, 0, killed $vgpr3, 4, killed $vgpr4, killed $vgpr5, 0, implicit $mode, implicit $exec
+    ; GCN-NEXT: GLOBAL_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr5, 0, 0, implicit $exec
+    ; GCN-NEXT: S_ENDPGM 0
     renamable $vgpr5 = GLOBAL_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec
     S_WAITCNT 3952
     renamable $vgpr5 = V_CVT_SCALEF32_SR_FP8_F16_e64 8, killed $vgpr2, 0, killed $vgpr3, 4, killed $vgpr4, killed $vgpr5, 0, implicit $mode, implicit $exec
@@ -288,14 +335,20 @@ body:             |
 ...
 
 ---
-# GCN-LABEL: name: test_cvt_scalef32_sr_fp8_f32_hazard
-# GCN:      V_CVT_SCALEF32_SR_FP8_F32_e64
-# GCN:      S_NOP 0
-# GCN:      V_ADD_U32_e32
 name:            test_cvt_scalef32_sr_fp8_f32_hazard
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
+    ; GCN-LABEL: name: test_cvt_scalef32_sr_fp8_f32_hazard
+    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: renamable $vgpr5 = GLOBAL_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec
+    ; GCN-NEXT: S_WAITCNT 3952
+    ; GCN-NEXT: renamable $vgpr5 = V_CVT_SCALEF32_SR_FP8_F32_e64 8, killed $vgpr2, 0, killed $vgpr3, 4, killed $vgpr4, killed $vgpr5, 0, implicit $mode, implicit $exec
+    ; GCN-NEXT: S_NOP 0
+    ; GCN-NEXT: renamable $vgpr2 = V_ADD_U32_e32 4, killed $vgpr5, implicit $exec
+    ; GCN-NEXT: GLOBAL_STORE_DWORD killed renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec
+    ; GCN-NEXT: S_ENDPGM 0
     renamable $vgpr5 = GLOBAL_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec
     S_WAITCNT 3952
     renamable $vgpr5 = V_CVT_SCALEF32_SR_FP8_F32_e64 8, killed $vgpr2, 0, killed $vgpr3, 4, killed $vgpr4, killed $vgpr5, 0, implicit $mode, implicit $exec
@@ -305,14 +358,20 @@ body:             |
 ...
 
 ---
-# GCN-LABEL: test_cvt_scalef32_pk_fp8_f32_hazard
-# GCN:      V_CVT_SCALEF32_PK_FP8_F32_e64
-# GCN:      S_NOP 0
-# GCN:      V_PK_ADD_U16
 name:            test_cvt_scalef32_pk_fp8_f32_hazard
 body:             |
   bb.0:
     liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
+    ; GCN-LABEL: name: test_cvt_scalef32_pk_fp8_f32_hazard
+    ; GCN: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
+    ; GCN-NEXT: {{  $}}
+    ; GCN-NEXT: S_WAITCNT 0
+    ; GCN-NEXT: renamable $vgpr1 = V_AND_B32_e32 2147483647, killed $vgpr1, implicit $exec
+    ; GCN-NEXT: renamable $vgpr2 = V_XOR_B32_e32 -2147483648, killed $vg...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/118794


More information about the llvm-commits mailing list