1 ; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 ; RUN: llc -mtriple=aarch64-linux-gnu -O0 -stop-after=irtranslator -verify-machineinstrs -o - %s | FileCheck %s
4 define i12 @v1i12(<1 x i12> %v) {
5 ; CHECK-LABEL: name: v1i12
6 ; CHECK: bb.1 (%ir-block.0):
7 ; CHECK-NEXT: liveins: $w0
9 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
10 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s12) = G_TRUNC [[COPY]](s32)
11 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s12)
12 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
13 ; CHECK-NEXT: RET_ReallyLR implicit $w0
14 %r = extractelement <1 x i12> %v, i32 0
18 define i12 @v2i12(<2 x i12> %v) {
19 ; CHECK-LABEL: name: v2i12
20 ; CHECK: bb.1 (%ir-block.0):
21 ; CHECK-NEXT: liveins: $d0
23 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0
24 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<2 x s12>) = G_TRUNC [[COPY]](<2 x s32>)
25 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
26 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s12) = G_EXTRACT_VECTOR_ELT [[TRUNC]](<2 x s12>), [[C]](s64)
27 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EVEC]](s12)
28 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
29 ; CHECK-NEXT: RET_ReallyLR implicit $w0
30 %r = extractelement <2 x i12> %v, i32 1
34 define i12 @v3i12(<3 x i12> %v) {
35 ; CHECK-LABEL: name: v3i12
36 ; CHECK: bb.1 (%ir-block.0):
37 ; CHECK-NEXT: liveins: $w0, $w1, $w2
39 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
40 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
41 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2
42 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)
43 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<3 x s12>) = G_TRUNC [[BUILD_VECTOR]](<3 x s32>)
44 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
45 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s12) = G_EXTRACT_VECTOR_ELT [[TRUNC]](<3 x s12>), [[C]](s64)
46 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EVEC]](s12)
47 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
48 ; CHECK-NEXT: RET_ReallyLR implicit $w0
49 %r = extractelement <3 x i12> %v, i32 1
53 define i12 @v4i12(<4 x i12> %v) {
54 ; CHECK-LABEL: name: v4i12
55 ; CHECK: bb.1 (%ir-block.0):
56 ; CHECK-NEXT: liveins: $d0
58 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0
59 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<4 x s12>) = G_TRUNC [[COPY]](<4 x s16>)
60 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
61 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s12) = G_EXTRACT_VECTOR_ELT [[TRUNC]](<4 x s12>), [[C]](s64)
62 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EVEC]](s12)
63 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
64 ; CHECK-NEXT: RET_ReallyLR implicit $w0
65 %r = extractelement <4 x i12> %v, i32 1
69 define i12 @v5i12(<5 x i12> %v) {
70 ; CHECK-LABEL: name: v5i12
71 ; CHECK: bb.1 (%ir-block.0):
72 ; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3, $w4
74 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
75 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
76 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2
77 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3
78 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $w4
79 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<5 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32)
80 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<5 x s12>) = G_TRUNC [[BUILD_VECTOR]](<5 x s32>)
81 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
82 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s12) = G_EXTRACT_VECTOR_ELT [[TRUNC]](<5 x s12>), [[C]](s64)
83 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EVEC]](s12)
84 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
85 ; CHECK-NEXT: RET_ReallyLR implicit $w0
86 %r = extractelement <5 x i12> %v, i32 1
90 define i12 @v6i12(<6 x i12> %v) {
91 ; CHECK-LABEL: name: v6i12
92 ; CHECK: bb.1 (%ir-block.0):
93 ; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3, $w4, $w5
95 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
96 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
97 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2
98 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3
99 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $w4
100 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $w5
101 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<6 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)
102 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<6 x s12>) = G_TRUNC [[BUILD_VECTOR]](<6 x s32>)
103 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
104 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s12) = G_EXTRACT_VECTOR_ELT [[TRUNC]](<6 x s12>), [[C]](s64)
105 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EVEC]](s12)
106 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
107 ; CHECK-NEXT: RET_ReallyLR implicit $w0
108 %r = extractelement <6 x i12> %v, i32 1
112 define i12 @v7i12(<7 x i12> %v) {
113 ; CHECK-LABEL: name: v7i12
114 ; CHECK: bb.1 (%ir-block.0):
115 ; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3, $w4, $w5, $w6
117 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
118 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
119 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2
120 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3
121 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $w4
122 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $w5
123 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $w6
124 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<7 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32)
125 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<7 x s12>) = G_TRUNC [[BUILD_VECTOR]](<7 x s32>)
126 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
127 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s12) = G_EXTRACT_VECTOR_ELT [[TRUNC]](<7 x s12>), [[C]](s64)
128 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EVEC]](s12)
129 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
130 ; CHECK-NEXT: RET_ReallyLR implicit $w0
131 %r = extractelement <7 x i12> %v, i32 1
135 define i12 @v8i12(<8 x i12> %v) {
136 ; CHECK-LABEL: name: v8i12
137 ; CHECK: bb.1 (%ir-block.0):
138 ; CHECK-NEXT: liveins: $q0
140 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0
141 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<8 x s12>) = G_TRUNC [[COPY]](<8 x s16>)
142 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
143 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s12) = G_EXTRACT_VECTOR_ELT [[TRUNC]](<8 x s12>), [[C]](s64)
144 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EVEC]](s12)
145 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
146 ; CHECK-NEXT: RET_ReallyLR implicit $w0
147 %r = extractelement <8 x i12> %v, i32 1
151 define i12 @v12i12(<12 x i12> %v) {
152 ; CHECK-LABEL: name: v12i12
153 ; CHECK: bb.1 (%ir-block.0):
154 ; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3, $w4, $w5, $w6, $w7
156 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
157 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
158 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2
159 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3
160 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $w4
161 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $w5
162 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $w6
163 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $w7
164 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.3
165 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX]](p0) :: (invariant load (s32) from %fixed-stack.3, align 16)
166 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.2
167 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX1]](p0) :: (invariant load (s32) from %fixed-stack.2, align 8)
168 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.1
169 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX2]](p0) :: (invariant load (s32) from %fixed-stack.1, align 16)
170 ; CHECK-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
171 ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s32) = G_LOAD [[FRAME_INDEX3]](p0) :: (invariant load (s32) from %fixed-stack.0, align 8)
172 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<12 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32), [[LOAD]](s32), [[LOAD1]](s32), [[LOAD2]](s32), [[LOAD3]](s32)
173 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<12 x s12>) = G_TRUNC [[BUILD_VECTOR]](<12 x s32>)
174 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
175 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s12) = G_EXTRACT_VECTOR_ELT [[TRUNC]](<12 x s12>), [[C]](s64)
176 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EVEC]](s12)
177 ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
178 ; CHECK-NEXT: RET_ReallyLR implicit $w0
179 %r = extractelement <12 x i12> %v, i32 1
184 define i100 @v1i100(<1 x i100> %v) {
185 ; CHECK-LABEL: name: v1i100
186 ; CHECK: bb.1 (%ir-block.0):
187 ; CHECK-NEXT: liveins: $x0, $x1
189 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
190 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
191 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64)
192 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s100) = G_TRUNC [[MV]](s128)
193 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s128) = G_ANYEXT [[TRUNC]](s100)
194 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[ANYEXT]](s128)
195 ; CHECK-NEXT: $x0 = COPY [[UV]](s64)
196 ; CHECK-NEXT: $x1 = COPY [[UV1]](s64)
197 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1
198 %r = extractelement <1 x i100> %v, i32 0
202 define i100 @v2i100(<2 x i100> %v) {
203 ; CHECK-LABEL: name: v2i100
204 ; CHECK: bb.1 (%ir-block.0):
205 ; CHECK-NEXT: liveins: $x0, $x1, $x2, $x3
207 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
208 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
209 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
210 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3
211 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64)
212 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s100) = G_TRUNC [[MV]](s128)
213 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY2]](s64), [[COPY3]](s64)
214 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s100) = G_TRUNC [[MV1]](s128)
215 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s100>) = G_BUILD_VECTOR [[TRUNC]](s100), [[TRUNC1]](s100)
216 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
217 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s100) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<2 x s100>), [[C]](s64)
218 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s128) = G_ANYEXT [[EVEC]](s100)
219 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[ANYEXT]](s128)
220 ; CHECK-NEXT: $x0 = COPY [[UV]](s64)
221 ; CHECK-NEXT: $x1 = COPY [[UV1]](s64)
222 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1
223 %r = extractelement <2 x i100> %v, i32 1
227 define i100 @v3i100(<3 x i100> %v) {
228 ; CHECK-LABEL: name: v3i100
229 ; CHECK: bb.1 (%ir-block.0):
230 ; CHECK-NEXT: liveins: $x0, $x1, $x2, $x3, $x4, $x5
232 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
233 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
234 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
235 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3
236 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $x4
237 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $x5
238 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64)
239 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s100) = G_TRUNC [[MV]](s128)
240 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY2]](s64), [[COPY3]](s64)
241 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s100) = G_TRUNC [[MV1]](s128)
242 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY4]](s64), [[COPY5]](s64)
243 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s100) = G_TRUNC [[MV2]](s128)
244 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s100>) = G_BUILD_VECTOR [[TRUNC]](s100), [[TRUNC1]](s100), [[TRUNC2]](s100)
245 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
246 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s100) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<3 x s100>), [[C]](s64)
247 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s128) = G_ANYEXT [[EVEC]](s100)
248 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[ANYEXT]](s128)
249 ; CHECK-NEXT: $x0 = COPY [[UV]](s64)
250 ; CHECK-NEXT: $x1 = COPY [[UV1]](s64)
251 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1
252 %r = extractelement <3 x i100> %v, i32 1
256 define i100 @v4i100(<4 x i100> %v) {
257 ; CHECK-LABEL: name: v4i100
258 ; CHECK: bb.1 (%ir-block.0):
259 ; CHECK-NEXT: liveins: $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7
261 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
262 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
263 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
264 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3
265 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $x4
266 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $x5
267 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $x6
268 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $x7
269 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64)
270 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s100) = G_TRUNC [[MV]](s128)
271 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY2]](s64), [[COPY3]](s64)
272 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s100) = G_TRUNC [[MV1]](s128)
273 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY4]](s64), [[COPY5]](s64)
274 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s100) = G_TRUNC [[MV2]](s128)
275 ; CHECK-NEXT: [[MV3:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY6]](s64), [[COPY7]](s64)
276 ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s100) = G_TRUNC [[MV3]](s128)
277 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s100>) = G_BUILD_VECTOR [[TRUNC]](s100), [[TRUNC1]](s100), [[TRUNC2]](s100), [[TRUNC3]](s100)
278 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
279 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s100) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<4 x s100>), [[C]](s64)
280 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s128) = G_ANYEXT [[EVEC]](s100)
281 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[ANYEXT]](s128)
282 ; CHECK-NEXT: $x0 = COPY [[UV]](s64)
283 ; CHECK-NEXT: $x1 = COPY [[UV1]](s64)
284 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1
285 %r = extractelement <4 x i100> %v, i32 1
289 define i100 @v8i100(<8 x i100> %v) {
290 ; CHECK-LABEL: name: v8i100
291 ; CHECK: bb.1 (%ir-block.0):
292 ; CHECK-NEXT: liveins: $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7
294 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
295 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
296 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2
297 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3
298 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $x4
299 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $x5
300 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $x6
301 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $x7
302 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.7
303 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[FRAME_INDEX]](p0) :: (invariant load (s64) from %fixed-stack.7, align 16)
304 ; CHECK-NEXT: [[FRAME_INDEX1:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.6
305 ; CHECK-NEXT: [[LOAD1:%[0-9]+]]:_(s64) = G_LOAD [[FRAME_INDEX1]](p0) :: (invariant load (s64) from %fixed-stack.6)
306 ; CHECK-NEXT: [[FRAME_INDEX2:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.5
307 ; CHECK-NEXT: [[LOAD2:%[0-9]+]]:_(s64) = G_LOAD [[FRAME_INDEX2]](p0) :: (invariant load (s64) from %fixed-stack.5, align 16)
308 ; CHECK-NEXT: [[FRAME_INDEX3:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.4
309 ; CHECK-NEXT: [[LOAD3:%[0-9]+]]:_(s64) = G_LOAD [[FRAME_INDEX3]](p0) :: (invariant load (s64) from %fixed-stack.4)
310 ; CHECK-NEXT: [[FRAME_INDEX4:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.3
311 ; CHECK-NEXT: [[LOAD4:%[0-9]+]]:_(s64) = G_LOAD [[FRAME_INDEX4]](p0) :: (invariant load (s64) from %fixed-stack.3, align 16)
312 ; CHECK-NEXT: [[FRAME_INDEX5:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.2
313 ; CHECK-NEXT: [[LOAD5:%[0-9]+]]:_(s64) = G_LOAD [[FRAME_INDEX5]](p0) :: (invariant load (s64) from %fixed-stack.2)
314 ; CHECK-NEXT: [[FRAME_INDEX6:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.1
315 ; CHECK-NEXT: [[LOAD6:%[0-9]+]]:_(s64) = G_LOAD [[FRAME_INDEX6]](p0) :: (invariant load (s64) from %fixed-stack.1, align 16)
316 ; CHECK-NEXT: [[FRAME_INDEX7:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.0
317 ; CHECK-NEXT: [[LOAD7:%[0-9]+]]:_(s64) = G_LOAD [[FRAME_INDEX7]](p0) :: (invariant load (s64) from %fixed-stack.0)
318 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64)
319 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s100) = G_TRUNC [[MV]](s128)
320 ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY2]](s64), [[COPY3]](s64)
321 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s100) = G_TRUNC [[MV1]](s128)
322 ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY4]](s64), [[COPY5]](s64)
323 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s100) = G_TRUNC [[MV2]](s128)
324 ; CHECK-NEXT: [[MV3:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY6]](s64), [[COPY7]](s64)
325 ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s100) = G_TRUNC [[MV3]](s128)
326 ; CHECK-NEXT: [[MV4:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[LOAD]](s64), [[LOAD1]](s64)
327 ; CHECK-NEXT: [[TRUNC4:%[0-9]+]]:_(s100) = G_TRUNC [[MV4]](s128)
328 ; CHECK-NEXT: [[MV5:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[LOAD2]](s64), [[LOAD3]](s64)
329 ; CHECK-NEXT: [[TRUNC5:%[0-9]+]]:_(s100) = G_TRUNC [[MV5]](s128)
330 ; CHECK-NEXT: [[MV6:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[LOAD4]](s64), [[LOAD5]](s64)
331 ; CHECK-NEXT: [[TRUNC6:%[0-9]+]]:_(s100) = G_TRUNC [[MV6]](s128)
332 ; CHECK-NEXT: [[MV7:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[LOAD6]](s64), [[LOAD7]](s64)
333 ; CHECK-NEXT: [[TRUNC7:%[0-9]+]]:_(s100) = G_TRUNC [[MV7]](s128)
334 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s100>) = G_BUILD_VECTOR [[TRUNC]](s100), [[TRUNC1]](s100), [[TRUNC2]](s100), [[TRUNC3]](s100), [[TRUNC4]](s100), [[TRUNC5]](s100), [[TRUNC6]](s100), [[TRUNC7]](s100)
335 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
336 ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s100) = G_EXTRACT_VECTOR_ELT [[BUILD_VECTOR]](<8 x s100>), [[C]](s64)
337 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s128) = G_ANYEXT [[EVEC]](s100)
338 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[ANYEXT]](s128)
339 ; CHECK-NEXT: $x0 = COPY [[UV]](s64)
340 ; CHECK-NEXT: $x1 = COPY [[UV1]](s64)
341 ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1
342 %r = extractelement <8 x i100> %v, i32 1