1 ; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 ; RUN: llc -mtriple=aarch64-linux-gnu -O0 -global-isel -stop-after=irtranslator -o - %s | FileCheck %s
4 ; Tests vectors of i1 types can appropriately extended first before return handles it.
5 define <4 x i1> @ret_v4i1(ptr %v) {
6 ; CHECK-LABEL: name: ret_v4i1
7 ; CHECK: bb.1 (%ir-block.0):
8 ; CHECK-NEXT: liveins: $x0
10 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
11 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(<4 x s1>) = G_LOAD [[COPY]](p0) :: (load (<4 x s1>) from %ir.v)
12 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(<4 x s16>) = G_ANYEXT [[LOAD]](<4 x s1>)
13 ; CHECK-NEXT: $d0 = COPY [[ANYEXT]](<4 x s16>)
14 ; CHECK-NEXT: RET_ReallyLR implicit $d0
15 %v2 = load <4 x i1>, ptr %v
19 define <1 x i12> @ret_v1i12(i12 %v1, i12 %v2) {
20 ; CHECK-LABEL: name: ret_v1i12
21 ; CHECK: bb.1 (%ir-block.0):
22 ; CHECK-NEXT: liveins: $w0, $w1
24 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
25 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s12) = G_TRUNC [[COPY]](s32)
26 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
27 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s12) = G_TRUNC [[COPY1]](s32)
28 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s12)
29 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
30 ; CHECK-NEXT: RET_ReallyLR implicit $w0
31 %a = insertelement <1 x i12> poison, i12 %v1, i32 0
35 define <2 x i12> @ret_v2i12(i12 %v1, i12 %v2) {
36 ; CHECK-LABEL: name: ret_v2i12
37 ; CHECK: bb.1 (%ir-block.0):
38 ; CHECK-NEXT: liveins: $w0, $w1
40 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
41 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s12) = G_TRUNC [[COPY]](s32)
42 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
43 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s12) = G_TRUNC [[COPY1]](s32)
44 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<2 x s12>) = G_IMPLICIT_DEF
45 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
46 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
47 ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<2 x s12>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s12), [[C]](s64)
48 ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<2 x s12>) = G_INSERT_VECTOR_ELT [[IVEC]], [[TRUNC1]](s12), [[C1]](s64)
49 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(<2 x s32>) = G_ANYEXT [[IVEC1]](<2 x s12>)
50 ; CHECK-NEXT: $d0 = COPY [[ANYEXT]](<2 x s32>)
51 ; CHECK-NEXT: RET_ReallyLR implicit $d0
52 %a = insertelement <2 x i12> poison, i12 %v1, i32 0
53 %b = insertelement <2 x i12> %a, i12 %v2, i32 1
57 define <3 x i12> @ret_v3i12(i12 %v1, i12 %v2) {
58 ; CHECK-LABEL: name: ret_v3i12
59 ; CHECK: bb.1 (%ir-block.0):
60 ; CHECK-NEXT: liveins: $w0, $w1
62 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
63 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s12) = G_TRUNC [[COPY]](s32)
64 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
65 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s12) = G_TRUNC [[COPY1]](s32)
66 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<3 x s12>) = G_IMPLICIT_DEF
67 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
68 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
69 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
70 ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<3 x s12>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s12), [[C]](s64)
71 ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<3 x s12>) = G_INSERT_VECTOR_ELT [[IVEC]], [[TRUNC1]](s12), [[C1]](s64)
72 ; CHECK-NEXT: [[IVEC2:%[0-9]+]]:_(<3 x s12>) = G_INSERT_VECTOR_ELT [[IVEC1]], [[TRUNC1]](s12), [[C2]](s64)
73 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s12), [[UV1:%[0-9]+]]:_(s12), [[UV2:%[0-9]+]]:_(s12) = G_UNMERGE_VALUES [[IVEC2]](<3 x s12>)
74 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s12)
75 ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s12)
76 ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s12)
77 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
78 ; CHECK-NEXT: $w1 = COPY [[ANYEXT1]](s32)
79 ; CHECK-NEXT: $w2 = COPY [[ANYEXT2]](s32)
80 ; CHECK-NEXT: RET_ReallyLR implicit $w0, implicit $w1, implicit $w2
81 %a = insertelement <3 x i12> poison, i12 %v1, i32 0
82 %b = insertelement <3 x i12> %a, i12 %v2, i32 1
83 %c = insertelement <3 x i12> %b, i12 %v2, i32 2
87 define <4 x i12> @ret_v4i12(i12 %v1, i12 %v2) {
88 ; CHECK-LABEL: name: ret_v4i12
89 ; CHECK: bb.1 (%ir-block.0):
90 ; CHECK-NEXT: liveins: $w0, $w1
92 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
93 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s12) = G_TRUNC [[COPY]](s32)
94 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
95 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s12) = G_TRUNC [[COPY1]](s32)
96 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s12>) = G_IMPLICIT_DEF
97 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
98 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
99 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
100 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
101 ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<4 x s12>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s12), [[C]](s64)
102 ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<4 x s12>) = G_INSERT_VECTOR_ELT [[IVEC]], [[TRUNC1]](s12), [[C1]](s64)
103 ; CHECK-NEXT: [[IVEC2:%[0-9]+]]:_(<4 x s12>) = G_INSERT_VECTOR_ELT [[IVEC1]], [[TRUNC]](s12), [[C2]](s64)
104 ; CHECK-NEXT: [[IVEC3:%[0-9]+]]:_(<4 x s12>) = G_INSERT_VECTOR_ELT [[IVEC2]], [[TRUNC1]](s12), [[C3]](s64)
105 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(<4 x s16>) = G_ANYEXT [[IVEC3]](<4 x s12>)
106 ; CHECK-NEXT: $d0 = COPY [[ANYEXT]](<4 x s16>)
107 ; CHECK-NEXT: RET_ReallyLR implicit $d0
108 %a = insertelement <4 x i12> poison, i12 %v1, i32 0
109 %b = insertelement <4 x i12> %a, i12 %v2, i32 1
110 %c = insertelement <4 x i12> %b, i12 %v1, i32 2
111 %d = insertelement <4 x i12> %c, i12 %v2, i32 3
115 define <5 x i12> @ret_v5i12(i12 %v1, i12 %v2) {
116 ; CHECK-LABEL: name: ret_v5i12
117 ; CHECK: bb.1 (%ir-block.0):
118 ; CHECK-NEXT: liveins: $w0, $w1
120 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
121 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s12) = G_TRUNC [[COPY]](s32)
122 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
123 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s12) = G_TRUNC [[COPY1]](s32)
124 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<5 x s12>) = G_IMPLICIT_DEF
125 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
126 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
127 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
128 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
129 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
130 ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<5 x s12>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC1]](s12), [[C]](s64)
131 ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<5 x s12>) = G_INSERT_VECTOR_ELT [[IVEC]], [[TRUNC]](s12), [[C1]](s64)
132 ; CHECK-NEXT: [[IVEC2:%[0-9]+]]:_(<5 x s12>) = G_INSERT_VECTOR_ELT [[IVEC1]], [[TRUNC]](s12), [[C2]](s64)
133 ; CHECK-NEXT: [[IVEC3:%[0-9]+]]:_(<5 x s12>) = G_INSERT_VECTOR_ELT [[IVEC2]], [[TRUNC1]](s12), [[C3]](s64)
134 ; CHECK-NEXT: [[IVEC4:%[0-9]+]]:_(<5 x s12>) = G_INSERT_VECTOR_ELT [[IVEC3]], [[TRUNC1]](s12), [[C4]](s64)
135 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s12), [[UV1:%[0-9]+]]:_(s12), [[UV2:%[0-9]+]]:_(s12), [[UV3:%[0-9]+]]:_(s12), [[UV4:%[0-9]+]]:_(s12) = G_UNMERGE_VALUES [[IVEC4]](<5 x s12>)
136 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s12)
137 ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s12)
138 ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s12)
139 ; CHECK-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[UV3]](s12)
140 ; CHECK-NEXT: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[UV4]](s12)
141 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
142 ; CHECK-NEXT: $w1 = COPY [[ANYEXT1]](s32)
143 ; CHECK-NEXT: $w2 = COPY [[ANYEXT2]](s32)
144 ; CHECK-NEXT: $w3 = COPY [[ANYEXT3]](s32)
145 ; CHECK-NEXT: $w4 = COPY [[ANYEXT4]](s32)
146 ; CHECK-NEXT: RET_ReallyLR implicit $w0, implicit $w1, implicit $w2, implicit $w3, implicit $w4
147 %a = insertelement <5 x i12> poison, i12 %v2, i32 0
148 %b = insertelement <5 x i12> %a, i12 %v1, i32 1
149 %c = insertelement <5 x i12> %b, i12 %v1, i32 2
150 %d = insertelement <5 x i12> %c, i12 %v2, i32 3
151 %e = insertelement <5 x i12> %d, i12 %v2, i32 4
155 define <6 x i12> @ret_v6i12(i12 %v1, i12 %v2) {
156 ; CHECK-LABEL: name: ret_v6i12
157 ; CHECK: bb.1 (%ir-block.0):
158 ; CHECK-NEXT: liveins: $w0, $w1
160 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
161 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s12) = G_TRUNC [[COPY]](s32)
162 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
163 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s12) = G_TRUNC [[COPY1]](s32)
164 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<6 x s12>) = G_IMPLICIT_DEF
165 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
166 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
167 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
168 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
169 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
170 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 5
171 ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<6 x s12>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC1]](s12), [[C]](s64)
172 ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<6 x s12>) = G_INSERT_VECTOR_ELT [[IVEC]], [[TRUNC]](s12), [[C1]](s64)
173 ; CHECK-NEXT: [[IVEC2:%[0-9]+]]:_(<6 x s12>) = G_INSERT_VECTOR_ELT [[IVEC1]], [[TRUNC]](s12), [[C2]](s64)
174 ; CHECK-NEXT: [[IVEC3:%[0-9]+]]:_(<6 x s12>) = G_INSERT_VECTOR_ELT [[IVEC2]], [[TRUNC1]](s12), [[C3]](s64)
175 ; CHECK-NEXT: [[IVEC4:%[0-9]+]]:_(<6 x s12>) = G_INSERT_VECTOR_ELT [[IVEC3]], [[TRUNC1]](s12), [[C4]](s64)
176 ; CHECK-NEXT: [[IVEC5:%[0-9]+]]:_(<6 x s12>) = G_INSERT_VECTOR_ELT [[IVEC4]], [[TRUNC]](s12), [[C5]](s64)
177 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s12), [[UV1:%[0-9]+]]:_(s12), [[UV2:%[0-9]+]]:_(s12), [[UV3:%[0-9]+]]:_(s12), [[UV4:%[0-9]+]]:_(s12), [[UV5:%[0-9]+]]:_(s12) = G_UNMERGE_VALUES [[IVEC5]](<6 x s12>)
178 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s12)
179 ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s12)
180 ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s12)
181 ; CHECK-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[UV3]](s12)
182 ; CHECK-NEXT: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[UV4]](s12)
183 ; CHECK-NEXT: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[UV5]](s12)
184 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
185 ; CHECK-NEXT: $w1 = COPY [[ANYEXT1]](s32)
186 ; CHECK-NEXT: $w2 = COPY [[ANYEXT2]](s32)
187 ; CHECK-NEXT: $w3 = COPY [[ANYEXT3]](s32)
188 ; CHECK-NEXT: $w4 = COPY [[ANYEXT4]](s32)
189 ; CHECK-NEXT: $w5 = COPY [[ANYEXT5]](s32)
190 ; CHECK-NEXT: RET_ReallyLR implicit $w0, implicit $w1, implicit $w2, implicit $w3, implicit $w4, implicit $w5
191 %a = insertelement <6 x i12> poison, i12 %v2, i32 0
192 %b = insertelement <6 x i12> %a, i12 %v1, i32 1
193 %c = insertelement <6 x i12> %b, i12 %v1, i32 2
194 %d = insertelement <6 x i12> %c, i12 %v2, i32 3
195 %e = insertelement <6 x i12> %d, i12 %v2, i32 4
196 %f = insertelement <6 x i12> %e, i12 %v1, i32 5
200 define <7 x i12> @ret_v7i12(i12 %v1, i12 %v2) {
201 ; CHECK-LABEL: name: ret_v7i12
202 ; CHECK: bb.1 (%ir-block.0):
203 ; CHECK-NEXT: liveins: $w0, $w1
205 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
206 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s12) = G_TRUNC [[COPY]](s32)
207 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
208 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s12) = G_TRUNC [[COPY1]](s32)
209 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<7 x s12>) = G_IMPLICIT_DEF
210 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
211 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
212 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
213 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
214 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
215 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 5
216 ; CHECK-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 6
217 ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<7 x s12>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC1]](s12), [[C]](s64)
218 ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<7 x s12>) = G_INSERT_VECTOR_ELT [[IVEC]], [[TRUNC]](s12), [[C1]](s64)
219 ; CHECK-NEXT: [[IVEC2:%[0-9]+]]:_(<7 x s12>) = G_INSERT_VECTOR_ELT [[IVEC1]], [[TRUNC]](s12), [[C2]](s64)
220 ; CHECK-NEXT: [[IVEC3:%[0-9]+]]:_(<7 x s12>) = G_INSERT_VECTOR_ELT [[IVEC2]], [[TRUNC1]](s12), [[C3]](s64)
221 ; CHECK-NEXT: [[IVEC4:%[0-9]+]]:_(<7 x s12>) = G_INSERT_VECTOR_ELT [[IVEC3]], [[TRUNC1]](s12), [[C4]](s64)
222 ; CHECK-NEXT: [[IVEC5:%[0-9]+]]:_(<7 x s12>) = G_INSERT_VECTOR_ELT [[IVEC4]], [[TRUNC]](s12), [[C5]](s64)
223 ; CHECK-NEXT: [[IVEC6:%[0-9]+]]:_(<7 x s12>) = G_INSERT_VECTOR_ELT [[IVEC5]], [[TRUNC]](s12), [[C6]](s64)
224 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s12), [[UV1:%[0-9]+]]:_(s12), [[UV2:%[0-9]+]]:_(s12), [[UV3:%[0-9]+]]:_(s12), [[UV4:%[0-9]+]]:_(s12), [[UV5:%[0-9]+]]:_(s12), [[UV6:%[0-9]+]]:_(s12) = G_UNMERGE_VALUES [[IVEC6]](<7 x s12>)
225 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UV]](s12)
226 ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[UV1]](s12)
227 ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[UV2]](s12)
228 ; CHECK-NEXT: [[ANYEXT3:%[0-9]+]]:_(s32) = G_ANYEXT [[UV3]](s12)
229 ; CHECK-NEXT: [[ANYEXT4:%[0-9]+]]:_(s32) = G_ANYEXT [[UV4]](s12)
230 ; CHECK-NEXT: [[ANYEXT5:%[0-9]+]]:_(s32) = G_ANYEXT [[UV5]](s12)
231 ; CHECK-NEXT: [[ANYEXT6:%[0-9]+]]:_(s32) = G_ANYEXT [[UV6]](s12)
232 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
233 ; CHECK-NEXT: $w1 = COPY [[ANYEXT1]](s32)
234 ; CHECK-NEXT: $w2 = COPY [[ANYEXT2]](s32)
235 ; CHECK-NEXT: $w3 = COPY [[ANYEXT3]](s32)
236 ; CHECK-NEXT: $w4 = COPY [[ANYEXT4]](s32)
237 ; CHECK-NEXT: $w5 = COPY [[ANYEXT5]](s32)
238 ; CHECK-NEXT: $w6 = COPY [[ANYEXT6]](s32)
239 ; CHECK-NEXT: RET_ReallyLR implicit $w0, implicit $w1, implicit $w2, implicit $w3, implicit $w4, implicit $w5, implicit $w6
240 %a = insertelement <7 x i12> poison, i12 %v2, i32 0
241 %b = insertelement <7 x i12> %a, i12 %v1, i32 1
242 %c = insertelement <7 x i12> %b, i12 %v1, i32 2
243 %d = insertelement <7 x i12> %c, i12 %v2, i32 3
244 %e = insertelement <7 x i12> %d, i12 %v2, i32 4
245 %f = insertelement <7 x i12> %e, i12 %v1, i32 5
246 %g = insertelement <7 x i12> %f, i12 %v1, i32 6
250 define <8 x i12> @ret_v8i12(i12 %v1, i12 %v2) {
251 ; CHECK-LABEL: name: ret_v8i12
252 ; CHECK: bb.1 (%ir-block.0):
253 ; CHECK-NEXT: liveins: $w0, $w1
255 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
256 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s12) = G_TRUNC [[COPY]](s32)
257 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
258 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s12) = G_TRUNC [[COPY1]](s32)
259 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<8 x s12>) = G_IMPLICIT_DEF
260 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
261 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
262 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
263 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
264 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
265 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 5
266 ; CHECK-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 6
267 ; CHECK-NEXT: [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 7
268 ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<8 x s12>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC1]](s12), [[C]](s64)
269 ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<8 x s12>) = G_INSERT_VECTOR_ELT [[IVEC]], [[TRUNC]](s12), [[C1]](s64)
270 ; CHECK-NEXT: [[IVEC2:%[0-9]+]]:_(<8 x s12>) = G_INSERT_VECTOR_ELT [[IVEC1]], [[TRUNC]](s12), [[C2]](s64)
271 ; CHECK-NEXT: [[IVEC3:%[0-9]+]]:_(<8 x s12>) = G_INSERT_VECTOR_ELT [[IVEC2]], [[TRUNC1]](s12), [[C3]](s64)
272 ; CHECK-NEXT: [[IVEC4:%[0-9]+]]:_(<8 x s12>) = G_INSERT_VECTOR_ELT [[IVEC3]], [[TRUNC1]](s12), [[C4]](s64)
273 ; CHECK-NEXT: [[IVEC5:%[0-9]+]]:_(<8 x s12>) = G_INSERT_VECTOR_ELT [[IVEC4]], [[TRUNC]](s12), [[C5]](s64)
274 ; CHECK-NEXT: [[IVEC6:%[0-9]+]]:_(<8 x s12>) = G_INSERT_VECTOR_ELT [[IVEC5]], [[TRUNC]](s12), [[C6]](s64)
275 ; CHECK-NEXT: [[IVEC7:%[0-9]+]]:_(<8 x s12>) = G_INSERT_VECTOR_ELT [[IVEC6]], [[TRUNC]](s12), [[C7]](s64)
276 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(<8 x s16>) = G_ANYEXT [[IVEC7]](<8 x s12>)
277 ; CHECK-NEXT: $q0 = COPY [[ANYEXT]](<8 x s16>)
278 ; CHECK-NEXT: RET_ReallyLR implicit $q0
279 %a = insertelement <8 x i12> poison, i12 %v2, i32 0
280 %b = insertelement <8 x i12> %a, i12 %v1, i32 1
281 %c = insertelement <8 x i12> %b, i12 %v1, i32 2
282 %d = insertelement <8 x i12> %c, i12 %v2, i32 3
283 %e = insertelement <8 x i12> %d, i12 %v2, i32 4
284 %f = insertelement <8 x i12> %e, i12 %v1, i32 5
285 %g = insertelement <8 x i12> %f, i12 %v1, i32 6
286 %h = insertelement <8 x i12> %g, i12 %v1, i32 7
290 define <12 x i12> @ret_v12i12(i12 %v1, i12 %v2) {
291 ; CHECK-LABEL: name: ret_v12i12
292 ; CHECK: bb.1 (%ir-block.0):
293 ; CHECK-NEXT: liveins: $w0, $w1, $x8
295 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x8
296 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w0
297 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s12) = G_TRUNC [[COPY1]](s32)
298 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w1
299 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s12) = G_TRUNC [[COPY2]](s32)
300 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<12 x s12>) = G_IMPLICIT_DEF
301 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
302 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
303 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
304 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
305 ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
306 ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 5
307 ; CHECK-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 6
308 ; CHECK-NEXT: [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 7
309 ; CHECK-NEXT: [[C8:%[0-9]+]]:_(s64) = G_CONSTANT i64 8
310 ; CHECK-NEXT: [[C9:%[0-9]+]]:_(s64) = G_CONSTANT i64 9
311 ; CHECK-NEXT: [[C10:%[0-9]+]]:_(s64) = G_CONSTANT i64 10
312 ; CHECK-NEXT: [[C11:%[0-9]+]]:_(s64) = G_CONSTANT i64 11
313 ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<12 x s12>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC1]](s12), [[C]](s64)
314 ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<12 x s12>) = G_INSERT_VECTOR_ELT [[IVEC]], [[TRUNC]](s12), [[C1]](s64)
315 ; CHECK-NEXT: [[IVEC2:%[0-9]+]]:_(<12 x s12>) = G_INSERT_VECTOR_ELT [[IVEC1]], [[TRUNC]](s12), [[C2]](s64)
316 ; CHECK-NEXT: [[IVEC3:%[0-9]+]]:_(<12 x s12>) = G_INSERT_VECTOR_ELT [[IVEC2]], [[TRUNC1]](s12), [[C3]](s64)
317 ; CHECK-NEXT: [[IVEC4:%[0-9]+]]:_(<12 x s12>) = G_INSERT_VECTOR_ELT [[IVEC3]], [[TRUNC1]](s12), [[C4]](s64)
318 ; CHECK-NEXT: [[IVEC5:%[0-9]+]]:_(<12 x s12>) = G_INSERT_VECTOR_ELT [[IVEC4]], [[TRUNC]](s12), [[C5]](s64)
319 ; CHECK-NEXT: [[IVEC6:%[0-9]+]]:_(<12 x s12>) = G_INSERT_VECTOR_ELT [[IVEC5]], [[TRUNC]](s12), [[C6]](s64)
320 ; CHECK-NEXT: [[IVEC7:%[0-9]+]]:_(<12 x s12>) = G_INSERT_VECTOR_ELT [[IVEC6]], [[TRUNC]](s12), [[C7]](s64)
321 ; CHECK-NEXT: [[IVEC8:%[0-9]+]]:_(<12 x s12>) = G_INSERT_VECTOR_ELT [[IVEC7]], [[TRUNC]](s12), [[C8]](s64)
322 ; CHECK-NEXT: [[IVEC9:%[0-9]+]]:_(<12 x s12>) = G_INSERT_VECTOR_ELT [[IVEC8]], [[TRUNC]](s12), [[C9]](s64)
323 ; CHECK-NEXT: [[IVEC10:%[0-9]+]]:_(<12 x s12>) = G_INSERT_VECTOR_ELT [[IVEC9]], [[TRUNC]](s12), [[C10]](s64)
324 ; CHECK-NEXT: [[IVEC11:%[0-9]+]]:_(<12 x s12>) = G_INSERT_VECTOR_ELT [[IVEC10]], [[TRUNC]](s12), [[C11]](s64)
325 ; CHECK-NEXT: G_STORE [[IVEC11]](<12 x s12>), [[COPY]](p0) :: (store (<12 x s12>), align 32)
326 ; CHECK-NEXT: RET_ReallyLR
327 %a = insertelement <12 x i12> poison, i12 %v2, i32 0
328 %b = insertelement <12 x i12> %a, i12 %v1, i32 1
329 %c = insertelement <12 x i12> %b, i12 %v1, i32 2
330 %d = insertelement <12 x i12> %c, i12 %v2, i32 3
331 %e = insertelement <12 x i12> %d, i12 %v2, i32 4
332 %f = insertelement <12 x i12> %e, i12 %v1, i32 5
333 %g = insertelement <12 x i12> %f, i12 %v1, i32 6
334 %h = insertelement <12 x i12> %g, i12 %v1, i32 7
335 %i = insertelement <12 x i12> %h, i12 %v1, i32 8
336 %j = insertelement <12 x i12> %i, i12 %v1, i32 9
337 %k = insertelement <12 x i12> %j, i12 %v1, i32 10
338 %l = insertelement <12 x i12> %k, i12 %v1, i32 11
343 define <1 x i100> @ret_v1i100(i100 %v1, i100 %v2) {
344 ; CHECK-LABEL: name: ret_v1i100
345 ; CHECK: bb.1 (%ir-block.0):
346 ; CHECK-NEXT: liveins: $x0, $x1, $x2, $x3
348 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
349 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
350 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64)
351 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s100) = G_TRUNC [[MV]](s128)
352 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
353 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3
354 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY2]](s64), [[COPY3]](s64)
355 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s100) = G_TRUNC [[MV1]](s128)
356 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s128) = G_ANYEXT [[TRUNC]](s100)
357 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[ANYEXT]](s128)
358 ; CHECK-NEXT: $x0 = COPY [[UV]](s64)
359 ; CHECK-NEXT: $x1 = COPY [[UV1]](s64)
360 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1
361 %a = insertelement <1 x i100> poison, i100 %v1, i32 0
365 define <2 x i100> @ret_v2i100(i100 %v1, i100 %v2) {
366 ; CHECK-LABEL: name: ret_v2i100
367 ; CHECK: bb.1 (%ir-block.0):
368 ; CHECK-NEXT: liveins: $x0, $x1, $x2, $x3
370 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
371 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
372 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64)
373 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s100) = G_TRUNC [[MV]](s128)
374 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
375 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3
376 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY2]](s64), [[COPY3]](s64)
377 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s100) = G_TRUNC [[MV1]](s128)
378 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<2 x s100>) = G_IMPLICIT_DEF
379 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
380 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
381 ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<2 x s100>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s100), [[C]](s64)
382 ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<2 x s100>) = G_INSERT_VECTOR_ELT [[IVEC]], [[TRUNC1]](s100), [[C1]](s64)
383 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(<2 x s128>) = G_ANYEXT [[IVEC1]](<2 x s100>)
384 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64), [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[ANYEXT]](<2 x s128>)
385 ; CHECK-NEXT: $x0 = COPY [[UV]](s64)
386 ; CHECK-NEXT: $x1 = COPY [[UV1]](s64)
387 ; CHECK-NEXT: $x2 = COPY [[UV2]](s64)
388 ; CHECK-NEXT: $x3 = COPY [[UV3]](s64)
389 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1, implicit $x2, implicit $x3
390 %a = insertelement <2 x i100> poison, i100 %v1, i32 0
391 %b = insertelement <2 x i100> %a, i100 %v2, i32 1
395 define <3 x i100> @ret_v3i100(i100 %v1, i100 %v2) {
396 ; CHECK-LABEL: name: ret_v3i100
397 ; CHECK: bb.1 (%ir-block.0):
398 ; CHECK-NEXT: liveins: $x0, $x1, $x2, $x3
400 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
401 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
402 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64)
403 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s100) = G_TRUNC [[MV]](s128)
404 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
405 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3
406 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY2]](s64), [[COPY3]](s64)
407 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s100) = G_TRUNC [[MV1]](s128)
408 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<3 x s100>) = G_IMPLICIT_DEF
409 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
410 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
411 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
412 ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<3 x s100>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s100), [[C]](s64)
413 ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<3 x s100>) = G_INSERT_VECTOR_ELT [[IVEC]], [[TRUNC1]](s100), [[C1]](s64)
414 ; CHECK-NEXT: [[IVEC2:%[0-9]+]]:_(<3 x s100>) = G_INSERT_VECTOR_ELT [[IVEC1]], [[TRUNC1]](s100), [[C2]](s64)
415 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(<3 x s128>) = G_ANYEXT [[IVEC2]](<3 x s100>)
416 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64), [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64), [[UV4:%[0-9]+]]:_(s64), [[UV5:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[ANYEXT]](<3 x s128>)
417 ; CHECK-NEXT: $x0 = COPY [[UV]](s64)
418 ; CHECK-NEXT: $x1 = COPY [[UV1]](s64)
419 ; CHECK-NEXT: $x2 = COPY [[UV2]](s64)
420 ; CHECK-NEXT: $x3 = COPY [[UV3]](s64)
421 ; CHECK-NEXT: $x4 = COPY [[UV4]](s64)
422 ; CHECK-NEXT: $x5 = COPY [[UV5]](s64)
423 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1, implicit $x2, implicit $x3, implicit $x4, implicit $x5
424 %a = insertelement <3 x i100> poison, i100 %v1, i32 0
425 %b = insertelement <3 x i100> %a, i100 %v2, i32 1
426 %c = insertelement <3 x i100> %b, i100 %v2, i32 2
430 define <4 x i100> @ret_v4i100(i100 %v1, i100 %v2) {
431 ; CHECK-LABEL: name: ret_v4i100
432 ; CHECK: bb.1 (%ir-block.0):
433 ; CHECK-NEXT: liveins: $x0, $x1, $x2, $x3
435 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
436 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
437 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64)
438 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s100) = G_TRUNC [[MV]](s128)
439 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
440 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3
441 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY2]](s64), [[COPY3]](s64)
442 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s100) = G_TRUNC [[MV1]](s128)
443 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s100>) = G_IMPLICIT_DEF
444 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
445 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
446 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2
447 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 3
448 ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<4 x s100>) = G_INSERT_VECTOR_ELT [[DEF]], [[TRUNC]](s100), [[C]](s64)
449 ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<4 x s100>) = G_INSERT_VECTOR_ELT [[IVEC]], [[TRUNC1]](s100), [[C1]](s64)
450 ; CHECK-NEXT: [[IVEC2:%[0-9]+]]:_(<4 x s100>) = G_INSERT_VECTOR_ELT [[IVEC1]], [[TRUNC]](s100), [[C2]](s64)
451 ; CHECK-NEXT: [[IVEC3:%[0-9]+]]:_(<4 x s100>) = G_INSERT_VECTOR_ELT [[IVEC2]], [[TRUNC1]](s100), [[C3]](s64)
452 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(<4 x s128>) = G_ANYEXT [[IVEC3]](<4 x s100>)
453 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64), [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64), [[UV4:%[0-9]+]]:_(s64), [[UV5:%[0-9]+]]:_(s64), [[UV6:%[0-9]+]]:_(s64), [[UV7:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[ANYEXT]](<4 x s128>)
454 ; CHECK-NEXT: $x0 = COPY [[UV]](s64)
455 ; CHECK-NEXT: $x1 = COPY [[UV1]](s64)
456 ; CHECK-NEXT: $x2 = COPY [[UV2]](s64)
457 ; CHECK-NEXT: $x3 = COPY [[UV3]](s64)
458 ; CHECK-NEXT: $x4 = COPY [[UV4]](s64)
459 ; CHECK-NEXT: $x5 = COPY [[UV5]](s64)
460 ; CHECK-NEXT: $x6 = COPY [[UV6]](s64)
461 ; CHECK-NEXT: $x7 = COPY [[UV7]](s64)
462 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1, implicit $x2, implicit $x3, implicit $x4, implicit $x5, implicit $x6, implicit $x7
463 %a = insertelement <4 x i100> poison, i100 %v1, i32 0
464 %b = insertelement <4 x i100> %a, i100 %v2, i32 1
465 %c = insertelement <4 x i100> %b, i100 %v1, i32 2
466 %d = insertelement <4 x i100> %c, i100 %v2, i32 3