3820 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=regbankselect %s -o - | FileCheck %s --check-prefix=FAST3# RUN: llc -mtriple=x86_64-linux-gnu -regbankselect-greedy -run-pass=regbankselect %s -o - | FileCheck %s --check-prefix=GREEDY4 5--- |6 define i8 @test_add_i8(i8 %arg1, i8 %arg2) {7 %ret = add i8 %arg1, %arg28 ret i8 %ret9 }10 11 define i16 @test_add_i16(i16 %arg1, i16 %arg2) {12 %ret = add i16 %arg1, %arg213 ret i16 %ret14 }15 16 define i32 @test_add_i32(i32 %arg1, i32 %arg2) {17 %ret = add i32 %arg1, %arg218 ret i32 %ret19 }20 21 define i64 @test_add_i64(i64 %arg1, i64 %arg2) {22 %ret = add i64 %arg1, %arg223 ret i64 %ret24 }25 26 define void @test_mul_gpr() {27 ret void28 }29 30 define float @test_add_float(float %arg1, float %arg2) {31 %ret = fadd float %arg1, %arg232 ret float %ret33 }34 35 define double @test_add_double(double %arg1, double %arg2) {36 %ret = fadd double %arg1, %arg237 ret double %ret38 }39 40 define void @test_fsub_float() {41 %ret1 = fsub float undef, undef42 %ret2 = fsub double undef, undef43 ret void44 }45 46 define void @test_fmul_float() {47 %ret1 = fmul float undef, undef48 %ret2 = fmul double undef, undef49 ret void50 }51 52 define void @test_fdiv_float() {53 %ret1 = fdiv float undef, undef54 %ret2 = fdiv double undef, undef55 ret void56 }57 58 59 define <4 x i32> @test_add_v4i32(<4 x i32> %arg1, <4 x i32> %arg2) {60 %ret = add <4 x i32> %arg1, %arg261 ret <4 x i32> %ret62 }63 64 define <4 x float> @test_add_v4f32(<4 x float> %arg1, <4 x float> %arg2) {65 %ret = fadd <4 x float> %arg1, %arg266 ret <4 x float> %ret67 }68 69 define i8 @test_load_i8(ptr %p1) {70 %r = load i8, ptr %p171 ret i8 %r72 }73 74 define i16 @test_load_i16(ptr %p1) {75 %r = load i16, ptr %p176 ret i16 %r77 }78 79 define i32 @test_load_i32(ptr %p1) {80 %r = load i32, ptr %p181 ret i32 %r82 }83 84 define i64 @test_load_i64(ptr %p1) {85 %r = load i64, ptr %p186 ret i64 %r87 }88 89 define float @test_load_float(ptr %p1) {90 %r = load float, ptr %p191 ret float %r92 }93 94 define double @test_load_double(ptr %p1) {95 %r = load double, ptr %p196 ret double %r97 }98 99 define <4 x i32> @test_load_v4i32(ptr %p1) {100 %r = load <4 x i32>, ptr %p1, align 16101 ret <4 x i32> %r102 }103 104 define ptr @test_store_i32(i32 %val, ptr %p1) {105 store i32 %val, ptr %p1106 ret ptr %p1107 }108 109 define ptr @test_store_i64(i64 %val, ptr %p1) {110 store i64 %val, ptr %p1111 ret ptr %p1112 }113 114 define ptr @test_store_float(float %val, ptr %p1) {115 store float %val, ptr %p1116 ret ptr %p1117 }118 119 define ptr @test_store_double(double %val, ptr %p1) {120 store double %val, ptr %p1121 ret ptr %p1122 }123 124 define void @constInt_check() {125 ret void126 }127 128 define void @trunc_check() {129 ret void130 }131 132 define void @test_gep() {133 %p1 = getelementptr i32, ptr undef, i32 5134 %p2 = getelementptr i32, ptr undef, i64 5135 ret void136 }137 138 define i1 @test_icmp_eq_i8(i8 %a, i8 %b) {139 %r = icmp eq i8 %a, %b140 ret i1 %r141 }142 143 define i1 @test_icmp_eq_i16(i16 %a, i16 %b) {144 %r = icmp eq i16 %a, %b145 ret i1 %r146 }147 148 define i1 @test_icmp_eq_i32(i32 %a, i32 %b) {149 %r = icmp eq i32 %a, %b150 ret i1 %r151 }152 153 define i1 @test_icmp_eq_i64(i64 %a, i64 %b) {154 %r = icmp eq i64 %a, %b155 ret i1 %r156 }157 158 define i8 @test_xor_i8() {159 %ret = xor i8 undef, undef160 ret i8 %ret161 }162 163 define i16 @test_or_i16() {164 %ret = or i16 undef, undef165 ret i16 %ret166 }167 168 define i32 @test_and_i32() {169 %ret = and i32 undef, undef170 ret i32 %ret171 }172 173 define i64 @test_and_i64() {174 %ret = and i64 undef, undef175 ret i64 %ret176 }177 178 @g_int = global i32 0, align 4179 180 define ptr @test_global_ptrv() {181 entry:182 ret ptr @g_int183 }184 185 define i8 @test_undef() {186 ret i8 undef187 }188 189 define i8 @test_undef2(i8 %a) {190 %r = add i8 %a, undef191 ret i8 %r192 }193 194 define float @test_undef3() {195 ret float undef196 }197 198 define float @test_undef4(float %a) {199 %r = fadd float %a, undef200 ret float %r201 }202 203 define i32 @test_i32(i32 %a, i32 %f, i32 %t) {204 entry:205 %cmp = icmp sgt i32 %a, 0206 br i1 %cmp, label %cond.true, label %cond.false207 208 cond.true: ; preds = %entry209 br label %cond.end210 211 cond.false: ; preds = %entry212 br label %cond.end213 214 cond.end: ; preds = %cond.false, %cond.true215 %cond = phi i32 [ %f, %cond.true ], [ %t, %cond.false ]216 ret i32 %cond217 }218 219 define float @test_float(i32 %a, float %f, float %t) {220 entry:221 %cmp = icmp sgt i32 %a, 0222 br i1 %cmp, label %cond.true, label %cond.false223 224 cond.true: ; preds = %entry225 br label %cond.end226 227 cond.false: ; preds = %entry228 br label %cond.end229 230 cond.end: ; preds = %cond.false, %cond.true231 %cond = phi float [ %f, %cond.true ], [ %t, %cond.false ]232 ret float %cond233 }234 235 define double @test_fpext(float %a) {236 entry:237 %conv = fpext float %a to double238 ret double %conv239 }240 241 define float @test_fptrunc(double %a) {242 entry:243 %conv = fptrunc double %a to float244 ret float %conv245 }246 247 define void @test_fconstant() {248 ret void249 }250 251 define float @int32_to_float(i32 %a) {252 entry:253 %conv = sitofp i32 %a to float254 ret float %conv255 }256 257 define float @int64_to_float(i64 %a) {258 entry:259 %conv = sitofp i64 %a to float260 ret float %conv261 }262 263 define double @int32_to_double(i32 %a) {264 entry:265 %conv = sitofp i32 %a to double266 ret double %conv267 }268 269 define double @int64_to_double(i64 %a) {270 entry:271 %conv = sitofp i64 %a to double272 ret double %conv273 }274 275 define signext i8 @float_to_int8(float %val) {276 entry:277 %conv = fptosi float %val to i8278 ret i8 %conv279 }280 281 define signext i16 @float_to_int16(float %val) {282 entry:283 %conv = fptosi float %val to i16284 ret i16 %conv285 }286 287 define i32 @float_to_int32(float %val) {288 entry:289 %conv = fptosi float %val to i32290 ret i32 %conv291 }292 293 define i64 @float_to_int64(float %val) {294 entry:295 %conv = fptosi float %val to i64296 ret i64 %conv297 }298 299 define signext i8 @double_to_int8(double %val) {300 entry:301 %conv = fptosi double %val to i8302 ret i8 %conv303 }304 305 define signext i16 @double_to_int16(double %val) {306 entry:307 %conv = fptosi double %val to i16308 ret i16 %conv309 }310 311 define i32 @double_to_int32(double %val) {312 entry:313 %conv = fptosi double %val to i32314 ret i32 %conv315 }316 317 define i64 @double_to_int64(double %val) {318 entry:319 %conv = fptosi double %val to i64320 ret i64 %conv321 }322 323 define i1 @fcmp_float_oeq(float %x, float %y) {324 %1 = fcmp oeq float %x, %y325 ret i1 %1326 }327 328 define i1 @fcmp_float_ogt(float %x, float %y) {329 %1 = fcmp ogt float %x, %y330 ret i1 %1331 }332 333 define i1 @fcmp_float_oge(float %x, float %y) {334 %1 = fcmp oge float %x, %y335 ret i1 %1336 }337 338 define i1 @fcmp_float_olt(float %x, float %y) {339 %1 = fcmp olt float %x, %y340 ret i1 %1341 }342 343 define i1 @fcmp_float_ole(float %x, float %y) {344 %1 = fcmp ole float %x, %y345 ret i1 %1346 }347 348 define i1 @fcmp_float_one(float %x, float %y) {349 %1 = fcmp one float %x, %y350 ret i1 %1351 }352 353 define i1 @fcmp_float_ord(float %x, float %y) {354 %1 = fcmp ord float %x, %y355 ret i1 %1356 }357 358 define i1 @fcmp_float_uno(float %x, float %y) {359 %1 = fcmp uno float %x, %y360 ret i1 %1361 }362 363 define i1 @fcmp_float_ueq(float %x, float %y) {364 %1 = fcmp ueq float %x, %y365 ret i1 %1366 }367 368 define i1 @fcmp_float_ugt(float %x, float %y) {369 %1 = fcmp ugt float %x, %y370 ret i1 %1371 }372 373 define i1 @fcmp_float_uge(float %x, float %y) {374 %1 = fcmp uge float %x, %y375 ret i1 %1376 }377 378 define i1 @fcmp_float_ult(float %x, float %y) {379 %1 = fcmp ult float %x, %y380 ret i1 %1381 }382 383 define i1 @fcmp_float_ule(float %x, float %y) {384 %1 = fcmp ule float %x, %y385 ret i1 %1386 }387 388 define i1 @fcmp_float_une(float %x, float %y) {389 %1 = fcmp une float %x, %y390 ret i1 %1391 }392 393 define i1 @fcmp_double_oeq(double %x, double %y) {394 %1 = fcmp oeq double %x, %y395 ret i1 %1396 }397 398 define i1 @fcmp_double_ogt(double %x, double %y) {399 %1 = fcmp ogt double %x, %y400 ret i1 %1401 }402 403 define i1 @fcmp_double_oge(double %x, double %y) {404 %1 = fcmp oge double %x, %y405 ret i1 %1406 }407 408 define i1 @fcmp_double_olt(double %x, double %y) {409 %1 = fcmp olt double %x, %y410 ret i1 %1411 }412 413 define i1 @fcmp_double_ole(double %x, double %y) {414 %1 = fcmp ole double %x, %y415 ret i1 %1416 }417 418 define i1 @fcmp_double_one(double %x, double %y) {419 %1 = fcmp one double %x, %y420 ret i1 %1421 }422 423 define i1 @fcmp_double_ord(double %x, double %y) {424 %1 = fcmp ord double %x, %y425 ret i1 %1426 }427 428 define i1 @fcmp_double_uno(double %x, double %y) {429 %1 = fcmp uno double %x, %y430 ret i1 %1431 }432 433 define i1 @fcmp_double_ueq(double %x, double %y) {434 %1 = fcmp ueq double %x, %y435 ret i1 %1436 }437 438 define i1 @fcmp_double_ugt(double %x, double %y) {439 %1 = fcmp ugt double %x, %y440 ret i1 %1441 }442 443 define i1 @fcmp_double_uge(double %x, double %y) {444 %1 = fcmp uge double %x, %y445 ret i1 %1446 }447 448 define i1 @fcmp_double_ult(double %x, double %y) {449 %1 = fcmp ult double %x, %y450 ret i1 %1451 }452 453 define i1 @fcmp_double_ule(double %x, double %y) {454 %1 = fcmp ule double %x, %y455 ret i1 %1456 }457 458 define i1 @fcmp_double_une(double %x, double %y) {459 %1 = fcmp une double %x, %y460 ret i1 %1461 }462 463...464---465name: test_add_i8466alignment: 16467legalized: true468regBankSelected: false469selected: false470tracksRegLiveness: true471registers:472 - { id: 0, class: _ }473 - { id: 1, class: _ }474 - { id: 2, class: _ }475body: |476 bb.1 (%ir-block.0):477 liveins: $edi, $esi478 479 ; FAST-LABEL: name: test_add_i8480 ; FAST: liveins: $edi, $esi481 ; FAST: [[COPY:%[0-9]+]]:gpr(s8) = COPY $dil482 ; FAST: [[COPY1:%[0-9]+]]:gpr(s8) = COPY $sil483 ; FAST: [[ADD:%[0-9]+]]:gpr(s8) = G_ADD [[COPY]], [[COPY1]]484 ; FAST: $al = COPY [[ADD]](s8)485 ; FAST: RET 0, implicit $al486 ; GREEDY-LABEL: name: test_add_i8487 ; GREEDY: liveins: $edi, $esi488 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s8) = COPY $dil489 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s8) = COPY $sil490 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s8) = G_ADD [[COPY]], [[COPY1]]491 ; GREEDY: $al = COPY [[ADD]](s8)492 ; GREEDY: RET 0, implicit $al493 %0(s8) = COPY $dil494 %1(s8) = COPY $sil495 %2(s8) = G_ADD %0, %1496 $al = COPY %2(s8)497 RET 0, implicit $al498 499...500---501name: test_add_i16502alignment: 16503legalized: true504regBankSelected: false505selected: false506tracksRegLiveness: true507registers:508 - { id: 0, class: _ }509 - { id: 1, class: _ }510 - { id: 2, class: _ }511body: |512 bb.1 (%ir-block.0):513 liveins: $edi, $esi514 515 ; FAST-LABEL: name: test_add_i16516 ; FAST: liveins: $edi, $esi517 ; FAST: [[COPY:%[0-9]+]]:gpr(s16) = COPY $di518 ; FAST: [[COPY1:%[0-9]+]]:gpr(s16) = COPY $si519 ; FAST: [[ADD:%[0-9]+]]:gpr(s16) = G_ADD [[COPY]], [[COPY1]]520 ; FAST: $ax = COPY [[ADD]](s16)521 ; FAST: RET 0, implicit $ax522 ; GREEDY-LABEL: name: test_add_i16523 ; GREEDY: liveins: $edi, $esi524 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s16) = COPY $di525 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s16) = COPY $si526 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s16) = G_ADD [[COPY]], [[COPY1]]527 ; GREEDY: $ax = COPY [[ADD]](s16)528 ; GREEDY: RET 0, implicit $ax529 %0(s16) = COPY $di530 %1(s16) = COPY $si531 %2(s16) = G_ADD %0, %1532 $ax = COPY %2(s16)533 RET 0, implicit $ax534 535...536---537name: test_add_i32538alignment: 16539legalized: true540regBankSelected: false541selected: false542tracksRegLiveness: true543registers:544 - { id: 0, class: _ }545 - { id: 1, class: _ }546 - { id: 2, class: _ }547body: |548 bb.1 (%ir-block.0):549 liveins: $edi, $esi550 551 ; FAST-LABEL: name: test_add_i32552 ; FAST: liveins: $edi, $esi553 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi554 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi555 ; FAST: [[ADD:%[0-9]+]]:gpr(s32) = G_ADD [[COPY]], [[COPY1]]556 ; FAST: $eax = COPY [[ADD]](s32)557 ; FAST: RET 0, implicit $eax558 ; GREEDY-LABEL: name: test_add_i32559 ; GREEDY: liveins: $edi, $esi560 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi561 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi562 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s32) = G_ADD [[COPY]], [[COPY1]]563 ; GREEDY: $eax = COPY [[ADD]](s32)564 ; GREEDY: RET 0, implicit $eax565 %0(s32) = COPY $edi566 %1(s32) = COPY $esi567 %2(s32) = G_ADD %0, %1568 $eax = COPY %2(s32)569 RET 0, implicit $eax570 571...572---573name: test_add_i64574alignment: 16575legalized: true576regBankSelected: false577selected: false578tracksRegLiveness: true579registers:580 - { id: 0, class: _ }581 - { id: 1, class: _ }582 - { id: 2, class: _ }583body: |584 bb.1 (%ir-block.0):585 liveins: $rdi, $rsi586 587 ; FAST-LABEL: name: test_add_i64588 ; FAST: liveins: $rdi, $rsi589 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi590 ; FAST: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $rsi591 ; FAST: [[ADD:%[0-9]+]]:gpr(s64) = G_ADD [[COPY]], [[COPY1]]592 ; FAST: $rax = COPY [[ADD]](s64)593 ; FAST: RET 0, implicit $rax594 ; GREEDY-LABEL: name: test_add_i64595 ; GREEDY: liveins: $rdi, $rsi596 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi597 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $rsi598 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s64) = G_ADD [[COPY]], [[COPY1]]599 ; GREEDY: $rax = COPY [[ADD]](s64)600 ; GREEDY: RET 0, implicit $rax601 %0(s64) = COPY $rdi602 %1(s64) = COPY $rsi603 %2(s64) = G_ADD %0, %1604 $rax = COPY %2(s64)605 RET 0, implicit $rax606 607...608---609name: test_mul_gpr610alignment: 16611legalized: true612regBankSelected: false613selected: false614tracksRegLiveness: true615registers:616 - { id: 0, class: _ }617 - { id: 1, class: _ }618 - { id: 2, class: _ }619 - { id: 3, class: _ }620 - { id: 4, class: _ }621 - { id: 5, class: _ }622 - { id: 6, class: _ }623 - { id: 7, class: _ }624body: |625 bb.1 (%ir-block.0):626 627 ; FAST-LABEL: name: test_mul_gpr628 ; FAST: [[DEF:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF629 ; FAST: [[DEF1:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF630 ; FAST: [[DEF2:%[0-9]+]]:gpr(s16) = G_IMPLICIT_DEF631 ; FAST: [[DEF3:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF632 ; FAST: [[MUL:%[0-9]+]]:gpr(s64) = G_MUL [[DEF]], [[DEF]]633 ; FAST: [[MUL1:%[0-9]+]]:gpr(s32) = G_MUL [[DEF1]], [[DEF1]]634 ; FAST: [[MUL2:%[0-9]+]]:gpr(s16) = G_MUL [[DEF2]], [[DEF2]]635 ; FAST: [[MUL3:%[0-9]+]]:gpr(s8) = G_MUL [[DEF3]], [[DEF3]]636 ; FAST: RET 0637 ; GREEDY-LABEL: name: test_mul_gpr638 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF639 ; GREEDY: [[DEF1:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF640 ; GREEDY: [[DEF2:%[0-9]+]]:gpr(s16) = G_IMPLICIT_DEF641 ; GREEDY: [[DEF3:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF642 ; GREEDY: [[MUL:%[0-9]+]]:gpr(s64) = G_MUL [[DEF]], [[DEF]]643 ; GREEDY: [[MUL1:%[0-9]+]]:gpr(s32) = G_MUL [[DEF1]], [[DEF1]]644 ; GREEDY: [[MUL2:%[0-9]+]]:gpr(s16) = G_MUL [[DEF2]], [[DEF2]]645 ; GREEDY: [[MUL3:%[0-9]+]]:gpr(s8) = G_MUL [[DEF3]], [[DEF3]]646 ; GREEDY: RET 0647 %0(s64) = G_IMPLICIT_DEF648 %1(s32) = G_IMPLICIT_DEF649 %2(s16) = G_IMPLICIT_DEF650 %3(s8) = G_IMPLICIT_DEF651 %4(s64) = G_MUL %0, %0652 %5(s32) = G_MUL %1, %1653 %6(s16) = G_MUL %2, %2654 %7(s8) = G_MUL %3, %3655 RET 0656...657---658name: test_add_float659alignment: 16660legalized: true661regBankSelected: false662selected: false663tracksRegLiveness: true664registers:665 - { id: 0, class: _ }666 - { id: 1, class: _ }667 - { id: 2, class: _ }668 - { id: 3, class: _ }669 - { id: 4, class: _ }670 - { id: 5, class: _ }671body: |672 bb.1 (%ir-block.0):673 liveins: $xmm0, $xmm1674 675 ; FAST-LABEL: name: test_add_float676 ; FAST: liveins: $xmm0, $xmm1677 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0678 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)679 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1680 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)681 ; FAST: [[FADD:%[0-9]+]]:vecr(s32) = G_FADD [[TRUNC]], [[TRUNC1]]682 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FADD]](s32)683 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)684 ; FAST: RET 0, implicit $xmm0685 ; GREEDY-LABEL: name: test_add_float686 ; GREEDY: liveins: $xmm0, $xmm1687 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0688 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)689 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1690 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)691 ; GREEDY: [[FADD:%[0-9]+]]:vecr(s32) = G_FADD [[TRUNC]], [[TRUNC1]]692 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FADD]](s32)693 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)694 ; GREEDY: RET 0, implicit $xmm0695 %2:_(s128) = COPY $xmm0696 %0:_(s32) = G_TRUNC %2(s128)697 %3:_(s128) = COPY $xmm1698 %1:_(s32) = G_TRUNC %3(s128)699 %4:_(s32) = G_FADD %0, %1700 %5:_(s128) = G_ANYEXT %4(s32)701 $xmm0 = COPY %5(s128)702 RET 0, implicit $xmm0703 704...705---706name: test_add_double707alignment: 16708legalized: true709regBankSelected: false710selected: false711tracksRegLiveness: true712registers:713 - { id: 0, class: _ }714 - { id: 1, class: _ }715 - { id: 2, class: _ }716 - { id: 3, class: _ }717 - { id: 4, class: _ }718 - { id: 5, class: _ }719body: |720 bb.1 (%ir-block.0):721 liveins: $xmm0, $xmm1722 723 ; FAST-LABEL: name: test_add_double724 ; FAST: liveins: $xmm0, $xmm1725 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0726 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)727 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1728 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)729 ; FAST: [[FADD:%[0-9]+]]:vecr(s64) = G_FADD [[TRUNC]], [[TRUNC1]]730 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FADD]](s64)731 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)732 ; FAST: RET 0, implicit $xmm0733 ; GREEDY-LABEL: name: test_add_double734 ; GREEDY: liveins: $xmm0, $xmm1735 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0736 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)737 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1738 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)739 ; GREEDY: [[FADD:%[0-9]+]]:vecr(s64) = G_FADD [[TRUNC]], [[TRUNC1]]740 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FADD]](s64)741 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)742 ; GREEDY: RET 0, implicit $xmm0743 %2:_(s128) = COPY $xmm0744 %0:_(s64) = G_TRUNC %2(s128)745 %3:_(s128) = COPY $xmm1746 %1:_(s64) = G_TRUNC %3(s128)747 %4:_(s64) = G_FADD %0, %1748 %5:_(s128) = G_ANYEXT %4(s64)749 $xmm0 = COPY %5(s128)750 RET 0, implicit $xmm0751 752...753---754name: test_fsub_float755alignment: 16756legalized: true757regBankSelected: false758registers:759 - { id: 0, class: _, preferred-register: '' }760 - { id: 1, class: _, preferred-register: '' }761 - { id: 2, class: _, preferred-register: '' }762 - { id: 3, class: _, preferred-register: '' }763liveins:764fixedStack:765stack:766constants:767body: |768 bb.1 (%ir-block.0):769 ; FAST-LABEL: name: test_fsub_float770 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF771 ; FAST: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF772 ; FAST: [[COPY:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)773 ; FAST: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)774 ; FAST: [[FSUB:%[0-9]+]]:vecr(s32) = G_FSUB [[COPY]], [[COPY1]]775 ; FAST: [[COPY2:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)776 ; FAST: [[COPY3:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)777 ; FAST: [[FSUB1:%[0-9]+]]:vecr(s64) = G_FSUB [[COPY2]], [[COPY3]]778 ; FAST: RET 0779 ; GREEDY-LABEL: name: test_fsub_float780 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF781 ; GREEDY: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF782 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)783 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)784 ; GREEDY: [[FSUB:%[0-9]+]]:vecr(s32) = G_FSUB [[COPY]], [[COPY1]]785 ; GREEDY: [[COPY2:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)786 ; GREEDY: [[COPY3:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)787 ; GREEDY: [[FSUB1:%[0-9]+]]:vecr(s64) = G_FSUB [[COPY2]], [[COPY3]]788 ; GREEDY: RET 0789 %0(s32) = G_IMPLICIT_DEF790 %2(s64) = G_IMPLICIT_DEF791 %1(s32) = G_FSUB %0, %0792 %3(s64) = G_FSUB %2, %2793 RET 0794 795...796---797name: test_fmul_float798alignment: 16799legalized: true800regBankSelected: false801registers:802 - { id: 0, class: _, preferred-register: '' }803 - { id: 1, class: _, preferred-register: '' }804 - { id: 2, class: _, preferred-register: '' }805 - { id: 3, class: _, preferred-register: '' }806liveins:807fixedStack:808stack:809constants:810body: |811 bb.1 (%ir-block.0):812 ; FAST-LABEL: name: test_fmul_float813 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF814 ; FAST: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF815 ; FAST: [[COPY:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)816 ; FAST: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)817 ; FAST: [[FMUL:%[0-9]+]]:vecr(s32) = G_FMUL [[COPY]], [[COPY1]]818 ; FAST: [[COPY2:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)819 ; FAST: [[COPY3:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)820 ; FAST: [[FMUL1:%[0-9]+]]:vecr(s64) = G_FMUL [[COPY2]], [[COPY3]]821 ; FAST: RET 0822 ; GREEDY-LABEL: name: test_fmul_float823 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF824 ; GREEDY: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF825 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)826 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)827 ; GREEDY: [[FMUL:%[0-9]+]]:vecr(s32) = G_FMUL [[COPY]], [[COPY1]]828 ; GREEDY: [[COPY2:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)829 ; GREEDY: [[COPY3:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)830 ; GREEDY: [[FMUL1:%[0-9]+]]:vecr(s64) = G_FMUL [[COPY2]], [[COPY3]]831 ; GREEDY: RET 0832 %0(s32) = G_IMPLICIT_DEF833 %2(s64) = G_IMPLICIT_DEF834 %1(s32) = G_FMUL %0, %0835 %3(s64) = G_FMUL %2, %2836 RET 0837 838...839---840name: test_fdiv_float841alignment: 16842legalized: true843regBankSelected: false844registers:845 - { id: 0, class: _, preferred-register: '' }846 - { id: 1, class: _, preferred-register: '' }847 - { id: 2, class: _, preferred-register: '' }848 - { id: 3, class: _, preferred-register: '' }849liveins:850fixedStack:851stack:852constants:853body: |854 bb.1 (%ir-block.0):855 ; FAST-LABEL: name: test_fdiv_float856 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF857 ; FAST: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF858 ; FAST: [[COPY:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)859 ; FAST: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)860 ; FAST: [[FDIV:%[0-9]+]]:vecr(s32) = G_FDIV [[COPY]], [[COPY1]]861 ; FAST: [[COPY2:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)862 ; FAST: [[COPY3:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)863 ; FAST: [[FDIV1:%[0-9]+]]:vecr(s64) = G_FDIV [[COPY2]], [[COPY3]]864 ; FAST: RET 0865 ; GREEDY-LABEL: name: test_fdiv_float866 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF867 ; GREEDY: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF868 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)869 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)870 ; GREEDY: [[FDIV:%[0-9]+]]:vecr(s32) = G_FDIV [[COPY]], [[COPY1]]871 ; GREEDY: [[COPY2:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)872 ; GREEDY: [[COPY3:%[0-9]+]]:vecr(s64) = COPY [[DEF1]](s64)873 ; GREEDY: [[FDIV1:%[0-9]+]]:vecr(s64) = G_FDIV [[COPY2]], [[COPY3]]874 ; GREEDY: RET 0875 %0(s32) = G_IMPLICIT_DEF876 %2(s64) = G_IMPLICIT_DEF877 %1(s32) = G_FDIV %0, %0878 %3(s64) = G_FDIV %2, %2879 RET 0880 881...882---883name: test_add_v4i32884alignment: 16885legalized: true886regBankSelected: false887selected: false888tracksRegLiveness: true889registers:890 - { id: 0, class: _ }891 - { id: 1, class: _ }892 - { id: 2, class: _ }893body: |894 bb.1 (%ir-block.0):895 liveins: $xmm0, $xmm1896 897 ; FAST-LABEL: name: test_add_v4i32898 ; FAST: liveins: $xmm0, $xmm1899 ; FAST: [[COPY:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm0900 ; FAST: [[COPY1:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm1901 ; FAST: [[ADD:%[0-9]+]]:vecr(<4 x s32>) = G_ADD [[COPY]], [[COPY1]]902 ; FAST: $xmm0 = COPY [[ADD]](<4 x s32>)903 ; FAST: RET 0, implicit $xmm0904 ; GREEDY-LABEL: name: test_add_v4i32905 ; GREEDY: liveins: $xmm0, $xmm1906 ; GREEDY: [[COPY:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm0907 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm1908 ; GREEDY: [[ADD:%[0-9]+]]:vecr(<4 x s32>) = G_ADD [[COPY]], [[COPY1]]909 ; GREEDY: $xmm0 = COPY [[ADD]](<4 x s32>)910 ; GREEDY: RET 0, implicit $xmm0911 %0(<4 x s32>) = COPY $xmm0912 %1(<4 x s32>) = COPY $xmm1913 %2(<4 x s32>) = G_ADD %0, %1914 $xmm0 = COPY %2(<4 x s32>)915 RET 0, implicit $xmm0916 917...918---919name: test_add_v4f32920alignment: 16921legalized: true922regBankSelected: false923selected: false924tracksRegLiveness: true925registers:926 - { id: 0, class: _ }927 - { id: 1, class: _ }928 - { id: 2, class: _ }929body: |930 bb.1 (%ir-block.0):931 liveins: $xmm0, $xmm1932 933 ; FAST-LABEL: name: test_add_v4f32934 ; FAST: liveins: $xmm0, $xmm1935 ; FAST: [[COPY:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm0936 ; FAST: [[COPY1:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm1937 ; FAST: [[FADD:%[0-9]+]]:vecr(<4 x s32>) = G_FADD [[COPY]], [[COPY1]]938 ; FAST: $xmm0 = COPY [[FADD]](<4 x s32>)939 ; FAST: RET 0, implicit $xmm0940 ; GREEDY-LABEL: name: test_add_v4f32941 ; GREEDY: liveins: $xmm0, $xmm1942 ; GREEDY: [[COPY:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm0943 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm1944 ; GREEDY: [[FADD:%[0-9]+]]:vecr(<4 x s32>) = G_FADD [[COPY]], [[COPY1]]945 ; GREEDY: $xmm0 = COPY [[FADD]](<4 x s32>)946 ; GREEDY: RET 0, implicit $xmm0947 %0(<4 x s32>) = COPY $xmm0948 %1(<4 x s32>) = COPY $xmm1949 %2(<4 x s32>) = G_FADD %0, %1950 $xmm0 = COPY %2(<4 x s32>)951 RET 0, implicit $xmm0952 953...954---955name: test_load_i8956alignment: 16957legalized: true958regBankSelected: false959selected: false960registers:961 - { id: 0, class: _ }962 - { id: 1, class: _ }963body: |964 bb.1 (%ir-block.0):965 liveins: $rdi966 967 ; FAST-LABEL: name: test_load_i8968 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi969 ; FAST: [[LOAD:%[0-9]+]]:gpr(s8) = G_LOAD [[COPY]](p0) :: (load (s8) from %ir.p1)970 ; FAST: $al = COPY [[LOAD]](s8)971 ; FAST: RET 0, implicit $al972 ; GREEDY-LABEL: name: test_load_i8973 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi974 ; GREEDY: [[LOAD:%[0-9]+]]:gpr(s8) = G_LOAD [[COPY]](p0) :: (load (s8) from %ir.p1)975 ; GREEDY: $al = COPY [[LOAD]](s8)976 ; GREEDY: RET 0, implicit $al977 %0(p0) = COPY $rdi978 %1(s8) = G_LOAD %0(p0) :: (load (s8) from %ir.p1)979 $al = COPY %1(s8)980 RET 0, implicit $al981 982...983---984name: test_load_i16985alignment: 16986legalized: true987regBankSelected: false988selected: false989registers:990 - { id: 0, class: _ }991 - { id: 1, class: _ }992body: |993 bb.1 (%ir-block.0):994 liveins: $rdi995 996 ; FAST-LABEL: name: test_load_i16997 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi998 ; FAST: [[LOAD:%[0-9]+]]:gpr(s16) = G_LOAD [[COPY]](p0) :: (load (s16) from %ir.p1)999 ; FAST: $ax = COPY [[LOAD]](s16)1000 ; FAST: RET 0, implicit $ax1001 ; GREEDY-LABEL: name: test_load_i161002 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi1003 ; GREEDY: [[LOAD:%[0-9]+]]:gpr(s16) = G_LOAD [[COPY]](p0) :: (load (s16) from %ir.p1)1004 ; GREEDY: $ax = COPY [[LOAD]](s16)1005 ; GREEDY: RET 0, implicit $ax1006 %0(p0) = COPY $rdi1007 %1(s16) = G_LOAD %0(p0) :: (load (s16) from %ir.p1)1008 $ax = COPY %1(s16)1009 RET 0, implicit $ax1010 1011...1012---1013name: test_load_i321014alignment: 161015legalized: true1016regBankSelected: false1017selected: false1018registers:1019 - { id: 0, class: _ }1020 - { id: 1, class: _ }1021body: |1022 bb.1 (%ir-block.0):1023 liveins: $rdi1024 1025 ; FAST-LABEL: name: test_load_i321026 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi1027 ; FAST: [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[COPY]](p0) :: (load (s32) from %ir.p1)1028 ; FAST: $eax = COPY [[LOAD]](s32)1029 ; FAST: RET 0, implicit $eax1030 ; GREEDY-LABEL: name: test_load_i321031 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi1032 ; GREEDY: [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[COPY]](p0) :: (load (s32) from %ir.p1)1033 ; GREEDY: $eax = COPY [[LOAD]](s32)1034 ; GREEDY: RET 0, implicit $eax1035 %0(p0) = COPY $rdi1036 %1(s32) = G_LOAD %0(p0) :: (load (s32) from %ir.p1)1037 $eax = COPY %1(s32)1038 RET 0, implicit $eax1039 1040...1041---1042name: test_load_i641043alignment: 161044exposesReturnsTwice: false1045legalized: true1046regBankSelected: false1047selected: false1048registers:1049 - { id: 0, class: _ }1050 - { id: 1, class: _ }1051body: |1052 bb.1 (%ir-block.0):1053 liveins: $rdi1054 1055 ; FAST-LABEL: name: test_load_i641056 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi1057 ; FAST: [[LOAD:%[0-9]+]]:gpr(s64) = G_LOAD [[COPY]](p0) :: (load (s64) from %ir.p1)1058 ; FAST: $rax = COPY [[LOAD]](s64)1059 ; FAST: RET 0, implicit $rax1060 ; GREEDY-LABEL: name: test_load_i641061 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi1062 ; GREEDY: [[LOAD:%[0-9]+]]:gpr(s64) = G_LOAD [[COPY]](p0) :: (load (s64) from %ir.p1)1063 ; GREEDY: $rax = COPY [[LOAD]](s64)1064 ; GREEDY: RET 0, implicit $rax1065 %0(p0) = COPY $rdi1066 %1(s64) = G_LOAD %0(p0) :: (load (s64) from %ir.p1)1067 $rax = COPY %1(s64)1068 RET 0, implicit $rax1069 1070...1071---1072name: test_load_float1073alignment: 161074legalized: true1075regBankSelected: false1076selected: false1077registers:1078 - { id: 0, class: _ }1079 - { id: 1, class: _ }1080body: |1081 bb.1 (%ir-block.0):1082 liveins: $rdi1083 1084 ; FAST-LABEL: name: test_load_float1085 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi1086 ; FAST: [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[COPY]](p0) :: (load (s32) from %ir.p1)1087 ; FAST: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[LOAD]](s32)1088 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[COPY1]](s32)1089 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)1090 ; FAST: RET 0, implicit $xmm01091 ; GREEDY-LABEL: name: test_load_float1092 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi1093 ; GREEDY: [[LOAD:%[0-9]+]]:gpr(s32) = G_LOAD [[COPY]](p0) :: (load (s32) from %ir.p1)1094 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[LOAD]](s32)1095 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[COPY1]](s32)1096 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)1097 ; GREEDY: RET 0, implicit $xmm01098 %0:_(p0) = COPY $rdi1099 %1:_(s32) = G_LOAD %0(p0) :: (load (s32) from %ir.p1)1100 %2:_(s128) = G_ANYEXT %1(s32)1101 $xmm0 = COPY %2(s128)1102 RET 0, implicit $xmm01103 1104...1105---1106name: test_load_double1107alignment: 161108legalized: true1109regBankSelected: false1110selected: false1111registers:1112 - { id: 0, class: _ }1113 - { id: 1, class: _ }1114body: |1115 bb.1 (%ir-block.0):1116 liveins: $rdi1117 1118 ; FAST-LABEL: name: test_load_double1119 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi1120 ; FAST: [[LOAD:%[0-9]+]]:gpr(s64) = G_LOAD [[COPY]](p0) :: (load (s64) from %ir.p1)1121 ; FAST: [[COPY1:%[0-9]+]]:vecr(s64) = COPY [[LOAD]](s64)1122 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[COPY1]](s64)1123 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)1124 ; FAST: RET 0, implicit $xmm01125 ; GREEDY-LABEL: name: test_load_double1126 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi1127 ; GREEDY: [[LOAD:%[0-9]+]]:gpr(s64) = G_LOAD [[COPY]](p0) :: (load (s64) from %ir.p1)1128 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s64) = COPY [[LOAD]](s64)1129 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[COPY1]](s64)1130 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)1131 ; GREEDY: RET 0, implicit $xmm01132 %0:_(p0) = COPY $rdi1133 %1:_(s64) = G_LOAD %0(p0) :: (load (s64) from %ir.p1)1134 %2:_(s128) = G_ANYEXT %1(s64)1135 $xmm0 = COPY %2(s128)1136 RET 0, implicit $xmm01137 1138...1139---1140name: test_load_v4i321141alignment: 161142legalized: true1143regBankSelected: false1144selected: false1145registers:1146 - { id: 0, class: _ }1147 - { id: 1, class: _ }1148body: |1149 bb.1 (%ir-block.0):1150 liveins: $rdi1151 1152 ; FAST-LABEL: name: test_load_v4i321153 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi1154 ; FAST: [[LOAD:%[0-9]+]]:vecr(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load (<4 x s32>) from %ir.p1, align 1)1155 ; FAST: $xmm0 = COPY [[LOAD]](<4 x s32>)1156 ; FAST: RET 0, implicit $xmm01157 ; GREEDY-LABEL: name: test_load_v4i321158 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi1159 ; GREEDY: [[LOAD:%[0-9]+]]:vecr(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load (<4 x s32>) from %ir.p1, align 1)1160 ; GREEDY: $xmm0 = COPY [[LOAD]](<4 x s32>)1161 ; GREEDY: RET 0, implicit $xmm01162 %0(p0) = COPY $rdi1163 %1(<4 x s32>) = G_LOAD %0(p0) :: (load (<4 x s32>) from %ir.p1, align 1)1164 $xmm0 = COPY %1(<4 x s32>)1165 RET 0, implicit $xmm01166 1167...1168---1169name: test_store_i321170alignment: 161171legalized: true1172regBankSelected: false1173selected: false1174registers:1175 - { id: 0, class: _ }1176 - { id: 1, class: _ }1177body: |1178 bb.1 (%ir-block.0):1179 liveins: $edi, $rsi1180 1181 ; FAST-LABEL: name: test_store_i321182 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi1183 ; FAST: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rsi1184 ; FAST: G_STORE [[COPY]](s32), [[COPY1]](p0) :: (store (s32) into %ir.p1)1185 ; FAST: $rax = COPY [[COPY1]](p0)1186 ; FAST: RET 0, implicit $rax1187 ; GREEDY-LABEL: name: test_store_i321188 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi1189 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rsi1190 ; GREEDY: G_STORE [[COPY]](s32), [[COPY1]](p0) :: (store (s32) into %ir.p1)1191 ; GREEDY: $rax = COPY [[COPY1]](p0)1192 ; GREEDY: RET 0, implicit $rax1193 %0(s32) = COPY $edi1194 %1(p0) = COPY $rsi1195 G_STORE %0(s32), %1(p0) :: (store (s32) into %ir.p1)1196 $rax = COPY %1(p0)1197 RET 0, implicit $rax1198 1199...1200---1201name: test_store_i641202alignment: 161203legalized: true1204regBankSelected: false1205selected: false1206registers:1207 - { id: 0, class: _ }1208 - { id: 1, class: _ }1209body: |1210 bb.1 (%ir-block.0):1211 liveins: $rdi, $rsi1212 1213 ; FAST-LABEL: name: test_store_i641214 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi1215 ; FAST: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rsi1216 ; FAST: G_STORE [[COPY]](s64), [[COPY1]](p0) :: (store (s64) into %ir.p1)1217 ; FAST: $rax = COPY [[COPY1]](p0)1218 ; FAST: RET 0, implicit $rax1219 ; GREEDY-LABEL: name: test_store_i641220 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi1221 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rsi1222 ; GREEDY: G_STORE [[COPY]](s64), [[COPY1]](p0) :: (store (s64) into %ir.p1)1223 ; GREEDY: $rax = COPY [[COPY1]](p0)1224 ; GREEDY: RET 0, implicit $rax1225 %0(s64) = COPY $rdi1226 %1(p0) = COPY $rsi1227 G_STORE %0(s64), %1(p0) :: (store (s64) into %ir.p1)1228 $rax = COPY %1(p0)1229 RET 0, implicit $rax1230 1231...1232---1233name: test_store_float1234alignment: 161235legalized: true1236regBankSelected: false1237selected: false1238 1239 1240 1241registers:1242 - { id: 0, class: _ }1243 - { id: 1, class: _ }1244body: |1245 bb.1 (%ir-block.0):1246 liveins: $rdi, $xmm01247 1248 ; FAST-LABEL: name: test_store_float1249 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm01250 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)1251 ; FAST: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rdi1252 ; FAST: [[COPY2:%[0-9]+]]:gpr(s32) = COPY [[TRUNC]](s32)1253 ; FAST: G_STORE [[COPY2]](s32), [[COPY1]](p0) :: (store (s32) into %ir.p1)1254 ; FAST: $rax = COPY [[COPY1]](p0)1255 ; FAST: RET 0, implicit $rax1256 ; GREEDY-LABEL: name: test_store_float1257 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm01258 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)1259 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rdi1260 ; GREEDY: G_STORE [[TRUNC]](s32), [[COPY1]](p0) :: (store (s32) into %ir.p1)1261 ; GREEDY: $rax = COPY [[COPY1]](p0)1262 ; GREEDY: RET 0, implicit $rax1263 %2:_(s128) = COPY $xmm01264 %0:_(s32) = G_TRUNC %2(s128)1265 %1:_(p0) = COPY $rdi1266 G_STORE %0(s32), %1(p0) :: (store (s32) into %ir.p1)1267 $rax = COPY %1(p0)1268 RET 0, implicit $rax1269 1270...1271---1272name: test_store_double1273alignment: 161274legalized: true1275regBankSelected: false1276selected: false1277 1278 1279 1280registers:1281 - { id: 0, class: _ }1282 - { id: 1, class: _ }1283body: |1284 bb.1 (%ir-block.0):1285 liveins: $rdi, $xmm01286 1287 ; FAST-LABEL: name: test_store_double1288 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm01289 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)1290 ; FAST: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rdi1291 ; FAST: [[COPY2:%[0-9]+]]:gpr(s64) = COPY [[TRUNC]](s64)1292 ; FAST: G_STORE [[COPY2]](s64), [[COPY1]](p0) :: (store (s64) into %ir.p1)1293 ; FAST: $rax = COPY [[COPY1]](p0)1294 ; FAST: RET 0, implicit $rax1295 ; GREEDY-LABEL: name: test_store_double1296 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm01297 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)1298 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rdi1299 ; GREEDY: G_STORE [[TRUNC]](s64), [[COPY1]](p0) :: (store (s64) into %ir.p1)1300 ; GREEDY: $rax = COPY [[COPY1]](p0)1301 ; GREEDY: RET 0, implicit $rax1302 %2:_(s128) = COPY $xmm01303 %0:_(s64) = G_TRUNC %2(s128)1304 %1:_(p0) = COPY $rdi1305 G_STORE %0(s64), %1(p0) :: (store (s64) into %ir.p1)1306 $rax = COPY %1(p0)1307 RET 0, implicit $rax1308 1309...1310---1311name: constInt_check1312alignment: 161313legalized: true1314registers:1315 - { id: 0, class: _ }1316 - { id: 1, class: _ }1317 - { id: 2, class: _ }1318 - { id: 3, class: _ }1319body: |1320 bb.0 (%ir-block.0):1321 ; FAST-LABEL: name: constInt_check1322 ; FAST: [[C:%[0-9]+]]:gpr(s8) = G_CONSTANT i8 81323 ; FAST: [[C1:%[0-9]+]]:gpr(s16) = G_CONSTANT i16 161324 ; FAST: [[C2:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 321325 ; FAST: [[C3:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 641326 ; FAST: RET 01327 ; GREEDY-LABEL: name: constInt_check1328 ; GREEDY: [[C:%[0-9]+]]:gpr(s8) = G_CONSTANT i8 81329 ; GREEDY: [[C1:%[0-9]+]]:gpr(s16) = G_CONSTANT i16 161330 ; GREEDY: [[C2:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 321331 ; GREEDY: [[C3:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 641332 ; GREEDY: RET 01333 %0(s8) = G_CONSTANT i8 81334 %1(s16) = G_CONSTANT i16 161335 %2(s32) = G_CONSTANT i32 321336 %3(s64) = G_CONSTANT i64 641337 RET 01338 1339...1340---1341name: trunc_check1342alignment: 161343legalized: true1344registers:1345 - { id: 0, class: _ }1346 - { id: 1, class: _ }1347 - { id: 2, class: _ }1348 - { id: 3, class: _ }1349body: |1350 bb.0 (%ir-block.0):1351 ; FAST-LABEL: name: trunc_check1352 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF1353 ; FAST: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[DEF]](s32)1354 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[DEF]](s32)1355 ; FAST: [[TRUNC2:%[0-9]+]]:gpr(s16) = G_TRUNC [[DEF]](s32)1356 ; FAST: RET 01357 ; GREEDY-LABEL: name: trunc_check1358 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF1359 ; GREEDY: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[DEF]](s32)1360 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[DEF]](s32)1361 ; GREEDY: [[TRUNC2:%[0-9]+]]:gpr(s16) = G_TRUNC [[DEF]](s32)1362 ; GREEDY: RET 01363 %0(s32) = G_IMPLICIT_DEF1364 %1(s1) = G_TRUNC %0(s32)1365 %2(s8) = G_TRUNC %0(s32)1366 %3(s16) = G_TRUNC %0(s32)1367 RET 01368 1369...1370---1371name: test_gep1372legalized: true1373registers:1374 - { id: 0, class: _ }1375 - { id: 1, class: _ }1376 - { id: 2, class: _ }1377 - { id: 3, class: _ }1378 - { id: 4, class: _ }1379body: |1380 bb.0 (%ir-block.0):1381 ; FAST-LABEL: name: test_gep1382 ; FAST: [[DEF:%[0-9]+]]:gpr(p0) = G_IMPLICIT_DEF1383 ; FAST: [[C:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 201384 ; FAST: [[PTR_ADD:%[0-9]+]]:gpr(p0) = G_PTR_ADD [[DEF]], [[C]](s64)1385 ; FAST: RET 01386 ;1387 ; GREEDY-LABEL: name: test_gep1388 ; GREEDY: [[DEF:%[0-9]+]]:gpr(p0) = G_IMPLICIT_DEF1389 ; GREEDY: [[C:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 201390 ; GREEDY: [[PTR_ADD:%[0-9]+]]:gpr(p0) = G_PTR_ADD [[DEF]], [[C]](s64)1391 ; GREEDY: RET 01392 %0(p0) = G_IMPLICIT_DEF1393 %1(s64) = G_CONSTANT i64 201394 %2(p0) = G_PTR_ADD %0, %1(s64)1395 RET 01396 1397...1398---1399name: test_icmp_eq_i81400alignment: 161401legalized: true1402regBankSelected: false1403registers:1404 - { id: 0, class: _ }1405 - { id: 1, class: _ }1406 - { id: 2, class: _ }1407body: |1408 bb.1 (%ir-block.0):1409 liveins: $edi, $esi1410 1411 ; FAST-LABEL: name: test_icmp_eq_i81412 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi1413 ; FAST: [[TRUNC:%[0-9]+]]:gpr(s8) = G_TRUNC [[COPY]](s32)1414 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi1415 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[COPY1]](s32)1416 ; FAST: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[TRUNC]](s8), [[TRUNC1]]1417 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)1418 ; FAST: $al = COPY [[COPY2]](s8)1419 ; FAST: RET 0, implicit $al1420 ; GREEDY-LABEL: name: test_icmp_eq_i81421 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi1422 ; GREEDY: [[TRUNC:%[0-9]+]]:gpr(s8) = G_TRUNC [[COPY]](s32)1423 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi1424 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[COPY1]](s32)1425 ; GREEDY: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[TRUNC]](s8), [[TRUNC1]]1426 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)1427 ; GREEDY: $al = COPY [[COPY2]](s8)1428 ; GREEDY: RET 0, implicit $al1429 %2:_(s32) = COPY $edi1430 %0:_(s8) = G_TRUNC %2(s32)1431 %3:_(s32) = COPY $esi1432 %1:_(s8) = G_TRUNC %3(s32)1433 %6:_(s8) = G_ICMP intpred(eq), %0(s8), %11434 %5:_(s8) = COPY %6(s8)1435 $al = COPY %5(s8)1436 RET 0, implicit $al1437 1438...1439---1440name: test_icmp_eq_i161441alignment: 161442legalized: true1443regBankSelected: false1444registers:1445 - { id: 0, class: _ }1446 - { id: 1, class: _ }1447 - { id: 2, class: _ }1448body: |1449 bb.1 (%ir-block.0):1450 liveins: $edi, $esi1451 1452 ; FAST-LABEL: name: test_icmp_eq_i161453 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi1454 ; FAST: [[TRUNC:%[0-9]+]]:gpr(s16) = G_TRUNC [[COPY]](s32)1455 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi1456 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s16) = G_TRUNC [[COPY1]](s32)1457 ; FAST: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[TRUNC]](s16), [[TRUNC1]]1458 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)1459 ; FAST: $al = COPY [[COPY2]](s8)1460 ; FAST: RET 0, implicit $al1461 ; GREEDY-LABEL: name: test_icmp_eq_i161462 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi1463 ; GREEDY: [[TRUNC:%[0-9]+]]:gpr(s16) = G_TRUNC [[COPY]](s32)1464 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi1465 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s16) = G_TRUNC [[COPY1]](s32)1466 ; GREEDY: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[TRUNC]](s16), [[TRUNC1]]1467 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)1468 ; GREEDY: $al = COPY [[COPY2]](s8)1469 ; GREEDY: RET 0, implicit $al1470 %2:_(s32) = COPY $edi1471 %0:_(s16) = G_TRUNC %2(s32)1472 %3:_(s32) = COPY $esi1473 %1:_(s16) = G_TRUNC %3(s32)1474 %6:_(s8) = G_ICMP intpred(eq), %0(s16), %11475 %5:_(s8) = COPY %6(s8)1476 $al = COPY %5(s8)1477 RET 0, implicit $al1478 1479...1480---1481name: test_icmp_eq_i321482alignment: 161483legalized: true1484regBankSelected: false1485registers:1486 - { id: 0, class: _ }1487 - { id: 1, class: _ }1488 - { id: 2, class: _ }1489body: |1490 bb.1 (%ir-block.0):1491 liveins: $edi, $esi1492 1493 ; FAST-LABEL: name: test_icmp_eq_i321494 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi1495 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi1496 ; FAST: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]1497 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)1498 ; FAST: $al = COPY [[COPY2]](s8)1499 ; FAST: RET 0, implicit $al1500 ; GREEDY-LABEL: name: test_icmp_eq_i321501 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi1502 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi1503 ; GREEDY: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY1]]1504 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)1505 ; GREEDY: $al = COPY [[COPY2]](s8)1506 ; GREEDY: RET 0, implicit $al1507 %0:_(s32) = COPY $edi1508 %1:_(s32) = COPY $esi1509 %4:_(s8) = G_ICMP intpred(eq), %0(s32), %11510 %3:_(s8) = COPY %4(s8)1511 $al = COPY %3(s8)1512 RET 0, implicit $al1513 1514...1515---1516name: test_icmp_eq_i641517alignment: 161518legalized: true1519regBankSelected: false1520registers:1521 - { id: 0, class: _ }1522 - { id: 1, class: _ }1523 - { id: 2, class: _ }1524body: |1525 bb.1 (%ir-block.0):1526 liveins: $rdi, $rsi1527 1528 ; FAST-LABEL: name: test_icmp_eq_i641529 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi1530 ; FAST: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $rsi1531 ; FAST: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]1532 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)1533 ; FAST: $al = COPY [[COPY2]](s8)1534 ; FAST: RET 0, implicit $al1535 ; GREEDY-LABEL: name: test_icmp_eq_i641536 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi1537 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $rsi1538 ; GREEDY: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(eq), [[COPY]](s64), [[COPY1]]1539 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[ICMP]](s8)1540 ; GREEDY: $al = COPY [[COPY2]](s8)1541 ; GREEDY: RET 0, implicit $al1542 %0:_(s64) = COPY $rdi1543 %1:_(s64) = COPY $rsi1544 %4:_(s8) = G_ICMP intpred(eq), %0(s64), %11545 %3:_(s8) = COPY %4(s8)1546 $al = COPY %3(s8)1547 RET 0, implicit $al1548 1549...1550---1551name: test_xor_i81552alignment: 161553legalized: true1554regBankSelected: false1555registers:1556 - { id: 0, class: _, preferred-register: '' }1557 - { id: 1, class: _, preferred-register: '' }1558liveins:1559fixedStack:1560stack:1561constants:1562body: |1563 bb.1 (%ir-block.0):1564 ; FAST-LABEL: name: test_xor_i81565 ; FAST: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF1566 ; FAST: [[XOR:%[0-9]+]]:gpr(s8) = G_XOR [[DEF]], [[DEF]]1567 ; FAST: $al = COPY [[XOR]](s8)1568 ; FAST: RET 0, implicit $al1569 ; GREEDY-LABEL: name: test_xor_i81570 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF1571 ; GREEDY: [[XOR:%[0-9]+]]:gpr(s8) = G_XOR [[DEF]], [[DEF]]1572 ; GREEDY: $al = COPY [[XOR]](s8)1573 ; GREEDY: RET 0, implicit $al1574 %0(s8) = G_IMPLICIT_DEF1575 %1(s8) = G_XOR %0, %01576 $al = COPY %1(s8)1577 RET 0, implicit $al1578 1579...1580---1581name: test_or_i161582alignment: 161583legalized: true1584regBankSelected: false1585registers:1586 - { id: 0, class: _, preferred-register: '' }1587 - { id: 1, class: _, preferred-register: '' }1588liveins:1589fixedStack:1590stack:1591constants:1592body: |1593 bb.1 (%ir-block.0):1594 ; FAST-LABEL: name: test_or_i161595 ; FAST: [[DEF:%[0-9]+]]:gpr(s16) = G_IMPLICIT_DEF1596 ; FAST: [[OR:%[0-9]+]]:gpr(s16) = G_OR [[DEF]], [[DEF]]1597 ; FAST: $ax = COPY [[OR]](s16)1598 ; FAST: RET 0, implicit $ax1599 ; GREEDY-LABEL: name: test_or_i161600 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s16) = G_IMPLICIT_DEF1601 ; GREEDY: [[OR:%[0-9]+]]:gpr(s16) = G_OR [[DEF]], [[DEF]]1602 ; GREEDY: $ax = COPY [[OR]](s16)1603 ; GREEDY: RET 0, implicit $ax1604 %0(s16) = G_IMPLICIT_DEF1605 %1(s16) = G_OR %0, %01606 $ax = COPY %1(s16)1607 RET 0, implicit $ax1608 1609...1610---1611name: test_and_i321612alignment: 161613legalized: true1614regBankSelected: false1615registers:1616 - { id: 0, class: _, preferred-register: '' }1617 - { id: 1, class: _, preferred-register: '' }1618liveins:1619fixedStack:1620stack:1621constants:1622body: |1623 bb.1 (%ir-block.0):1624 ; FAST-LABEL: name: test_and_i321625 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF1626 ; FAST: [[AND:%[0-9]+]]:gpr(s32) = G_AND [[DEF]], [[DEF]]1627 ; FAST: $eax = COPY [[AND]](s32)1628 ; FAST: RET 0, implicit $eax1629 ; GREEDY-LABEL: name: test_and_i321630 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF1631 ; GREEDY: [[AND:%[0-9]+]]:gpr(s32) = G_AND [[DEF]], [[DEF]]1632 ; GREEDY: $eax = COPY [[AND]](s32)1633 ; GREEDY: RET 0, implicit $eax1634 %0(s32) = G_IMPLICIT_DEF1635 %1(s32) = G_AND %0, %01636 $eax = COPY %1(s32)1637 RET 0, implicit $eax1638 1639...1640---1641name: test_and_i641642alignment: 161643legalized: true1644regBankSelected: false1645registers:1646 - { id: 0, class: _, preferred-register: '' }1647 - { id: 1, class: _, preferred-register: '' }1648liveins:1649fixedStack:1650stack:1651constants:1652body: |1653 bb.1 (%ir-block.0):1654 ; FAST-LABEL: name: test_and_i641655 ; FAST: [[DEF:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF1656 ; FAST: [[AND:%[0-9]+]]:gpr(s64) = G_AND [[DEF]], [[DEF]]1657 ; FAST: $rax = COPY [[AND]](s64)1658 ; FAST: RET 0, implicit $rax1659 ; GREEDY-LABEL: name: test_and_i641660 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF1661 ; GREEDY: [[AND:%[0-9]+]]:gpr(s64) = G_AND [[DEF]], [[DEF]]1662 ; GREEDY: $rax = COPY [[AND]](s64)1663 ; GREEDY: RET 0, implicit $rax1664 %0(s64) = G_IMPLICIT_DEF1665 %1(s64) = G_AND %0, %01666 $rax = COPY %1(s64)1667 RET 0, implicit $rax1668 1669...1670---1671name: test_global_ptrv1672alignment: 161673legalized: true1674regBankSelected: false1675registers:1676 - { id: 0, class: _, preferred-register: '' }1677body: |1678 bb.1.entry:1679 ; FAST-LABEL: name: test_global_ptrv1680 ; FAST: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @g_int1681 ; FAST: $rax = COPY [[GV]](p0)1682 ; FAST: RET 0, implicit $rax1683 ; GREEDY-LABEL: name: test_global_ptrv1684 ; GREEDY: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @g_int1685 ; GREEDY: $rax = COPY [[GV]](p0)1686 ; GREEDY: RET 0, implicit $rax1687 %0(p0) = G_GLOBAL_VALUE @g_int1688 $rax = COPY %0(p0)1689 RET 0, implicit $rax1690 1691...1692---1693name: test_undef1694alignment: 161695legalized: true1696regBankSelected: false1697registers:1698 - { id: 0, class: _, preferred-register: '' }1699liveins:1700fixedStack:1701stack:1702constants:1703body: |1704 bb.1 (%ir-block.0):1705 ; FAST-LABEL: name: test_undef1706 ; FAST: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF1707 ; FAST: $al = COPY [[DEF]](s8)1708 ; FAST: RET 0, implicit $al1709 ; GREEDY-LABEL: name: test_undef1710 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF1711 ; GREEDY: $al = COPY [[DEF]](s8)1712 ; GREEDY: RET 0, implicit $al1713 %0(s8) = G_IMPLICIT_DEF1714 $al = COPY %0(s8)1715 RET 0, implicit $al1716 1717...1718---1719name: test_undef21720alignment: 161721legalized: true1722regBankSelected: false1723registers:1724 - { id: 0, class: _, preferred-register: '' }1725 - { id: 1, class: _, preferred-register: '' }1726 - { id: 2, class: _, preferred-register: '' }1727liveins:1728fixedStack:1729stack:1730constants:1731body: |1732 bb.1 (%ir-block.0):1733 liveins: $edi1734 1735 ; FAST-LABEL: name: test_undef21736 ; FAST: [[COPY:%[0-9]+]]:gpr(s8) = COPY $dil1737 ; FAST: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF1738 ; FAST: [[ADD:%[0-9]+]]:gpr(s8) = G_ADD [[COPY]], [[DEF]]1739 ; FAST: $al = COPY [[ADD]](s8)1740 ; FAST: RET 0, implicit $al1741 ; GREEDY-LABEL: name: test_undef21742 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s8) = COPY $dil1743 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF1744 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s8) = G_ADD [[COPY]], [[DEF]]1745 ; GREEDY: $al = COPY [[ADD]](s8)1746 ; GREEDY: RET 0, implicit $al1747 %0(s8) = COPY $dil1748 %1(s8) = G_IMPLICIT_DEF1749 %2(s8) = G_ADD %0, %11750 $al = COPY %2(s8)1751 RET 0, implicit $al1752 1753...1754---1755name: test_undef31756alignment: 161757legalized: true1758regBankSelected: false1759registers:1760 - { id: 1, class: _, preferred-register: '' }1761liveins:1762fixedStack:1763stack:1764constants:1765body: |1766 bb.1 (%ir-block.0):1767 ; FAST-LABEL: name: test_undef31768 ; FAST: [[DEF:%[0-9]+]]:vecr(s128) = G_IMPLICIT_DEF1769 ; FAST: $xmm0 = COPY [[DEF]](s128)1770 ; FAST: RET 0, implicit $xmm01771 ; GREEDY-LABEL: name: test_undef31772 ; GREEDY: [[DEF:%[0-9]+]]:vecr(s128) = G_IMPLICIT_DEF1773 ; GREEDY: $xmm0 = COPY [[DEF]](s128)1774 ; GREEDY: RET 0, implicit $xmm01775 %1(s128) = G_IMPLICIT_DEF1776 $xmm0 = COPY %1(s128)1777 RET 0, implicit $xmm01778 1779...1780---1781name: test_undef41782alignment: 161783legalized: true1784regBankSelected: false1785registers:1786 - { id: 0, class: _, preferred-register: '' }1787 - { id: 1, class: _, preferred-register: '' }1788 - { id: 2, class: _, preferred-register: '' }1789 - { id: 3, class: _, preferred-register: '' }1790 - { id: 4, class: _, preferred-register: '' }1791liveins:1792fixedStack:1793stack:1794constants:1795body: |1796 bb.1 (%ir-block.0):1797 liveins: $xmm01798 1799 ; FAST-LABEL: name: test_undef41800 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm01801 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)1802 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF1803 ; FAST: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)1804 ; FAST: [[FADD:%[0-9]+]]:vecr(s32) = G_FADD [[TRUNC]], [[COPY1]]1805 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FADD]](s32)1806 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)1807 ; FAST: RET 0, implicit $xmm01808 ; GREEDY-LABEL: name: test_undef41809 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm01810 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)1811 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF1812 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s32) = COPY [[DEF]](s32)1813 ; GREEDY: [[FADD:%[0-9]+]]:vecr(s32) = G_FADD [[TRUNC]], [[COPY1]]1814 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FADD]](s32)1815 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)1816 ; GREEDY: RET 0, implicit $xmm01817 %1:_(s128) = COPY $xmm01818 %0:_(s32) = G_TRUNC %1(s128)1819 %2:_(s32) = G_IMPLICIT_DEF1820 %3:_(s32) = G_FADD %0, %21821 %4:_(s128) = G_ANYEXT %3(s32)1822 $xmm0 = COPY %4(s128)1823 RET 0, implicit $xmm01824 1825...1826---1827name: test_i321828alignment: 161829legalized: true1830regBankSelected: false1831tracksRegLiveness: true1832registers:1833 - { id: 0, class: _, preferred-register: '' }1834 - { id: 1, class: _, preferred-register: '' }1835 - { id: 2, class: _, preferred-register: '' }1836 - { id: 3, class: _, preferred-register: '' }1837 - { id: 4, class: _, preferred-register: '' }1838 - { id: 5, class: _, preferred-register: '' }1839 - { id: 6, class: _, preferred-register: '' }1840body: |1841 ; FAST-LABEL: name: test_i321842 ; FAST: bb.0.entry:1843 ; FAST: successors: %bb.1(0x40000000), %bb.2(0x40000000)1844 ; FAST: liveins: $edi, $edx, $esi1845 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi1846 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi1847 ; FAST: [[COPY2:%[0-9]+]]:gpr(s32) = COPY $edx1848 ; FAST: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 01849 ; FAST: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]1850 ; FAST: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s8)1851 ; FAST: G_BRCOND [[TRUNC]](s1), %bb.11852 ; FAST: G_BR %bb.21853 ; FAST: bb.1.cond.true:1854 ; FAST: successors: %bb.3(0x80000000)1855 ; FAST: G_BR %bb.31856 ; FAST: bb.2.cond.false:1857 ; FAST: successors: %bb.3(0x80000000)1858 ; FAST: bb.3.cond.end:1859 ; FAST: [[PHI:%[0-9]+]]:gpr(s32) = G_PHI [[COPY1]](s32), %bb.1, [[COPY2]](s32), %bb.21860 ; FAST: $eax = COPY [[PHI]](s32)1861 ; FAST: RET 0, implicit $eax1862 ; GREEDY-LABEL: name: test_i321863 ; GREEDY: bb.0.entry:1864 ; GREEDY: successors: %bb.1(0x40000000), %bb.2(0x40000000)1865 ; GREEDY: liveins: $edi, $edx, $esi1866 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi1867 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi1868 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s32) = COPY $edx1869 ; GREEDY: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 01870 ; GREEDY: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]1871 ; GREEDY: [[TRUNC:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s8)1872 ; GREEDY: G_BRCOND [[TRUNC]](s1), %bb.11873 ; GREEDY: G_BR %bb.21874 ; GREEDY: bb.1.cond.true:1875 ; GREEDY: successors: %bb.3(0x80000000)1876 ; GREEDY: G_BR %bb.31877 ; GREEDY: bb.2.cond.false:1878 ; GREEDY: successors: %bb.3(0x80000000)1879 ; GREEDY: bb.3.cond.end:1880 ; GREEDY: [[PHI:%[0-9]+]]:gpr(s32) = G_PHI [[COPY1]](s32), %bb.1, [[COPY2]](s32), %bb.21881 ; GREEDY: $eax = COPY [[PHI]](s32)1882 ; GREEDY: RET 0, implicit $eax1883 bb.0.entry:1884 successors: %bb.1(0x40000000), %bb.2(0x40000000)1885 liveins: $edi, $edx, $esi1886 1887 %0(s32) = COPY $edi1888 %1(s32) = COPY $esi1889 %2(s32) = COPY $edx1890 %3(s32) = G_CONSTANT i32 01891 %6(s8) = G_ICMP intpred(sgt), %0(s32), %31892 %4(s1) = G_TRUNC %6(s8)1893 G_BRCOND %4(s1), %bb.11894 G_BR %bb.21895 1896 bb.1.cond.true:1897 successors: %bb.3(0x80000000)1898 1899 G_BR %bb.31900 1901 bb.2.cond.false:1902 successors: %bb.3(0x80000000)1903 1904 bb.3.cond.end:1905 %5(s32) = G_PHI %1(s32), %bb.1, %2(s32), %bb.21906 $eax = COPY %5(s32)1907 RET 0, implicit $eax1908 1909...1910---1911name: test_float1912alignment: 161913legalized: true1914regBankSelected: false1915tracksRegLiveness: true1916registers:1917 - { id: 0, class: _, preferred-register: '' }1918 - { id: 1, class: _, preferred-register: '' }1919 - { id: 2, class: _, preferred-register: '' }1920 - { id: 3, class: _, preferred-register: '' }1921 - { id: 4, class: _, preferred-register: '' }1922 - { id: 5, class: _, preferred-register: '' }1923body: |1924 ; FAST-LABEL: name: test_float1925 ; FAST: bb.0.entry:1926 ; FAST: successors: %bb.2(0x40000000), %bb.1(0x40000000)1927 ; FAST: liveins: $edi, $xmm0, $xmm11928 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi1929 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm01930 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)1931 ; FAST: [[COPY2:%[0-9]+]]:vecr(s128) = COPY $xmm11932 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY2]](s128)1933 ; FAST: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 01934 ; FAST: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]1935 ; FAST: [[TRUNC2:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s8)1936 ; FAST: G_BRCOND [[TRUNC2]](s1), %bb.21937 ; FAST: bb.1.cond.false:1938 ; FAST: successors: %bb.2(0x80000000)1939 ; FAST: bb.2.cond.end:1940 ; FAST: [[PHI:%[0-9]+]]:vecr(s32) = G_PHI [[TRUNC1]](s32), %bb.1, [[TRUNC]](s32), %bb.01941 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[PHI]](s32)1942 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)1943 ; FAST: RET 0, implicit $xmm01944 ; GREEDY-LABEL: name: test_float1945 ; GREEDY: bb.0.entry:1946 ; GREEDY: successors: %bb.2(0x40000000), %bb.1(0x40000000)1947 ; GREEDY: liveins: $edi, $xmm0, $xmm11948 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi1949 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm01950 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)1951 ; GREEDY: [[COPY2:%[0-9]+]]:vecr(s128) = COPY $xmm11952 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY2]](s128)1953 ; GREEDY: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 01954 ; GREEDY: [[ICMP:%[0-9]+]]:gpr(s8) = G_ICMP intpred(sgt), [[COPY]](s32), [[C]]1955 ; GREEDY: [[TRUNC2:%[0-9]+]]:gpr(s1) = G_TRUNC [[ICMP]](s8)1956 ; GREEDY: G_BRCOND [[TRUNC2]](s1), %bb.21957 ; GREEDY: bb.1.cond.false:1958 ; GREEDY: successors: %bb.2(0x80000000)1959 ; GREEDY: bb.2.cond.end:1960 ; GREEDY: [[PHI:%[0-9]+]]:vecr(s32) = G_PHI [[TRUNC1]](s32), %bb.1, [[TRUNC]](s32), %bb.01961 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[PHI]](s32)1962 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)1963 ; GREEDY: RET 0, implicit $xmm01964 bb.1.entry:1965 successors: %bb.3(0x40000000), %bb.2(0x40000000)1966 liveins: $edi, $xmm0, $xmm11967 1968 %0:_(s32) = COPY $edi1969 %3:_(s128) = COPY $xmm01970 %1:_(s32) = G_TRUNC %3(s128)1971 %4:_(s128) = COPY $xmm11972 %2:_(s32) = G_TRUNC %4(s128)1973 %5:_(s32) = G_CONSTANT i32 01974 %9:_(s8) = G_ICMP intpred(sgt), %0(s32), %51975 %6:_(s1) = G_TRUNC %9(s8)1976 G_BRCOND %6(s1), %bb.31977 1978 bb.2.cond.false:1979 successors: %bb.3(0x80000000)1980 1981 1982 bb.3.cond.end:1983 %7:_(s32) = G_PHI %2(s32), %bb.2, %1(s32), %bb.11984 %8:_(s128) = G_ANYEXT %7(s32)1985 $xmm0 = COPY %8(s128)1986 RET 0, implicit $xmm01987 1988...1989---1990name: test_fpext1991alignment: 161992legalized: true1993regBankSelected: false1994registers:1995 - { id: 0, class: _, preferred-register: '' }1996 - { id: 1, class: _, preferred-register: '' }1997body: |1998 bb.1.entry:1999 liveins: $xmm02000 2001 ; FAST-LABEL: name: test_fpext2002 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02003 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2004 ; FAST: [[FPEXT:%[0-9]+]]:vecr(s64) = G_FPEXT [[TRUNC]](s32)2005 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FPEXT]](s64)2006 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)2007 ; FAST: RET 0, implicit $xmm02008 ; GREEDY-LABEL: name: test_fpext2009 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02010 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2011 ; GREEDY: [[FPEXT:%[0-9]+]]:vecr(s64) = G_FPEXT [[TRUNC]](s32)2012 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FPEXT]](s64)2013 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)2014 ; GREEDY: RET 0, implicit $xmm02015 %1:_(s128) = COPY $xmm02016 %0:_(s32) = G_TRUNC %1(s128)2017 %2:_(s64) = G_FPEXT %0(s32)2018 %3:_(s128) = G_ANYEXT %2(s64)2019 $xmm0 = COPY %3(s128)2020 RET 0, implicit $xmm02021 2022...2023---2024name: test_fptrunc2025alignment: 162026legalized: true2027tracksRegLiveness: true2028registers:2029 - { id: 0, class: _ }2030 - { id: 1, class: _ }2031 - { id: 2, class: _ }2032 - { id: 3, class: _ }2033body: |2034 bb.1.entry:2035 liveins: $xmm02036 2037 ; FAST-LABEL: name: test_fptrunc2038 ; FAST: liveins: $xmm02039 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02040 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)2041 ; FAST: [[FPTRUNC:%[0-9]+]]:vecr(s32) = G_FPTRUNC [[TRUNC]](s64)2042 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FPTRUNC]](s32)2043 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)2044 ; FAST: RET 0, implicit $xmm02045 ; GREEDY-LABEL: name: test_fptrunc2046 ; GREEDY: liveins: $xmm02047 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02048 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)2049 ; GREEDY: [[FPTRUNC:%[0-9]+]]:vecr(s32) = G_FPTRUNC [[TRUNC]](s64)2050 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[FPTRUNC]](s32)2051 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)2052 ; GREEDY: RET 0, implicit $xmm02053 %1:_(s128) = COPY $xmm02054 %0:_(s64) = G_TRUNC %1(s128)2055 %2:_(s32) = G_FPTRUNC %0(s64)2056 %3:_(s128) = G_ANYEXT %2(s32)2057 $xmm0 = COPY %3(s128)2058 RET 0, implicit $xmm02059 2060...2061---2062name: test_fconstant2063# ALL-LABEL: name: test_fconstant2064legalized: true2065registers:2066 - { id: 0, class: _ }2067 - { id: 1, class: _ }2068body: |2069 bb.0:2070 ; FAST-LABEL: name: test_fconstant2071 ; FAST: [[C:%[0-9]+]]:vecr(s32) = G_FCONSTANT float 1.000000e+002072 ; FAST: [[C1:%[0-9]+]]:vecr(s64) = G_FCONSTANT double 2.000000e+002073 ; GREEDY-LABEL: name: test_fconstant2074 ; GREEDY: [[C:%[0-9]+]]:vecr(s32) = G_FCONSTANT float 1.000000e+002075 ; GREEDY: [[C1:%[0-9]+]]:vecr(s64) = G_FCONSTANT double 2.000000e+002076 %0(s32) = G_FCONSTANT float 1.02077 %1(s64) = G_FCONSTANT double 2.02078 2079...2080---2081name: int32_to_float2082alignment: 162083legalized: true2084tracksRegLiveness: true2085registers:2086 - { id: 0, class: _ }2087 - { id: 1, class: _ }2088 - { id: 2, class: _ }2089body: |2090 bb.1.entry:2091 liveins: $edi2092 2093 ; FAST-LABEL: name: int32_to_float2094 ; FAST: liveins: $edi2095 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi2096 ; FAST: [[SITOFP:%[0-9]+]]:vecr(s32) = G_SITOFP [[COPY]](s32)2097 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s32)2098 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)2099 ; FAST: RET 0, implicit $xmm02100 ; GREEDY-LABEL: name: int32_to_float2101 ; GREEDY: liveins: $edi2102 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi2103 ; GREEDY: [[SITOFP:%[0-9]+]]:vecr(s32) = G_SITOFP [[COPY]](s32)2104 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s32)2105 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)2106 ; GREEDY: RET 0, implicit $xmm02107 %0:_(s32) = COPY $edi2108 %1:_(s32) = G_SITOFP %0(s32)2109 %2:_(s128) = G_ANYEXT %1(s32)2110 $xmm0 = COPY %2(s128)2111 RET 0, implicit $xmm02112 2113...2114---2115name: int64_to_float2116alignment: 162117legalized: true2118tracksRegLiveness: true2119registers:2120 - { id: 0, class: _ }2121 - { id: 1, class: _ }2122 - { id: 2, class: _ }2123body: |2124 bb.1.entry:2125 liveins: $rdi2126 2127 ; FAST-LABEL: name: int64_to_float2128 ; FAST: liveins: $rdi2129 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi2130 ; FAST: [[SITOFP:%[0-9]+]]:vecr(s32) = G_SITOFP [[COPY]](s64)2131 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s32)2132 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)2133 ; FAST: RET 0, implicit $xmm02134 ; GREEDY-LABEL: name: int64_to_float2135 ; GREEDY: liveins: $rdi2136 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi2137 ; GREEDY: [[SITOFP:%[0-9]+]]:vecr(s32) = G_SITOFP [[COPY]](s64)2138 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s32)2139 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)2140 ; GREEDY: RET 0, implicit $xmm02141 %0:_(s64) = COPY $rdi2142 %1:_(s32) = G_SITOFP %0(s64)2143 %2:_(s128) = G_ANYEXT %1(s32)2144 $xmm0 = COPY %2(s128)2145 RET 0, implicit $xmm02146 2147...2148---2149name: int32_to_double2150alignment: 162151legalized: true2152tracksRegLiveness: true2153registers:2154 - { id: 0, class: _ }2155 - { id: 1, class: _ }2156 - { id: 2, class: _ }2157body: |2158 bb.1.entry:2159 liveins: $edi2160 2161 ; FAST-LABEL: name: int32_to_double2162 ; FAST: liveins: $edi2163 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi2164 ; FAST: [[SITOFP:%[0-9]+]]:vecr(s64) = G_SITOFP [[COPY]](s32)2165 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s64)2166 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)2167 ; FAST: RET 0, implicit $xmm02168 ; GREEDY-LABEL: name: int32_to_double2169 ; GREEDY: liveins: $edi2170 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi2171 ; GREEDY: [[SITOFP:%[0-9]+]]:vecr(s64) = G_SITOFP [[COPY]](s32)2172 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s64)2173 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)2174 ; GREEDY: RET 0, implicit $xmm02175 %0:_(s32) = COPY $edi2176 %1:_(s64) = G_SITOFP %0(s32)2177 %2:_(s128) = G_ANYEXT %1(s64)2178 $xmm0 = COPY %2(s128)2179 RET 0, implicit $xmm02180 2181...2182---2183name: int64_to_double2184alignment: 162185legalized: true2186tracksRegLiveness: true2187registers:2188 - { id: 0, class: _ }2189 - { id: 1, class: _ }2190 - { id: 2, class: _ }2191body: |2192 bb.1.entry:2193 liveins: $rdi2194 2195 ; FAST-LABEL: name: int64_to_double2196 ; FAST: liveins: $rdi2197 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi2198 ; FAST: [[SITOFP:%[0-9]+]]:vecr(s64) = G_SITOFP [[COPY]](s64)2199 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s64)2200 ; FAST: $xmm0 = COPY [[ANYEXT]](s128)2201 ; FAST: RET 0, implicit $xmm02202 ; GREEDY-LABEL: name: int64_to_double2203 ; GREEDY: liveins: $rdi2204 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi2205 ; GREEDY: [[SITOFP:%[0-9]+]]:vecr(s64) = G_SITOFP [[COPY]](s64)2206 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[SITOFP]](s64)2207 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128)2208 ; GREEDY: RET 0, implicit $xmm02209 %0:_(s64) = COPY $rdi2210 %1:_(s64) = G_SITOFP %0(s64)2211 %2:_(s128) = G_ANYEXT %1(s64)2212 $xmm0 = COPY %2(s128)2213 RET 0, implicit $xmm02214 2215...2216---2217name: float_to_int82218alignment: 162219legalized: true2220tracksRegLiveness: true2221registers:2222 - { id: 0, class: _ }2223 - { id: 1, class: _ }2224 - { id: 2, class: _ }2225 - { id: 3, class: _ }2226body: |2227 bb.1.entry:2228 liveins: $xmm02229 2230 ; FAST-LABEL: name: float_to_int82231 ; FAST: liveins: $xmm02232 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02233 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2234 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s32)2235 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[FPTOSI]](s32)2236 ; FAST: $al = COPY [[TRUNC1]](s8)2237 ; FAST: RET 0, implicit $al2238 ; GREEDY-LABEL: name: float_to_int82239 ; GREEDY: liveins: $xmm02240 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02241 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2242 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s32)2243 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[FPTOSI]](s32)2244 ; GREEDY: $al = COPY [[TRUNC1]](s8)2245 ; GREEDY: RET 0, implicit $al2246 %1:_(s128) = COPY $xmm02247 %0:_(s32) = G_TRUNC %1(s128)2248 %3:_(s32) = G_FPTOSI %0(s32)2249 %2:_(s8) = G_TRUNC %3(s32)2250 $al = COPY %2(s8)2251 RET 0, implicit $al2252 2253...2254---2255name: float_to_int162256alignment: 162257legalized: true2258tracksRegLiveness: true2259registers:2260 - { id: 0, class: _ }2261 - { id: 1, class: _ }2262 - { id: 2, class: _ }2263 - { id: 3, class: _ }2264body: |2265 bb.1.entry:2266 liveins: $xmm02267 2268 ; FAST-LABEL: name: float_to_int162269 ; FAST: liveins: $xmm02270 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02271 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2272 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s32)2273 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s16) = G_TRUNC [[FPTOSI]](s32)2274 ; FAST: $ax = COPY [[TRUNC1]](s16)2275 ; FAST: RET 0, implicit $ax2276 ; GREEDY-LABEL: name: float_to_int162277 ; GREEDY: liveins: $xmm02278 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02279 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2280 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s32)2281 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s16) = G_TRUNC [[FPTOSI]](s32)2282 ; GREEDY: $ax = COPY [[TRUNC1]](s16)2283 ; GREEDY: RET 0, implicit $ax2284 %1:_(s128) = COPY $xmm02285 %0:_(s32) = G_TRUNC %1(s128)2286 %3:_(s32) = G_FPTOSI %0(s32)2287 %2:_(s16) = G_TRUNC %3(s32)2288 $ax = COPY %2(s16)2289 RET 0, implicit $ax2290 2291...2292---2293name: float_to_int322294alignment: 162295legalized: true2296tracksRegLiveness: true2297registers:2298 - { id: 0, class: _ }2299 - { id: 1, class: _ }2300 - { id: 2, class: _ }2301body: |2302 bb.1.entry:2303 liveins: $xmm02304 2305 ; FAST-LABEL: name: float_to_int322306 ; FAST: liveins: $xmm02307 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02308 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2309 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s32)2310 ; FAST: $eax = COPY [[FPTOSI]](s32)2311 ; FAST: RET 0, implicit $eax2312 ; GREEDY-LABEL: name: float_to_int322313 ; GREEDY: liveins: $xmm02314 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02315 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2316 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s32)2317 ; GREEDY: $eax = COPY [[FPTOSI]](s32)2318 ; GREEDY: RET 0, implicit $eax2319 %1:_(s128) = COPY $xmm02320 %0:_(s32) = G_TRUNC %1(s128)2321 %2:_(s32) = G_FPTOSI %0(s32)2322 $eax = COPY %2(s32)2323 RET 0, implicit $eax2324 2325...2326---2327name: float_to_int642328alignment: 162329legalized: true2330tracksRegLiveness: true2331registers:2332 - { id: 0, class: _ }2333 - { id: 1, class: _ }2334 - { id: 2, class: _ }2335body: |2336 bb.1.entry:2337 liveins: $xmm02338 2339 ; FAST-LABEL: name: float_to_int642340 ; FAST: liveins: $xmm02341 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02342 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2343 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s64) = G_FPTOSI [[TRUNC]](s32)2344 ; FAST: $rax = COPY [[FPTOSI]](s64)2345 ; FAST: RET 0, implicit $rax2346 ; GREEDY-LABEL: name: float_to_int642347 ; GREEDY: liveins: $xmm02348 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02349 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2350 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s64) = G_FPTOSI [[TRUNC]](s32)2351 ; GREEDY: $rax = COPY [[FPTOSI]](s64)2352 ; GREEDY: RET 0, implicit $rax2353 %1:_(s128) = COPY $xmm02354 %0:_(s32) = G_TRUNC %1(s128)2355 %2:_(s64) = G_FPTOSI %0(s32)2356 $rax = COPY %2(s64)2357 RET 0, implicit $rax2358 2359...2360---2361name: double_to_int82362alignment: 162363legalized: true2364tracksRegLiveness: true2365registers:2366 - { id: 0, class: _ }2367 - { id: 1, class: _ }2368 - { id: 2, class: _ }2369 - { id: 3, class: _ }2370body: |2371 bb.1.entry:2372 liveins: $xmm02373 2374 ; FAST-LABEL: name: double_to_int82375 ; FAST: liveins: $xmm02376 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02377 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)2378 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s64)2379 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[FPTOSI]](s32)2380 ; FAST: $al = COPY [[TRUNC1]](s8)2381 ; FAST: RET 0, implicit $al2382 ; GREEDY-LABEL: name: double_to_int82383 ; GREEDY: liveins: $xmm02384 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02385 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)2386 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s64)2387 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s8) = G_TRUNC [[FPTOSI]](s32)2388 ; GREEDY: $al = COPY [[TRUNC1]](s8)2389 ; GREEDY: RET 0, implicit $al2390 %1:_(s128) = COPY $xmm02391 %0:_(s64) = G_TRUNC %1(s128)2392 %3:_(s32) = G_FPTOSI %0(s64)2393 %2:_(s8) = G_TRUNC %3(s32)2394 $al = COPY %2(s8)2395 RET 0, implicit $al2396 2397...2398---2399name: double_to_int162400alignment: 162401legalized: true2402tracksRegLiveness: true2403registers:2404 - { id: 0, class: _ }2405 - { id: 1, class: _ }2406 - { id: 2, class: _ }2407 - { id: 3, class: _ }2408body: |2409 bb.1.entry:2410 liveins: $xmm02411 2412 ; FAST-LABEL: name: double_to_int162413 ; FAST: liveins: $xmm02414 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02415 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)2416 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s64)2417 ; FAST: [[TRUNC1:%[0-9]+]]:gpr(s16) = G_TRUNC [[FPTOSI]](s32)2418 ; FAST: $ax = COPY [[TRUNC1]](s16)2419 ; FAST: RET 0, implicit $ax2420 ; GREEDY-LABEL: name: double_to_int162421 ; GREEDY: liveins: $xmm02422 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02423 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)2424 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s64)2425 ; GREEDY: [[TRUNC1:%[0-9]+]]:gpr(s16) = G_TRUNC [[FPTOSI]](s32)2426 ; GREEDY: $ax = COPY [[TRUNC1]](s16)2427 ; GREEDY: RET 0, implicit $ax2428 %1:_(s128) = COPY $xmm02429 %0:_(s64) = G_TRUNC %1(s128)2430 %3:_(s32) = G_FPTOSI %0(s64)2431 %2:_(s16) = G_TRUNC %3(s32)2432 $ax = COPY %2(s16)2433 RET 0, implicit $ax2434 2435...2436---2437name: double_to_int322438alignment: 162439legalized: true2440tracksRegLiveness: true2441registers:2442 - { id: 0, class: _ }2443 - { id: 1, class: _ }2444 - { id: 2, class: _ }2445body: |2446 bb.1.entry:2447 liveins: $xmm02448 2449 ; FAST-LABEL: name: double_to_int322450 ; FAST: liveins: $xmm02451 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02452 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)2453 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s64)2454 ; FAST: $eax = COPY [[FPTOSI]](s32)2455 ; FAST: RET 0, implicit $eax2456 ; GREEDY-LABEL: name: double_to_int322457 ; GREEDY: liveins: $xmm02458 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02459 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)2460 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s32) = G_FPTOSI [[TRUNC]](s64)2461 ; GREEDY: $eax = COPY [[FPTOSI]](s32)2462 ; GREEDY: RET 0, implicit $eax2463 %1:_(s128) = COPY $xmm02464 %0:_(s64) = G_TRUNC %1(s128)2465 %2:_(s32) = G_FPTOSI %0(s64)2466 $eax = COPY %2(s32)2467 RET 0, implicit $eax2468 2469...2470---2471name: double_to_int642472alignment: 162473legalized: true2474tracksRegLiveness: true2475registers:2476 - { id: 0, class: _ }2477 - { id: 1, class: _ }2478 - { id: 2, class: _ }2479body: |2480 bb.1.entry:2481 liveins: $xmm02482 2483 ; FAST-LABEL: name: double_to_int642484 ; FAST: liveins: $xmm02485 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02486 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)2487 ; FAST: [[FPTOSI:%[0-9]+]]:gpr(s64) = G_FPTOSI [[TRUNC]](s64)2488 ; FAST: $rax = COPY [[FPTOSI]](s64)2489 ; FAST: RET 0, implicit $rax2490 ; GREEDY-LABEL: name: double_to_int642491 ; GREEDY: liveins: $xmm02492 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02493 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)2494 ; GREEDY: [[FPTOSI:%[0-9]+]]:gpr(s64) = G_FPTOSI [[TRUNC]](s64)2495 ; GREEDY: $rax = COPY [[FPTOSI]](s64)2496 ; GREEDY: RET 0, implicit $rax2497 %1:_(s128) = COPY $xmm02498 %0:_(s64) = G_TRUNC %1(s128)2499 %2:_(s64) = G_FPTOSI %0(s64)2500 $rax = COPY %2(s64)2501 RET 0, implicit $rax2502 2503...2504---2505name: fcmp_float_oeq2506alignment: 162507legalized: true2508tracksRegLiveness: true2509registers:2510 - { id: 0, class: _ }2511 - { id: 1, class: _ }2512 - { id: 2, class: _ }2513 - { id: 3, class: _ }2514 - { id: 4, class: _ }2515 - { id: 5, class: _ }2516 - { id: 6, class: _ }2517body: |2518 bb.1 (%ir-block.0):2519 liveins: $xmm0, $xmm12520 2521 ; FAST-LABEL: name: fcmp_float_oeq2522 ; FAST: liveins: $xmm0, $xmm12523 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02524 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2525 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12526 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2527 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s32), [[TRUNC1]]2528 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2529 ; FAST: $al = COPY [[COPY2]](s8)2530 ; FAST: RET 0, implicit $al2531 ; GREEDY-LABEL: name: fcmp_float_oeq2532 ; GREEDY: liveins: $xmm0, $xmm12533 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02534 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2535 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12536 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2537 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s32), [[TRUNC1]]2538 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2539 ; GREEDY: $al = COPY [[COPY2]](s8)2540 ; GREEDY: RET 0, implicit $al2541 %2:_(s128) = COPY $xmm02542 %0:_(s32) = G_TRUNC %2(s128)2543 %3:_(s128) = COPY $xmm12544 %1:_(s32) = G_TRUNC %3(s128)2545 %6:_(s8) = G_FCMP floatpred(oeq), %0(s32), %12546 %5:_(s8) = COPY %6(s8)2547 $al = COPY %5(s8)2548 RET 0, implicit $al2549 2550...2551---2552name: fcmp_float_ogt2553alignment: 162554legalized: true2555tracksRegLiveness: true2556registers:2557 - { id: 0, class: _ }2558 - { id: 1, class: _ }2559 - { id: 2, class: _ }2560 - { id: 3, class: _ }2561 - { id: 4, class: _ }2562 - { id: 5, class: _ }2563 - { id: 6, class: _ }2564body: |2565 bb.1 (%ir-block.0):2566 liveins: $xmm0, $xmm12567 2568 ; FAST-LABEL: name: fcmp_float_ogt2569 ; FAST: liveins: $xmm0, $xmm12570 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02571 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2572 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12573 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2574 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s32), [[TRUNC1]]2575 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2576 ; FAST: $al = COPY [[COPY2]](s8)2577 ; FAST: RET 0, implicit $al2578 ; GREEDY-LABEL: name: fcmp_float_ogt2579 ; GREEDY: liveins: $xmm0, $xmm12580 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02581 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2582 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12583 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2584 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s32), [[TRUNC1]]2585 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2586 ; GREEDY: $al = COPY [[COPY2]](s8)2587 ; GREEDY: RET 0, implicit $al2588 %2:_(s128) = COPY $xmm02589 %0:_(s32) = G_TRUNC %2(s128)2590 %3:_(s128) = COPY $xmm12591 %1:_(s32) = G_TRUNC %3(s128)2592 %6:_(s8) = G_FCMP floatpred(ogt), %0(s32), %12593 %5:_(s8) = COPY %6(s8)2594 $al = COPY %5(s8)2595 RET 0, implicit $al2596 2597...2598---2599name: fcmp_float_oge2600alignment: 162601legalized: true2602tracksRegLiveness: true2603registers:2604 - { id: 0, class: _ }2605 - { id: 1, class: _ }2606 - { id: 2, class: _ }2607 - { id: 3, class: _ }2608 - { id: 4, class: _ }2609 - { id: 5, class: _ }2610 - { id: 6, class: _ }2611body: |2612 bb.1 (%ir-block.0):2613 liveins: $xmm0, $xmm12614 2615 ; FAST-LABEL: name: fcmp_float_oge2616 ; FAST: liveins: $xmm0, $xmm12617 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02618 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2619 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12620 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2621 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oge), [[TRUNC]](s32), [[TRUNC1]]2622 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2623 ; FAST: $al = COPY [[COPY2]](s8)2624 ; FAST: RET 0, implicit $al2625 ; GREEDY-LABEL: name: fcmp_float_oge2626 ; GREEDY: liveins: $xmm0, $xmm12627 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02628 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2629 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12630 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2631 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oge), [[TRUNC]](s32), [[TRUNC1]]2632 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2633 ; GREEDY: $al = COPY [[COPY2]](s8)2634 ; GREEDY: RET 0, implicit $al2635 %2:_(s128) = COPY $xmm02636 %0:_(s32) = G_TRUNC %2(s128)2637 %3:_(s128) = COPY $xmm12638 %1:_(s32) = G_TRUNC %3(s128)2639 %6:_(s8) = G_FCMP floatpred(oge), %0(s32), %12640 %5:_(s8) = COPY %6(s8)2641 $al = COPY %5(s8)2642 RET 0, implicit $al2643 2644...2645---2646name: fcmp_float_olt2647alignment: 162648legalized: true2649tracksRegLiveness: true2650registers:2651 - { id: 0, class: _ }2652 - { id: 1, class: _ }2653 - { id: 2, class: _ }2654 - { id: 3, class: _ }2655 - { id: 4, class: _ }2656 - { id: 5, class: _ }2657 - { id: 6, class: _ }2658body: |2659 bb.1 (%ir-block.0):2660 liveins: $xmm0, $xmm12661 2662 ; FAST-LABEL: name: fcmp_float_olt2663 ; FAST: liveins: $xmm0, $xmm12664 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02665 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2666 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12667 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2668 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(olt), [[TRUNC]](s32), [[TRUNC1]]2669 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2670 ; FAST: $al = COPY [[COPY2]](s8)2671 ; FAST: RET 0, implicit $al2672 ; GREEDY-LABEL: name: fcmp_float_olt2673 ; GREEDY: liveins: $xmm0, $xmm12674 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02675 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2676 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12677 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2678 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(olt), [[TRUNC]](s32), [[TRUNC1]]2679 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2680 ; GREEDY: $al = COPY [[COPY2]](s8)2681 ; GREEDY: RET 0, implicit $al2682 %2:_(s128) = COPY $xmm02683 %0:_(s32) = G_TRUNC %2(s128)2684 %3:_(s128) = COPY $xmm12685 %1:_(s32) = G_TRUNC %3(s128)2686 %6:_(s8) = G_FCMP floatpred(olt), %0(s32), %12687 %5:_(s8) = COPY %6(s8)2688 $al = COPY %5(s8)2689 RET 0, implicit $al2690 2691...2692---2693name: fcmp_float_ole2694alignment: 162695legalized: true2696tracksRegLiveness: true2697registers:2698 - { id: 0, class: _ }2699 - { id: 1, class: _ }2700 - { id: 2, class: _ }2701 - { id: 3, class: _ }2702 - { id: 4, class: _ }2703 - { id: 5, class: _ }2704 - { id: 6, class: _ }2705body: |2706 bb.1 (%ir-block.0):2707 liveins: $xmm0, $xmm12708 2709 ; FAST-LABEL: name: fcmp_float_ole2710 ; FAST: liveins: $xmm0, $xmm12711 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02712 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2713 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12714 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2715 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ole), [[TRUNC]](s32), [[TRUNC1]]2716 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2717 ; FAST: $al = COPY [[COPY2]](s8)2718 ; FAST: RET 0, implicit $al2719 ; GREEDY-LABEL: name: fcmp_float_ole2720 ; GREEDY: liveins: $xmm0, $xmm12721 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02722 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2723 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12724 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2725 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ole), [[TRUNC]](s32), [[TRUNC1]]2726 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2727 ; GREEDY: $al = COPY [[COPY2]](s8)2728 ; GREEDY: RET 0, implicit $al2729 %2:_(s128) = COPY $xmm02730 %0:_(s32) = G_TRUNC %2(s128)2731 %3:_(s128) = COPY $xmm12732 %1:_(s32) = G_TRUNC %3(s128)2733 %6:_(s8) = G_FCMP floatpred(ole), %0(s32), %12734 %5:_(s8) = COPY %6(s8)2735 $al = COPY %5(s8)2736 RET 0, implicit $al2737 2738...2739---2740name: fcmp_float_one2741alignment: 162742legalized: true2743tracksRegLiveness: true2744registers:2745 - { id: 0, class: _ }2746 - { id: 1, class: _ }2747 - { id: 2, class: _ }2748 - { id: 3, class: _ }2749 - { id: 4, class: _ }2750 - { id: 5, class: _ }2751 - { id: 6, class: _ }2752body: |2753 bb.1 (%ir-block.0):2754 liveins: $xmm0, $xmm12755 2756 ; FAST-LABEL: name: fcmp_float_one2757 ; FAST: liveins: $xmm0, $xmm12758 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02759 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2760 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12761 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2762 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(one), [[TRUNC]](s32), [[TRUNC1]]2763 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2764 ; FAST: $al = COPY [[COPY2]](s8)2765 ; FAST: RET 0, implicit $al2766 ; GREEDY-LABEL: name: fcmp_float_one2767 ; GREEDY: liveins: $xmm0, $xmm12768 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02769 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2770 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12771 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2772 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(one), [[TRUNC]](s32), [[TRUNC1]]2773 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2774 ; GREEDY: $al = COPY [[COPY2]](s8)2775 ; GREEDY: RET 0, implicit $al2776 %2:_(s128) = COPY $xmm02777 %0:_(s32) = G_TRUNC %2(s128)2778 %3:_(s128) = COPY $xmm12779 %1:_(s32) = G_TRUNC %3(s128)2780 %6:_(s8) = G_FCMP floatpred(one), %0(s32), %12781 %5:_(s8) = COPY %6(s8)2782 $al = COPY %5(s8)2783 RET 0, implicit $al2784 2785...2786---2787name: fcmp_float_ord2788alignment: 162789legalized: true2790tracksRegLiveness: true2791registers:2792 - { id: 0, class: _ }2793 - { id: 1, class: _ }2794 - { id: 2, class: _ }2795 - { id: 3, class: _ }2796 - { id: 4, class: _ }2797 - { id: 5, class: _ }2798 - { id: 6, class: _ }2799body: |2800 bb.1 (%ir-block.0):2801 liveins: $xmm0, $xmm12802 2803 ; FAST-LABEL: name: fcmp_float_ord2804 ; FAST: liveins: $xmm0, $xmm12805 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02806 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2807 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12808 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2809 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ord), [[TRUNC]](s32), [[TRUNC1]]2810 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2811 ; FAST: $al = COPY [[COPY2]](s8)2812 ; FAST: RET 0, implicit $al2813 ; GREEDY-LABEL: name: fcmp_float_ord2814 ; GREEDY: liveins: $xmm0, $xmm12815 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02816 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2817 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12818 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2819 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ord), [[TRUNC]](s32), [[TRUNC1]]2820 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2821 ; GREEDY: $al = COPY [[COPY2]](s8)2822 ; GREEDY: RET 0, implicit $al2823 %2:_(s128) = COPY $xmm02824 %0:_(s32) = G_TRUNC %2(s128)2825 %3:_(s128) = COPY $xmm12826 %1:_(s32) = G_TRUNC %3(s128)2827 %6:_(s8) = G_FCMP floatpred(ord), %0(s32), %12828 %5:_(s8) = COPY %6(s8)2829 $al = COPY %5(s8)2830 RET 0, implicit $al2831 2832...2833---2834name: fcmp_float_uno2835alignment: 162836legalized: true2837tracksRegLiveness: true2838registers:2839 - { id: 0, class: _ }2840 - { id: 1, class: _ }2841 - { id: 2, class: _ }2842 - { id: 3, class: _ }2843 - { id: 4, class: _ }2844 - { id: 5, class: _ }2845 - { id: 6, class: _ }2846body: |2847 bb.1 (%ir-block.0):2848 liveins: $xmm0, $xmm12849 2850 ; FAST-LABEL: name: fcmp_float_uno2851 ; FAST: liveins: $xmm0, $xmm12852 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02853 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2854 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12855 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2856 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uno), [[TRUNC]](s32), [[TRUNC1]]2857 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2858 ; FAST: $al = COPY [[COPY2]](s8)2859 ; FAST: RET 0, implicit $al2860 ; GREEDY-LABEL: name: fcmp_float_uno2861 ; GREEDY: liveins: $xmm0, $xmm12862 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02863 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2864 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12865 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2866 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uno), [[TRUNC]](s32), [[TRUNC1]]2867 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2868 ; GREEDY: $al = COPY [[COPY2]](s8)2869 ; GREEDY: RET 0, implicit $al2870 %2:_(s128) = COPY $xmm02871 %0:_(s32) = G_TRUNC %2(s128)2872 %3:_(s128) = COPY $xmm12873 %1:_(s32) = G_TRUNC %3(s128)2874 %6:_(s8) = G_FCMP floatpred(uno), %0(s32), %12875 %5:_(s8) = COPY %6(s8)2876 $al = COPY %5(s8)2877 RET 0, implicit $al2878 2879...2880---2881name: fcmp_float_ueq2882alignment: 162883legalized: true2884tracksRegLiveness: true2885registers:2886 - { id: 0, class: _ }2887 - { id: 1, class: _ }2888 - { id: 2, class: _ }2889 - { id: 3, class: _ }2890 - { id: 4, class: _ }2891 - { id: 5, class: _ }2892 - { id: 6, class: _ }2893body: |2894 bb.1 (%ir-block.0):2895 liveins: $xmm0, $xmm12896 2897 ; FAST-LABEL: name: fcmp_float_ueq2898 ; FAST: liveins: $xmm0, $xmm12899 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02900 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2901 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12902 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2903 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s32), [[TRUNC1]]2904 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2905 ; FAST: $al = COPY [[COPY2]](s8)2906 ; FAST: RET 0, implicit $al2907 ; GREEDY-LABEL: name: fcmp_float_ueq2908 ; GREEDY: liveins: $xmm0, $xmm12909 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02910 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2911 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12912 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2913 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s32), [[TRUNC1]]2914 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2915 ; GREEDY: $al = COPY [[COPY2]](s8)2916 ; GREEDY: RET 0, implicit $al2917 %2:_(s128) = COPY $xmm02918 %0:_(s32) = G_TRUNC %2(s128)2919 %3:_(s128) = COPY $xmm12920 %1:_(s32) = G_TRUNC %3(s128)2921 %6:_(s8) = G_FCMP floatpred(ueq), %0(s32), %12922 %5:_(s8) = COPY %6(s8)2923 $al = COPY %5(s8)2924 RET 0, implicit $al2925 2926...2927---2928name: fcmp_float_ugt2929alignment: 162930legalized: true2931tracksRegLiveness: true2932registers:2933 - { id: 0, class: _ }2934 - { id: 1, class: _ }2935 - { id: 2, class: _ }2936 - { id: 3, class: _ }2937 - { id: 4, class: _ }2938 - { id: 5, class: _ }2939 - { id: 6, class: _ }2940body: |2941 bb.1 (%ir-block.0):2942 liveins: $xmm0, $xmm12943 2944 ; FAST-LABEL: name: fcmp_float_ugt2945 ; FAST: liveins: $xmm0, $xmm12946 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02947 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2948 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12949 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2950 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s32), [[TRUNC1]]2951 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2952 ; FAST: $al = COPY [[COPY2]](s8)2953 ; FAST: RET 0, implicit $al2954 ; GREEDY-LABEL: name: fcmp_float_ugt2955 ; GREEDY: liveins: $xmm0, $xmm12956 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02957 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2958 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12959 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2960 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s32), [[TRUNC1]]2961 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2962 ; GREEDY: $al = COPY [[COPY2]](s8)2963 ; GREEDY: RET 0, implicit $al2964 %2:_(s128) = COPY $xmm02965 %0:_(s32) = G_TRUNC %2(s128)2966 %3:_(s128) = COPY $xmm12967 %1:_(s32) = G_TRUNC %3(s128)2968 %6:_(s8) = G_FCMP floatpred(ugt), %0(s32), %12969 %5:_(s8) = COPY %6(s8)2970 $al = COPY %5(s8)2971 RET 0, implicit $al2972 2973...2974---2975name: fcmp_float_uge2976alignment: 162977legalized: true2978tracksRegLiveness: true2979registers:2980 - { id: 0, class: _ }2981 - { id: 1, class: _ }2982 - { id: 2, class: _ }2983 - { id: 3, class: _ }2984 - { id: 4, class: _ }2985 - { id: 5, class: _ }2986 - { id: 6, class: _ }2987body: |2988 bb.1 (%ir-block.0):2989 liveins: $xmm0, $xmm12990 2991 ; FAST-LABEL: name: fcmp_float_uge2992 ; FAST: liveins: $xmm0, $xmm12993 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm02994 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)2995 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm12996 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)2997 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uge), [[TRUNC]](s32), [[TRUNC1]]2998 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)2999 ; FAST: $al = COPY [[COPY2]](s8)3000 ; FAST: RET 0, implicit $al3001 ; GREEDY-LABEL: name: fcmp_float_uge3002 ; GREEDY: liveins: $xmm0, $xmm13003 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03004 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)3005 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13006 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)3007 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uge), [[TRUNC]](s32), [[TRUNC1]]3008 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3009 ; GREEDY: $al = COPY [[COPY2]](s8)3010 ; GREEDY: RET 0, implicit $al3011 %2:_(s128) = COPY $xmm03012 %0:_(s32) = G_TRUNC %2(s128)3013 %3:_(s128) = COPY $xmm13014 %1:_(s32) = G_TRUNC %3(s128)3015 %6:_(s8) = G_FCMP floatpred(uge), %0(s32), %13016 %5:_(s8) = COPY %6(s8)3017 $al = COPY %5(s8)3018 RET 0, implicit $al3019 3020...3021---3022name: fcmp_float_ult3023alignment: 163024legalized: true3025tracksRegLiveness: true3026registers:3027 - { id: 0, class: _ }3028 - { id: 1, class: _ }3029 - { id: 2, class: _ }3030 - { id: 3, class: _ }3031 - { id: 4, class: _ }3032 - { id: 5, class: _ }3033 - { id: 6, class: _ }3034body: |3035 bb.1 (%ir-block.0):3036 liveins: $xmm0, $xmm13037 3038 ; FAST-LABEL: name: fcmp_float_ult3039 ; FAST: liveins: $xmm0, $xmm13040 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03041 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)3042 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13043 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)3044 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ult), [[TRUNC]](s32), [[TRUNC1]]3045 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3046 ; FAST: $al = COPY [[COPY2]](s8)3047 ; FAST: RET 0, implicit $al3048 ; GREEDY-LABEL: name: fcmp_float_ult3049 ; GREEDY: liveins: $xmm0, $xmm13050 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03051 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)3052 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13053 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)3054 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ult), [[TRUNC]](s32), [[TRUNC1]]3055 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3056 ; GREEDY: $al = COPY [[COPY2]](s8)3057 ; GREEDY: RET 0, implicit $al3058 %2:_(s128) = COPY $xmm03059 %0:_(s32) = G_TRUNC %2(s128)3060 %3:_(s128) = COPY $xmm13061 %1:_(s32) = G_TRUNC %3(s128)3062 %6:_(s8) = G_FCMP floatpred(ult), %0(s32), %13063 %5:_(s8) = COPY %6(s8)3064 $al = COPY %5(s8)3065 RET 0, implicit $al3066 3067...3068---3069name: fcmp_float_ule3070alignment: 163071legalized: true3072tracksRegLiveness: true3073registers:3074 - { id: 0, class: _ }3075 - { id: 1, class: _ }3076 - { id: 2, class: _ }3077 - { id: 3, class: _ }3078 - { id: 4, class: _ }3079 - { id: 5, class: _ }3080 - { id: 6, class: _ }3081body: |3082 bb.1 (%ir-block.0):3083 liveins: $xmm0, $xmm13084 3085 ; FAST-LABEL: name: fcmp_float_ule3086 ; FAST: liveins: $xmm0, $xmm13087 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03088 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)3089 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13090 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)3091 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ule), [[TRUNC]](s32), [[TRUNC1]]3092 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3093 ; FAST: $al = COPY [[COPY2]](s8)3094 ; FAST: RET 0, implicit $al3095 ; GREEDY-LABEL: name: fcmp_float_ule3096 ; GREEDY: liveins: $xmm0, $xmm13097 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03098 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)3099 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13100 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)3101 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ule), [[TRUNC]](s32), [[TRUNC1]]3102 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3103 ; GREEDY: $al = COPY [[COPY2]](s8)3104 ; GREEDY: RET 0, implicit $al3105 %2:_(s128) = COPY $xmm03106 %0:_(s32) = G_TRUNC %2(s128)3107 %3:_(s128) = COPY $xmm13108 %1:_(s32) = G_TRUNC %3(s128)3109 %6:_(s8) = G_FCMP floatpred(ule), %0(s32), %13110 %5:_(s8) = COPY %6(s8)3111 $al = COPY %5(s8)3112 RET 0, implicit $al3113 3114...3115---3116name: fcmp_float_une3117alignment: 163118legalized: true3119tracksRegLiveness: true3120registers:3121 - { id: 0, class: _ }3122 - { id: 1, class: _ }3123 - { id: 2, class: _ }3124 - { id: 3, class: _ }3125 - { id: 4, class: _ }3126 - { id: 5, class: _ }3127 - { id: 6, class: _ }3128body: |3129 bb.1 (%ir-block.0):3130 liveins: $xmm0, $xmm13131 3132 ; FAST-LABEL: name: fcmp_float_une3133 ; FAST: liveins: $xmm0, $xmm13134 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03135 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)3136 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13137 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)3138 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(une), [[TRUNC]](s32), [[TRUNC1]]3139 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3140 ; FAST: $al = COPY [[COPY2]](s8)3141 ; FAST: RET 0, implicit $al3142 ; GREEDY-LABEL: name: fcmp_float_une3143 ; GREEDY: liveins: $xmm0, $xmm13144 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03145 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128)3146 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13147 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128)3148 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(une), [[TRUNC]](s32), [[TRUNC1]]3149 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3150 ; GREEDY: $al = COPY [[COPY2]](s8)3151 ; GREEDY: RET 0, implicit $al3152 %2:_(s128) = COPY $xmm03153 %0:_(s32) = G_TRUNC %2(s128)3154 %3:_(s128) = COPY $xmm13155 %1:_(s32) = G_TRUNC %3(s128)3156 %6:_(s8) = G_FCMP floatpred(une), %0(s32), %13157 %5:_(s8) = COPY %6(s8)3158 $al = COPY %5(s8)3159 RET 0, implicit $al3160 3161...3162---3163name: fcmp_double_oeq3164alignment: 163165legalized: true3166tracksRegLiveness: true3167registers:3168 - { id: 0, class: _ }3169 - { id: 1, class: _ }3170 - { id: 2, class: _ }3171 - { id: 3, class: _ }3172 - { id: 4, class: _ }3173 - { id: 5, class: _ }3174 - { id: 6, class: _ }3175body: |3176 bb.1 (%ir-block.0):3177 liveins: $xmm0, $xmm13178 3179 ; FAST-LABEL: name: fcmp_double_oeq3180 ; FAST: liveins: $xmm0, $xmm13181 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03182 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3183 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13184 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3185 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s64), [[TRUNC1]]3186 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3187 ; FAST: $al = COPY [[COPY2]](s8)3188 ; FAST: RET 0, implicit $al3189 ; GREEDY-LABEL: name: fcmp_double_oeq3190 ; GREEDY: liveins: $xmm0, $xmm13191 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03192 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3193 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13194 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3195 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s64), [[TRUNC1]]3196 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3197 ; GREEDY: $al = COPY [[COPY2]](s8)3198 ; GREEDY: RET 0, implicit $al3199 %2:_(s128) = COPY $xmm03200 %0:_(s64) = G_TRUNC %2(s128)3201 %3:_(s128) = COPY $xmm13202 %1:_(s64) = G_TRUNC %3(s128)3203 %6:_(s8) = G_FCMP floatpred(oeq), %0(s64), %13204 %5:_(s8) = COPY %6(s8)3205 $al = COPY %5(s8)3206 RET 0, implicit $al3207 3208...3209---3210name: fcmp_double_ogt3211alignment: 163212legalized: true3213tracksRegLiveness: true3214registers:3215 - { id: 0, class: _ }3216 - { id: 1, class: _ }3217 - { id: 2, class: _ }3218 - { id: 3, class: _ }3219 - { id: 4, class: _ }3220 - { id: 5, class: _ }3221 - { id: 6, class: _ }3222body: |3223 bb.1 (%ir-block.0):3224 liveins: $xmm0, $xmm13225 3226 ; FAST-LABEL: name: fcmp_double_ogt3227 ; FAST: liveins: $xmm0, $xmm13228 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03229 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3230 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13231 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3232 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s64), [[TRUNC1]]3233 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3234 ; FAST: $al = COPY [[COPY2]](s8)3235 ; FAST: RET 0, implicit $al3236 ; GREEDY-LABEL: name: fcmp_double_ogt3237 ; GREEDY: liveins: $xmm0, $xmm13238 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03239 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3240 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13241 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3242 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s64), [[TRUNC1]]3243 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3244 ; GREEDY: $al = COPY [[COPY2]](s8)3245 ; GREEDY: RET 0, implicit $al3246 %2:_(s128) = COPY $xmm03247 %0:_(s64) = G_TRUNC %2(s128)3248 %3:_(s128) = COPY $xmm13249 %1:_(s64) = G_TRUNC %3(s128)3250 %6:_(s8) = G_FCMP floatpred(ogt), %0(s64), %13251 %5:_(s8) = COPY %6(s8)3252 $al = COPY %5(s8)3253 RET 0, implicit $al3254 3255...3256---3257name: fcmp_double_oge3258alignment: 163259legalized: true3260tracksRegLiveness: true3261registers:3262 - { id: 0, class: _ }3263 - { id: 1, class: _ }3264 - { id: 2, class: _ }3265 - { id: 3, class: _ }3266 - { id: 4, class: _ }3267 - { id: 5, class: _ }3268 - { id: 6, class: _ }3269body: |3270 bb.1 (%ir-block.0):3271 liveins: $xmm0, $xmm13272 3273 ; FAST-LABEL: name: fcmp_double_oge3274 ; FAST: liveins: $xmm0, $xmm13275 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03276 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3277 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13278 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3279 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oge), [[TRUNC]](s64), [[TRUNC1]]3280 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3281 ; FAST: $al = COPY [[COPY2]](s8)3282 ; FAST: RET 0, implicit $al3283 ; GREEDY-LABEL: name: fcmp_double_oge3284 ; GREEDY: liveins: $xmm0, $xmm13285 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03286 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3287 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13288 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3289 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(oge), [[TRUNC]](s64), [[TRUNC1]]3290 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3291 ; GREEDY: $al = COPY [[COPY2]](s8)3292 ; GREEDY: RET 0, implicit $al3293 %2:_(s128) = COPY $xmm03294 %0:_(s64) = G_TRUNC %2(s128)3295 %3:_(s128) = COPY $xmm13296 %1:_(s64) = G_TRUNC %3(s128)3297 %6:_(s8) = G_FCMP floatpred(oge), %0(s64), %13298 %5:_(s8) = COPY %6(s8)3299 $al = COPY %5(s8)3300 RET 0, implicit $al3301 3302...3303---3304name: fcmp_double_olt3305alignment: 163306legalized: true3307tracksRegLiveness: true3308registers:3309 - { id: 0, class: _ }3310 - { id: 1, class: _ }3311 - { id: 2, class: _ }3312 - { id: 3, class: _ }3313 - { id: 4, class: _ }3314 - { id: 5, class: _ }3315 - { id: 6, class: _ }3316body: |3317 bb.1 (%ir-block.0):3318 liveins: $xmm0, $xmm13319 3320 ; FAST-LABEL: name: fcmp_double_olt3321 ; FAST: liveins: $xmm0, $xmm13322 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03323 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3324 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13325 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3326 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(olt), [[TRUNC]](s64), [[TRUNC1]]3327 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3328 ; FAST: $al = COPY [[COPY2]](s8)3329 ; FAST: RET 0, implicit $al3330 ; GREEDY-LABEL: name: fcmp_double_olt3331 ; GREEDY: liveins: $xmm0, $xmm13332 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03333 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3334 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13335 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3336 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(olt), [[TRUNC]](s64), [[TRUNC1]]3337 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3338 ; GREEDY: $al = COPY [[COPY2]](s8)3339 ; GREEDY: RET 0, implicit $al3340 %2:_(s128) = COPY $xmm03341 %0:_(s64) = G_TRUNC %2(s128)3342 %3:_(s128) = COPY $xmm13343 %1:_(s64) = G_TRUNC %3(s128)3344 %6:_(s8) = G_FCMP floatpred(olt), %0(s64), %13345 %5:_(s8) = COPY %6(s8)3346 $al = COPY %5(s8)3347 RET 0, implicit $al3348 3349...3350---3351name: fcmp_double_ole3352alignment: 163353legalized: true3354tracksRegLiveness: true3355registers:3356 - { id: 0, class: _ }3357 - { id: 1, class: _ }3358 - { id: 2, class: _ }3359 - { id: 3, class: _ }3360 - { id: 4, class: _ }3361 - { id: 5, class: _ }3362 - { id: 6, class: _ }3363body: |3364 bb.1 (%ir-block.0):3365 liveins: $xmm0, $xmm13366 3367 ; FAST-LABEL: name: fcmp_double_ole3368 ; FAST: liveins: $xmm0, $xmm13369 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03370 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3371 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13372 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3373 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ole), [[TRUNC]](s64), [[TRUNC1]]3374 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3375 ; FAST: $al = COPY [[COPY2]](s8)3376 ; FAST: RET 0, implicit $al3377 ; GREEDY-LABEL: name: fcmp_double_ole3378 ; GREEDY: liveins: $xmm0, $xmm13379 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03380 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3381 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13382 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3383 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ole), [[TRUNC]](s64), [[TRUNC1]]3384 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3385 ; GREEDY: $al = COPY [[COPY2]](s8)3386 ; GREEDY: RET 0, implicit $al3387 %2:_(s128) = COPY $xmm03388 %0:_(s64) = G_TRUNC %2(s128)3389 %3:_(s128) = COPY $xmm13390 %1:_(s64) = G_TRUNC %3(s128)3391 %6:_(s8) = G_FCMP floatpred(ole), %0(s64), %13392 %5:_(s8) = COPY %6(s8)3393 $al = COPY %5(s8)3394 RET 0, implicit $al3395 3396...3397---3398name: fcmp_double_one3399alignment: 163400legalized: true3401tracksRegLiveness: true3402registers:3403 - { id: 0, class: _ }3404 - { id: 1, class: _ }3405 - { id: 2, class: _ }3406 - { id: 3, class: _ }3407 - { id: 4, class: _ }3408 - { id: 5, class: _ }3409 - { id: 6, class: _ }3410body: |3411 bb.1 (%ir-block.0):3412 liveins: $xmm0, $xmm13413 3414 ; FAST-LABEL: name: fcmp_double_one3415 ; FAST: liveins: $xmm0, $xmm13416 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03417 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3418 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13419 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3420 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(one), [[TRUNC]](s64), [[TRUNC1]]3421 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3422 ; FAST: $al = COPY [[COPY2]](s8)3423 ; FAST: RET 0, implicit $al3424 ; GREEDY-LABEL: name: fcmp_double_one3425 ; GREEDY: liveins: $xmm0, $xmm13426 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03427 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3428 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13429 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3430 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(one), [[TRUNC]](s64), [[TRUNC1]]3431 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3432 ; GREEDY: $al = COPY [[COPY2]](s8)3433 ; GREEDY: RET 0, implicit $al3434 %2:_(s128) = COPY $xmm03435 %0:_(s64) = G_TRUNC %2(s128)3436 %3:_(s128) = COPY $xmm13437 %1:_(s64) = G_TRUNC %3(s128)3438 %6:_(s8) = G_FCMP floatpred(one), %0(s64), %13439 %5:_(s8) = COPY %6(s8)3440 $al = COPY %5(s8)3441 RET 0, implicit $al3442 3443...3444---3445name: fcmp_double_ord3446alignment: 163447legalized: true3448tracksRegLiveness: true3449registers:3450 - { id: 0, class: _ }3451 - { id: 1, class: _ }3452 - { id: 2, class: _ }3453 - { id: 3, class: _ }3454 - { id: 4, class: _ }3455 - { id: 5, class: _ }3456 - { id: 6, class: _ }3457body: |3458 bb.1 (%ir-block.0):3459 liveins: $xmm0, $xmm13460 3461 ; FAST-LABEL: name: fcmp_double_ord3462 ; FAST: liveins: $xmm0, $xmm13463 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03464 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3465 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13466 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3467 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ord), [[TRUNC]](s64), [[TRUNC1]]3468 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3469 ; FAST: $al = COPY [[COPY2]](s8)3470 ; FAST: RET 0, implicit $al3471 ; GREEDY-LABEL: name: fcmp_double_ord3472 ; GREEDY: liveins: $xmm0, $xmm13473 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03474 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3475 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13476 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3477 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ord), [[TRUNC]](s64), [[TRUNC1]]3478 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3479 ; GREEDY: $al = COPY [[COPY2]](s8)3480 ; GREEDY: RET 0, implicit $al3481 %2:_(s128) = COPY $xmm03482 %0:_(s64) = G_TRUNC %2(s128)3483 %3:_(s128) = COPY $xmm13484 %1:_(s64) = G_TRUNC %3(s128)3485 %6:_(s8) = G_FCMP floatpred(ord), %0(s64), %13486 %5:_(s8) = COPY %6(s8)3487 $al = COPY %5(s8)3488 RET 0, implicit $al3489 3490...3491---3492name: fcmp_double_uno3493alignment: 163494legalized: true3495tracksRegLiveness: true3496registers:3497 - { id: 0, class: _ }3498 - { id: 1, class: _ }3499 - { id: 2, class: _ }3500 - { id: 3, class: _ }3501 - { id: 4, class: _ }3502 - { id: 5, class: _ }3503 - { id: 6, class: _ }3504body: |3505 bb.1 (%ir-block.0):3506 liveins: $xmm0, $xmm13507 3508 ; FAST-LABEL: name: fcmp_double_uno3509 ; FAST: liveins: $xmm0, $xmm13510 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03511 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3512 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13513 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3514 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uno), [[TRUNC]](s64), [[TRUNC1]]3515 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3516 ; FAST: $al = COPY [[COPY2]](s8)3517 ; FAST: RET 0, implicit $al3518 ; GREEDY-LABEL: name: fcmp_double_uno3519 ; GREEDY: liveins: $xmm0, $xmm13520 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03521 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3522 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13523 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3524 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uno), [[TRUNC]](s64), [[TRUNC1]]3525 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3526 ; GREEDY: $al = COPY [[COPY2]](s8)3527 ; GREEDY: RET 0, implicit $al3528 %2:_(s128) = COPY $xmm03529 %0:_(s64) = G_TRUNC %2(s128)3530 %3:_(s128) = COPY $xmm13531 %1:_(s64) = G_TRUNC %3(s128)3532 %6:_(s8) = G_FCMP floatpred(uno), %0(s64), %13533 %5:_(s8) = COPY %6(s8)3534 $al = COPY %5(s8)3535 RET 0, implicit $al3536 3537...3538---3539name: fcmp_double_ueq3540alignment: 163541legalized: true3542tracksRegLiveness: true3543registers:3544 - { id: 0, class: _ }3545 - { id: 1, class: _ }3546 - { id: 2, class: _ }3547 - { id: 3, class: _ }3548 - { id: 4, class: _ }3549 - { id: 5, class: _ }3550 - { id: 6, class: _ }3551body: |3552 bb.1 (%ir-block.0):3553 liveins: $xmm0, $xmm13554 3555 ; FAST-LABEL: name: fcmp_double_ueq3556 ; FAST: liveins: $xmm0, $xmm13557 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03558 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3559 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13560 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3561 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s64), [[TRUNC1]]3562 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3563 ; FAST: $al = COPY [[COPY2]](s8)3564 ; FAST: RET 0, implicit $al3565 ; GREEDY-LABEL: name: fcmp_double_ueq3566 ; GREEDY: liveins: $xmm0, $xmm13567 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03568 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3569 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13570 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3571 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s64), [[TRUNC1]]3572 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3573 ; GREEDY: $al = COPY [[COPY2]](s8)3574 ; GREEDY: RET 0, implicit $al3575 %2:_(s128) = COPY $xmm03576 %0:_(s64) = G_TRUNC %2(s128)3577 %3:_(s128) = COPY $xmm13578 %1:_(s64) = G_TRUNC %3(s128)3579 %6:_(s8) = G_FCMP floatpred(ueq), %0(s64), %13580 %5:_(s8) = COPY %6(s8)3581 $al = COPY %5(s8)3582 RET 0, implicit $al3583 3584...3585---3586name: fcmp_double_ugt3587alignment: 163588legalized: true3589tracksRegLiveness: true3590registers:3591 - { id: 0, class: _ }3592 - { id: 1, class: _ }3593 - { id: 2, class: _ }3594 - { id: 3, class: _ }3595 - { id: 4, class: _ }3596 - { id: 5, class: _ }3597 - { id: 6, class: _ }3598body: |3599 bb.1 (%ir-block.0):3600 liveins: $xmm0, $xmm13601 3602 ; FAST-LABEL: name: fcmp_double_ugt3603 ; FAST: liveins: $xmm0, $xmm13604 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03605 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3606 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13607 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3608 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s64), [[TRUNC1]]3609 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3610 ; FAST: $al = COPY [[COPY2]](s8)3611 ; FAST: RET 0, implicit $al3612 ; GREEDY-LABEL: name: fcmp_double_ugt3613 ; GREEDY: liveins: $xmm0, $xmm13614 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03615 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3616 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13617 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3618 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s64), [[TRUNC1]]3619 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3620 ; GREEDY: $al = COPY [[COPY2]](s8)3621 ; GREEDY: RET 0, implicit $al3622 %2:_(s128) = COPY $xmm03623 %0:_(s64) = G_TRUNC %2(s128)3624 %3:_(s128) = COPY $xmm13625 %1:_(s64) = G_TRUNC %3(s128)3626 %6:_(s8) = G_FCMP floatpred(ugt), %0(s64), %13627 %5:_(s8) = COPY %6(s8)3628 $al = COPY %5(s8)3629 RET 0, implicit $al3630 3631...3632---3633name: fcmp_double_uge3634alignment: 163635legalized: true3636tracksRegLiveness: true3637registers:3638 - { id: 0, class: _ }3639 - { id: 1, class: _ }3640 - { id: 2, class: _ }3641 - { id: 3, class: _ }3642 - { id: 4, class: _ }3643 - { id: 5, class: _ }3644 - { id: 6, class: _ }3645body: |3646 bb.1 (%ir-block.0):3647 liveins: $xmm0, $xmm13648 3649 ; FAST-LABEL: name: fcmp_double_uge3650 ; FAST: liveins: $xmm0, $xmm13651 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03652 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3653 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13654 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3655 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uge), [[TRUNC]](s64), [[TRUNC1]]3656 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3657 ; FAST: $al = COPY [[COPY2]](s8)3658 ; FAST: RET 0, implicit $al3659 ; GREEDY-LABEL: name: fcmp_double_uge3660 ; GREEDY: liveins: $xmm0, $xmm13661 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03662 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3663 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13664 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3665 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(uge), [[TRUNC]](s64), [[TRUNC1]]3666 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3667 ; GREEDY: $al = COPY [[COPY2]](s8)3668 ; GREEDY: RET 0, implicit $al3669 %2:_(s128) = COPY $xmm03670 %0:_(s64) = G_TRUNC %2(s128)3671 %3:_(s128) = COPY $xmm13672 %1:_(s64) = G_TRUNC %3(s128)3673 %6:_(s8) = G_FCMP floatpred(uge), %0(s64), %13674 %5:_(s8) = COPY %6(s8)3675 $al = COPY %5(s8)3676 RET 0, implicit $al3677 3678...3679---3680name: fcmp_double_ult3681alignment: 163682legalized: true3683tracksRegLiveness: true3684registers:3685 - { id: 0, class: _ }3686 - { id: 1, class: _ }3687 - { id: 2, class: _ }3688 - { id: 3, class: _ }3689 - { id: 4, class: _ }3690 - { id: 5, class: _ }3691 - { id: 6, class: _ }3692body: |3693 bb.1 (%ir-block.0):3694 liveins: $xmm0, $xmm13695 3696 ; FAST-LABEL: name: fcmp_double_ult3697 ; FAST: liveins: $xmm0, $xmm13698 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03699 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3700 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13701 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3702 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ult), [[TRUNC]](s64), [[TRUNC1]]3703 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3704 ; FAST: $al = COPY [[COPY2]](s8)3705 ; FAST: RET 0, implicit $al3706 ; GREEDY-LABEL: name: fcmp_double_ult3707 ; GREEDY: liveins: $xmm0, $xmm13708 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03709 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3710 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13711 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3712 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ult), [[TRUNC]](s64), [[TRUNC1]]3713 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3714 ; GREEDY: $al = COPY [[COPY2]](s8)3715 ; GREEDY: RET 0, implicit $al3716 %2:_(s128) = COPY $xmm03717 %0:_(s64) = G_TRUNC %2(s128)3718 %3:_(s128) = COPY $xmm13719 %1:_(s64) = G_TRUNC %3(s128)3720 %6:_(s8) = G_FCMP floatpred(ult), %0(s64), %13721 %5:_(s8) = COPY %6(s8)3722 $al = COPY %5(s8)3723 RET 0, implicit $al3724 3725...3726---3727name: fcmp_double_ule3728alignment: 163729legalized: true3730tracksRegLiveness: true3731registers:3732 - { id: 0, class: _ }3733 - { id: 1, class: _ }3734 - { id: 2, class: _ }3735 - { id: 3, class: _ }3736 - { id: 4, class: _ }3737 - { id: 5, class: _ }3738 - { id: 6, class: _ }3739body: |3740 bb.1 (%ir-block.0):3741 liveins: $xmm0, $xmm13742 3743 ; FAST-LABEL: name: fcmp_double_ule3744 ; FAST: liveins: $xmm0, $xmm13745 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03746 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3747 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13748 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3749 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ule), [[TRUNC]](s64), [[TRUNC1]]3750 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3751 ; FAST: $al = COPY [[COPY2]](s8)3752 ; FAST: RET 0, implicit $al3753 ; GREEDY-LABEL: name: fcmp_double_ule3754 ; GREEDY: liveins: $xmm0, $xmm13755 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03756 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3757 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13758 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3759 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(ule), [[TRUNC]](s64), [[TRUNC1]]3760 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3761 ; GREEDY: $al = COPY [[COPY2]](s8)3762 ; GREEDY: RET 0, implicit $al3763 %2:_(s128) = COPY $xmm03764 %0:_(s64) = G_TRUNC %2(s128)3765 %3:_(s128) = COPY $xmm13766 %1:_(s64) = G_TRUNC %3(s128)3767 %6:_(s8) = G_FCMP floatpred(ule), %0(s64), %13768 %5:_(s8) = COPY %6(s8)3769 $al = COPY %5(s8)3770 RET 0, implicit $al3771 3772...3773---3774name: fcmp_double_une3775alignment: 163776legalized: true3777tracksRegLiveness: true3778registers:3779 - { id: 0, class: _ }3780 - { id: 1, class: _ }3781 - { id: 2, class: _ }3782 - { id: 3, class: _ }3783 - { id: 4, class: _ }3784 - { id: 5, class: _ }3785 - { id: 6, class: _ }3786body: |3787 bb.1 (%ir-block.0):3788 liveins: $xmm0, $xmm13789 3790 ; FAST-LABEL: name: fcmp_double_une3791 ; FAST: liveins: $xmm0, $xmm13792 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03793 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3794 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13795 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3796 ; FAST: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(une), [[TRUNC]](s64), [[TRUNC1]]3797 ; FAST: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3798 ; FAST: $al = COPY [[COPY2]](s8)3799 ; FAST: RET 0, implicit $al3800 ; GREEDY-LABEL: name: fcmp_double_une3801 ; GREEDY: liveins: $xmm0, $xmm13802 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm03803 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128)3804 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm13805 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY1]](s128)3806 ; GREEDY: [[FCMP:%[0-9]+]]:gpr(s8) = G_FCMP floatpred(une), [[TRUNC]](s64), [[TRUNC1]]3807 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s8) = COPY [[FCMP]](s8)3808 ; GREEDY: $al = COPY [[COPY2]](s8)3809 ; GREEDY: RET 0, implicit $al3810 %2:_(s128) = COPY $xmm03811 %0:_(s64) = G_TRUNC %2(s128)3812 %3:_(s128) = COPY $xmm13813 %1:_(s64) = G_TRUNC %3(s128)3814 %6:_(s8) = G_FCMP floatpred(une), %0(s64), %13815 %5:_(s8) = COPY %6(s8)3816 $al = COPY %5(s8)3817 RET 0, implicit $al3818 3819...3820