[PATCH] D99061: [AMDGPU] Only unbundle memory accesses in SIMemoryLegalizer

Carl Ritson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 22 02:23:24 PDT 2021


critson created this revision.
critson added reviewers: foad, rampitec, kerbowa.
Herald added subscribers: hiraditya, t-tye, tpr, dstuttard, yaxunl, nhaehnle, jvesely, kzhuravl, arsenm.
critson requested review of this revision.
Herald added subscribers: llvm-commits, wdng.
Herald added a project: LLVM.

This restores previous behaviour and is a step toward removing
unbundling entirely.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D99061

Files:
  llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
  llvm/test/CodeGen/AMDGPU/GlobalISel/extractelement.i128.ll


Index: llvm/test/CodeGen/AMDGPU/GlobalISel/extractelement.i128.ll
===================================================================
--- llvm/test/CodeGen/AMDGPU/GlobalISel/extractelement.i128.ll
+++ llvm/test/CodeGen/AMDGPU/GlobalISel/extractelement.i128.ll
@@ -26,8 +26,8 @@
 ; GFX9-NEXT:    global_load_dwordx4 v[14:17], v[0:1], off offset:48
 ; GFX9-NEXT:    s_lshl_b32 s0, s2, 1
 ; GFX9-NEXT:    s_lshl_b32 s2, s0, 1
-; GFX9-NEXT:    s_set_gpr_idx_on s2, gpr_idx(SRC0)
 ; GFX9-NEXT:    s_waitcnt vmcnt(0)
+; GFX9-NEXT:    s_set_gpr_idx_on s2, gpr_idx(SRC0)
 ; GFX9-NEXT:    v_mov_b32_e32 v0, v2
 ; GFX9-NEXT:    v_mov_b32_e32 v1, v3
 ; GFX9-NEXT:    v_mov_b32_e32 v18, v2
Index: llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
+++ llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
@@ -1841,7 +1841,7 @@
     for (auto MI = MBB.begin(); MI != MBB.end(); ++MI) {
 
       // Unbundle instructions after the post-RA scheduler.
-      if (MI->isBundle()) {
+      if (MI->isBundle() && MI->mayLoadOrStore()) {
         MachineBasicBlock::instr_iterator II(MI->getIterator());
         for (MachineBasicBlock::instr_iterator I = ++II, E = MBB.instr_end();
              I != E && I->isBundledWithPred(); ++I) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D99061.332223.patch
Type: text/x-patch
Size: 1321 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210322/920834c2/attachment.bin>


More information about the llvm-commits mailing list