[llvm] [AMDGPU] Reset kill flags for multiple uses of SDWAInst Ops (PR #97135)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 1 03:39:11 PDT 2024


================
@@ -217,3 +217,36 @@ body:             |
     $sgpr30_sgpr31 = COPY %2
     S_SETPC_B64_return $sgpr30_sgpr31
 ...
+
+# Should not add kill flag to reused ops in SDWAInst
+
+---
+name: multiuse_kill
+tracksRegLiveness: true
+
+body:             |
+  bb.0:
+    ; SDWA-LABEL: name: multiuse_kill
+    ; SDWA: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
+    ; SDWA-NEXT: [[DEF1:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
+    ; SDWA-NEXT: [[DEF2:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
+    ; SDWA-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 16, killed [[DEF]], implicit $exec
+    ; SDWA-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 65535
+    ; SDWA-NEXT: [[V_AND_B32_e64_:%[0-9]+]]:vgpr_32 = V_AND_B32_e64 killed [[S_MOV_B32_]], [[DEF1]], implicit $exec
+    ; SDWA-NEXT: [[V_OR_B32_sdwa:%[0-9]+]]:vgpr_32 = V_OR_B32_sdwa 0, [[DEF1]], 0, [[V_LSHLREV_B32_e64_]], 0, 6, 0, 4, 6, implicit $exec
+    ; SDWA-NEXT: [[V_LSHLREV_B32_e64_1:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 16, killed [[DEF2]], implicit $exec
+    ; SDWA-NEXT: [[V_OR_B32_sdwa1:%[0-9]+]]:vgpr_32 = V_OR_B32_sdwa 0, [[DEF1]], 0, [[V_LSHLREV_B32_e64_1]], 0, 6, 0, 4, 6, implicit $exec
+    ; SDWA-NEXT: S_ENDPGM 0
+    %68:vgpr_32 = IMPLICIT_DEF
----------------
arsenm wrote:

Use run-pass=none to compact the register numbers 

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


More information about the llvm-commits mailing list