Skip to content

Commit a34f1fa

Browse files
committed
AMDGPU: Add baseline test for machinelicm handling
1 parent 114a59d commit a34f1fa

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 4
2+
# RUN: llc -mtriple=amdgcn -run-pass=early-machinelicm -simplify-mir -o - %s | FileCheck %s
3+
4+
# Test to check machine LICM does not hoist convergent instructions,
5+
# DS_PERMUTE_B32 in this example.
6+
7+
---
8+
name: licm_reg_sequence
9+
body: |
10+
; CHECK-LABEL: name: licm_reg_sequence
11+
; CHECK: bb.0:
12+
; CHECK-NEXT: liveins: $vgpr0, $vgpr1
13+
; CHECK-NEXT: {{ $}}
14+
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
15+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
16+
; CHECK-NEXT: {{ $}}
17+
; CHECK-NEXT: bb.1:
18+
; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1
19+
; CHECK-NEXT: S_NOP 0, implicit [[REG_SEQUENCE]]
20+
; CHECK-NEXT: S_CBRANCH_SCC1 %bb.1, implicit undef $scc
21+
; CHECK-NEXT: S_BRANCH %bb.2
22+
; CHECK-NEXT: {{ $}}
23+
; CHECK-NEXT: bb.2:
24+
; CHECK-NEXT: $vgpr0 = COPY [[REG_SEQUENCE]]
25+
; CHECK-NEXT: S_ENDPGM 0
26+
bb.0:
27+
liveins: $vgpr0, $vgpr1
28+
successors: %bb.1
29+
30+
%0:vgpr_32 = COPY $vgpr0
31+
%1:vgpr_32 = COPY $vgpr1
32+
33+
bb.1:
34+
successors: %bb.1, %bb.2
35+
36+
%3:vreg_64 = REG_SEQUENCE %0, %subreg.sub0, %1, %subreg.sub1
37+
S_NOP 0, implicit %3
38+
S_CBRANCH_SCC1 %bb.1, implicit undef $scc
39+
S_BRANCH %bb.2
40+
41+
bb.2:
42+
$vgpr0 = COPY %3
43+
S_ENDPGM 0
44+
45+
...
46+
47+
# Don't bother handling reg_sequence with physreg uses (is there any
48+
# reason for these to be legal)?
49+
---
50+
name: licm_reg_sequence_physreg_use
51+
body: |
52+
; CHECK-LABEL: name: licm_reg_sequence_physreg_use
53+
; CHECK: bb.0:
54+
; CHECK-NEXT: liveins: $vgpr0, $vgpr1
55+
; CHECK-NEXT: {{ $}}
56+
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
57+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
58+
; CHECK-NEXT: {{ $}}
59+
; CHECK-NEXT: bb.1:
60+
; CHECK-NEXT: liveins: $vgpr0
61+
; CHECK-NEXT: {{ $}}
62+
; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY]], %subreg.sub0, $vgpr1, %subreg.sub1
63+
; CHECK-NEXT: S_NOP 0, implicit [[REG_SEQUENCE]]
64+
; CHECK-NEXT: S_CBRANCH_SCC1 %bb.1, implicit undef $scc
65+
; CHECK-NEXT: S_BRANCH %bb.2
66+
; CHECK-NEXT: {{ $}}
67+
; CHECK-NEXT: bb.2:
68+
; CHECK-NEXT: $vgpr0 = COPY [[REG_SEQUENCE]]
69+
; CHECK-NEXT: S_ENDPGM 0
70+
bb.0:
71+
liveins: $vgpr0, $vgpr1
72+
successors: %bb.1
73+
74+
%0:vgpr_32 = COPY $vgpr0
75+
%1:vgpr_32 = COPY $vgpr1
76+
77+
bb.1:
78+
successors: %bb.1, %bb.2
79+
liveins: $vgpr0
80+
81+
%3:vreg_64 = REG_SEQUENCE %0, %subreg.sub0, $vgpr1, %subreg.sub1
82+
S_NOP 0, implicit %3
83+
S_CBRANCH_SCC1 %bb.1, implicit undef $scc
84+
S_BRANCH %bb.2
85+
86+
bb.2:
87+
$vgpr0 = COPY %3
88+
S_ENDPGM 0
89+
90+
...
91+
92+
---
93+
name: licm_insert_subreg
94+
body: |
95+
; CHECK-LABEL: name: licm_insert_subreg
96+
; CHECK: bb.0:
97+
; CHECK-NEXT: liveins: $vgpr0, $vgpr1
98+
; CHECK-NEXT: {{ $}}
99+
; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
100+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
101+
; CHECK-NEXT: [[DEF:%[0-9]+]]:vreg_64 = IMPLICIT_DEF
102+
; CHECK-NEXT: [[INSERT_SUBREG:%[0-9]+]]:vreg_64 = INSERT_SUBREG [[DEF]], [[COPY]], %subreg.sub0
103+
; CHECK-NEXT: [[INSERT_SUBREG1:%[0-9]+]]:vreg_64 = INSERT_SUBREG [[INSERT_SUBREG]], [[COPY1]], %subreg.sub1
104+
; CHECK-NEXT: {{ $}}
105+
; CHECK-NEXT: bb.1:
106+
; CHECK-NEXT: S_NOP 0, implicit [[INSERT_SUBREG1]]
107+
; CHECK-NEXT: S_CBRANCH_SCC1 %bb.1, implicit undef $scc
108+
; CHECK-NEXT: S_BRANCH %bb.2
109+
; CHECK-NEXT: {{ $}}
110+
; CHECK-NEXT: bb.2:
111+
; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT_SUBREG1]]
112+
; CHECK-NEXT: S_ENDPGM 0
113+
bb.0:
114+
liveins: $vgpr0, $vgpr1
115+
successors: %bb.1
116+
117+
%0:vgpr_32 = COPY $vgpr0
118+
%1:vgpr_32 = COPY $vgpr1
119+
120+
bb.1:
121+
successors: %bb.1, %bb.2
122+
123+
%3:vreg_64 = IMPLICIT_DEF
124+
%4:vreg_64 = INSERT_SUBREG %3, %0, %subreg.sub0
125+
%5:vreg_64 = INSERT_SUBREG %4, %1, %subreg.sub1
126+
S_NOP 0, implicit %5
127+
S_CBRANCH_SCC1 %bb.1, implicit undef $scc
128+
S_BRANCH %bb.2
129+
130+
bb.2:
131+
$vgpr0_vgpr1 = COPY %5
132+
S_ENDPGM 0
133+
134+
...

0 commit comments

Comments
 (0)