368 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple=aarch64 -run-pass=legalizer %s -o - | FileCheck %s3---4name: test_ext5body: |6 bb.0.entry:7 ; CHECK-LABEL: name: test_ext8 ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x09 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)10 ; CHECK-NEXT: $w0 = COPY [[TRUNC]](s32)11 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)12 ; CHECK-NEXT: $w0 = COPY [[TRUNC1]](s32)13 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)14 ; CHECK-NEXT: $w0 = COPY [[TRUNC2]](s32)15 ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)16 ; CHECK-NEXT: $w0 = COPY [[TRUNC3]](s32)17 ; CHECK-NEXT: $x0 = COPY [[COPY]](s64)18 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 25519 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]20 ; CHECK-NEXT: $x0 = COPY [[AND]](s64)21 ; CHECK-NEXT: $x0 = COPY [[COPY]](s64)22 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 3223 ; CHECK-NEXT: $x0 = COPY [[SEXT_INREG]](s64)24 ; CHECK-NEXT: [[TRUNC4:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)25 ; CHECK-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[TRUNC4]], 126 ; CHECK-NEXT: $w0 = COPY [[SEXT_INREG1]](s32)27 ; CHECK-NEXT: [[TRUNC5:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)28 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 25529 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC5]], [[C1]]30 ; CHECK-NEXT: $w0 = COPY [[AND1]](s32)31 ; CHECK-NEXT: [[TRUNC6:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)32 ; CHECK-NEXT: $w0 = COPY [[TRUNC6]](s32)33 ; CHECK-NEXT: [[TRUNC7:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)34 ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 135 ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[TRUNC7]], [[C2]]36 ; CHECK-NEXT: $w0 = COPY [[AND2]](s32)37 ; CHECK-NEXT: [[TRUNC8:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)38 ; CHECK-NEXT: $w0 = COPY [[TRUNC8]](s32)39 ; CHECK-NEXT: [[TRUNC9:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)40 ; CHECK-NEXT: [[SEXT_INREG2:%[0-9]+]]:_(s32) = G_SEXT_INREG [[TRUNC9]], 1641 ; CHECK-NEXT: $w0 = COPY [[SEXT_INREG2]](s32)42 ; CHECK-NEXT: [[TRUNC10:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)43 ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[TRUNC10]], [[C2]]44 ; CHECK-NEXT: $w0 = COPY [[AND3]](s32)45 ; CHECK-NEXT: [[TRUNC11:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)46 ; CHECK-NEXT: $w0 = COPY [[TRUNC11]](s32)47 ; CHECK-NEXT: [[TRUNC12:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)48 ; CHECK-NEXT: $w0 = COPY [[TRUNC12]](s32)49 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s64) = G_FPEXT [[TRUNC12]](s32)50 ; CHECK-NEXT: $x0 = COPY [[FPEXT]](s64)51 ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 052 ; CHECK-NEXT: $w0 = COPY [[C3]](s32)53 ; CHECK-NEXT: $w0 = COPY [[C3]](s32)54 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF55 ; CHECK-NEXT: $w0 = COPY [[DEF]](s32)56 %0:_(s64) = COPY $x057 %1:_(s1) = G_TRUNC %0(s64)58 %19:_(s32) = G_ANYEXT %1(s1)59 $w0 = COPY %19(s32)60 %2:_(s8) = G_TRUNC %0(s64)61 %20:_(s32) = G_ANYEXT %2(s8)62 $w0 = COPY %20(s32)63 %3:_(s16) = G_TRUNC %0(s64)64 %21:_(s32) = G_ANYEXT %3(s16)65 $w0 = COPY %21(s32)66 %4:_(s32) = G_TRUNC %0(s64)67 $w0 = COPY %4(s32)68 %5:_(s64) = G_ANYEXT %1(s1)69 $x0 = COPY %5(s64)70 %6:_(s64) = G_ZEXT %2(s8)71 $x0 = COPY %6(s64)72 %7:_(s64) = G_ANYEXT %3(s16)73 $x0 = COPY %7(s64)74 %8:_(s64) = G_SEXT %4(s32)75 $x0 = COPY %8(s64)76 %9:_(s32) = G_SEXT %1(s1)77 $w0 = COPY %9(s32)78 %10:_(s32) = G_ZEXT %2(s8)79 $w0 = COPY %10(s32)80 %11:_(s32) = G_ANYEXT %3(s16)81 $w0 = COPY %11(s32)82 %12:_(s32) = G_ZEXT %1(s1)83 $w0 = COPY %12(s32)84 %13:_(s32) = G_ANYEXT %2(s8)85 $w0 = COPY %13(s32)86 %14:_(s32) = G_SEXT %3(s16)87 $w0 = COPY %14(s32)88 %15:_(s8) = G_ZEXT %1(s1)89 %22:_(s32) = G_ANYEXT %15(s8)90 $w0 = COPY %22(s32)91 %16:_(s16) = G_ANYEXT %2(s8)92 %23:_(s32) = G_ANYEXT %16(s16)93 $w0 = COPY %23(s32)94 %17:_(s32) = G_TRUNC %0(s64)95 $w0 = COPY %17(s32)96 %18:_(s64) = G_FPEXT %17(s32)97 $x0 = COPY %18(s64)98 %24:_(s16) = G_IMPLICIT_DEF99 %25:_(s32) = G_ZEXT %24(s16)100 $w0 = COPY %25(s32)101 %26:_(s32) = G_SEXT %24(s16)102 $w0 = COPY %26(s32)103 %27:_(s32) = G_ANYEXT %24(s16)104 $w0 = COPY %27(s32)105 106...107---108name: test_anyext_anyext109body: |110 bb.0:111 liveins: $w0112 113 ; CHECK-LABEL: name: test_anyext_anyext114 ; CHECK: liveins: $w0115 ; CHECK-NEXT: {{ $}}116 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0117 ; CHECK-NEXT: $w0 = COPY [[COPY]](s32)118 %0:_(s32) = COPY $w0119 %1:_(s1) = G_TRUNC %0(s32)120 %2:_(s8) = G_ANYEXT %1(s1)121 %3:_(s32) = G_ANYEXT %2(s8)122 $w0 = COPY %3(s32)123 124...125---126name: test_anyext_sext127body: |128 bb.0:129 liveins: $w0130 131 ; CHECK-LABEL: name: test_anyext_sext132 ; CHECK: liveins: $w0133 ; CHECK-NEXT: {{ $}}134 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0135 ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 1136 ; CHECK-NEXT: $w0 = COPY [[SEXT_INREG]](s32)137 %0:_(s32) = COPY $w0138 %1:_(s1) = G_TRUNC %0(s32)139 %2:_(s8) = G_SEXT %1(s1)140 %3:_(s32) = G_ANYEXT %2(s8)141 $w0 = COPY %3(s32)142 143...144---145name: test_anyext_zext146body: |147 bb.0:148 liveins: $w0149 150 ; CHECK-LABEL: name: test_anyext_zext151 ; CHECK: liveins: $w0152 ; CHECK-NEXT: {{ $}}153 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0154 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1155 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]156 ; CHECK-NEXT: $w0 = COPY [[AND]](s32)157 %0:_(s32) = COPY $w0158 %1:_(s1) = G_TRUNC %0(s32)159 %2:_(s8) = G_ZEXT %1(s1)160 %3:_(s32) = G_ANYEXT %2(s8)161 $w0 = COPY %3(s32)162 163...164---165name: test_zext_v8s16_from_v8s8166alignment: 4167tracksRegLiveness: true168machineFunctionInfo: {}169body: |170 bb.0:171 liveins: $d0172 ; CHECK-LABEL: name: test_zext_v8s16_from_v8s8173 ; CHECK: liveins: $d0174 ; CHECK-NEXT: {{ $}}175 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<8 x s8>) = COPY $d0176 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(<8 x s16>) = G_ZEXT [[COPY]](<8 x s8>)177 ; CHECK-NEXT: $q0 = COPY [[ZEXT]](<8 x s16>)178 ; CHECK-NEXT: RET_ReallyLR implicit $q0179 %1:fpr(<8 x s8>) = COPY $d0180 %2:_(<8 x s16>) = G_ZEXT %1(<8 x s8>)181 $q0 = COPY %2(<8 x s16>)182 RET_ReallyLR implicit $q0183 184...185---186name: test_sext_v8s16_from_v8s8187alignment: 4188tracksRegLiveness: true189machineFunctionInfo: {}190body: |191 bb.0:192 liveins: $d0193 ; CHECK-LABEL: name: test_sext_v8s16_from_v8s8194 ; CHECK: liveins: $d0195 ; CHECK-NEXT: {{ $}}196 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<8 x s8>) = COPY $d0197 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(<8 x s16>) = G_SEXT [[COPY]](<8 x s8>)198 ; CHECK-NEXT: $q0 = COPY [[SEXT]](<8 x s16>)199 ; CHECK-NEXT: RET_ReallyLR implicit $q0200 %1:fpr(<8 x s8>) = COPY $d0201 %2:_(<8 x s16>) = G_SEXT %1(<8 x s8>)202 $q0 = COPY %2(<8 x s16>)203 RET_ReallyLR implicit $q0204 205...206---207name: test_anyext_v8s16_from_v8s8208alignment: 4209tracksRegLiveness: true210machineFunctionInfo: {}211body: |212 bb.0:213 liveins: $d0214 ; CHECK-LABEL: name: test_anyext_v8s16_from_v8s8215 ; CHECK: liveins: $d0216 ; CHECK-NEXT: {{ $}}217 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<8 x s8>) = COPY $d0218 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(<8 x s16>) = G_ANYEXT [[COPY]](<8 x s8>)219 ; CHECK-NEXT: $q0 = COPY [[ANYEXT]](<8 x s16>)220 ; CHECK-NEXT: RET_ReallyLR implicit $q0221 %1:fpr(<8 x s8>) = COPY $d0222 %2:_(<8 x s16>) = G_ANYEXT %1(<8 x s8>)223 $q0 = COPY %2(<8 x s16>)224 RET_ReallyLR implicit $q0225 226...227---228name: test_zext_v4s32_from_v4s16229alignment: 4230tracksRegLiveness: true231machineFunctionInfo: {}232body: |233 bb.0:234 liveins: $d0235 236 ; CHECK-LABEL: name: test_zext_v4s32_from_v4s16237 ; CHECK: liveins: $d0238 ; CHECK-NEXT: {{ $}}239 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0240 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(<4 x s32>) = G_ZEXT [[COPY]](<4 x s16>)241 ; CHECK-NEXT: $q0 = COPY [[ZEXT]](<4 x s32>)242 ; CHECK-NEXT: RET_ReallyLR implicit $q0243 %0:_(<4 x s16>) = COPY $d0244 %1:_(<4 x s32>) = G_ZEXT %0(<4 x s16>)245 $q0 = COPY %1(<4 x s32>)246 RET_ReallyLR implicit $q0247 248...249---250name: test_sext_v4s32_from_v4s16251alignment: 4252tracksRegLiveness: true253machineFunctionInfo: {}254body: |255 bb.0:256 liveins: $d0257 258 ; CHECK-LABEL: name: test_sext_v4s32_from_v4s16259 ; CHECK: liveins: $d0260 ; CHECK-NEXT: {{ $}}261 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0262 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(<4 x s32>) = G_SEXT [[COPY]](<4 x s16>)263 ; CHECK-NEXT: $q0 = COPY [[SEXT]](<4 x s32>)264 ; CHECK-NEXT: RET_ReallyLR implicit $q0265 %0:_(<4 x s16>) = COPY $d0266 %1:_(<4 x s32>) = G_SEXT %0(<4 x s16>)267 $q0 = COPY %1(<4 x s32>)268 RET_ReallyLR implicit $q0269 270...271---272name: test_anyext_v4s32_from_v4s16273alignment: 4274tracksRegLiveness: true275machineFunctionInfo: {}276body: |277 bb.0:278 liveins: $d0279 280 ; CHECK-LABEL: name: test_anyext_v4s32_from_v4s16281 ; CHECK: liveins: $d0282 ; CHECK-NEXT: {{ $}}283 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0284 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(<4 x s32>) = G_ANYEXT [[COPY]](<4 x s16>)285 ; CHECK-NEXT: $q0 = COPY [[ANYEXT]](<4 x s32>)286 ; CHECK-NEXT: RET_ReallyLR implicit $q0287 %0:_(<4 x s16>) = COPY $d0288 %1:_(<4 x s32>) = G_ANYEXT %0(<4 x s16>)289 $q0 = COPY %1(<4 x s32>)290 RET_ReallyLR implicit $q0291 292...293---294name: test_zext_v2s64_from_v2s32295alignment: 4296tracksRegLiveness: true297registers:298 - { id: 0, class: _ }299 - { id: 1, class: _ }300machineFunctionInfo: {}301body: |302 bb.0:303 liveins: $d0304 305 ; CHECK-LABEL: name: test_zext_v2s64_from_v2s32306 ; CHECK: liveins: $d0307 ; CHECK-NEXT: {{ $}}308 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0309 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(<2 x s64>) = G_ZEXT [[COPY]](<2 x s32>)310 ; CHECK-NEXT: $q0 = COPY [[ZEXT]](<2 x s64>)311 ; CHECK-NEXT: RET_ReallyLR implicit $q0312 %0:_(<2 x s32>) = COPY $d0313 %1:_(<2 x s64>) = G_ZEXT %0(<2 x s32>)314 $q0 = COPY %1(<2 x s64>)315 RET_ReallyLR implicit $q0316 317...318---319name: test_sext_v2s64_from_v2s32320alignment: 4321tracksRegLiveness: true322registers:323 - { id: 0, class: _ }324 - { id: 1, class: _ }325machineFunctionInfo: {}326body: |327 bb.0:328 liveins: $d0329 330 ; CHECK-LABEL: name: test_sext_v2s64_from_v2s32331 ; CHECK: liveins: $d0332 ; CHECK-NEXT: {{ $}}333 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0334 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(<2 x s64>) = G_SEXT [[COPY]](<2 x s32>)335 ; CHECK-NEXT: $q0 = COPY [[SEXT]](<2 x s64>)336 ; CHECK-NEXT: RET_ReallyLR implicit $q0337 %0:_(<2 x s32>) = COPY $d0338 %1:_(<2 x s64>) = G_SEXT %0(<2 x s32>)339 $q0 = COPY %1(<2 x s64>)340 RET_ReallyLR implicit $q0341 342...343---344name: test_anyext_v2s64_from_v2s32345alignment: 4346tracksRegLiveness: true347registers:348 - { id: 0, class: _ }349 - { id: 1, class: _ }350machineFunctionInfo: {}351body: |352 bb.0:353 liveins: $d0354 355 ; CHECK-LABEL: name: test_anyext_v2s64_from_v2s32356 ; CHECK: liveins: $d0357 ; CHECK-NEXT: {{ $}}358 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0359 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(<2 x s64>) = G_ANYEXT [[COPY]](<2 x s32>)360 ; CHECK-NEXT: $q0 = COPY [[ANYEXT]](<2 x s64>)361 ; CHECK-NEXT: RET_ReallyLR implicit $q0362 %0:_(<2 x s32>) = COPY $d0363 %1:_(<2 x s64>) = G_ANYEXT %0(<2 x s32>)364 $q0 = COPY %1(<2 x s64>)365 RET_ReallyLR implicit $q0366 367...368