Skip to content

Commit 886d316

Browse files
committed
[AArch64][NFC] Pre-commit test for Push ADD/SUB through {S|Z}EXT (#90964)
1 parent fba84ec commit 886d316

File tree

2 files changed

+1514
-390
lines changed

2 files changed

+1514
-390
lines changed

llvm/test/CodeGen/AArch64/GlobalISel/combine-add.mir

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,3 +207,122 @@ body: |
207207
%3:_(<4 x s32>) = G_FADD %0, %2(<4 x s32>)
208208
$q0 = COPY %3(<4 x s32>)
209209
...
210+
---
211+
name: saddl_v8i8_v8i32
212+
tracksRegLiveness: true
213+
body: |
214+
bb.1:
215+
liveins: $d0, $d1
216+
217+
; CHECK-LABEL: name: saddl_v8i8_v8i32
218+
; CHECK: liveins: $d0, $d1
219+
; CHECK-NEXT: {{ $}}
220+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0
221+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1
222+
; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(<8 x s32>) = G_SEXT [[COPY]](<8 x s8>)
223+
; CHECK-NEXT: [[SEXT1:%[0-9]+]]:_(<8 x s32>) = G_SEXT [[COPY1]](<8 x s8>)
224+
; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<8 x s32>) = G_ADD [[SEXT]], [[SEXT1]]
225+
; CHECK-NEXT: [[UV:%[0-9]+]]:_(<4 x s32>), [[UV1:%[0-9]+]]:_(<4 x s32>) = G_UNMERGE_VALUES [[ADD]](<8 x s32>)
226+
; CHECK-NEXT: $q0 = COPY [[UV]](<4 x s32>)
227+
; CHECK-NEXT: $q1 = COPY [[UV1]](<4 x s32>)
228+
; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1
229+
%0:_(<8 x s8>) = COPY $d0
230+
%1:_(<8 x s8>) = COPY $d1
231+
%2:_(<8 x s32>) = G_SEXT %0(<8 x s8>)
232+
%3:_(<8 x s32>) = G_SEXT %1(<8 x s8>)
233+
%4:_(<8 x s32>) = G_ADD %2, %3
234+
%5:_(<4 x s32>), %6:_(<4 x s32>) = G_UNMERGE_VALUES %4(<8 x s32>)
235+
$q0 = COPY %5(<4 x s32>)
236+
$q1 = COPY %6(<4 x s32>)
237+
RET_ReallyLR implicit $q0, implicit $q1
238+
...
239+
240+
---
241+
name: uaddl_v8i8_v8i32
242+
tracksRegLiveness: true
243+
body: |
244+
bb.1:
245+
liveins: $d0, $d1
246+
247+
; CHECK-LABEL: name: uaddl_v8i8_v8i32
248+
; CHECK: liveins: $d0, $d1
249+
; CHECK-NEXT: {{ $}}
250+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0
251+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1
252+
; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(<8 x s32>) = G_ZEXT [[COPY]](<8 x s8>)
253+
; CHECK-NEXT: [[ZEXT1:%[0-9]+]]:_(<8 x s32>) = G_ZEXT [[COPY1]](<8 x s8>)
254+
; CHECK-NEXT: [[ADD:%[0-9]+]]:_(<8 x s32>) = G_ADD [[ZEXT]], [[ZEXT1]]
255+
; CHECK-NEXT: [[UV:%[0-9]+]]:_(<4 x s32>), [[UV1:%[0-9]+]]:_(<4 x s32>) = G_UNMERGE_VALUES [[ADD]](<8 x s32>)
256+
; CHECK-NEXT: $q0 = COPY [[UV]](<4 x s32>)
257+
; CHECK-NEXT: $q1 = COPY [[UV1]](<4 x s32>)
258+
; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1
259+
%0:_(<8 x s8>) = COPY $d0
260+
%1:_(<8 x s8>) = COPY $d1
261+
%2:_(<8 x s32>) = G_ZEXT %0(<8 x s8>)
262+
%3:_(<8 x s32>) = G_ZEXT %1(<8 x s8>)
263+
%4:_(<8 x s32>) = G_ADD %2, %3
264+
%5:_(<4 x s32>), %6:_(<4 x s32>) = G_UNMERGE_VALUES %4(<8 x s32>)
265+
$q0 = COPY %5(<4 x s32>)
266+
$q1 = COPY %6(<4 x s32>)
267+
RET_ReallyLR implicit $q0, implicit $q1
268+
...
269+
270+
---
271+
name: ssubl_v8i8_v8i32
272+
tracksRegLiveness: true
273+
body: |
274+
bb.1:
275+
liveins: $d0, $d1
276+
277+
; CHECK-LABEL: name: ssubl_v8i8_v8i32
278+
; CHECK: liveins: $d0, $d1
279+
; CHECK-NEXT: {{ $}}
280+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0
281+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1
282+
; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(<8 x s32>) = G_SEXT [[COPY]](<8 x s8>)
283+
; CHECK-NEXT: [[SEXT1:%[0-9]+]]:_(<8 x s32>) = G_SEXT [[COPY1]](<8 x s8>)
284+
; CHECK-NEXT: [[SUB:%[0-9]+]]:_(<8 x s32>) = G_SUB [[SEXT]], [[SEXT1]]
285+
; CHECK-NEXT: [[UV:%[0-9]+]]:_(<4 x s32>), [[UV1:%[0-9]+]]:_(<4 x s32>) = G_UNMERGE_VALUES [[SUB]](<8 x s32>)
286+
; CHECK-NEXT: $q0 = COPY [[UV]](<4 x s32>)
287+
; CHECK-NEXT: $q1 = COPY [[UV1]](<4 x s32>)
288+
; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1
289+
%0:_(<8 x s8>) = COPY $d0
290+
%1:_(<8 x s8>) = COPY $d1
291+
%2:_(<8 x s32>) = G_SEXT %0(<8 x s8>)
292+
%3:_(<8 x s32>) = G_SEXT %1(<8 x s8>)
293+
%4:_(<8 x s32>) = G_SUB %2, %3
294+
%5:_(<4 x s32>), %6:_(<4 x s32>) = G_UNMERGE_VALUES %4(<8 x s32>)
295+
$q0 = COPY %5(<4 x s32>)
296+
$q1 = COPY %6(<4 x s32>)
297+
RET_ReallyLR implicit $q0, implicit $q1
298+
...
299+
300+
---
301+
name: usubl_v8i8_v8i32
302+
tracksRegLiveness: true
303+
body: |
304+
bb.1:
305+
liveins: $d0, $d1
306+
307+
; CHECK-LABEL: name: usubl_v8i8_v8i32
308+
; CHECK: liveins: $d0, $d1
309+
; CHECK-NEXT: {{ $}}
310+
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0
311+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1
312+
; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(<8 x s32>) = G_ZEXT [[COPY]](<8 x s8>)
313+
; CHECK-NEXT: [[ZEXT1:%[0-9]+]]:_(<8 x s32>) = G_ZEXT [[COPY1]](<8 x s8>)
314+
; CHECK-NEXT: [[SUB:%[0-9]+]]:_(<8 x s32>) = G_SUB [[ZEXT]], [[ZEXT1]]
315+
; CHECK-NEXT: [[UV:%[0-9]+]]:_(<4 x s32>), [[UV1:%[0-9]+]]:_(<4 x s32>) = G_UNMERGE_VALUES [[SUB]](<8 x s32>)
316+
; CHECK-NEXT: $q0 = COPY [[UV]](<4 x s32>)
317+
; CHECK-NEXT: $q1 = COPY [[UV1]](<4 x s32>)
318+
; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1
319+
%0:_(<8 x s8>) = COPY $d0
320+
%1:_(<8 x s8>) = COPY $d1
321+
%2:_(<8 x s32>) = G_ZEXT %0(<8 x s8>)
322+
%3:_(<8 x s32>) = G_ZEXT %1(<8 x s8>)
323+
%4:_(<8 x s32>) = G_SUB %2, %3
324+
%5:_(<4 x s32>), %6:_(<4 x s32>) = G_UNMERGE_VALUES %4(<8 x s32>)
325+
$q0 = COPY %5(<4 x s32>)
326+
$q1 = COPY %6(<4 x s32>)
327+
RET_ReallyLR implicit $q0, implicit $q1
328+
...

0 commit comments

Comments
 (0)