Skip to content

Commit bc1a6a2

Browse files
authored
AMDGPU: Add baseline tests for VGPR MFMA rewriting pass (#145023)
AMDGPU: Add baseline tests for VGPR MFMA rewriting pass Add baseline tests for a new pass that will rewrite VGPR MFMAs with copies to AV_* classes into the AGPR form. Add start of IR test that probably needs to be redone
1 parent cf3d136 commit bc1a6a2

File tree

4 files changed

+1058
-0
lines changed

4 files changed

+1058
-0
lines changed
Lines changed: 313 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,313 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
2+
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 -start-before=greedy,2 -stop-after=virtregrewriter,2 -o - %s | FileCheck %s
3+
4+
--- |
5+
6+
define amdgpu_kernel void @inflate_result_to_agpr__not_mfma() {
7+
ret void
8+
}
9+
10+
; FIXME: Need IR for amdgpu-waves-per-eu
11+
define amdgpu_kernel void @av_split_is_phi_def_crash() #0 {
12+
ret void
13+
}
14+
15+
define amdgpu_kernel void @copy_physreg_to_av_crash() #0 {
16+
ret void
17+
}
18+
19+
attributes #0 = { "amdgpu-wave-limiter"="true" "amdgpu-waves-per-eu"="8,8" }
20+
...
21+
22+
# Inflate pattern, except the defining instruction isn't an MFMA.
23+
---
24+
name: inflate_result_to_agpr__not_mfma
25+
tracksRegLiveness: true
26+
machineFunctionInfo:
27+
isEntryFunction: true
28+
stackPtrOffsetReg: '$sgpr32'
29+
occupancy: 10
30+
sgprForEXECCopy: '$sgpr100_sgpr101'
31+
body: |
32+
; CHECK-LABEL: name: inflate_result_to_agpr__not_mfma
33+
; CHECK: bb.0:
34+
; CHECK-NEXT: successors: %bb.1(0x80000000)
35+
; CHECK-NEXT: {{ $}}
36+
; CHECK-NEXT: S_NOP 0, implicit-def $agpr0
37+
; CHECK-NEXT: renamable $sgpr0 = S_MOV_B32 0
38+
; CHECK-NEXT: renamable $vgpr8 = V_MOV_B32_e32 0, implicit $exec
39+
; CHECK-NEXT: renamable $sgpr1 = COPY renamable $sgpr0
40+
; CHECK-NEXT: renamable $vgpr2_vgpr3 = COPY killed renamable $sgpr0_sgpr1
41+
; CHECK-NEXT: renamable $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc
42+
; CHECK-NEXT: dead renamable $vgpr9 = COPY renamable $vgpr8
43+
; CHECK-NEXT: {{ $}}
44+
; CHECK-NEXT: bb.1:
45+
; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)
46+
; CHECK-NEXT: liveins: $vcc, $vgpr2_vgpr3
47+
; CHECK-NEXT: {{ $}}
48+
; CHECK-NEXT: renamable $vgpr0_vgpr1 = GLOBAL_LOAD_DWORDX2 undef renamable $vgpr0_vgpr1, 0, 0, implicit $exec :: (load (s64), addrspace 1)
49+
; CHECK-NEXT: S_NOP 0, implicit-def renamable $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15, implicit renamable $vgpr2_vgpr3, implicit renamable $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
50+
; CHECK-NEXT: S_CBRANCH_VCCNZ %bb.1, implicit $vcc
51+
; CHECK-NEXT: S_BRANCH %bb.2
52+
; CHECK-NEXT: {{ $}}
53+
; CHECK-NEXT: bb.2:
54+
; CHECK-NEXT: liveins: $agpr0_agpr1_agpr2_agpr3_agpr4_agpr5_agpr6_agpr7_agpr8_agpr9_agpr10_agpr11_agpr12_agpr13_agpr14_agpr15:0x00000000FFFFFFFF
55+
; CHECK-NEXT: {{ $}}
56+
; CHECK-NEXT: S_NOP 0, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
57+
; CHECK-NEXT: S_NOP 0, implicit-def $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
58+
; CHECK-NEXT: S_NOP 0, implicit-def $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23
59+
; CHECK-NEXT: S_NOP 0, implicit-def $vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
60+
; CHECK-NEXT: S_NOP 0, implicit-def $vgpr32_vgpr33_vgpr34_vgpr35_vgpr36_vgpr37_vgpr38_vgpr39
61+
; CHECK-NEXT: S_NOP 0, implicit-def $vgpr40_vgpr41_vgpr42_vgpr43_vgpr44_vgpr45_vgpr46_vgpr47
62+
; CHECK-NEXT: S_NOP 0, implicit-def $vgpr48_vgpr49_vgpr50_vgpr51_vgpr52_vgpr53_vgpr54_vgpr55
63+
; CHECK-NEXT: S_NOP 0, implicit-def $vgpr56_vgpr57_vgpr58_vgpr59_vgpr60_vgpr61_vgpr62_vgpr63
64+
; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 0, implicit $exec
65+
; CHECK-NEXT: GLOBAL_STORE_DWORDX4_SADDR renamable $vgpr0, renamable $agpr8_agpr9_agpr10_agpr11, undef $sgpr0_sgpr1, 32, 0, implicit $exec :: (store (s128), align 32, addrspace 1)
66+
; CHECK-NEXT: GLOBAL_STORE_DWORDX4_SADDR renamable $vgpr0, renamable $agpr12_agpr13_agpr14_agpr15, undef $sgpr0_sgpr1, 48, 0, implicit $exec :: (store (s128), addrspace 1)
67+
; CHECK-NEXT: GLOBAL_STORE_DWORDX4_SADDR renamable $vgpr0, renamable $agpr0_agpr1_agpr2_agpr3, undef $sgpr0_sgpr1, 0, 0, implicit $exec :: (store (s128), align 128, addrspace 1)
68+
; CHECK-NEXT: GLOBAL_STORE_DWORDX4_SADDR killed renamable $vgpr0, killed renamable $agpr4_agpr5_agpr6_agpr7, killed undef $sgpr0_sgpr1, 16, 0, implicit $exec :: (store (s128), addrspace 1)
69+
; CHECK-NEXT: S_ENDPGM 0
70+
bb.0:
71+
S_NOP 0, implicit-def $agpr0
72+
renamable $sgpr0 = S_MOV_B32 0
73+
undef %0.sub8:vreg_512_align2 = V_MOV_B32_e32 0, implicit $exec
74+
renamable $sgpr1 = COPY renamable $sgpr0
75+
%1:vreg_64_align2 = COPY killed renamable $sgpr0_sgpr1
76+
renamable $vcc = S_AND_B64 $exec, -1, implicit-def dead $scc
77+
%0.sub9:vreg_512_align2 = COPY %0.sub8
78+
79+
bb.1:
80+
liveins: $vcc
81+
82+
undef %4.sub0_sub1:vreg_512_align2 = GLOBAL_LOAD_DWORDX2 undef %3:vreg_64_align2, 0, 0, implicit $exec :: (load (s64), addrspace 1)
83+
S_NOP 0, implicit-def %0:vreg_512_align2, implicit %1, implicit %4
84+
S_CBRANCH_VCCNZ %bb.1, implicit $vcc
85+
S_BRANCH %bb.2
86+
87+
bb.2:
88+
; No VGPRs available for %0
89+
S_NOP 0, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7
90+
S_NOP 0, implicit-def $vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15
91+
S_NOP 0, implicit-def $vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23
92+
S_NOP 0, implicit-def $vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31
93+
S_NOP 0, implicit-def $vgpr32_vgpr33_vgpr34_vgpr35_vgpr36_vgpr37_vgpr38_vgpr39
94+
S_NOP 0, implicit-def $vgpr40_vgpr41_vgpr42_vgpr43_vgpr44_vgpr45_vgpr46_vgpr47
95+
S_NOP 0, implicit-def $vgpr48_vgpr49_vgpr50_vgpr51_vgpr52_vgpr53_vgpr54_vgpr55
96+
S_NOP 0, implicit-def $vgpr56_vgpr57_vgpr58_vgpr59_vgpr60_vgpr61_vgpr62_vgpr63
97+
%2:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
98+
GLOBAL_STORE_DWORDX4_SADDR %2, %0.sub8_sub9_sub10_sub11, undef $sgpr0_sgpr1, 32, 0, implicit $exec :: (store (s128), align 32, addrspace 1)
99+
GLOBAL_STORE_DWORDX4_SADDR %2, %0.sub12_sub13_sub14_sub15, undef $sgpr0_sgpr1, 48, 0, implicit $exec :: (store (s128), addrspace 1)
100+
GLOBAL_STORE_DWORDX4_SADDR %2, %0.sub0_sub1_sub2_sub3, undef $sgpr0_sgpr1, 0, 0, implicit $exec :: (store (s128), align 128, addrspace 1)
101+
GLOBAL_STORE_DWORDX4_SADDR %2, %0.sub4_sub5_sub6_sub7, killed undef $sgpr0_sgpr1, 16, 0, implicit $exec :: (store (s128), addrspace 1)
102+
S_ENDPGM 0
103+
104+
...
105+
106+
---
107+
name: av_split_is_phi_def_crash
108+
tracksRegLiveness: true
109+
machineFunctionInfo:
110+
isEntryFunction: true
111+
waveLimiter: true
112+
hasSpilledSGPRs: true
113+
scratchRSrcReg: '$sgpr68_sgpr69_sgpr70_sgpr71'
114+
stackPtrOffsetReg: '$sgpr32'
115+
occupancy: 8
116+
wwmReservedRegs:
117+
- '$vgpr31'
118+
sgprForEXECCopy: '$sgpr72_sgpr73'
119+
body: |
120+
; CHECK-LABEL: name: av_split_is_phi_def_crash
121+
; CHECK: bb.0:
122+
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
123+
; CHECK-NEXT: liveins: $vgpr0, $sgpr2_sgpr3, $sgpr8_sgpr9
124+
; CHECK-NEXT: {{ $}}
125+
; CHECK-NEXT: renamable $vgpr8 = IMPLICIT_DEF
126+
; CHECK-NEXT: renamable $vgpr2_vgpr3 = V_MOV_B64_PSEUDO 0, implicit $exec
127+
; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 0, implicit $exec
128+
; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec
129+
; CHECK-NEXT: {{ $}}
130+
; CHECK-NEXT: bb.1:
131+
; CHECK-NEXT: successors: %bb.2(0x80000000)
132+
; CHECK-NEXT: liveins: $vgpr8, $vgpr0_vgpr1:0x0000000000000003
133+
; CHECK-NEXT: {{ $}}
134+
; CHECK-NEXT: renamable $vgpr2_vgpr3 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec
135+
; CHECK-NEXT: {{ $}}
136+
; CHECK-NEXT: bb.2:
137+
; CHECK-NEXT: successors: %bb.3(0x80000000)
138+
; CHECK-NEXT: liveins: $vgpr8, $vgpr31, $sgpr8_sgpr9, $vgpr0_vgpr1:0x0000000000000003, $vgpr2_vgpr3
139+
; CHECK-NEXT: {{ $}}
140+
; CHECK-NEXT: renamable $vgpr1 = COPY renamable $vgpr8
141+
; CHECK-NEXT: renamable $agpr0_agpr1 = COPY killed renamable $vgpr2_vgpr3
142+
; CHECK-NEXT: renamable $vgpr2 = COPY renamable $vgpr1
143+
; CHECK-NEXT: renamable $vgpr3 = COPY renamable $vgpr8
144+
; CHECK-NEXT: renamable $vgpr6 = COPY renamable $vgpr1
145+
; CHECK-NEXT: dead renamable $vgpr7 = COPY renamable $vgpr8
146+
; CHECK-NEXT: renamable $vgpr6 = COPY renamable $vgpr1
147+
; CHECK-NEXT: renamable $vgpr7 = COPY renamable $vgpr8
148+
; CHECK-NEXT: S_NOP 0
149+
; CHECK-NEXT: S_NOP 0
150+
; CHECK-NEXT: S_NOP 0
151+
; CHECK-NEXT: S_NOP 0
152+
; CHECK-NEXT: S_NOP 0
153+
; CHECK-NEXT: S_NOP 0
154+
; CHECK-NEXT: S_NOP 0
155+
; CHECK-NEXT: S_NOP 0
156+
; CHECK-NEXT: S_NOP 0
157+
; CHECK-NEXT: S_NOP 0
158+
; CHECK-NEXT: S_NOP 0
159+
; CHECK-NEXT: S_NOP 0
160+
; CHECK-NEXT: S_NOP 0
161+
; CHECK-NEXT: S_NOP 0
162+
; CHECK-NEXT: S_NOP 0
163+
; CHECK-NEXT: S_NOP 0
164+
; CHECK-NEXT: S_NOP 0
165+
; CHECK-NEXT: S_NOP 0
166+
; CHECK-NEXT: S_NOP 0
167+
; CHECK-NEXT: S_NOP 0
168+
; CHECK-NEXT: S_NOP 0
169+
; CHECK-NEXT: S_NOP 0
170+
; CHECK-NEXT: S_NOP 0
171+
; CHECK-NEXT: S_NOP 0
172+
; CHECK-NEXT: S_NOP 0
173+
; CHECK-NEXT: S_NOP 0
174+
; CHECK-NEXT: S_NOP 0
175+
; CHECK-NEXT: S_NOP 0
176+
; CHECK-NEXT: renamable $vgpr10_vgpr11 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
177+
; CHECK-NEXT: renamable $vgpr12_vgpr13 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
178+
; CHECK-NEXT: renamable $vgpr14_vgpr15 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
179+
; CHECK-NEXT: renamable $vgpr16_vgpr17 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
180+
; CHECK-NEXT: renamable $vgpr18_vgpr19 = V_ADD_F64_e64 0, undef $sgpr2_sgpr3, 0, 0, 0, 0, implicit $mode, implicit $exec
181+
; CHECK-NEXT: renamable $vgpr20_vgpr21 = V_ADD_F64_e64 0, undef $sgpr28_sgpr29, 0, 0, 0, 0, implicit $mode, implicit $exec
182+
; CHECK-NEXT: renamable $vgpr22_vgpr23 = V_ADD_F64_e64 0, undef $sgpr24_sgpr25, 0, 0, 0, 0, implicit $mode, implicit $exec
183+
; CHECK-NEXT: renamable $vgpr24_vgpr25 = V_ADD_F64_e64 0, undef $sgpr30_sgpr31, 0, 0, 0, 0, implicit $mode, implicit $exec
184+
; CHECK-NEXT: renamable $vgpr26_vgpr27 = V_ADD_F64_e64 0, undef $sgpr26_sgpr27, 0, 0, 0, 0, implicit $mode, implicit $exec
185+
; CHECK-NEXT: renamable $vgpr29 = COPY renamable $vgpr12
186+
; CHECK-NEXT: renamable $vgpr28 = COPY renamable $vgpr12
187+
; CHECK-NEXT: renamable $vgpr4_vgpr5 = V_MOV_B64_PSEUDO 0, implicit $exec
188+
; CHECK-NEXT: renamable $vgpr4_vgpr5 = V_ADD_F64_e64 0, killed $vgpr28_vgpr29, 0, killed $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec
189+
; CHECK-NEXT: renamable $vgpr28_vgpr29 = COPY killed renamable $agpr0_agpr1
190+
; CHECK-NEXT: renamable $vgpr4_vgpr5 = V_ADD_F64_e64 0, killed $vgpr4_vgpr5, 0, killed $vgpr28_vgpr29, 0, 0, implicit $mode, implicit $exec
191+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr11
192+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr14
193+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr20
194+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr24
195+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr26
196+
; CHECK-NEXT: renamable $vgpr4 = COPY killed renamable $vgpr6
197+
; CHECK-NEXT: S_NOP 0
198+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr16
199+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr22
200+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr18
201+
; CHECK-NEXT: renamable $vgpr2 = COPY killed renamable $vgpr1
202+
; CHECK-NEXT: dead renamable $vgpr3 = COPY killed renamable $vgpr8
203+
; CHECK-NEXT: dead renamable $vgpr1 = COPY renamable $vgpr0
204+
; CHECK-NEXT: {{ $}}
205+
; CHECK-NEXT: bb.3:
206+
; CHECK-NEXT: S_ENDPGM 0
207+
bb.0:
208+
liveins: $vgpr0, $sgpr8_sgpr9, $sgpr2_sgpr3, $sgpr8_sgpr9
209+
210+
%0:vgpr_32 = IMPLICIT_DEF
211+
%1:vreg_64_align2 = V_MOV_B64_PSEUDO 0, implicit $exec
212+
undef %2.sub0:vreg_64_align2 = V_MOV_B32_e32 0, implicit $exec
213+
S_CBRANCH_EXECZ %bb.2, implicit $exec
214+
215+
bb.1:
216+
%1:vreg_64_align2 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec
217+
218+
bb.2:
219+
liveins: $vgpr31, $sgpr8_sgpr9
220+
221+
%3:vgpr_32 = COPY %0
222+
%4:vgpr_32 = COPY %0
223+
undef %5.sub0:vreg_64_align2 = COPY %3
224+
%5.sub1:vreg_64_align2 = COPY %4
225+
undef %6.sub0:vreg_64_align2 = COPY %3
226+
dead %6.sub1:vreg_64_align2 = COPY %4
227+
undef %7.sub0:vreg_64_align2 = COPY %3
228+
%7.sub1:vreg_64_align2 = COPY %4
229+
S_NOP 0
230+
S_NOP 0
231+
S_NOP 0
232+
S_NOP 0
233+
S_NOP 0
234+
S_NOP 0
235+
S_NOP 0
236+
S_NOP 0
237+
S_NOP 0
238+
S_NOP 0
239+
S_NOP 0
240+
S_NOP 0
241+
S_NOP 0
242+
S_NOP 0
243+
S_NOP 0
244+
S_NOP 0
245+
S_NOP 0
246+
S_NOP 0
247+
S_NOP 0
248+
S_NOP 0
249+
S_NOP 0
250+
S_NOP 0
251+
S_NOP 0
252+
S_NOP 0
253+
S_NOP 0
254+
S_NOP 0
255+
S_NOP 0
256+
S_NOP 0
257+
%8:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
258+
%9:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
259+
%10:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
260+
%11:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
261+
%12:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr2_sgpr3, 0, 0, 0, 0, implicit $mode, implicit $exec
262+
%13:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr28_sgpr29, 0, 0, 0, 0, implicit $mode, implicit $exec
263+
%14:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr24_sgpr25, 0, 0, 0, 0, implicit $mode, implicit $exec
264+
%15:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr30_sgpr31, 0, 0, 0, 0, implicit $mode, implicit $exec
265+
%16:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr26_sgpr27, 0, 0, 0, 0, implicit $mode, implicit $exec
266+
undef %17.sub1:vreg_64_align2 = COPY %9.sub0
267+
%17.sub0:vreg_64_align2 = COPY %9.sub0
268+
%18:vreg_64_align2 = V_MOV_B64_PSEUDO 0, implicit $exec
269+
%19:vreg_64_align2 = V_ADD_F64_e64 0, %17, 0, %18, 0, 0, implicit $mode, implicit $exec
270+
%20:vreg_64_align2 = V_ADD_F64_e64 0, %19, 0, %1, 0, 0, implicit $mode, implicit $exec
271+
dead %21:vgpr_32 = COPY %20.sub0
272+
dead %22:vgpr_32 = COPY %8.sub1
273+
dead %23:vgpr_32 = COPY %10.sub0
274+
dead %24:vgpr_32 = COPY %13.sub0
275+
dead %25:vgpr_32 = COPY %15.sub0
276+
dead %26:vgpr_32 = COPY %16.sub0
277+
%27:vgpr_32 = COPY %7.sub0
278+
%28:vgpr_32 = COPY %27
279+
S_NOP 0
280+
dead %29:vgpr_32 = COPY %11.sub0
281+
dead %30:vgpr_32 = COPY %14.sub0
282+
dead %31:vgpr_32 = COPY %12.sub0
283+
%32:vreg_64_align2 = COPY %5
284+
undef %33.sub0:vreg_64_align2 = COPY %3
285+
dead %33.sub1:vreg_64_align2 = COPY %4
286+
dead undef %34.sub1:vreg_64_align2 = COPY %9.sub1
287+
dead %2.sub1:vreg_64_align2 = COPY %2.sub0
288+
289+
bb.3:
290+
S_ENDPGM 0
291+
292+
...
293+
294+
---
295+
name: copy_physreg_to_av_crash
296+
tracksRegLiveness: true
297+
registers:
298+
- { id: 0, class: av_32, preferred-register: '$agpr0' }
299+
machineFunctionInfo:
300+
isEntryFunction: true
301+
stackPtrOffsetReg: '$sgpr32'
302+
occupancy: 10
303+
body: |
304+
bb.0:
305+
liveins: $vgpr0
306+
; CHECK-LABEL: name: copy_physreg_to_av_crash
307+
; CHECK: liveins: $vgpr0
308+
; CHECK-NEXT: {{ $}}
309+
; CHECK-NEXT: renamable $agpr0 = COPY $vgpr0
310+
%0:av_32 = COPY $vgpr0
311+
$agpr0 = COPY %0
312+
313+
...

0 commit comments

Comments
 (0)