Skip to content

[AMDGPU][NFC] Autogenerate gfx950 hazard tests. #118794

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

pravinjagtap
Copy link
Contributor

No description provided.

@llvmbot
Copy link
Member

llvmbot commented Dec 5, 2024

@llvm/pr-subscribers-backend-amdgpu

Author: Pravin Jagtap (pravinjagtap)

Changes

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 --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]

@pravinjagtap pravinjagtap requested a review from shiltian December 5, 2024 13:03
@pravinjagtap pravinjagtap merged commit d25d040 into llvm:main Dec 5, 2024
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants