345 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -mtriple=aarch64-linux-gnu -O0 -stop-after=irtranslator -verify-machineinstrs -o - %s | FileCheck %s3 4define i12 @v1i12(<1 x i12> %v) {5 ; CHECK-LABEL: name: v1i126 ; CHECK: bb.1 (%ir-block.0):7 ; CHECK-NEXT: liveins: $w08 ; CHECK-NEXT: {{ $}}9 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w010 ; 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 $w014 %r = extractelement <1 x i12> %v, i32 015 ret i12 %r16}17 18define i12 @v2i12(<2 x i12> %v) {19 ; CHECK-LABEL: name: v2i1220 ; CHECK: bb.1 (%ir-block.0):21 ; CHECK-NEXT: liveins: $d022 ; CHECK-NEXT: {{ $}}23 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d024 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<2 x s12>) = G_TRUNC [[COPY]](<2 x s32>)25 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 126 ; 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 $w030 %r = extractelement <2 x i12> %v, i32 131 ret i12 %r32}33 34define i12 @v3i12(<3 x i12> %v) {35 ; CHECK-LABEL: name: v3i1236 ; CHECK: bb.1 (%ir-block.0):37 ; CHECK-NEXT: liveins: $w0, $w1, $w238 ; CHECK-NEXT: {{ $}}39 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w040 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w141 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w242 ; 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 145 ; 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 $w049 %r = extractelement <3 x i12> %v, i32 150 ret i12 %r51}52 53define i12 @v4i12(<4 x i12> %v) {54 ; CHECK-LABEL: name: v4i1255 ; CHECK: bb.1 (%ir-block.0):56 ; CHECK-NEXT: liveins: $d057 ; CHECK-NEXT: {{ $}}58 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d059 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<4 x s12>) = G_TRUNC [[COPY]](<4 x s16>)60 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 161 ; 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 $w065 %r = extractelement <4 x i12> %v, i32 166 ret i12 %r67}68 69define i12 @v5i12(<5 x i12> %v) {70 ; CHECK-LABEL: name: v5i1271 ; CHECK: bb.1 (%ir-block.0):72 ; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3, $w473 ; CHECK-NEXT: {{ $}}74 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w075 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w176 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w277 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w378 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $w479 ; 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 182 ; 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 $w086 %r = extractelement <5 x i12> %v, i32 187 ret i12 %r88}89 90define i12 @v6i12(<6 x i12> %v) {91 ; CHECK-LABEL: name: v6i1292 ; CHECK: bb.1 (%ir-block.0):93 ; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3, $w4, $w594 ; CHECK-NEXT: {{ $}}95 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w096 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w197 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w298 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w399 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $w4100 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $w5101 ; 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 1104 ; 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 $w0108 %r = extractelement <6 x i12> %v, i32 1109 ret i12 %r110}111 112define i12 @v7i12(<7 x i12> %v) {113 ; CHECK-LABEL: name: v7i12114 ; CHECK: bb.1 (%ir-block.0):115 ; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3, $w4, $w5, $w6116 ; CHECK-NEXT: {{ $}}117 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0118 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1119 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2120 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3121 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $w4122 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $w5123 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $w6124 ; 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 1127 ; 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 $w0131 %r = extractelement <7 x i12> %v, i32 1132 ret i12 %r133}134 135define i12 @v8i12(<8 x i12> %v) {136 ; CHECK-LABEL: name: v8i12137 ; CHECK: bb.1 (%ir-block.0):138 ; CHECK-NEXT: liveins: $q0139 ; CHECK-NEXT: {{ $}}140 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0141 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<8 x s12>) = G_TRUNC [[COPY]](<8 x s16>)142 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1143 ; 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 $w0147 %r = extractelement <8 x i12> %v, i32 1148 ret i12 %r149}150 151define i12 @v12i12(<12 x i12> %v) {152 ; CHECK-LABEL: name: v12i12153 ; CHECK: bb.1 (%ir-block.0):154 ; CHECK-NEXT: liveins: $w0, $w1, $w2, $w3, $w4, $w5, $w6, $w7155 ; CHECK-NEXT: {{ $}}156 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0157 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1158 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2159 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $w3160 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $w4161 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $w5162 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $w6163 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $w7164 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.3165 ; 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.2167 ; 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.1169 ; 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.0171 ; 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 1175 ; 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 $w0179 %r = extractelement <12 x i12> %v, i32 1180 ret i12 %r181}182 183 184define i100 @v1i100(<1 x i100> %v) {185 ; CHECK-LABEL: name: v1i100186 ; CHECK: bb.1 (%ir-block.0):187 ; CHECK-NEXT: liveins: $x0, $x1188 ; CHECK-NEXT: {{ $}}189 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0190 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1191 ; 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 $x1198 %r = extractelement <1 x i100> %v, i32 0199 ret i100 %r200}201 202define i100 @v2i100(<2 x i100> %v) {203 ; CHECK-LABEL: name: v2i100204 ; CHECK: bb.1 (%ir-block.0):205 ; CHECK-NEXT: liveins: $x0, $x1, $x2, $x3206 ; CHECK-NEXT: {{ $}}207 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0208 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1209 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2210 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3211 ; 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 1217 ; 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 $x1223 %r = extractelement <2 x i100> %v, i32 1224 ret i100 %r225}226 227define i100 @v3i100(<3 x i100> %v) {228 ; CHECK-LABEL: name: v3i100229 ; CHECK: bb.1 (%ir-block.0):230 ; CHECK-NEXT: liveins: $x0, $x1, $x2, $x3, $x4, $x5231 ; CHECK-NEXT: {{ $}}232 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0233 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1234 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2235 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3236 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $x4237 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $x5238 ; 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 1246 ; 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 $x1252 %r = extractelement <3 x i100> %v, i32 1253 ret i100 %r254}255 256define i100 @v4i100(<4 x i100> %v) {257 ; CHECK-LABEL: name: v4i100258 ; CHECK: bb.1 (%ir-block.0):259 ; CHECK-NEXT: liveins: $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7260 ; CHECK-NEXT: {{ $}}261 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0262 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1263 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2264 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3265 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $x4266 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $x5267 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $x6268 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $x7269 ; 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 1279 ; 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 $x1285 %r = extractelement <4 x i100> %v, i32 1286 ret i100 %r287}288 289define i100 @v8i100(<8 x i100> %v) {290 ; CHECK-LABEL: name: v8i100291 ; CHECK: bb.1 (%ir-block.0):292 ; CHECK-NEXT: liveins: $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7293 ; CHECK-NEXT: {{ $}}294 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0295 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1296 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2297 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY $x3298 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s64) = COPY $x4299 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s64) = COPY $x5300 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:_(s64) = COPY $x6301 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:_(s64) = COPY $x7302 ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %fixed-stack.7303 ; 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.6305 ; 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.5307 ; 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.4309 ; 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.3311 ; 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.2313 ; 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.1315 ; 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.0317 ; 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 1336 ; 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 $x1342 %r = extractelement <8 x i100> %v, i32 1343 ret i100 %r344}345