[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