Skip to content

Commit 5661c17

Browse files
committed
[AIEX] Add a base test for store recombination
1 parent 4ff97cf commit 5661c17

File tree

1 file changed

+373
-0
lines changed

1 file changed

+373
-0
lines changed
Lines changed: 373 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,373 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2+
#
3+
# This file is licensed under the Apache License v2.0 with LLVM Exceptions.
4+
# See https://llvm.org/LICENSE.txt for license information.
5+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
#
7+
# (c) Copyright 2025 Advanced Micro Devices, Inc. or its affiliates
8+
# RUN: llc -mtriple aie2 -run-pass=aie2-prelegalizer-combiner %s -verify-machineinstrs -o - | FileCheck %s
9+
10+
11+
---
12+
name: combine_to_s16
13+
alignment: 16
14+
tracksRegLiveness: true
15+
body: |
16+
bb.0:
17+
liveins: $p0
18+
19+
; CHECK-LABEL: name: combine_to_s16
20+
; CHECK: liveins: $p0
21+
; CHECK-NEXT: {{ $}}
22+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
23+
; CHECK-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 0
24+
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s20) = G_CONSTANT i20 72
25+
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C1]](s20)
26+
; CHECK-NEXT: G_STORE [[C]](s8), [[PTR_ADD]](p0) :: (store (s8), align 4)
27+
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s20) = G_CONSTANT i20 73
28+
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C2]](s20)
29+
; CHECK-NEXT: G_STORE [[C]](s8), [[PTR_ADD1]](p0) :: (store (s8))
30+
; CHECK-NEXT: PseudoRET implicit $lr
31+
%84:_(p0) = COPY $p0
32+
%0:_(s32) = G_CONSTANT i32 0
33+
%82:_(s8) = G_CONSTANT i8 0
34+
%89:_(s20) = G_CONSTANT i20 72
35+
%90:_(p0) = nuw G_PTR_ADD %84, %89(s20)
36+
G_STORE %82(s8), %90(p0) :: (store (s8), align 4)
37+
%91:_(s20) = G_CONSTANT i20 73
38+
%92:_(p0) = nuw G_PTR_ADD %84, %91(s20)
39+
G_STORE %82(s8), %92(p0) :: (store (s8))
40+
PseudoRET implicit $lr
41+
42+
...
43+
44+
---
45+
name: combine_to_s32
46+
alignment: 16
47+
tracksRegLiveness: true
48+
body: |
49+
bb.0:
50+
liveins: $p0
51+
52+
; CHECK-LABEL: name: combine_to_s32
53+
; CHECK: liveins: $p0
54+
; CHECK-NEXT: {{ $}}
55+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
56+
; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0
57+
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s20) = G_CONSTANT i20 72
58+
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C1]](s20)
59+
; CHECK-NEXT: G_STORE [[C]](s16), [[PTR_ADD]](p0) :: (store (s16), align 4)
60+
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s20) = G_CONSTANT i20 74
61+
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C2]](s20)
62+
; CHECK-NEXT: G_STORE [[C]](s16), [[PTR_ADD1]](p0) :: (store (s16))
63+
; CHECK-NEXT: PseudoRET implicit $lr
64+
%84:_(p0) = COPY $p0
65+
%0:_(s32) = G_CONSTANT i32 0
66+
%82:_(s16) = G_CONSTANT i16 0
67+
%89:_(s20) = G_CONSTANT i20 72
68+
%90:_(p0) = nuw G_PTR_ADD %84, %89(s20)
69+
G_STORE %82(s16), %90(p0) :: (store (s16), align 4)
70+
%91:_(s20) = G_CONSTANT i20 74
71+
%92:_(p0) = nuw G_PTR_ADD %84, %91(s20)
72+
G_STORE %82(s16), %92(p0) :: (store (s16))
73+
PseudoRET implicit $lr
74+
75+
...
76+
77+
---
78+
name: combine_to_s32_mixed
79+
alignment: 16
80+
tracksRegLiveness: true
81+
body: |
82+
bb.0:
83+
liveins: $p0
84+
85+
; CHECK-LABEL: name: combine_to_s32_mixed
86+
; CHECK: liveins: $p0
87+
; CHECK-NEXT: {{ $}}
88+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
89+
; CHECK-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 0
90+
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 0
91+
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s20) = G_CONSTANT i20 72
92+
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C2]](s20)
93+
; CHECK-NEXT: G_STORE [[C]](s8), [[PTR_ADD]](p0) :: (store (s8), align 4)
94+
; CHECK-NEXT: [[C3:%[0-9]+]]:_(s20) = G_CONSTANT i20 73
95+
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C3]](s20)
96+
; CHECK-NEXT: G_STORE [[C1]](s16), [[PTR_ADD1]](p0) :: (store (s16))
97+
; CHECK-NEXT: [[C4:%[0-9]+]]:_(s20) = G_CONSTANT i20 75
98+
; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C4]](s20)
99+
; CHECK-NEXT: G_STORE [[C]](s8), [[PTR_ADD2]](p0) :: (store (s8))
100+
; CHECK-NEXT: PseudoRET implicit $lr
101+
%84:_(p0) = COPY $p0
102+
%0:_(s32) = G_CONSTANT i32 0
103+
%82:_(s8) = G_CONSTANT i8 0
104+
%13:_(s16) = G_CONSTANT i16 0
105+
%89:_(s20) = G_CONSTANT i20 72
106+
%90:_(p0) = nuw G_PTR_ADD %84, %89(s20)
107+
G_STORE %82(s8), %90(p0) :: (store (s8), align 4)
108+
%91:_(s20) = G_CONSTANT i20 73
109+
%92:_(p0) = nuw G_PTR_ADD %84, %91(s20)
110+
G_STORE %13(s16), %92(p0) :: (store (s16))
111+
%95:_(s20) = G_CONSTANT i20 75
112+
%96:_(p0) = nuw G_PTR_ADD %84, %95(s20)
113+
G_STORE %82(s8), %96(p0) :: (store (s8))
114+
PseudoRET implicit $lr
115+
116+
...
117+
118+
---
119+
name: combine_to_vector
120+
alignment: 16
121+
tracksRegLiveness: true
122+
body: |
123+
bb.0:
124+
liveins: $p0
125+
126+
; CHECK-LABEL: name: combine_to_vector
127+
; CHECK: liveins: $p0
128+
; CHECK-NEXT: {{ $}}
129+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
130+
; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
131+
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s20) = G_CONSTANT i20 80
132+
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C1]](s20)
133+
; CHECK-NEXT: G_STORE [[C]](s32), [[PTR_ADD]](p0) :: (store (s32), align 16)
134+
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s20) = G_CONSTANT i20 84
135+
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C2]](s20)
136+
; CHECK-NEXT: G_STORE [[C]](s32), [[PTR_ADD1]](p0) :: (store (s32))
137+
; CHECK-NEXT: [[C3:%[0-9]+]]:_(s20) = G_CONSTANT i20 88
138+
; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C3]](s20)
139+
; CHECK-NEXT: G_STORE [[C]](s32), [[PTR_ADD2]](p0) :: (store (s32), align 8)
140+
; CHECK-NEXT: [[C4:%[0-9]+]]:_(s20) = G_CONSTANT i20 92
141+
; CHECK-NEXT: [[PTR_ADD3:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C4]](s20)
142+
; CHECK-NEXT: G_STORE [[C]](s32), [[PTR_ADD3]](p0) :: (store (s32))
143+
; CHECK-NEXT: PseudoRET implicit $lr
144+
%84:_(p0) = COPY $p0
145+
%0:_(s32) = G_CONSTANT i32 0
146+
%193:_(s16) = G_CONSTANT i16 0
147+
%82:_(s8) = G_CONSTANT i8 0
148+
%85:_(s20) = G_CONSTANT i20 64
149+
%86:_(p0) = nuw G_PTR_ADD %84, %85(s20)
150+
%95:_(s20) = G_CONSTANT i20 80
151+
%96:_(p0) = nuw G_PTR_ADD %84, %95(s20)
152+
G_STORE %0(s32), %96(p0) :: (store (s32), align 16)
153+
%97:_(s20) = G_CONSTANT i20 84
154+
%98:_(p0) = nuw G_PTR_ADD %84, %97(s20)
155+
G_STORE %0(s32), %98(p0) :: (store (s32))
156+
%99:_(s20) = G_CONSTANT i20 88
157+
%100:_(p0) = nuw G_PTR_ADD %84, %99(s20)
158+
G_STORE %0(s32), %100(p0) :: (store (s32), align 8)
159+
%101:_(s20) = G_CONSTANT i20 92
160+
%102:_(p0) = nuw G_PTR_ADD %84, %101(s20)
161+
G_STORE %0(s32), %102(p0) :: (store (s32))
162+
%103:_(s20) = G_CONSTANT i20 96
163+
%104:_(p0) = nuw G_PTR_ADD %84, %103(s20)
164+
PseudoRET implicit $lr
165+
...
166+
167+
---
168+
name: combine_to_vector_leftover
169+
alignment: 16
170+
tracksRegLiveness: true
171+
body: |
172+
bb.0:
173+
liveins: $p0
174+
175+
; CHECK-LABEL: name: combine_to_vector_leftover
176+
; CHECK: liveins: $p0
177+
; CHECK-NEXT: {{ $}}
178+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
179+
; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
180+
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s8) = G_CONSTANT i8 0
181+
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s20) = G_CONSTANT i20 80
182+
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C2]](s20)
183+
; CHECK-NEXT: G_STORE [[C]](s32), [[PTR_ADD]](p0) :: (store (s32), align 16)
184+
; CHECK-NEXT: [[C3:%[0-9]+]]:_(s20) = G_CONSTANT i20 84
185+
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C3]](s20)
186+
; CHECK-NEXT: G_STORE [[C]](s32), [[PTR_ADD1]](p0) :: (store (s32))
187+
; CHECK-NEXT: [[C4:%[0-9]+]]:_(s20) = G_CONSTANT i20 88
188+
; CHECK-NEXT: [[PTR_ADD2:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C4]](s20)
189+
; CHECK-NEXT: G_STORE [[C]](s32), [[PTR_ADD2]](p0) :: (store (s32), align 8)
190+
; CHECK-NEXT: [[C5:%[0-9]+]]:_(s20) = G_CONSTANT i20 92
191+
; CHECK-NEXT: [[PTR_ADD3:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C5]](s20)
192+
; CHECK-NEXT: G_STORE [[C]](s32), [[PTR_ADD3]](p0) :: (store (s32))
193+
; CHECK-NEXT: [[C6:%[0-9]+]]:_(s20) = G_CONSTANT i20 96
194+
; CHECK-NEXT: [[PTR_ADD4:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C6]](s20)
195+
; CHECK-NEXT: G_STORE [[C1]](s8), [[PTR_ADD4]](p0) :: (store (s8), align 32)
196+
; CHECK-NEXT: [[C7:%[0-9]+]]:_(s20) = G_CONSTANT i20 97
197+
; CHECK-NEXT: [[PTR_ADD5:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C7]](s20)
198+
; CHECK-NEXT: G_STORE [[C1]](s8), [[PTR_ADD5]](p0) :: (store (s8))
199+
; CHECK-NEXT: PseudoRET implicit $lr
200+
%84:_(p0) = COPY $p0
201+
%0:_(s32) = G_CONSTANT i32 0
202+
%193:_(s16) = G_CONSTANT i16 0
203+
%82:_(s8) = G_CONSTANT i8 0
204+
%85:_(s20) = G_CONSTANT i20 64
205+
%86:_(p0) = nuw G_PTR_ADD %84, %85(s20)
206+
%95:_(s20) = G_CONSTANT i20 80
207+
%96:_(p0) = nuw G_PTR_ADD %84, %95(s20)
208+
G_STORE %0(s32), %96(p0) :: (store (s32), align 16)
209+
%97:_(s20) = G_CONSTANT i20 84
210+
%98:_(p0) = nuw G_PTR_ADD %84, %97(s20)
211+
G_STORE %0(s32), %98(p0) :: (store (s32))
212+
%99:_(s20) = G_CONSTANT i20 88
213+
%100:_(p0) = nuw G_PTR_ADD %84, %99(s20)
214+
G_STORE %0(s32), %100(p0) :: (store (s32), align 8)
215+
%101:_(s20) = G_CONSTANT i20 92
216+
%102:_(p0) = nuw G_PTR_ADD %84, %101(s20)
217+
G_STORE %0(s32), %102(p0) :: (store (s32))
218+
%103:_(s20) = G_CONSTANT i20 96
219+
%104:_(p0) = nuw G_PTR_ADD %84, %103(s20)
220+
G_STORE %82(s8), %104(p0) :: (store (s8), align 32)
221+
%105:_(s20) = G_CONSTANT i20 97
222+
%106:_(p0) = nuw G_PTR_ADD %84, %105(s20)
223+
G_STORE %82(s8), %106(p0) :: (store (s8))
224+
PseudoRET implicit $lr
225+
...
226+
227+
# Negative test cases:
228+
229+
---
230+
name: no_combine_avoid_combiner_loop
231+
alignment: 16
232+
tracksRegLiveness: true
233+
body: |
234+
bb.0:
235+
liveins: $p0
236+
237+
; CHECK-LABEL: name: no_combine_avoid_combiner_loop
238+
; CHECK: liveins: $p0
239+
; CHECK-NEXT: {{ $}}
240+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
241+
; CHECK-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 0
242+
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 0
243+
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s20) = G_CONSTANT i20 72
244+
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C2]](s20)
245+
; CHECK-NEXT: G_STORE [[C]](s8), [[PTR_ADD]](p0) :: (store (s8), align 4)
246+
; CHECK-NEXT: [[C3:%[0-9]+]]:_(s20) = G_CONSTANT i20 73
247+
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C3]](s20)
248+
; CHECK-NEXT: G_STORE [[C1]](s16), [[PTR_ADD1]](p0) :: (store (s6))
249+
; CHECK-NEXT: PseudoRET implicit $lr
250+
%84:_(p0) = COPY $p0
251+
%0:_(s32) = G_CONSTANT i32 0
252+
%82:_(s8) = G_CONSTANT i8 0
253+
%13:_(s16) = G_CONSTANT i16 0
254+
%89:_(s20) = G_CONSTANT i20 72
255+
%90:_(p0) = nuw G_PTR_ADD %84, %89(s20)
256+
G_STORE %82(s8), %90(p0) :: (store (s8), align 4)
257+
%91:_(s20) = G_CONSTANT i20 73
258+
%92:_(p0) = nuw G_PTR_ADD %84, %91(s20)
259+
G_STORE %13(s16), %92(p0) :: (store (s6))
260+
PseudoRET implicit $lr
261+
262+
...
263+
264+
---
265+
name: no_combine_to_s32_load
266+
alignment: 16
267+
tracksRegLiveness: true
268+
body: |
269+
bb.0:
270+
liveins: $p0, $p1
271+
272+
; CHECK-LABEL: name: no_combine_to_s32_load
273+
; CHECK: liveins: $p0, $p1
274+
; CHECK-NEXT: {{ $}}
275+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
276+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $p1
277+
; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0
278+
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s20) = G_CONSTANT i20 72
279+
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C1]](s20)
280+
; CHECK-NEXT: G_STORE [[C]](s16), [[PTR_ADD]](p0) :: (store (s16), align 4)
281+
; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY1]](p0) :: (load (s32))
282+
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s20) = G_CONSTANT i20 74
283+
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C2]](s20)
284+
; CHECK-NEXT: G_STORE [[C]](s16), [[PTR_ADD1]](p0) :: (store (s16))
285+
; CHECK-NEXT: PseudoRET implicit $lr, implicit [[LOAD]](s32)
286+
%84:_(p0) = COPY $p0
287+
%85:_(p0) = COPY $p1
288+
%0:_(s32) = G_CONSTANT i32 0
289+
%82:_(s16) = G_CONSTANT i16 0
290+
%89:_(s20) = G_CONSTANT i20 72
291+
%90:_(p0) = nuw G_PTR_ADD %84, %89(s20)
292+
G_STORE %82(s16), %90(p0) :: (store (s16), align 4)
293+
%4:_(s32) = G_LOAD %85 :: (load (s32))
294+
%91:_(s20) = G_CONSTANT i20 74
295+
%92:_(p0) = nuw G_PTR_ADD %84, %91(s20)
296+
G_STORE %82(s16), %92(p0) :: (store (s16))
297+
PseudoRET implicit $lr, implicit %4
298+
299+
...
300+
301+
302+
---
303+
name: no_combine_to_s32_side_effects
304+
alignment: 16
305+
tracksRegLiveness: true
306+
body: |
307+
bb.0:
308+
liveins: $p0, $p1
309+
310+
311+
; CHECK-LABEL: name: no_combine_to_s32_side_effects
312+
; CHECK: liveins: $p0, $p1
313+
; CHECK-NEXT: {{ $}}
314+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
315+
; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
316+
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 0
317+
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s20) = G_CONSTANT i20 72
318+
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C2]](s20)
319+
; CHECK-NEXT: G_STORE [[C1]](s16), [[PTR_ADD]](p0) :: (store (s16), align 4)
320+
; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<32 x s16>) = G_IMPLICIT_DEF
321+
; CHECK-NEXT: [[INT:%[0-9]+]]:_(<32 x s32>) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aie2p.acc32.v32.I512.ups), [[DEF]](<32 x s16>), [[C]](s32), [[C]](s32)
322+
; CHECK-NEXT: [[C3:%[0-9]+]]:_(s20) = G_CONSTANT i20 74
323+
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C3]](s20)
324+
; CHECK-NEXT: G_STORE [[C1]](s16), [[PTR_ADD1]](p0) :: (store (s16))
325+
; CHECK-NEXT: PseudoRET implicit $lr, implicit [[INT]](<32 x s32>)
326+
%84:_(p0) = COPY $p0
327+
%0:_(s32) = G_CONSTANT i32 0
328+
%82:_(s16) = G_CONSTANT i16 0
329+
%89:_(s20) = G_CONSTANT i20 72
330+
%90:_(p0) = nuw G_PTR_ADD %84, %89(s20)
331+
G_STORE %82(s16), %90(p0) :: (store (s16), align 4)
332+
%1:_(<32 x s16>) = G_IMPLICIT_DEF
333+
%8:_(<32 x s32>) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aie2p.acc32.v32.I512.ups), %1(<32 x s16>), %0(s32), %0(s32)
334+
%91:_(s20) = G_CONSTANT i20 74
335+
%92:_(p0) = nuw G_PTR_ADD %84, %91(s20)
336+
G_STORE %82(s16), %92(p0) :: (store (s16))
337+
PseudoRET implicit $lr, implicit %8
338+
339+
...
340+
341+
---
342+
name: no_combine_to_s32_non_sequential
343+
alignment: 16
344+
tracksRegLiveness: true
345+
body: |
346+
bb.0:
347+
liveins: $p0
348+
349+
350+
; CHECK-LABEL: name: no_combine_to_s32_non_sequential
351+
; CHECK: liveins: $p0
352+
; CHECK-NEXT: {{ $}}
353+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $p0
354+
; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0
355+
; CHECK-NEXT: [[C1:%[0-9]+]]:_(s20) = G_CONSTANT i20 72
356+
; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C1]](s20)
357+
; CHECK-NEXT: G_STORE [[C]](s16), [[PTR_ADD]](p0) :: (store (s16), align 4)
358+
; CHECK-NEXT: [[C2:%[0-9]+]]:_(s20) = G_CONSTANT i20 76
359+
; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = nuw G_PTR_ADD [[COPY]], [[C2]](s20)
360+
; CHECK-NEXT: G_STORE [[C]](s16), [[PTR_ADD1]](p0) :: (store (s16))
361+
; CHECK-NEXT: PseudoRET implicit $lr
362+
%84:_(p0) = COPY $p0
363+
%0:_(s32) = G_CONSTANT i32 0
364+
%82:_(s16) = G_CONSTANT i16 0
365+
%89:_(s20) = G_CONSTANT i20 72
366+
%90:_(p0) = nuw G_PTR_ADD %84, %89(s20)
367+
G_STORE %82(s16), %90(p0) :: (store (s16), align 4)
368+
%91:_(s20) = G_CONSTANT i20 76
369+
%92:_(p0) = nuw G_PTR_ADD %84, %91(s20)
370+
G_STORE %82(s16), %92(p0) :: (store (s16))
371+
PseudoRET implicit $lr
372+
373+
...

0 commit comments

Comments
 (0)