381 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s3 4 5---6name: test_extracts_47tracksRegLiveness: true8body: |9 bb.0:10 liveins: $x0, $x1, $x211 12 13 ; CHECK-LABEL: name: test_extracts_414 ; CHECK: liveins: $x0, $x1, $x215 ; CHECK-NEXT: {{ $}}16 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x017 ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s64), 3218 ; CHECK-NEXT: $w0 = COPY [[EXTRACT]](s32)19 ; CHECK-NEXT: RET_ReallyLR implicit $w020 %0:_(s64) = COPY $x021 %1:_(s64) = COPY $x122 %2:_(s128) = G_MERGE_VALUES %0, %123 %3:_(s32) = G_EXTRACT %2, 3224 $w0 = COPY %325 RET_ReallyLR implicit $w026...27---28name: p0_from_s12829tracksRegLiveness: true30body: |31 bb.0:32 liveins: $x0, $q033 ; CHECK-LABEL: name: p0_from_s12834 ; CHECK: liveins: $x0, $q035 ; CHECK-NEXT: {{ $}}36 ; CHECK-NEXT: %val:_(s128) = COPY $q037 ; CHECK-NEXT: %extract:_(p0) = G_EXTRACT %val(s128), 038 ; CHECK-NEXT: $x0 = COPY %extract(p0)39 ; CHECK-NEXT: RET_ReallyLR implicit $x040 %val:_(s128) = COPY $q041 %extract:_(p0) = G_EXTRACT %val, 042 $x0 = COPY %extract43 RET_ReallyLR implicit $x044...45---46name: s64_from_s12847tracksRegLiveness: true48body: |49 bb.0:50 liveins: $x0, $q051 ; CHECK-LABEL: name: s64_from_s12852 ; CHECK: liveins: $x0, $q053 ; CHECK-NEXT: {{ $}}54 ; CHECK-NEXT: %val:_(s128) = COPY $q055 ; CHECK-NEXT: %extract:_(s64) = G_EXTRACT %val(s128), 056 ; CHECK-NEXT: $x0 = COPY %extract(s64)57 ; CHECK-NEXT: RET_ReallyLR implicit $x058 %val:_(s128) = COPY $q059 %extract:_(s64) = G_EXTRACT %val, 060 $x0 = COPY %extract61 RET_ReallyLR implicit $x062...63---64name: s32_from_s12865tracksRegLiveness: true66body: |67 bb.0:68 liveins: $w0, $q069 ; CHECK-LABEL: name: s32_from_s12870 ; CHECK: liveins: $w0, $q071 ; CHECK-NEXT: {{ $}}72 ; CHECK-NEXT: %val:_(s128) = COPY $q073 ; CHECK-NEXT: %extract:_(s32) = G_EXTRACT %val(s128), 074 ; CHECK-NEXT: $w0 = COPY %extract(s32)75 ; CHECK-NEXT: RET_ReallyLR implicit $w076 %val:_(s128) = COPY $q077 %extract:_(s32) = G_EXTRACT %val, 078 $w0 = COPY %extract79 RET_ReallyLR implicit $w080...81---82name: s32_from_s6483tracksRegLiveness: true84body: |85 bb.0:86 liveins: $w087 ; CHECK-LABEL: name: s32_from_s6488 ; CHECK: liveins: $w089 ; CHECK-NEXT: {{ $}}90 ; CHECK-NEXT: %val:_(s64) = COPY $x091 ; CHECK-NEXT: %extract:_(s32) = G_EXTRACT %val(s64), 092 ; CHECK-NEXT: $w0 = COPY %extract(s32)93 ; CHECK-NEXT: RET_ReallyLR implicit $w094 %val:_(s64) = COPY $x095 %extract:_(s32) = G_EXTRACT %val, 096 $w0 = COPY %extract97 RET_ReallyLR implicit $w098...99---100name: s32_from_p0101tracksRegLiveness: true102body: |103 bb.0:104 liveins: $w0105 ; CHECK-LABEL: name: s32_from_p0106 ; CHECK: liveins: $w0107 ; CHECK-NEXT: {{ $}}108 ; CHECK-NEXT: %val:_(p0) = COPY $x0109 ; CHECK-NEXT: %extract:_(s32) = G_EXTRACT %val(p0), 0110 ; CHECK-NEXT: $w0 = COPY %extract(s32)111 ; CHECK-NEXT: RET_ReallyLR implicit $w0112 %val:_(p0) = COPY $x0113 %extract:_(s32) = G_EXTRACT %val, 0114 $w0 = COPY %extract115 RET_ReallyLR implicit $w0116...117---118name: s16_from_s128119tracksRegLiveness: true120body: |121 bb.0:122 liveins: $h0, $q0123 ; CHECK-LABEL: name: s16_from_s128124 ; CHECK: liveins: $h0, $q0125 ; CHECK-NEXT: {{ $}}126 ; CHECK-NEXT: %val:_(s128) = COPY $q0127 ; CHECK-NEXT: %extract:_(s16) = G_EXTRACT %val(s128), 0128 ; CHECK-NEXT: $h0 = COPY %extract(s16)129 ; CHECK-NEXT: RET_ReallyLR implicit $h0130 %val:_(s128) = COPY $q0131 %extract:_(s16) = G_EXTRACT %val, 0132 $h0 = COPY %extract133 RET_ReallyLR implicit $h0134...135---136name: s16_from_s64137tracksRegLiveness: true138body: |139 bb.0:140 liveins: $h0, $x0141 ; CHECK-LABEL: name: s16_from_s64142 ; CHECK: liveins: $h0, $x0143 ; CHECK-NEXT: {{ $}}144 ; CHECK-NEXT: %val:_(s64) = COPY $x0145 ; CHECK-NEXT: %extract:_(s16) = G_EXTRACT %val(s64), 0146 ; CHECK-NEXT: $h0 = COPY %extract(s16)147 ; CHECK-NEXT: RET_ReallyLR implicit $h0148 %val:_(s64) = COPY $x0149 %extract:_(s16) = G_EXTRACT %val, 0150 $h0 = COPY %extract151 RET_ReallyLR implicit $h0152...153---154name: s16_from_s32155tracksRegLiveness: true156body: |157 bb.0:158 liveins: $h0, $w0159 ; CHECK-LABEL: name: s16_from_s32160 ; CHECK: liveins: $h0, $w0161 ; CHECK-NEXT: {{ $}}162 ; CHECK-NEXT: %val:_(s32) = COPY $w0163 ; CHECK-NEXT: %extract:_(s16) = G_EXTRACT %val(s32), 0164 ; CHECK-NEXT: $h0 = COPY %extract(s16)165 ; CHECK-NEXT: RET_ReallyLR implicit $h0166 %val:_(s32) = COPY $w0167 %extract:_(s16) = G_EXTRACT %val, 0168 $h0 = COPY %extract169 RET_ReallyLR implicit $h0170...171---172name: s8_from_s128173tracksRegLiveness: true174body: |175 bb.0:176 liveins: $b0, $q0177 ; CHECK-LABEL: name: s8_from_s128178 ; CHECK: liveins: $b0, $q0179 ; CHECK-NEXT: {{ $}}180 ; CHECK-NEXT: %val:_(s128) = COPY $q0181 ; CHECK-NEXT: %extract:_(s8) = G_TRUNC %val(s128)182 ; CHECK-NEXT: $b0 = COPY %extract(s8)183 ; CHECK-NEXT: RET_ReallyLR implicit $b0184 %val:_(s128) = COPY $q0185 %extract:_(s8) = G_EXTRACT %val, 0186 $b0 = COPY %extract187 RET_ReallyLR implicit $b0188...189---190name: s8_from_s64191tracksRegLiveness: true192body: |193 bb.0:194 liveins: $b0, $x0195 ; CHECK-LABEL: name: s8_from_s64196 ; CHECK: liveins: $b0, $x0197 ; CHECK-NEXT: {{ $}}198 ; CHECK-NEXT: %val:_(s64) = COPY $x0199 ; CHECK-NEXT: %extract:_(s8) = G_TRUNC %val(s64)200 ; CHECK-NEXT: $b0 = COPY %extract(s8)201 ; CHECK-NEXT: RET_ReallyLR implicit $b0202 %val:_(s64) = COPY $x0203 %extract:_(s8) = G_EXTRACT %val, 0204 $b0 = COPY %extract205 RET_ReallyLR implicit $b0206...207---208name: s8_from_s32209tracksRegLiveness: true210body: |211 bb.0:212 liveins: $b0, $w0213 ; CHECK-LABEL: name: s8_from_s32214 ; CHECK: liveins: $b0, $w0215 ; CHECK-NEXT: {{ $}}216 ; CHECK-NEXT: %val:_(s32) = COPY $w0217 ; CHECK-NEXT: %extract:_(s8) = G_TRUNC %val(s32)218 ; CHECK-NEXT: $b0 = COPY %extract(s8)219 ; CHECK-NEXT: RET_ReallyLR implicit $b0220 %val:_(s32) = COPY $w0221 %extract:_(s8) = G_EXTRACT %val, 0222 $b0 = COPY %extract223 RET_ReallyLR implicit $b0224...225---226name: s8_from_s16227tracksRegLiveness: true228body: |229 bb.0:230 liveins: $b0, $h0231 ; CHECK-LABEL: name: s8_from_s16232 ; CHECK: liveins: $b0, $h0233 ; CHECK-NEXT: {{ $}}234 ; CHECK-NEXT: %val:_(s16) = COPY $h0235 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %val(s16)236 ; CHECK-NEXT: %extract:_(s8) = G_TRUNC [[ANYEXT]](s32)237 ; CHECK-NEXT: $b0 = COPY %extract(s8)238 ; CHECK-NEXT: RET_ReallyLR implicit $b0239 %val:_(s16) = COPY $h0240 %extract:_(s8) = G_EXTRACT %val, 0241 $b0 = COPY %extract242 RET_ReallyLR implicit $b0243...244---245name: s1_from_s32246tracksRegLiveness: true247body: |248 bb.0:249 liveins: $w0250 ; CHECK-LABEL: name: s1_from_s32251 ; CHECK: liveins: $w0252 ; CHECK-NEXT: {{ $}}253 ; CHECK-NEXT: %val:_(s32) = COPY $w0254 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1255 ; CHECK-NEXT: %ext:_(s32) = G_AND %val, [[C]]256 ; CHECK-NEXT: $w0 = COPY %ext(s32)257 ; CHECK-NEXT: RET_ReallyLR implicit $w0258 %val:_(s32) = COPY $w0259 %extract:_(s1) = G_EXTRACT %val, 0260 %ext:_(s32) = G_ZEXT %extract261 $w0 = COPY %ext262 RET_ReallyLR implicit $w0263...264---265name: s3_from_s32266tracksRegLiveness: true267body: |268 bb.0:269 liveins: $w0270 ; CHECK-LABEL: name: s3_from_s32271 ; CHECK: liveins: $w0272 ; CHECK-NEXT: {{ $}}273 ; CHECK-NEXT: %val:_(s32) = COPY $w0274 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 7275 ; CHECK-NEXT: %ext:_(s32) = G_AND %val, [[C]]276 ; CHECK-NEXT: $w0 = COPY %ext(s32)277 ; CHECK-NEXT: RET_ReallyLR implicit $w0278 %val:_(s32) = COPY $w0279 %extract:_(s3) = G_EXTRACT %val, 0280 %ext:_(s32) = G_ZEXT %extract281 $w0 = COPY %ext282 RET_ReallyLR implicit $w0283...284---285name: s3_from_s35286tracksRegLiveness: true287body: |288 bb.0:289 liveins: $w0290 ; CHECK-LABEL: name: s3_from_s35291 ; CHECK: liveins: $w0292 ; CHECK-NEXT: {{ $}}293 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0294 ; CHECK-NEXT: $w0 = COPY [[C]](s32)295 ; CHECK-NEXT: RET_ReallyLR implicit $w0296 %val:_(s35) = G_IMPLICIT_DEF297 %extract:_(s3) = G_EXTRACT %val, 0298 %ext:_(s32) = G_ZEXT %extract299 $w0 = COPY %ext300 RET_ReallyLR implicit $w0301...302---303name: s4_from_s32304tracksRegLiveness: true305body: |306 bb.0:307 liveins: $w0308 ; CHECK-LABEL: name: s4_from_s32309 ; CHECK: liveins: $w0310 ; CHECK-NEXT: {{ $}}311 ; CHECK-NEXT: %val:_(s32) = COPY $w0312 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 15313 ; CHECK-NEXT: %ext:_(s32) = G_AND %val, [[C]]314 ; CHECK-NEXT: $w0 = COPY %ext(s32)315 ; CHECK-NEXT: RET_ReallyLR implicit $w0316 %val:_(s32) = COPY $w0317 %extract:_(s4) = G_EXTRACT %val, 0318 %ext:_(s32) = G_ZEXT %extract319 $w0 = COPY %ext320 RET_ReallyLR implicit $w0321...322---323name: s64_from_s264324tracksRegLiveness: true325body: |326 bb.0:327 liveins: $x0328 ; CHECK-LABEL: name: s64_from_s264329 ; CHECK: liveins: $x0330 ; CHECK-NEXT: {{ $}}331 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF332 ; CHECK-NEXT: %extract:_(s64) = COPY [[DEF]](s64)333 ; CHECK-NEXT: $x0 = COPY %extract(s64)334 ; CHECK-NEXT: RET_ReallyLR implicit $x0335 %val:_(s264) = G_IMPLICIT_DEF336 %extract:_(s64) = G_EXTRACT %val, 0337 $x0 = COPY %extract338 RET_ReallyLR implicit $x0339...340---341name: s16_from_s144342tracksRegLiveness: true343body: |344 bb.0:345 liveins: $h0346 ; CHECK-LABEL: name: s16_from_s144347 ; CHECK: liveins: $h0348 ; CHECK-NEXT: {{ $}}349 ; CHECK-NEXT: %h0:_(s16) = COPY $h0350 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES %h0(s16), %h0(s16), %h0(s16), %h0(s16)351 ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s16) = G_EXTRACT [[MV]](s64), 1352 ; CHECK-NEXT: %extract:_(s16) = COPY [[EXTRACT]](s16)353 ; CHECK-NEXT: $h0 = COPY %extract(s16)354 ; CHECK-NEXT: RET_ReallyLR implicit $h0355 %h0:_(s16) = COPY $h0356 %val:_(s144) = G_MERGE_VALUES %h0, %h0, %h0, %h0, %h0, %h0, %h0, %h0, %h0357 %extract:_(s16) = G_EXTRACT %val, 1358 $h0 = COPY %extract359 RET_ReallyLR implicit $h0360...361---362name: s32_from_s144363tracksRegLiveness: true364body: |365 bb.0:366 liveins: $h0, $w0367 ; CHECK-LABEL: name: s32_from_s144368 ; CHECK: liveins: $h0, $w0369 ; CHECK-NEXT: {{ $}}370 ; CHECK-NEXT: %h0:_(s16) = COPY $h0371 ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES %h0(s16), %h0(s16), %h0(s16), %h0(s16)372 ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[MV]](s64), 1373 ; CHECK-NEXT: %extract:_(s32) = COPY [[EXTRACT]](s32)374 ; CHECK-NEXT: $w0 = COPY %extract(s32)375 ; CHECK-NEXT: RET_ReallyLR implicit $w0376 %h0:_(s16) = COPY $h0377 %val:_(s144) = G_MERGE_VALUES %h0, %h0, %h0, %h0, %h0, %h0, %h0, %h0, %h0378 %extract:_(s32) = G_EXTRACT %val, 1379 $w0 = COPY %extract380 RET_ReallyLR implicit $w0381