Skip to content

Commit dbce713

Browse files
authored
[AMDGPU] Skip debug instructions when eliminating S_SET_GPR_IDX_ON/OFF (llvm#160715)
1 parent 0a95a86 commit dbce713

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

llvm/lib/Target/AMDGPU/SIPreEmitPeephole.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ bool SIPreEmitPeephole::optimizeSetGPR(MachineInstr &First,
296296
for (MachineBasicBlock::instr_iterator I = std::next(First.getIterator()),
297297
E = MI.getIterator();
298298
I != E; ++I) {
299-
if (I->isBundle())
299+
if (I->isBundle() || I->isDebugInstr())
300300
continue;
301301
switch (I->getOpcode()) {
302302
case AMDGPU::S_SET_GPR_IDX_MODE:

llvm/test/CodeGen/AMDGPU/set-gpr-idx-peephole.mir

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
22
# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass si-pre-emit-peephole -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s -implicit-check-not=S_SET_GPR_IDX
3+
# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass si-pre-emit-peephole -verify-machineinstrs -o - %s -debugify-and-strip-all-safe | FileCheck -check-prefix=GCN %s -implicit-check-not=S_SET_GPR_IDX
34
# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -passes si-pre-emit-peephole -o - %s | FileCheck -check-prefix=GCN %s -implicit-check-not=S_SET_GPR_IDX
45

56
---
@@ -40,6 +41,27 @@ body: |
4041
S_SET_GPR_IDX_OFF implicit-def $mode, implicit $mode
4142
...
4243

44+
---
45+
name: meta_in_between
46+
body: |
47+
bb.0:
48+
; GCN-LABEL: name: meta_in_between
49+
; GCN: S_SET_GPR_IDX_ON $sgpr2, 1, implicit-def $m0, implicit-def $mode, implicit undef $m0, implicit $mode
50+
; GCN-NEXT: $vgpr16 = V_MOV_B32_indirect_read undef $vgpr1, implicit $exec, implicit $m0, implicit $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
51+
; GCN-NEXT: KILL $sgpr0
52+
; GCN-NEXT: $sgpr0 = IMPLICIT_DEF
53+
; GCN-NEXT: $vgpr15 = V_MOV_B32_indirect_read undef $vgpr0, implicit $exec, implicit $m0, implicit killed $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
54+
; GCN-NEXT: S_SET_GPR_IDX_OFF implicit-def $mode, implicit $mode
55+
S_SET_GPR_IDX_ON $sgpr2, 1, implicit-def $m0, implicit-def $mode, implicit undef $m0, implicit $mode
56+
$vgpr16 = V_MOV_B32_indirect_read undef $vgpr1, implicit $exec, implicit $m0, implicit $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
57+
S_SET_GPR_IDX_OFF implicit-def $mode, implicit $mode
58+
KILL $sgpr0
59+
$sgpr0 = IMPLICIT_DEF
60+
S_SET_GPR_IDX_ON killed $sgpr2, 1, implicit-def $m0, implicit-def $mode, implicit undef $m0, implicit $mode
61+
$vgpr15 = V_MOV_B32_indirect_read undef $vgpr0, implicit $exec, implicit $m0, implicit killed $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
62+
S_SET_GPR_IDX_OFF implicit-def $mode, implicit $mode
63+
...
64+
4365
---
4466
name: valu_write_in_between
4567
body: |

0 commit comments

Comments
 (0)