Skip to content

Commit 137f336

Browse files
committed
Add crashing test from phi def
1 parent 2aa00c5 commit 137f336

File tree

1 file changed

+202
-0
lines changed

1 file changed

+202
-0
lines changed

llvm/test/CodeGen/AMDGPU/inflate-reg-class-vgpr-mfma-to-agpr-negative-tests.mir

Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
22
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 -start-before=greedy,2 -stop-after=virtregrewriter,2 -o - %s | FileCheck %s
33

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+
attributes #0 = { "amdgpu-wave-limiter"="true" "amdgpu-waves-per-eu"="8,8" }
16+
...
17+
418
# Inflate pattern, except the defining instruction isn't an MFMA.
519
---
620
name: inflate_result_to_agpr__not_mfma
@@ -84,3 +98,191 @@ body: |
8498
S_ENDPGM 0
8599
86100
...
101+
102+
---
103+
name: av_split_is_phi_def_crash
104+
tracksRegLiveness: true
105+
machineFunctionInfo:
106+
isEntryFunction: true
107+
waveLimiter: true
108+
hasSpilledSGPRs: true
109+
scratchRSrcReg: '$sgpr68_sgpr69_sgpr70_sgpr71'
110+
stackPtrOffsetReg: '$sgpr32'
111+
occupancy: 8
112+
wwmReservedRegs:
113+
- '$vgpr31'
114+
sgprForEXECCopy: '$sgpr72_sgpr73'
115+
body: |
116+
; CHECK-LABEL: name: av_split_is_phi_def_crash
117+
; CHECK: bb.0:
118+
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
119+
; CHECK-NEXT: liveins: $vgpr0, $sgpr2_sgpr3, $sgpr8_sgpr9
120+
; CHECK-NEXT: {{ $}}
121+
; CHECK-NEXT: renamable $vgpr8 = IMPLICIT_DEF
122+
; CHECK-NEXT: renamable $vgpr2_vgpr3 = V_MOV_B64_PSEUDO 0, implicit $exec
123+
; CHECK-NEXT: renamable $vgpr0 = V_MOV_B32_e32 0, implicit $exec
124+
; CHECK-NEXT: S_CBRANCH_EXECZ %bb.2, implicit $exec
125+
; CHECK-NEXT: {{ $}}
126+
; CHECK-NEXT: bb.1:
127+
; CHECK-NEXT: successors: %bb.2(0x80000000)
128+
; CHECK-NEXT: liveins: $vgpr8, $vgpr0_vgpr1:0x0000000000000003
129+
; CHECK-NEXT: {{ $}}
130+
; CHECK-NEXT: renamable $vgpr2_vgpr3 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec
131+
; CHECK-NEXT: {{ $}}
132+
; CHECK-NEXT: bb.2:
133+
; CHECK-NEXT: successors: %bb.3(0x80000000)
134+
; CHECK-NEXT: liveins: $vgpr8, $vgpr31, $sgpr8_sgpr9, $vgpr0_vgpr1:0x0000000000000003, $vgpr2_vgpr3
135+
; CHECK-NEXT: {{ $}}
136+
; CHECK-NEXT: renamable $vgpr1 = COPY renamable $vgpr8
137+
; CHECK-NEXT: renamable $agpr0_agpr1 = COPY killed renamable $vgpr2_vgpr3
138+
; CHECK-NEXT: renamable $vgpr2 = COPY renamable $vgpr1
139+
; CHECK-NEXT: renamable $vgpr3 = COPY renamable $vgpr8
140+
; CHECK-NEXT: renamable $vgpr6 = COPY renamable $vgpr1
141+
; CHECK-NEXT: dead renamable $vgpr7 = COPY renamable $vgpr8
142+
; CHECK-NEXT: renamable $vgpr6 = COPY renamable $vgpr1
143+
; CHECK-NEXT: renamable $vgpr7 = COPY renamable $vgpr8
144+
; CHECK-NEXT: S_NOP 0
145+
; CHECK-NEXT: S_NOP 0
146+
; CHECK-NEXT: S_NOP 0
147+
; CHECK-NEXT: S_NOP 0
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: renamable $vgpr10_vgpr11 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
173+
; CHECK-NEXT: renamable $vgpr12_vgpr13 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
174+
; CHECK-NEXT: renamable $vgpr14_vgpr15 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
175+
; CHECK-NEXT: renamable $vgpr16_vgpr17 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
176+
; CHECK-NEXT: renamable $vgpr18_vgpr19 = V_ADD_F64_e64 0, undef $sgpr2_sgpr3, 0, 0, 0, 0, implicit $mode, implicit $exec
177+
; CHECK-NEXT: renamable $vgpr20_vgpr21 = V_ADD_F64_e64 0, undef $sgpr28_sgpr29, 0, 0, 0, 0, implicit $mode, implicit $exec
178+
; CHECK-NEXT: renamable $vgpr22_vgpr23 = V_ADD_F64_e64 0, undef $sgpr24_sgpr25, 0, 0, 0, 0, implicit $mode, implicit $exec
179+
; CHECK-NEXT: renamable $vgpr24_vgpr25 = V_ADD_F64_e64 0, undef $sgpr30_sgpr31, 0, 0, 0, 0, implicit $mode, implicit $exec
180+
; CHECK-NEXT: renamable $vgpr26_vgpr27 = V_ADD_F64_e64 0, undef $sgpr26_sgpr27, 0, 0, 0, 0, implicit $mode, implicit $exec
181+
; CHECK-NEXT: renamable $vgpr29 = COPY renamable $vgpr12
182+
; CHECK-NEXT: renamable $vgpr28 = COPY renamable $vgpr12
183+
; CHECK-NEXT: renamable $vgpr4_vgpr5 = V_MOV_B64_PSEUDO 0, implicit $exec
184+
; CHECK-NEXT: renamable $vgpr4_vgpr5 = V_ADD_F64_e64 0, killed $vgpr28_vgpr29, 0, killed $vgpr4_vgpr5, 0, 0, implicit $mode, implicit $exec
185+
; CHECK-NEXT: renamable $vgpr28_vgpr29 = COPY killed renamable $agpr0_agpr1
186+
; CHECK-NEXT: renamable $vgpr4_vgpr5 = V_ADD_F64_e64 0, killed $vgpr4_vgpr5, 0, killed $vgpr28_vgpr29, 0, 0, implicit $mode, implicit $exec
187+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr11
188+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr14
189+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr20
190+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr24
191+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr26
192+
; CHECK-NEXT: renamable $vgpr4 = COPY killed renamable $vgpr6
193+
; CHECK-NEXT: S_NOP 0
194+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr16
195+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr22
196+
; CHECK-NEXT: dead renamable $vgpr4 = COPY killed renamable $vgpr18
197+
; CHECK-NEXT: renamable $vgpr2 = COPY killed renamable $vgpr1
198+
; CHECK-NEXT: dead renamable $vgpr3 = COPY killed renamable $vgpr8
199+
; CHECK-NEXT: dead renamable $vgpr1 = COPY renamable $vgpr0
200+
; CHECK-NEXT: {{ $}}
201+
; CHECK-NEXT: bb.3:
202+
; CHECK-NEXT: S_ENDPGM 0
203+
bb.0:
204+
liveins: $vgpr0, $sgpr8_sgpr9, $sgpr2_sgpr3, $sgpr8_sgpr9
205+
206+
%0:vgpr_32 = IMPLICIT_DEF
207+
%1:vreg_64_align2 = V_MOV_B64_PSEUDO 0, implicit $exec
208+
undef %2.sub0:vreg_64_align2 = V_MOV_B32_e32 0, implicit $exec
209+
S_CBRANCH_EXECZ %bb.2, implicit $exec
210+
211+
bb.1:
212+
%1:vreg_64_align2 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec
213+
214+
bb.2:
215+
liveins: $vgpr31, $sgpr8_sgpr9
216+
217+
%3:vgpr_32 = COPY %0
218+
%4:vgpr_32 = COPY %0
219+
undef %5.sub0:vreg_64_align2 = COPY %3
220+
%5.sub1:vreg_64_align2 = COPY %4
221+
undef %6.sub0:vreg_64_align2 = COPY %3
222+
dead %6.sub1:vreg_64_align2 = COPY %4
223+
undef %7.sub0:vreg_64_align2 = COPY %3
224+
%7.sub1:vreg_64_align2 = COPY %4
225+
S_NOP 0
226+
S_NOP 0
227+
S_NOP 0
228+
S_NOP 0
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+
%8:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
254+
%9:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
255+
%10:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
256+
%11:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr6_sgpr7, 0, 0, 0, 0, implicit $mode, implicit $exec
257+
%12:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr2_sgpr3, 0, 0, 0, 0, implicit $mode, implicit $exec
258+
%13:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr28_sgpr29, 0, 0, 0, 0, implicit $mode, implicit $exec
259+
%14:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr24_sgpr25, 0, 0, 0, 0, implicit $mode, implicit $exec
260+
%15:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr30_sgpr31, 0, 0, 0, 0, implicit $mode, implicit $exec
261+
%16:vreg_64_align2 = V_ADD_F64_e64 0, undef $sgpr26_sgpr27, 0, 0, 0, 0, implicit $mode, implicit $exec
262+
undef %17.sub1:vreg_64_align2 = COPY %9.sub0
263+
%17.sub0:vreg_64_align2 = COPY %9.sub0
264+
%18:vreg_64_align2 = V_MOV_B64_PSEUDO 0, implicit $exec
265+
%19:vreg_64_align2 = V_ADD_F64_e64 0, %17, 0, %18, 0, 0, implicit $mode, implicit $exec
266+
%20:vreg_64_align2 = V_ADD_F64_e64 0, %19, 0, %1, 0, 0, implicit $mode, implicit $exec
267+
dead %21:vgpr_32 = COPY %20.sub0
268+
dead %22:vgpr_32 = COPY %8.sub1
269+
dead %23:vgpr_32 = COPY %10.sub0
270+
dead %24:vgpr_32 = COPY %13.sub0
271+
dead %25:vgpr_32 = COPY %15.sub0
272+
dead %26:vgpr_32 = COPY %16.sub0
273+
%27:vgpr_32 = COPY %7.sub0
274+
%28:vgpr_32 = COPY %27
275+
S_NOP 0
276+
dead %29:vgpr_32 = COPY %11.sub0
277+
dead %30:vgpr_32 = COPY %14.sub0
278+
dead %31:vgpr_32 = COPY %12.sub0
279+
%32:vreg_64_align2 = COPY %5
280+
undef %33.sub0:vreg_64_align2 = COPY %3
281+
dead %33.sub1:vreg_64_align2 = COPY %4
282+
dead undef %34.sub1:vreg_64_align2 = COPY %9.sub1
283+
dead %2.sub1:vreg_64_align2 = COPY %2.sub0
284+
285+
bb.3:
286+
S_ENDPGM 0
287+
288+
...

0 commit comments

Comments
 (0)