[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / legalize-undef.mir
blobde41b63b8aed14f7d2a1aa91fa5b697b1ccaf965
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64 -run-pass=legalizer -O0 %s -o - | FileCheck %s
3 ---
4 name:            test_implicit_def
5 body: |
6   bb.0.entry:
7     liveins:
9     ; CHECK-LABEL: name: test_implicit_def
10     ; CHECK: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
11     ; CHECK: $x0 = COPY [[DEF]](s64)
12     %0:_(s128) = G_IMPLICIT_DEF
13     %1:_(s64) = G_TRUNC %0(s128)
14     $x0 = COPY %1(s64)
15 ...
17 ---
18 name: test_implicit_def_s3
19 body: |
20   bb.0:
21     liveins:
23     ; CHECK-LABEL: name: test_implicit_def_s3
24     ; CHECK: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
25     ; CHECK: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[DEF]], 3
26     ; CHECK: $x0 = COPY [[SEXT_INREG]](s64)
27     %0:_(s3) = G_IMPLICIT_DEF
28     %1:_(s64) = G_SEXT %0
29     $x0 = COPY %1(s64)
30 ...
32 # FIXME: s2 not correctly handled
34 ---
35 name: test_implicit_def_v4s32
36 body: |
37   bb.0:
39     ; CHECK-LABEL: name: test_implicit_def_v4s32
40     ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF
41     ; CHECK: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[DEF]](<4 x s32>)
42     ; CHECK: $x0 = COPY [[UV]](<2 x s32>)
43     ; CHECK: $x1 = COPY [[UV1]](<2 x s32>)
44     %0:_(<4 x s32>) = G_IMPLICIT_DEF
45     %1:_(<2 x s32> ), %2:_(<2 x s32>) = G_UNMERGE_VALUES %0
46     $x0 = COPY %1
47     $x1 = COPY %2
48 ...
50 ---
51 name: test_implicit_def_v4s64
52 body: |
53   bb.0:
55     ; CHECK-LABEL: name: test_implicit_def_v4s64
56     ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s64>) = G_IMPLICIT_DEF
57     ; CHECK: $q0 = COPY [[DEF]](<2 x s64>)
58     ; CHECK: $q1 = COPY [[DEF]](<2 x s64>)
59     %0:_(<4 x s64>) = G_IMPLICIT_DEF
60     %1:_(<2 x s64> ), %2:_(<2 x s64>) = G_UNMERGE_VALUES %0
61     $q0 = COPY %1
62     $q1 = COPY %2
63 ...
64 ---
65 name: test_implicit_def_v2s32
66 body: |
67   bb.0:
69     ; CHECK-LABEL: name: test_implicit_def_v2s32
70     ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s32>) = G_IMPLICIT_DEF
71     ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[DEF]](<2 x s32>)
72     ; CHECK: $w0 = COPY [[UV]](s32)
73     ; CHECK: $w1 = COPY [[UV1]](s32)
74     %0:_(<2 x s32>) = G_IMPLICIT_DEF
75     %1:_(s32), %2:_(s32) = G_UNMERGE_VALUES %0
76     $w0 = COPY %1
77     $w1 = COPY %2
78 ...
79 ---
80 name: test_implicit_def_v16s8
81 body: |
82   bb.0:
84     ; CHECK-LABEL: name: test_implicit_def_v16s8
85     ; CHECK: [[DEF:%[0-9]+]]:_(<16 x s8>) = G_IMPLICIT_DEF
86     ; CHECK: $q0 = COPY [[DEF]](<16 x s8>)
87     %0:_(<16 x s8>) = G_IMPLICIT_DEF
88     $q0 = COPY %0
89 ...
90 ---
91 name: test_implicit_def_v8s16
92 body: |
93   bb.0:
95     ; CHECK-LABEL: name: test_implicit_def_v8s16
96     ; CHECK: [[DEF:%[0-9]+]]:_(<8 x s16>) = G_IMPLICIT_DEF
97     ; CHECK: $q0 = COPY [[DEF]](<8 x s16>)
98     %0:_(<8 x s16>) = G_IMPLICIT_DEF
99     $q0 = COPY %0
102 name: test_implicit_def_s88
103 body: |
104   bb.0:
105     liveins:
106     ; CHECK-LABEL: name: test_implicit_def_s88
107     ; CHECK: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
108     ; CHECK: $x0 = COPY [[DEF]](s64)
109     %undef:_(s88) = G_IMPLICIT_DEF
110     %trunc:_(s64) = G_TRUNC %undef
111     $x0 = COPY %trunc(s64)