1000 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple arm64-- -run-pass=regbankselect %s -o - | FileCheck %s3 4# Check the default mappings for various instructions.5 6--- |7 target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"8 9 define void @test_add_s32() { ret void }10 define void @test_add_v4s32() { ret void }11 define void @test_sub_s32() { ret void }12 define void @test_sub_v4s32() { ret void }13 define void @test_mul_s32() { ret void }14 define void @test_mul_v4s32() { ret void }15 16 define void @test_and_s32() { ret void }17 define void @test_and_v4s32() { ret void }18 define void @test_or_s32() { ret void }19 define void @test_or_v4s32() { ret void }20 define void @test_xor_s32() { ret void }21 define void @test_xor_v4s32() { ret void }22 23 define void @test_shl_s32() { ret void }24 define void @test_shl_v4s32() { ret void }25 define void @test_lshr_s32() { ret void }26 define void @test_ashr_s32() { ret void }27 28 define void @test_sdiv_s32() { ret void }29 define void @test_udiv_s32() { ret void }30 31 define void @test_anyext_s64_s32() { ret void }32 define void @test_sext_s64_s32() { ret void }33 define void @test_zext_s64_s32() { ret void }34 define void @test_trunc_s32_s64() { ret void }35 36 define void @test_constant_s32() { ret void }37 define void @test_constant_p0() { ret void }38 39 define void @test_icmp_s32() { ret void }40 define void @test_icmp_p0() { ret void }41 42 define void @test_frame_index_p0() {43 %ptr0 = alloca i6444 ret void45 }46 47 define void @test_ptrtoint_s64_p0() { ret void }48 define void @test_inttoptr_p0_s64() { ret void }49 50 define void @test_load_s32_p0() { ret void }51 define void @test_store_s32_p0() { ret void }52 53 define void @test_fadd_s32() { ret void }54 define void @test_fsub_s32() { ret void }55 define void @test_fmul_s32() { ret void }56 define void @test_fdiv_s32() { ret void }57 58 define void @test_fpext_s64_s32() { ret void }59 define void @test_fptrunc_s32_s64() { ret void }60 61 define void @test_fconstant_s32() { ret void }62 define void @test_fneg_s32() { ret void }63 64 define void @test_fcmp_s32() { ret void }65 66 define void @test_sitofp_s64_s32() { ret void }67 define void @test_sitofp_v4s32() { ret void }68 define void @test_uitofp_s32_s64() { ret void }69 define void @test_uitofp_v4s32() { ret void }70 71 define void @test_fptosi_s64_s32() { ret void }72 define void @test_fptosi_v4s32() { ret void }73 define void @test_fptoui_s32_s64() { ret void }74 define void @test_fptoui_v4s32() { ret void }75 76 define void @test_gphi_ptr() { ret void }77 78 define void @test_restricted_tail_call() { ret void }79 80...81 82---83name: test_add_s3284legalized: true85registers:86 - { id: 0, class: _ }87 - { id: 1, class: _ }88body: |89 bb.0:90 liveins: $w091 ; CHECK-LABEL: name: test_add_s3292 ; CHECK: liveins: $w093 ; CHECK-NEXT: {{ $}}94 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w095 ; CHECK-NEXT: [[ADD:%[0-9]+]]:gpr(s32) = G_ADD [[COPY]], [[COPY]]96 %0(s32) = COPY $w097 %1(s32) = G_ADD %0, %098...99 100---101name: test_add_v4s32102legalized: true103registers:104 - { id: 0, class: _ }105 - { id: 1, class: _ }106body: |107 bb.0:108 liveins: $q0109 ; CHECK-LABEL: name: test_add_v4s32110 ; CHECK: liveins: $q0111 ; CHECK-NEXT: {{ $}}112 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0113 ; CHECK-NEXT: [[ADD:%[0-9]+]]:fpr(<4 x s32>) = G_ADD [[COPY]], [[COPY]]114 %0(<4 x s32>) = COPY $q0115 %1(<4 x s32>) = G_ADD %0, %0116...117 118---119name: test_sub_s32120legalized: true121registers:122 - { id: 0, class: _ }123 - { id: 1, class: _ }124body: |125 bb.0:126 liveins: $w0127 ; CHECK-LABEL: name: test_sub_s32128 ; CHECK: liveins: $w0129 ; CHECK-NEXT: {{ $}}130 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0131 ; CHECK-NEXT: [[SUB:%[0-9]+]]:gpr(s32) = G_SUB [[COPY]], [[COPY]]132 %0(s32) = COPY $w0133 %1(s32) = G_SUB %0, %0134...135 136---137name: test_sub_v4s32138legalized: true139registers:140 - { id: 0, class: _ }141 - { id: 1, class: _ }142body: |143 bb.0:144 liveins: $q0145 ; CHECK-LABEL: name: test_sub_v4s32146 ; CHECK: liveins: $q0147 ; CHECK-NEXT: {{ $}}148 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0149 ; CHECK-NEXT: [[SUB:%[0-9]+]]:fpr(<4 x s32>) = G_SUB [[COPY]], [[COPY]]150 %0(<4 x s32>) = COPY $q0151 %1(<4 x s32>) = G_SUB %0, %0152...153 154---155name: test_mul_s32156legalized: true157registers:158 - { id: 0, class: _ }159 - { id: 1, class: _ }160body: |161 bb.0:162 liveins: $w0163 ; CHECK-LABEL: name: test_mul_s32164 ; CHECK: liveins: $w0165 ; CHECK-NEXT: {{ $}}166 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0167 ; CHECK-NEXT: [[MUL:%[0-9]+]]:gpr(s32) = G_MUL [[COPY]], [[COPY]]168 %0(s32) = COPY $w0169 %1(s32) = G_MUL %0, %0170...171 172---173name: test_mul_v4s32174legalized: true175registers:176 - { id: 0, class: _ }177 - { id: 1, class: _ }178body: |179 bb.0:180 liveins: $q0181 ; CHECK-LABEL: name: test_mul_v4s32182 ; CHECK: liveins: $q0183 ; CHECK-NEXT: {{ $}}184 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0185 ; CHECK-NEXT: [[MUL:%[0-9]+]]:fpr(<4 x s32>) = G_MUL [[COPY]], [[COPY]]186 %0(<4 x s32>) = COPY $q0187 %1(<4 x s32>) = G_MUL %0, %0188...189 190---191name: test_and_s32192legalized: true193registers:194 - { id: 0, class: _ }195 - { id: 1, class: _ }196body: |197 bb.0:198 liveins: $w0199 ; CHECK-LABEL: name: test_and_s32200 ; CHECK: liveins: $w0201 ; CHECK-NEXT: {{ $}}202 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0203 ; CHECK-NEXT: [[AND:%[0-9]+]]:gpr(s32) = G_AND [[COPY]], [[COPY]]204 %0(s32) = COPY $w0205 %1(s32) = G_AND %0, %0206...207 208---209name: test_and_v4s32210legalized: true211registers:212 - { id: 0, class: _ }213 - { id: 1, class: _ }214body: |215 bb.0:216 liveins: $q0217 ; CHECK-LABEL: name: test_and_v4s32218 ; CHECK: liveins: $q0219 ; CHECK-NEXT: {{ $}}220 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0221 ; CHECK-NEXT: [[AND:%[0-9]+]]:fpr(<4 x s32>) = G_AND [[COPY]], [[COPY]]222 %0(<4 x s32>) = COPY $q0223 %1(<4 x s32>) = G_AND %0, %0224...225 226---227name: test_or_s32228legalized: true229registers:230 - { id: 0, class: _ }231 - { id: 1, class: _ }232body: |233 bb.0:234 liveins: $w0235 ; CHECK-LABEL: name: test_or_s32236 ; CHECK: liveins: $w0237 ; CHECK-NEXT: {{ $}}238 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0239 ; CHECK-NEXT: [[OR:%[0-9]+]]:gpr(s32) = G_OR [[COPY]], [[COPY]]240 %0(s32) = COPY $w0241 %1(s32) = G_OR %0, %0242...243 244---245name: test_or_v4s32246legalized: true247registers:248 - { id: 0, class: _ }249 - { id: 1, class: _ }250body: |251 bb.0:252 liveins: $q0253 ; CHECK-LABEL: name: test_or_v4s32254 ; CHECK: liveins: $q0255 ; CHECK-NEXT: {{ $}}256 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0257 ; CHECK-NEXT: [[OR:%[0-9]+]]:fpr(<4 x s32>) = G_OR [[COPY]], [[COPY]]258 %0(<4 x s32>) = COPY $q0259 %1(<4 x s32>) = G_OR %0, %0260...261 262---263name: test_xor_s32264legalized: true265registers:266 - { id: 0, class: _ }267 - { id: 1, class: _ }268body: |269 bb.0:270 liveins: $w0271 ; CHECK-LABEL: name: test_xor_s32272 ; CHECK: liveins: $w0273 ; CHECK-NEXT: {{ $}}274 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0275 ; CHECK-NEXT: [[XOR:%[0-9]+]]:gpr(s32) = G_XOR [[COPY]], [[COPY]]276 %0(s32) = COPY $w0277 %1(s32) = G_XOR %0, %0278...279 280---281name: test_xor_v4s32282legalized: true283registers:284 - { id: 0, class: _ }285 - { id: 1, class: _ }286body: |287 bb.0:288 liveins: $q0289 ; CHECK-LABEL: name: test_xor_v4s32290 ; CHECK: liveins: $q0291 ; CHECK-NEXT: {{ $}}292 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0293 ; CHECK-NEXT: [[XOR:%[0-9]+]]:fpr(<4 x s32>) = G_XOR [[COPY]], [[COPY]]294 %0(<4 x s32>) = COPY $q0295 %1(<4 x s32>) = G_XOR %0, %0296...297 298---299name: test_shl_s32300legalized: true301registers:302 - { id: 0, class: _ }303 - { id: 1, class: _ }304body: |305 bb.0:306 liveins: $w0307 ; CHECK-LABEL: name: test_shl_s32308 ; CHECK: liveins: $w0309 ; CHECK-NEXT: {{ $}}310 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0311 ; CHECK-NEXT: [[SHL:%[0-9]+]]:gpr(s32) = G_SHL [[COPY]], [[COPY]](s32)312 %0(s32) = COPY $w0313 %1(s32) = G_SHL %0, %0314...315 316---317name: test_shl_v4s32318legalized: true319registers:320 - { id: 0, class: _ }321 - { id: 1, class: _ }322body: |323 bb.0:324 liveins: $q0325 ; CHECK-LABEL: name: test_shl_v4s32326 ; CHECK: liveins: $q0327 ; CHECK-NEXT: {{ $}}328 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0329 ; CHECK-NEXT: [[SHL:%[0-9]+]]:fpr(<4 x s32>) = G_SHL [[COPY]], [[COPY]](<4 x s32>)330 %0(<4 x s32>) = COPY $q0331 %1(<4 x s32>) = G_SHL %0, %0332...333 334---335name: test_lshr_s32336legalized: true337registers:338 - { id: 0, class: _ }339 - { id: 1, class: _ }340body: |341 bb.0:342 liveins: $w0343 ; CHECK-LABEL: name: test_lshr_s32344 ; CHECK: liveins: $w0345 ; CHECK-NEXT: {{ $}}346 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0347 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:gpr(s32) = G_LSHR [[COPY]], [[COPY]](s32)348 %0(s32) = COPY $w0349 %1(s32) = G_LSHR %0, %0350...351 352---353name: test_ashr_s32354legalized: true355registers:356 - { id: 0, class: _ }357 - { id: 1, class: _ }358body: |359 bb.0:360 liveins: $w0361 ; CHECK-LABEL: name: test_ashr_s32362 ; CHECK: liveins: $w0363 ; CHECK-NEXT: {{ $}}364 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0365 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:gpr(s32) = G_ASHR [[COPY]], [[COPY]](s32)366 %0(s32) = COPY $w0367 %1(s32) = G_ASHR %0, %0368...369 370---371name: test_sdiv_s32372legalized: true373registers:374 - { id: 0, class: _ }375 - { id: 1, class: _ }376body: |377 bb.0:378 liveins: $w0379 ; CHECK-LABEL: name: test_sdiv_s32380 ; CHECK: liveins: $w0381 ; CHECK-NEXT: {{ $}}382 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0383 ; CHECK-NEXT: [[SDIV:%[0-9]+]]:gpr(s32) = G_SDIV [[COPY]], [[COPY]]384 %0(s32) = COPY $w0385 %1(s32) = G_SDIV %0, %0386...387 388---389name: test_udiv_s32390legalized: true391registers:392 - { id: 0, class: _ }393 - { id: 1, class: _ }394body: |395 bb.0:396 liveins: $w0397 ; CHECK-LABEL: name: test_udiv_s32398 ; CHECK: liveins: $w0399 ; CHECK-NEXT: {{ $}}400 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0401 ; CHECK-NEXT: [[UDIV:%[0-9]+]]:gpr(s32) = G_UDIV [[COPY]], [[COPY]]402 %0(s32) = COPY $w0403 %1(s32) = G_UDIV %0, %0404...405 406---407name: test_anyext_s64_s32408legalized: true409registers:410 - { id: 0, class: _ }411 - { id: 1, class: _ }412body: |413 bb.0:414 liveins: $w0415 ; CHECK-LABEL: name: test_anyext_s64_s32416 ; CHECK: liveins: $w0417 ; CHECK-NEXT: {{ $}}418 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0419 ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:gpr(s64) = G_ANYEXT [[COPY]](s32)420 %0(s32) = COPY $w0421 %1(s64) = G_ANYEXT %0422...423 424---425name: test_sext_s64_s32426legalized: true427registers:428 - { id: 0, class: _ }429 - { id: 1, class: _ }430body: |431 bb.0:432 liveins: $w0433 ; CHECK-LABEL: name: test_sext_s64_s32434 ; CHECK: liveins: $w0435 ; CHECK-NEXT: {{ $}}436 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0437 ; CHECK-NEXT: [[SEXT:%[0-9]+]]:gpr(s64) = G_SEXT [[COPY]](s32)438 %0(s32) = COPY $w0439 %1(s64) = G_SEXT %0440...441 442---443name: test_zext_s64_s32444legalized: true445registers:446 - { id: 0, class: _ }447 - { id: 1, class: _ }448body: |449 bb.0:450 liveins: $w0451 ; CHECK-LABEL: name: test_zext_s64_s32452 ; CHECK: liveins: $w0453 ; CHECK-NEXT: {{ $}}454 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0455 ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:gpr(s64) = G_ZEXT [[COPY]](s32)456 %0(s32) = COPY $w0457 %1(s64) = G_ZEXT %0458...459 460---461name: test_trunc_s32_s64462legalized: true463registers:464 - { id: 0, class: _ }465 - { id: 1, class: _ }466body: |467 bb.0:468 liveins: $x0469 ; CHECK-LABEL: name: test_trunc_s32_s64470 ; CHECK: liveins: $x0471 ; CHECK-NEXT: {{ $}}472 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0473 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:gpr(s32) = G_TRUNC [[COPY]](s64)474 %0(s64) = COPY $x0475 %1(s32) = G_TRUNC %0476...477 478---479name: test_constant_s32480legalized: true481registers:482 - { id: 0, class: _ }483body: |484 bb.0:485 ; CHECK-LABEL: name: test_constant_s32486 ; CHECK: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 123487 %0(s32) = G_CONSTANT i32 123488...489 490---491name: test_constant_p0492legalized: true493registers:494 - { id: 0, class: _ }495body: |496 bb.0:497 ; CHECK-LABEL: name: test_constant_p0498 ; CHECK: [[C:%[0-9]+]]:gpr(p0) = G_CONSTANT i64 0499 %0(p0) = G_CONSTANT i64 0500...501 502---503name: test_icmp_s32504legalized: true505registers:506 - { id: 0, class: _ }507 - { id: 1, class: _ }508 - { id: 2, class: _ }509body: |510 bb.0:511 liveins: $w0512 ; CHECK-LABEL: name: test_icmp_s32513 ; CHECK: liveins: $w0514 ; CHECK-NEXT: {{ $}}515 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0516 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:gpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY]]517 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s32)518 %0(s32) = COPY $w0519 %1(s32) = G_ICMP intpred(ne), %0, %0520 %2(s1) = G_TRUNC %1(s32)521...522 523---524name: test_icmp_p0525legalized: true526registers:527 - { id: 0, class: _ }528 - { id: 1, class: _ }529 - { id: 2, class: _ }530body: |531 bb.0:532 liveins: $x0533 ; CHECK-LABEL: name: test_icmp_p0534 ; CHECK: liveins: $x0535 ; CHECK-NEXT: {{ $}}536 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0537 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:gpr(s32) = G_ICMP intpred(ne), [[COPY]](p0), [[COPY]]538 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s32)539 %0(p0) = COPY $x0540 %1(s32) = G_ICMP intpred(ne), %0, %0541 %2(s1) = G_TRUNC %1(s32)542...543 544---545name: test_frame_index_p0546legalized: true547registers:548 - { id: 0, class: _ }549stack:550 - { id: 0, name: ptr0, offset: 0, size: 8, alignment: 8 }551body: |552 bb.0:553 ; CHECK-LABEL: name: test_frame_index_p0554 ; CHECK: [[FRAME_INDEX:%[0-9]+]]:gpr(p0) = G_FRAME_INDEX %stack.0.ptr0555 %0(p0) = G_FRAME_INDEX %stack.0.ptr0556...557 558---559name: test_ptrtoint_s64_p0560legalized: true561registers:562 - { id: 0, class: _ }563 - { id: 1, class: _ }564body: |565 bb.0:566 liveins: $x0567 ; CHECK-LABEL: name: test_ptrtoint_s64_p0568 ; CHECK: liveins: $x0569 ; CHECK-NEXT: {{ $}}570 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0571 ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:gpr(s64) = G_PTRTOINT [[COPY]](p0)572 %0(p0) = COPY $x0573 %1(s64) = G_PTRTOINT %0574...575 576---577name: test_inttoptr_p0_s64578legalized: true579registers:580 - { id: 0, class: _ }581 - { id: 1, class: _ }582body: |583 bb.0:584 liveins: $x0585 ; CHECK-LABEL: name: test_inttoptr_p0_s64586 ; CHECK: liveins: $x0587 ; CHECK-NEXT: {{ $}}588 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0589 ; CHECK-NEXT: [[INTTOPTR:%[0-9]+]]:gpr(p0) = G_INTTOPTR [[COPY]](s64)590 %0(s64) = COPY $x0591 %1(p0) = G_INTTOPTR %0592...593 594---595name: test_load_s32_p0596legalized: true597registers:598 - { id: 0, class: _ }599 - { id: 1, class: _ }600body: |601 bb.0:602 liveins: $x0603 ; CHECK-LABEL: name: test_load_s32_p0604 ; CHECK: liveins: $x0605 ; CHECK-NEXT: {{ $}}606 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0607 ; CHECK-NEXT: [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[COPY]](p0) :: (load (s32))608 %0(p0) = COPY $x0609 %1(s32) = G_LOAD %0 :: (load (s32))610...611 612---613name: test_store_s32_p0614legalized: true615registers:616 - { id: 0, class: _ }617 - { id: 1, class: _ }618body: |619 bb.0:620 liveins: $x0, $w1621 ; CHECK-LABEL: name: test_store_s32_p0622 ; CHECK: liveins: $x0, $w1623 ; CHECK-NEXT: {{ $}}624 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0625 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $w1626 ; CHECK-NEXT: G_STORE [[COPY1]](s32), [[COPY]](p0) :: (store (s32))627 %0(p0) = COPY $x0628 %1(s32) = COPY $w1629 G_STORE %1, %0 :: (store (s32))630...631 632---633name: test_fadd_s32634legalized: true635registers:636 - { id: 0, class: _ }637 - { id: 1, class: _ }638body: |639 bb.0:640 liveins: $s0641 ; CHECK-LABEL: name: test_fadd_s32642 ; CHECK: liveins: $s0643 ; CHECK-NEXT: {{ $}}644 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0645 ; CHECK-NEXT: [[FADD:%[0-9]+]]:fpr(s32) = G_FADD [[COPY]], [[COPY]]646 %0(s32) = COPY $s0647 %1(s32) = G_FADD %0, %0648...649 650---651name: test_fsub_s32652legalized: true653registers:654 - { id: 0, class: _ }655 - { id: 1, class: _ }656body: |657 bb.0:658 liveins: $s0659 ; CHECK-LABEL: name: test_fsub_s32660 ; CHECK: liveins: $s0661 ; CHECK-NEXT: {{ $}}662 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0663 ; CHECK-NEXT: [[FSUB:%[0-9]+]]:fpr(s32) = G_FSUB [[COPY]], [[COPY]]664 %0(s32) = COPY $s0665 %1(s32) = G_FSUB %0, %0666...667 668---669name: test_fmul_s32670legalized: true671registers:672 - { id: 0, class: _ }673 - { id: 1, class: _ }674body: |675 bb.0:676 liveins: $s0677 ; CHECK-LABEL: name: test_fmul_s32678 ; CHECK: liveins: $s0679 ; CHECK-NEXT: {{ $}}680 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0681 ; CHECK-NEXT: [[FMUL:%[0-9]+]]:fpr(s32) = G_FMUL [[COPY]], [[COPY]]682 %0(s32) = COPY $s0683 %1(s32) = G_FMUL %0, %0684...685 686---687name: test_fdiv_s32688legalized: true689registers:690 - { id: 0, class: _ }691 - { id: 1, class: _ }692body: |693 bb.0:694 liveins: $s0695 ; CHECK-LABEL: name: test_fdiv_s32696 ; CHECK: liveins: $s0697 ; CHECK-NEXT: {{ $}}698 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0699 ; CHECK-NEXT: [[FDIV:%[0-9]+]]:fpr(s32) = G_FDIV [[COPY]], [[COPY]]700 %0(s32) = COPY $s0701 %1(s32) = G_FDIV %0, %0702...703 704---705name: test_fpext_s64_s32706legalized: true707registers:708 - { id: 0, class: _ }709 - { id: 1, class: _ }710body: |711 bb.0:712 liveins: $s0713 ; CHECK-LABEL: name: test_fpext_s64_s32714 ; CHECK: liveins: $s0715 ; CHECK-NEXT: {{ $}}716 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0717 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:fpr(s64) = G_FPEXT [[COPY]](s32)718 %0(s32) = COPY $s0719 %1(s64) = G_FPEXT %0720...721 722---723name: test_fptrunc_s32_s64724legalized: true725registers:726 - { id: 0, class: _ }727 - { id: 1, class: _ }728body: |729 bb.0:730 liveins: $d0731 ; CHECK-LABEL: name: test_fptrunc_s32_s64732 ; CHECK: liveins: $d0733 ; CHECK-NEXT: {{ $}}734 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(s64) = COPY $d0735 ; CHECK-NEXT: [[FPTRUNC:%[0-9]+]]:fpr(s32) = G_FPTRUNC [[COPY]](s64)736 %0(s64) = COPY $d0737 %1(s32) = G_FPTRUNC %0738...739 740---741name: test_fconstant_s32742legalized: true743registers:744 - { id: 0, class: _ }745body: |746 bb.0:747 ; CHECK-LABEL: name: test_fconstant_s32748 ; CHECK: [[C:%[0-9]+]]:fpr(s32) = G_FCONSTANT float 1.000000e+00749 %0(s32) = G_FCONSTANT float 1.0750...751 752---753name: test_fneg_s32754legalized: true755body: |756 bb.0:757 liveins: $s0758 ; CHECK-LABEL: name: test_fneg_s32759 ; CHECK: liveins: $s0760 ; CHECK-NEXT: {{ $}}761 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0762 ; CHECK-NEXT: [[FNEG:%[0-9]+]]:fpr(s32) = G_FNEG [[COPY]]763 %0:_(s32) = COPY $s0764 %1:_(s32) = G_FNEG %0(s32)765...766 767---768name: test_fcmp_s32769legalized: true770registers:771 - { id: 0, class: _ }772 - { id: 1, class: _ }773 - { id: 2, class: _ }774body: |775 bb.0:776 liveins: $s0777 ; CHECK-LABEL: name: test_fcmp_s32778 ; CHECK: liveins: $s0779 ; CHECK-NEXT: {{ $}}780 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0781 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:gpr(s32) = G_FCMP floatpred(olt), [[COPY]](s32), [[COPY]]782 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[FCMP]](s32)783 %0(s32) = COPY $s0784 %1(s32) = G_FCMP floatpred(olt), %0, %0785 %2(s1) = G_TRUNC %1(s32)786...787 788---789name: test_sitofp_s64_s32790legalized: true791registers:792 - { id: 0, class: _ }793 - { id: 1, class: _ }794body: |795 bb.0:796 liveins: $w0797 ; CHECK-LABEL: name: test_sitofp_s64_s32798 ; CHECK: liveins: $w0799 ; CHECK-NEXT: {{ $}}800 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w0801 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:fpr(s64) = G_SITOFP [[COPY]](s32)802 %0(s32) = COPY $w0803 %1(s64) = G_SITOFP %0804...805 806---807name: test_sitofp_v4s32808legalized: true809registers:810 - { id: 0, class: _ }811 - { id: 1, class: _ }812body: |813 bb.0:814 liveins: $q0815 ; CHECK-LABEL: name: test_sitofp_v4s32816 ; CHECK: liveins: $q0817 ; CHECK-NEXT: {{ $}}818 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0819 ; CHECK-NEXT: [[SITOFP:%[0-9]+]]:fpr(<4 x s32>) = G_SITOFP [[COPY]](<4 x s32>)820 %0(<4 x s32>) = COPY $q0821 %1(<4 x s32>) = G_SITOFP %0822...823 824---825name: test_uitofp_s32_s64826legalized: true827registers:828 - { id: 0, class: _ }829 - { id: 1, class: _ }830body: |831 bb.0:832 liveins: $x0833 ; CHECK-LABEL: name: test_uitofp_s32_s64834 ; CHECK: liveins: $x0835 ; CHECK-NEXT: {{ $}}836 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x0837 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:fpr(s32) = G_UITOFP [[COPY]](s64)838 %0(s64) = COPY $x0839 %1(s32) = G_UITOFP %0840...841 842---843name: test_uitofp_v4s32844legalized: true845registers:846 - { id: 0, class: _ }847 - { id: 1, class: _ }848body: |849 bb.0:850 liveins: $q0851 ; CHECK-LABEL: name: test_uitofp_v4s32852 ; CHECK: liveins: $q0853 ; CHECK-NEXT: {{ $}}854 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0855 ; CHECK-NEXT: [[UITOFP:%[0-9]+]]:fpr(<4 x s32>) = G_UITOFP [[COPY]](<4 x s32>)856 %0(<4 x s32>) = COPY $q0857 %1(<4 x s32>) = G_UITOFP %0858...859 860---861name: test_fptosi_s64_s32862legalized: true863registers:864 - { id: 0, class: _ }865 - { id: 1, class: _ }866body: |867 bb.0:868 liveins: $s0869 ; CHECK-LABEL: name: test_fptosi_s64_s32870 ; CHECK: liveins: $s0871 ; CHECK-NEXT: {{ $}}872 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(s32) = COPY $s0873 ; CHECK-NEXT: [[FPTOSI:%[0-9]+]]:gpr(s64) = G_FPTOSI [[COPY]](s32)874 %0(s32) = COPY $s0875 %1(s64) = G_FPTOSI %0876...877 878---879name: test_fptosi_v4s32880legalized: true881registers:882 - { id: 0, class: _ }883 - { id: 1, class: _ }884body: |885 bb.0:886 liveins: $q0887 ; CHECK-LABEL: name: test_fptosi_v4s32888 ; CHECK: liveins: $q0889 ; CHECK-NEXT: {{ $}}890 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0891 ; CHECK-NEXT: [[FPTOSI:%[0-9]+]]:fpr(<4 x s32>) = G_FPTOSI [[COPY]](<4 x s32>)892 %0(<4 x s32>) = COPY $q0893 %1(<4 x s32>) = G_FPTOSI %0894...895 896---897name: test_fptoui_s32_s64898legalized: true899registers:900 - { id: 0, class: _ }901 - { id: 1, class: _ }902body: |903 bb.0:904 liveins: $d0905 ; CHECK-LABEL: name: test_fptoui_s32_s64906 ; CHECK: liveins: $d0907 ; CHECK-NEXT: {{ $}}908 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(s64) = COPY $d0909 ; CHECK-NEXT: [[FPTOUI:%[0-9]+]]:gpr(s32) = G_FPTOUI [[COPY]](s64)910 %0(s64) = COPY $d0911 %1(s32) = G_FPTOUI %0912...913 914---915name: test_fptoui_v4s32916legalized: true917registers:918 - { id: 0, class: _ }919 - { id: 1, class: _ }920body: |921 bb.0:922 liveins: $q0923 ; CHECK-LABEL: name: test_fptoui_v4s32924 ; CHECK: liveins: $q0925 ; CHECK-NEXT: {{ $}}926 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr(<4 x s32>) = COPY $q0927 ; CHECK-NEXT: [[FPTOUI:%[0-9]+]]:fpr(<4 x s32>) = G_FPTOUI [[COPY]](<4 x s32>)928 %0(<4 x s32>) = COPY $q0929 %1(<4 x s32>) = G_FPTOUI %0930...931 932---933name: test_gphi_ptr934legalized: true935tracksRegLiveness: true936registers:937 - { id: 0, class: _, preferred-register: '' }938 - { id: 1, class: _, preferred-register: '' }939 - { id: 2, class: _, preferred-register: '' }940 - { id: 3, class: _, preferred-register: '' }941 - { id: 4, class: _, preferred-register: '' }942 - { id: 5, class: _, preferred-register: '' }943body: |944 ; CHECK-LABEL: name: test_gphi_ptr945 ; CHECK: bb.0:946 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)947 ; CHECK-NEXT: liveins: $w2, $x0, $x1948 ; CHECK-NEXT: {{ $}}949 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(p0) = COPY $x0950 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $x1951 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr(s32) = COPY $w2952 ; CHECK-NEXT: G_BRCOND [[COPY2]](s32), %bb.1953 ; CHECK-NEXT: G_BR %bb.2954 ; CHECK-NEXT: {{ $}}955 ; CHECK-NEXT: bb.1:956 ; CHECK-NEXT: successors: %bb.2(0x80000000)957 ; CHECK-NEXT: {{ $}}958 ; CHECK-NEXT: bb.2:959 ; CHECK-NEXT: [[PHI:%[0-9]+]]:gpr(p0) = G_PHI [[COPY]](p0), %bb.0, [[COPY1]](p0), %bb.1960 ; CHECK-NEXT: $x0 = COPY [[PHI]](p0)961 ; CHECK-NEXT: RET_ReallyLR implicit $x0962 bb.0:963 successors: %bb.1, %bb.2964 liveins: $w2, $x0, $x1965 966 %0(p0) = COPY $x0967 %1(p0) = COPY $x1968 %4(s32) = COPY $w2969 G_BRCOND %4, %bb.1970 G_BR %bb.2971 972 bb.1:973 successors: %bb.2974 975 976 bb.2:977 %3(p0) = G_PHI %0(p0), %bb.0, %1(p0), %bb.1978 $x0 = COPY %3(p0)979 RET_ReallyLR implicit $x0980 981...982 983---984name: test_restricted_tail_call985legalized: true986tracksRegLiveness: true987body: |988 bb.0:989 liveins: $x16, $x17990 ; CHECK-LABEL: name: test_restricted_tail_call991 ; CHECK: liveins: $x16, $x17992 ; CHECK-NEXT: {{ $}}993 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr(s64) = COPY $x16994 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $x17995 ; CHECK-NEXT: RET_ReallyLR996 %0:_(s64) = COPY $x16997 %1:_(s64) = COPY $x17998 RET_ReallyLR999...1000