[PATCH] D101546: [AMDGPU] Fix v_swap_b32 formation on physical registers
Jay Foad via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 29 12:53:59 PDT 2021
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG16d707e656ec: [AMDGPU] Fix v_swap_b32 formation on physical registers (authored by foad).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D101546/new/
https://reviews.llvm.org/D101546
Files:
llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp
llvm/test/CodeGen/AMDGPU/v_swap_b32.mir
Index: llvm/test/CodeGen/AMDGPU/v_swap_b32.mir
===================================================================
--- llvm/test/CodeGen/AMDGPU/v_swap_b32.mir
+++ llvm/test/CodeGen/AMDGPU/v_swap_b32.mir
@@ -2,6 +2,7 @@
# GCN-LABEL: name: swap_phys_condensed
# GCN: bb.0:
+# GCN-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec
# GCN-NEXT: $vgpr0, $vgpr1 = V_SWAP_B32 $vgpr1, $vgpr0, implicit $exec
# GCN-NEXT: S_SETPC_B64_return
---
@@ -17,6 +18,7 @@
# GCN-LABEL: name: swap_phys_sparse
# GCN: bb.0:
+# GCN-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec
# GCN-NEXT: $vgpr3 = V_MOV_B32_e32 killed $vgpr4, implicit $exec
# GCN-NEXT: $vgpr0, $vgpr1 = V_SWAP_B32 $vgpr1, $vgpr0, implicit $exec
# GCN-NEXT: $vgpr5 = V_MOV_B32_e32 killed $vgpr6, implicit $exec
@@ -50,9 +52,9 @@
S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr2, implicit $vgpr1
...
-# FIXME: should not remove the def of $vgpr2 because $vgpr2_vgpr3 is live out
# GCN-LABEL: name: swap_phys_liveout_superreg
# GCN: bb.0:
+# GCN-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr0, implicit $exec
# GCN-NEXT: $vgpr0, $vgpr1 = V_SWAP_B32 $vgpr1, $vgpr0, implicit $exec
# GCN-NEXT: S_SETPC_B64_return
---
@@ -68,6 +70,7 @@
# GCN-LABEL: name: swap_phys_b64
# GCN: bb.0:
+# GCN-NEXT: $vgpr4_vgpr5 = COPY $vgpr0_vgpr1
# GCN-NEXT: $vgpr0, $vgpr2 = V_SWAP_B32 $vgpr2, $vgpr0, implicit $exec
# GCN-NEXT: $vgpr1, $vgpr3 = V_SWAP_B32 $vgpr3, $vgpr1, implicit $exec
---
@@ -881,7 +884,7 @@
...
# GCN-LABEL: implicit_ops_mov_t_swap_b32
-# GCN: $vgpr1 = IMPLICIT_DEF
+# GCN: $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec, implicit $vgpr2, implicit killed $vgpr1_vgpr2, implicit-def $vgpr1
# GCN-NEXT: $vgpr0, $vgpr1 = V_SWAP_B32 $vgpr1, $vgpr0, implicit $exec
---
Index: llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp
+++ llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp
@@ -573,7 +573,7 @@
dropInstructionKeepingImpDefs(*MovY, TII);
MachineInstr *Next = &*std::next(MovT.getIterator());
- if (MRI.use_nodbg_empty(T)) {
+ if (T.isVirtual() && MRI.use_nodbg_empty(T)) {
dropInstructionKeepingImpDefs(MovT, TII);
} else {
Xop.setIsKill(false);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D101546.341614.patch
Type: text/x-patch
Size: 2308 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210429/7e5a62b4/attachment.bin>
More information about the llvm-commits
mailing list