1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=regbankselect %s -o - | FileCheck %s --check-prefix=FAST 3# RUN: llc -mtriple=x86_64-linux-gnu -regbankselect-greedy -run-pass=regbankselect %s -o - | FileCheck %s --check-prefix=GREEDY 4 5--- | 6 define i8 @test_add_i8(i8 %arg1, i8 %arg2) { 7 %ret = add i8 %arg1, %arg2 8 ret i8 %ret 9 } 10 11 define i16 @test_add_i16(i16 %arg1, i16 %arg2) { 12 %ret = add i16 %arg1, %arg2 13 ret i16 %ret 14 } 15 16 define i32 @test_add_i32(i32 %arg1, i32 %arg2) { 17 %ret = add i32 %arg1, %arg2 18 ret i32 %ret 19 } 20 21 define i64 @test_add_i64(i64 %arg1, i64 %arg2) { 22 %ret = add i64 %arg1, %arg2 23 ret i64 %ret 24 } 25 26 define void @test_mul_gpr() { 27 ret void 28 } 29 30 define float @test_add_float(float %arg1, float %arg2) { 31 %ret = fadd float %arg1, %arg2 32 ret float %ret 33 } 34 35 define double @test_add_double(double %arg1, double %arg2) { 36 %ret = fadd double %arg1, %arg2 37 ret double %ret 38 } 39 40 define void @test_fsub_float() { 41 %ret1 = fsub float undef, undef 42 %ret2 = fsub double undef, undef 43 ret void 44 } 45 46 define void @test_fmul_float() { 47 %ret1 = fmul float undef, undef 48 %ret2 = fmul double undef, undef 49 ret void 50 } 51 52 define void @test_fdiv_float() { 53 %ret1 = fdiv float undef, undef 54 %ret2 = fdiv double undef, undef 55 ret void 56 } 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, %arg2 61 ret <4 x i32> %ret 62 } 63 64 define <4 x float> @test_add_v4f32(<4 x float> %arg1, <4 x float> %arg2) { 65 %ret = fadd <4 x float> %arg1, %arg2 66 ret <4 x float> %ret 67 } 68 69 define i8 @test_load_i8(ptr %p1) { 70 %r = load i8, ptr %p1 71 ret i8 %r 72 } 73 74 define i16 @test_load_i16(ptr %p1) { 75 %r = load i16, ptr %p1 76 ret i16 %r 77 } 78 79 define i32 @test_load_i32(ptr %p1) { 80 %r = load i32, ptr %p1 81 ret i32 %r 82 } 83 84 define i64 @test_load_i64(ptr %p1) { 85 %r = load i64, ptr %p1 86 ret i64 %r 87 } 88 89 define float @test_load_float(ptr %p1) { 90 %r = load float, ptr %p1 91 ret float %r 92 } 93 94 define double @test_load_double(ptr %p1) { 95 %r = load double, ptr %p1 96 ret double %r 97 } 98 99 define <4 x i32> @test_load_v4i32(ptr %p1) { 100 %r = load <4 x i32>, ptr %p1, align 16 101 ret <4 x i32> %r 102 } 103 104 define ptr @test_store_i32(i32 %val, ptr %p1) { 105 store i32 %val, ptr %p1 106 ret ptr %p1 107 } 108 109 define ptr @test_store_i64(i64 %val, ptr %p1) { 110 store i64 %val, ptr %p1 111 ret ptr %p1 112 } 113 114 define ptr @test_store_float(float %val, ptr %p1) { 115 store float %val, ptr %p1 116 ret ptr %p1 117 } 118 119 define ptr @test_store_double(double %val, ptr %p1) { 120 store double %val, ptr %p1 121 ret ptr %p1 122 } 123 124 define void @constInt_check() { 125 ret void 126 } 127 128 define void @trunc_check() { 129 ret void 130 } 131 132 define void @test_gep() { 133 %p1 = getelementptr i32, ptr undef, i32 5 134 %p2 = getelementptr i32, ptr undef, i64 5 135 ret void 136 } 137 138 define i1 @test_icmp_eq_i8(i8 %a, i8 %b) { 139 %r = icmp eq i8 %a, %b 140 ret i1 %r 141 } 142 143 define i1 @test_icmp_eq_i16(i16 %a, i16 %b) { 144 %r = icmp eq i16 %a, %b 145 ret i1 %r 146 } 147 148 define i1 @test_icmp_eq_i32(i32 %a, i32 %b) { 149 %r = icmp eq i32 %a, %b 150 ret i1 %r 151 } 152 153 define i1 @test_icmp_eq_i64(i64 %a, i64 %b) { 154 %r = icmp eq i64 %a, %b 155 ret i1 %r 156 } 157 158 define i8 @test_xor_i8() { 159 %ret = xor i8 undef, undef 160 ret i8 %ret 161 } 162 163 define i16 @test_or_i16() { 164 %ret = or i16 undef, undef 165 ret i16 %ret 166 } 167 168 define i32 @test_and_i32() { 169 %ret = and i32 undef, undef 170 ret i32 %ret 171 } 172 173 define i64 @test_and_i64() { 174 %ret = and i64 undef, undef 175 ret i64 %ret 176 } 177 178 @g_int = global i32 0, align 4 179 180 define ptr @test_global_ptrv() { 181 entry: 182 ret ptr @g_int 183 } 184 185 define i8 @test_undef() { 186 ret i8 undef 187 } 188 189 define i8 @test_undef2(i8 %a) { 190 %r = add i8 %a, undef 191 ret i8 %r 192 } 193 194 define float @test_undef3() { 195 ret float undef 196 } 197 198 define float @test_undef4(float %a) { 199 %r = fadd float %a, undef 200 ret float %r 201 } 202 203 define i32 @test_i32(i32 %a, i32 %f, i32 %t) { 204 entry: 205 %cmp = icmp sgt i32 %a, 0 206 br i1 %cmp, label %cond.true, label %cond.false 207 208 cond.true: ; preds = %entry 209 br label %cond.end 210 211 cond.false: ; preds = %entry 212 br label %cond.end 213 214 cond.end: ; preds = %cond.false, %cond.true 215 %cond = phi i32 [ %f, %cond.true ], [ %t, %cond.false ] 216 ret i32 %cond 217 } 218 219 define float @test_float(i32 %a, float %f, float %t) { 220 entry: 221 %cmp = icmp sgt i32 %a, 0 222 br i1 %cmp, label %cond.true, label %cond.false 223 224 cond.true: ; preds = %entry 225 br label %cond.end 226 227 cond.false: ; preds = %entry 228 br label %cond.end 229 230 cond.end: ; preds = %cond.false, %cond.true 231 %cond = phi float [ %f, %cond.true ], [ %t, %cond.false ] 232 ret float %cond 233 } 234 235 define double @test_fpext(float %a) { 236 entry: 237 %conv = fpext float %a to double 238 ret double %conv 239 } 240 241 define float @test_fptrunc(double %a) { 242 entry: 243 %conv = fptrunc double %a to float 244 ret float %conv 245 } 246 247 define void @test_fconstant() { 248 ret void 249 } 250 251 define float @int32_to_float(i32 %a) { 252 entry: 253 %conv = sitofp i32 %a to float 254 ret float %conv 255 } 256 257 define float @int64_to_float(i64 %a) { 258 entry: 259 %conv = sitofp i64 %a to float 260 ret float %conv 261 } 262 263 define double @int32_to_double(i32 %a) { 264 entry: 265 %conv = sitofp i32 %a to double 266 ret double %conv 267 } 268 269 define double @int64_to_double(i64 %a) { 270 entry: 271 %conv = sitofp i64 %a to double 272 ret double %conv 273 } 274 275 define signext i8 @float_to_int8(float %val) { 276 entry: 277 %conv = fptosi float %val to i8 278 ret i8 %conv 279 } 280 281 define signext i16 @float_to_int16(float %val) { 282 entry: 283 %conv = fptosi float %val to i16 284 ret i16 %conv 285 } 286 287 define i32 @float_to_int32(float %val) { 288 entry: 289 %conv = fptosi float %val to i32 290 ret i32 %conv 291 } 292 293 define i64 @float_to_int64(float %val) { 294 entry: 295 %conv = fptosi float %val to i64 296 ret i64 %conv 297 } 298 299 define signext i8 @double_to_int8(double %val) { 300 entry: 301 %conv = fptosi double %val to i8 302 ret i8 %conv 303 } 304 305 define signext i16 @double_to_int16(double %val) { 306 entry: 307 %conv = fptosi double %val to i16 308 ret i16 %conv 309 } 310 311 define i32 @double_to_int32(double %val) { 312 entry: 313 %conv = fptosi double %val to i32 314 ret i32 %conv 315 } 316 317 define i64 @double_to_int64(double %val) { 318 entry: 319 %conv = fptosi double %val to i64 320 ret i64 %conv 321 } 322 323 define i1 @fcmp_float_oeq(float %x, float %y) { 324 %1 = fcmp oeq float %x, %y 325 ret i1 %1 326 } 327 328 define i1 @fcmp_float_ogt(float %x, float %y) { 329 %1 = fcmp ogt float %x, %y 330 ret i1 %1 331 } 332 333 define i1 @fcmp_float_oge(float %x, float %y) { 334 %1 = fcmp oge float %x, %y 335 ret i1 %1 336 } 337 338 define i1 @fcmp_float_olt(float %x, float %y) { 339 %1 = fcmp olt float %x, %y 340 ret i1 %1 341 } 342 343 define i1 @fcmp_float_ole(float %x, float %y) { 344 %1 = fcmp ole float %x, %y 345 ret i1 %1 346 } 347 348 define i1 @fcmp_float_one(float %x, float %y) { 349 %1 = fcmp one float %x, %y 350 ret i1 %1 351 } 352 353 define i1 @fcmp_float_ord(float %x, float %y) { 354 %1 = fcmp ord float %x, %y 355 ret i1 %1 356 } 357 358 define i1 @fcmp_float_uno(float %x, float %y) { 359 %1 = fcmp uno float %x, %y 360 ret i1 %1 361 } 362 363 define i1 @fcmp_float_ueq(float %x, float %y) { 364 %1 = fcmp ueq float %x, %y 365 ret i1 %1 366 } 367 368 define i1 @fcmp_float_ugt(float %x, float %y) { 369 %1 = fcmp ugt float %x, %y 370 ret i1 %1 371 } 372 373 define i1 @fcmp_float_uge(float %x, float %y) { 374 %1 = fcmp uge float %x, %y 375 ret i1 %1 376 } 377 378 define i1 @fcmp_float_ult(float %x, float %y) { 379 %1 = fcmp ult float %x, %y 380 ret i1 %1 381 } 382 383 define i1 @fcmp_float_ule(float %x, float %y) { 384 %1 = fcmp ule float %x, %y 385 ret i1 %1 386 } 387 388 define i1 @fcmp_float_une(float %x, float %y) { 389 %1 = fcmp une float %x, %y 390 ret i1 %1 391 } 392 393 define i1 @fcmp_double_oeq(double %x, double %y) { 394 %1 = fcmp oeq double %x, %y 395 ret i1 %1 396 } 397 398 define i1 @fcmp_double_ogt(double %x, double %y) { 399 %1 = fcmp ogt double %x, %y 400 ret i1 %1 401 } 402 403 define i1 @fcmp_double_oge(double %x, double %y) { 404 %1 = fcmp oge double %x, %y 405 ret i1 %1 406 } 407 408 define i1 @fcmp_double_olt(double %x, double %y) { 409 %1 = fcmp olt double %x, %y 410 ret i1 %1 411 } 412 413 define i1 @fcmp_double_ole(double %x, double %y) { 414 %1 = fcmp ole double %x, %y 415 ret i1 %1 416 } 417 418 define i1 @fcmp_double_one(double %x, double %y) { 419 %1 = fcmp one double %x, %y 420 ret i1 %1 421 } 422 423 define i1 @fcmp_double_ord(double %x, double %y) { 424 %1 = fcmp ord double %x, %y 425 ret i1 %1 426 } 427 428 define i1 @fcmp_double_uno(double %x, double %y) { 429 %1 = fcmp uno double %x, %y 430 ret i1 %1 431 } 432 433 define i1 @fcmp_double_ueq(double %x, double %y) { 434 %1 = fcmp ueq double %x, %y 435 ret i1 %1 436 } 437 438 define i1 @fcmp_double_ugt(double %x, double %y) { 439 %1 = fcmp ugt double %x, %y 440 ret i1 %1 441 } 442 443 define i1 @fcmp_double_uge(double %x, double %y) { 444 %1 = fcmp uge double %x, %y 445 ret i1 %1 446 } 447 448 define i1 @fcmp_double_ult(double %x, double %y) { 449 %1 = fcmp ult double %x, %y 450 ret i1 %1 451 } 452 453 define i1 @fcmp_double_ule(double %x, double %y) { 454 %1 = fcmp ule double %x, %y 455 ret i1 %1 456 } 457 458 define i1 @fcmp_double_une(double %x, double %y) { 459 %1 = fcmp une double %x, %y 460 ret i1 %1 461 } 462 463... 464--- 465name: test_add_i8 466alignment: 16 467legalized: true 468regBankSelected: false 469selected: false 470tracksRegLiveness: true 471registers: 472 - { id: 0, class: _ } 473 - { id: 1, class: _ } 474 - { id: 2, class: _ } 475body: | 476 bb.1 (%ir-block.0): 477 liveins: $edi, $esi 478 479 ; FAST-LABEL: name: test_add_i8 480 ; FAST: liveins: $edi, $esi 481 ; FAST: [[COPY:%[0-9]+]]:gpr(s8) = COPY $dil 482 ; FAST: [[COPY1:%[0-9]+]]:gpr(s8) = COPY $sil 483 ; FAST: [[ADD:%[0-9]+]]:gpr(s8) = G_ADD [[COPY]], [[COPY1]] 484 ; FAST: $al = COPY [[ADD]](s8) 485 ; FAST: RET 0, implicit $al 486 ; GREEDY-LABEL: name: test_add_i8 487 ; GREEDY: liveins: $edi, $esi 488 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s8) = COPY $dil 489 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s8) = COPY $sil 490 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s8) = G_ADD [[COPY]], [[COPY1]] 491 ; GREEDY: $al = COPY [[ADD]](s8) 492 ; GREEDY: RET 0, implicit $al 493 %0(s8) = COPY $dil 494 %1(s8) = COPY $sil 495 %2(s8) = G_ADD %0, %1 496 $al = COPY %2(s8) 497 RET 0, implicit $al 498 499... 500--- 501name: test_add_i16 502alignment: 16 503legalized: true 504regBankSelected: false 505selected: false 506tracksRegLiveness: true 507registers: 508 - { id: 0, class: _ } 509 - { id: 1, class: _ } 510 - { id: 2, class: _ } 511body: | 512 bb.1 (%ir-block.0): 513 liveins: $edi, $esi 514 515 ; FAST-LABEL: name: test_add_i16 516 ; FAST: liveins: $edi, $esi 517 ; FAST: [[COPY:%[0-9]+]]:gpr(s16) = COPY $di 518 ; FAST: [[COPY1:%[0-9]+]]:gpr(s16) = COPY $si 519 ; FAST: [[ADD:%[0-9]+]]:gpr(s16) = G_ADD [[COPY]], [[COPY1]] 520 ; FAST: $ax = COPY [[ADD]](s16) 521 ; FAST: RET 0, implicit $ax 522 ; GREEDY-LABEL: name: test_add_i16 523 ; GREEDY: liveins: $edi, $esi 524 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s16) = COPY $di 525 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s16) = COPY $si 526 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s16) = G_ADD [[COPY]], [[COPY1]] 527 ; GREEDY: $ax = COPY [[ADD]](s16) 528 ; GREEDY: RET 0, implicit $ax 529 %0(s16) = COPY $di 530 %1(s16) = COPY $si 531 %2(s16) = G_ADD %0, %1 532 $ax = COPY %2(s16) 533 RET 0, implicit $ax 534 535... 536--- 537name: test_add_i32 538alignment: 16 539legalized: true 540regBankSelected: false 541selected: false 542tracksRegLiveness: true 543registers: 544 - { id: 0, class: _ } 545 - { id: 1, class: _ } 546 - { id: 2, class: _ } 547body: | 548 bb.1 (%ir-block.0): 549 liveins: $edi, $esi 550 551 ; FAST-LABEL: name: test_add_i32 552 ; FAST: liveins: $edi, $esi 553 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 554 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi 555 ; FAST: [[ADD:%[0-9]+]]:gpr(s32) = G_ADD [[COPY]], [[COPY1]] 556 ; FAST: $eax = COPY [[ADD]](s32) 557 ; FAST: RET 0, implicit $eax 558 ; GREEDY-LABEL: name: test_add_i32 559 ; GREEDY: liveins: $edi, $esi 560 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 561 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi 562 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s32) = G_ADD [[COPY]], [[COPY1]] 563 ; GREEDY: $eax = COPY [[ADD]](s32) 564 ; GREEDY: RET 0, implicit $eax 565 %0(s32) = COPY $edi 566 %1(s32) = COPY $esi 567 %2(s32) = G_ADD %0, %1 568 $eax = COPY %2(s32) 569 RET 0, implicit $eax 570 571... 572--- 573name: test_add_i64 574alignment: 16 575legalized: true 576regBankSelected: false 577selected: false 578tracksRegLiveness: true 579registers: 580 - { id: 0, class: _ } 581 - { id: 1, class: _ } 582 - { id: 2, class: _ } 583body: | 584 bb.1 (%ir-block.0): 585 liveins: $rdi, $rsi 586 587 ; FAST-LABEL: name: test_add_i64 588 ; FAST: liveins: $rdi, $rsi 589 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi 590 ; FAST: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $rsi 591 ; FAST: [[ADD:%[0-9]+]]:gpr(s64) = G_ADD [[COPY]], [[COPY1]] 592 ; FAST: $rax = COPY [[ADD]](s64) 593 ; FAST: RET 0, implicit $rax 594 ; GREEDY-LABEL: name: test_add_i64 595 ; GREEDY: liveins: $rdi, $rsi 596 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi 597 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $rsi 598 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s64) = G_ADD [[COPY]], [[COPY1]] 599 ; GREEDY: $rax = COPY [[ADD]](s64) 600 ; GREEDY: RET 0, implicit $rax 601 %0(s64) = COPY $rdi 602 %1(s64) = COPY $rsi 603 %2(s64) = G_ADD %0, %1 604 $rax = COPY %2(s64) 605 RET 0, implicit $rax 606 607... 608--- 609name: test_mul_gpr 610alignment: 16 611legalized: true 612regBankSelected: false 613selected: false 614tracksRegLiveness: true 615registers: 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_gpr 628 ; FAST: [[DEF:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF 629 ; FAST: [[DEF1:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 630 ; FAST: [[DEF2:%[0-9]+]]:gpr(s16) = G_IMPLICIT_DEF 631 ; FAST: [[DEF3:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF 632 ; 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 0 637 ; GREEDY-LABEL: name: test_mul_gpr 638 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF 639 ; GREEDY: [[DEF1:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 640 ; GREEDY: [[DEF2:%[0-9]+]]:gpr(s16) = G_IMPLICIT_DEF 641 ; GREEDY: [[DEF3:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF 642 ; 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 0 647 %0(s64) = G_IMPLICIT_DEF 648 %1(s32) = G_IMPLICIT_DEF 649 %2(s16) = G_IMPLICIT_DEF 650 %3(s8) = G_IMPLICIT_DEF 651 %4(s64) = G_MUL %0, %0 652 %5(s32) = G_MUL %1, %1 653 %6(s16) = G_MUL %2, %2 654 %7(s8) = G_MUL %3, %3 655 RET 0 656... 657--- 658name: test_add_float 659alignment: 16 660legalized: true 661regBankSelected: false 662selected: false 663tracksRegLiveness: true 664registers: 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, $xmm1 674 675 ; FAST-LABEL: name: test_add_float 676 ; FAST: liveins: $xmm0, $xmm1 677 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 678 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 679 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 680 ; 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 $xmm0 685 ; GREEDY-LABEL: name: test_add_float 686 ; GREEDY: liveins: $xmm0, $xmm1 687 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 688 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 689 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 690 ; 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 $xmm0 695 %2:_(s128) = COPY $xmm0 696 %0:_(s32) = G_TRUNC %2(s128) 697 %3:_(s128) = COPY $xmm1 698 %1:_(s32) = G_TRUNC %3(s128) 699 %4:_(s32) = G_FADD %0, %1 700 %5:_(s128) = G_ANYEXT %4(s32) 701 $xmm0 = COPY %5(s128) 702 RET 0, implicit $xmm0 703 704... 705--- 706name: test_add_double 707alignment: 16 708legalized: true 709regBankSelected: false 710selected: false 711tracksRegLiveness: true 712registers: 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, $xmm1 722 723 ; FAST-LABEL: name: test_add_double 724 ; FAST: liveins: $xmm0, $xmm1 725 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 726 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 727 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 728 ; 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 $xmm0 733 ; GREEDY-LABEL: name: test_add_double 734 ; GREEDY: liveins: $xmm0, $xmm1 735 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 736 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 737 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 738 ; 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 $xmm0 743 %2:_(s128) = COPY $xmm0 744 %0:_(s64) = G_TRUNC %2(s128) 745 %3:_(s128) = COPY $xmm1 746 %1:_(s64) = G_TRUNC %3(s128) 747 %4:_(s64) = G_FADD %0, %1 748 %5:_(s128) = G_ANYEXT %4(s64) 749 $xmm0 = COPY %5(s128) 750 RET 0, implicit $xmm0 751 752... 753--- 754name: test_fsub_float 755alignment: 16 756legalized: true 757regBankSelected: false 758registers: 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_float 770 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 771 ; FAST: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF 772 ; 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 0 779 ; GREEDY-LABEL: name: test_fsub_float 780 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 781 ; GREEDY: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF 782 ; 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 0 789 %0(s32) = G_IMPLICIT_DEF 790 %2(s64) = G_IMPLICIT_DEF 791 %1(s32) = G_FSUB %0, %0 792 %3(s64) = G_FSUB %2, %2 793 RET 0 794 795... 796--- 797name: test_fmul_float 798alignment: 16 799legalized: true 800regBankSelected: false 801registers: 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_float 813 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 814 ; FAST: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF 815 ; 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 0 822 ; GREEDY-LABEL: name: test_fmul_float 823 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 824 ; GREEDY: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF 825 ; 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 0 832 %0(s32) = G_IMPLICIT_DEF 833 %2(s64) = G_IMPLICIT_DEF 834 %1(s32) = G_FMUL %0, %0 835 %3(s64) = G_FMUL %2, %2 836 RET 0 837 838... 839--- 840name: test_fdiv_float 841alignment: 16 842legalized: true 843regBankSelected: false 844registers: 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_float 856 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 857 ; FAST: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF 858 ; 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 0 865 ; GREEDY-LABEL: name: test_fdiv_float 866 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 867 ; GREEDY: [[DEF1:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF 868 ; 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 0 875 %0(s32) = G_IMPLICIT_DEF 876 %2(s64) = G_IMPLICIT_DEF 877 %1(s32) = G_FDIV %0, %0 878 %3(s64) = G_FDIV %2, %2 879 RET 0 880 881... 882--- 883name: test_add_v4i32 884alignment: 16 885legalized: true 886regBankSelected: false 887selected: false 888tracksRegLiveness: true 889registers: 890 - { id: 0, class: _ } 891 - { id: 1, class: _ } 892 - { id: 2, class: _ } 893body: | 894 bb.1 (%ir-block.0): 895 liveins: $xmm0, $xmm1 896 897 ; FAST-LABEL: name: test_add_v4i32 898 ; FAST: liveins: $xmm0, $xmm1 899 ; FAST: [[COPY:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm0 900 ; FAST: [[COPY1:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm1 901 ; 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 $xmm0 904 ; GREEDY-LABEL: name: test_add_v4i32 905 ; GREEDY: liveins: $xmm0, $xmm1 906 ; GREEDY: [[COPY:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm0 907 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm1 908 ; 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 $xmm0 911 %0(<4 x s32>) = COPY $xmm0 912 %1(<4 x s32>) = COPY $xmm1 913 %2(<4 x s32>) = G_ADD %0, %1 914 $xmm0 = COPY %2(<4 x s32>) 915 RET 0, implicit $xmm0 916 917... 918--- 919name: test_add_v4f32 920alignment: 16 921legalized: true 922regBankSelected: false 923selected: false 924tracksRegLiveness: true 925registers: 926 - { id: 0, class: _ } 927 - { id: 1, class: _ } 928 - { id: 2, class: _ } 929body: | 930 bb.1 (%ir-block.0): 931 liveins: $xmm0, $xmm1 932 933 ; FAST-LABEL: name: test_add_v4f32 934 ; FAST: liveins: $xmm0, $xmm1 935 ; FAST: [[COPY:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm0 936 ; FAST: [[COPY1:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm1 937 ; 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 $xmm0 940 ; GREEDY-LABEL: name: test_add_v4f32 941 ; GREEDY: liveins: $xmm0, $xmm1 942 ; GREEDY: [[COPY:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm0 943 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(<4 x s32>) = COPY $xmm1 944 ; 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 $xmm0 947 %0(<4 x s32>) = COPY $xmm0 948 %1(<4 x s32>) = COPY $xmm1 949 %2(<4 x s32>) = G_FADD %0, %1 950 $xmm0 = COPY %2(<4 x s32>) 951 RET 0, implicit $xmm0 952 953... 954--- 955name: test_load_i8 956alignment: 16 957legalized: true 958regBankSelected: false 959selected: false 960registers: 961 - { id: 0, class: _ } 962 - { id: 1, class: _ } 963body: | 964 bb.1 (%ir-block.0): 965 liveins: $rdi 966 967 ; FAST-LABEL: name: test_load_i8 968 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 969 ; 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 $al 972 ; GREEDY-LABEL: name: test_load_i8 973 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 974 ; 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 $al 977 %0(p0) = COPY $rdi 978 %1(s8) = G_LOAD %0(p0) :: (load (s8) from %ir.p1) 979 $al = COPY %1(s8) 980 RET 0, implicit $al 981 982... 983--- 984name: test_load_i16 985alignment: 16 986legalized: true 987regBankSelected: false 988selected: false 989registers: 990 - { id: 0, class: _ } 991 - { id: 1, class: _ } 992body: | 993 bb.1 (%ir-block.0): 994 liveins: $rdi 995 996 ; FAST-LABEL: name: test_load_i16 997 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 998 ; 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 $ax 1001 ; GREEDY-LABEL: name: test_load_i16 1002 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 1003 ; 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 $ax 1006 %0(p0) = COPY $rdi 1007 %1(s16) = G_LOAD %0(p0) :: (load (s16) from %ir.p1) 1008 $ax = COPY %1(s16) 1009 RET 0, implicit $ax 1010 1011... 1012--- 1013name: test_load_i32 1014alignment: 16 1015legalized: true 1016regBankSelected: false 1017selected: false 1018registers: 1019 - { id: 0, class: _ } 1020 - { id: 1, class: _ } 1021body: | 1022 bb.1 (%ir-block.0): 1023 liveins: $rdi 1024 1025 ; FAST-LABEL: name: test_load_i32 1026 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 1027 ; 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 $eax 1030 ; GREEDY-LABEL: name: test_load_i32 1031 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 1032 ; 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 $eax 1035 %0(p0) = COPY $rdi 1036 %1(s32) = G_LOAD %0(p0) :: (load (s32) from %ir.p1) 1037 $eax = COPY %1(s32) 1038 RET 0, implicit $eax 1039 1040... 1041--- 1042name: test_load_i64 1043alignment: 16 1044exposesReturnsTwice: false 1045legalized: true 1046regBankSelected: false 1047selected: false 1048registers: 1049 - { id: 0, class: _ } 1050 - { id: 1, class: _ } 1051body: | 1052 bb.1 (%ir-block.0): 1053 liveins: $rdi 1054 1055 ; FAST-LABEL: name: test_load_i64 1056 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 1057 ; 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 $rax 1060 ; GREEDY-LABEL: name: test_load_i64 1061 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 1062 ; 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 $rax 1065 %0(p0) = COPY $rdi 1066 %1(s64) = G_LOAD %0(p0) :: (load (s64) from %ir.p1) 1067 $rax = COPY %1(s64) 1068 RET 0, implicit $rax 1069 1070... 1071--- 1072name: test_load_float 1073alignment: 16 1074legalized: true 1075regBankSelected: false 1076selected: false 1077registers: 1078 - { id: 0, class: _ } 1079 - { id: 1, class: _ } 1080body: | 1081 bb.1 (%ir-block.0): 1082 liveins: $rdi 1083 1084 ; FAST-LABEL: name: test_load_float 1085 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 1086 ; 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 $xmm0 1091 ; GREEDY-LABEL: name: test_load_float 1092 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 1093 ; 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 $xmm0 1098 %0:_(p0) = COPY $rdi 1099 %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 $xmm0 1103 1104... 1105--- 1106name: test_load_double 1107alignment: 16 1108legalized: true 1109regBankSelected: false 1110selected: false 1111registers: 1112 - { id: 0, class: _ } 1113 - { id: 1, class: _ } 1114body: | 1115 bb.1 (%ir-block.0): 1116 liveins: $rdi 1117 1118 ; FAST-LABEL: name: test_load_double 1119 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 1120 ; 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 $xmm0 1125 ; GREEDY-LABEL: name: test_load_double 1126 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 1127 ; 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 $xmm0 1132 %0:_(p0) = COPY $rdi 1133 %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 $xmm0 1137 1138... 1139--- 1140name: test_load_v4i32 1141alignment: 16 1142legalized: true 1143regBankSelected: false 1144selected: false 1145registers: 1146 - { id: 0, class: _ } 1147 - { id: 1, class: _ } 1148body: | 1149 bb.1 (%ir-block.0): 1150 liveins: $rdi 1151 1152 ; FAST-LABEL: name: test_load_v4i32 1153 ; FAST: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 1154 ; 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 $xmm0 1157 ; GREEDY-LABEL: name: test_load_v4i32 1158 ; GREEDY: [[COPY:%[0-9]+]]:gpr(p0) = COPY $rdi 1159 ; 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 $xmm0 1162 %0(p0) = COPY $rdi 1163 %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 $xmm0 1166 1167... 1168--- 1169name: test_store_i32 1170alignment: 16 1171legalized: true 1172regBankSelected: false 1173selected: false 1174registers: 1175 - { id: 0, class: _ } 1176 - { id: 1, class: _ } 1177body: | 1178 bb.1 (%ir-block.0): 1179 liveins: $edi, $rsi 1180 1181 ; FAST-LABEL: name: test_store_i32 1182 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 1183 ; FAST: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rsi 1184 ; FAST: G_STORE [[COPY]](s32), [[COPY1]](p0) :: (store (s32) into %ir.p1) 1185 ; FAST: $rax = COPY [[COPY1]](p0) 1186 ; FAST: RET 0, implicit $rax 1187 ; GREEDY-LABEL: name: test_store_i32 1188 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 1189 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rsi 1190 ; GREEDY: G_STORE [[COPY]](s32), [[COPY1]](p0) :: (store (s32) into %ir.p1) 1191 ; GREEDY: $rax = COPY [[COPY1]](p0) 1192 ; GREEDY: RET 0, implicit $rax 1193 %0(s32) = COPY $edi 1194 %1(p0) = COPY $rsi 1195 G_STORE %0(s32), %1(p0) :: (store (s32) into %ir.p1) 1196 $rax = COPY %1(p0) 1197 RET 0, implicit $rax 1198 1199... 1200--- 1201name: test_store_i64 1202alignment: 16 1203legalized: true 1204regBankSelected: false 1205selected: false 1206registers: 1207 - { id: 0, class: _ } 1208 - { id: 1, class: _ } 1209body: | 1210 bb.1 (%ir-block.0): 1211 liveins: $rdi, $rsi 1212 1213 ; FAST-LABEL: name: test_store_i64 1214 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi 1215 ; FAST: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rsi 1216 ; FAST: G_STORE [[COPY]](s64), [[COPY1]](p0) :: (store (s64) into %ir.p1) 1217 ; FAST: $rax = COPY [[COPY1]](p0) 1218 ; FAST: RET 0, implicit $rax 1219 ; GREEDY-LABEL: name: test_store_i64 1220 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi 1221 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rsi 1222 ; GREEDY: G_STORE [[COPY]](s64), [[COPY1]](p0) :: (store (s64) into %ir.p1) 1223 ; GREEDY: $rax = COPY [[COPY1]](p0) 1224 ; GREEDY: RET 0, implicit $rax 1225 %0(s64) = COPY $rdi 1226 %1(p0) = COPY $rsi 1227 G_STORE %0(s64), %1(p0) :: (store (s64) into %ir.p1) 1228 $rax = COPY %1(p0) 1229 RET 0, implicit $rax 1230 1231... 1232--- 1233name: test_store_float 1234alignment: 16 1235legalized: true 1236regBankSelected: false 1237selected: false 1238 1239 1240 1241registers: 1242 - { id: 0, class: _ } 1243 - { id: 1, class: _ } 1244body: | 1245 bb.1 (%ir-block.0): 1246 liveins: $rdi, $xmm0 1247 1248 ; FAST-LABEL: name: test_store_float 1249 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 1250 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 1251 ; FAST: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rdi 1252 ; 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 $rax 1256 ; GREEDY-LABEL: name: test_store_float 1257 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 1258 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 1259 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rdi 1260 ; GREEDY: G_STORE [[TRUNC]](s32), [[COPY1]](p0) :: (store (s32) into %ir.p1) 1261 ; GREEDY: $rax = COPY [[COPY1]](p0) 1262 ; GREEDY: RET 0, implicit $rax 1263 %2:_(s128) = COPY $xmm0 1264 %0:_(s32) = G_TRUNC %2(s128) 1265 %1:_(p0) = COPY $rdi 1266 G_STORE %0(s32), %1(p0) :: (store (s32) into %ir.p1) 1267 $rax = COPY %1(p0) 1268 RET 0, implicit $rax 1269 1270... 1271--- 1272name: test_store_double 1273alignment: 16 1274legalized: true 1275regBankSelected: false 1276selected: false 1277 1278 1279 1280registers: 1281 - { id: 0, class: _ } 1282 - { id: 1, class: _ } 1283body: | 1284 bb.1 (%ir-block.0): 1285 liveins: $rdi, $xmm0 1286 1287 ; FAST-LABEL: name: test_store_double 1288 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 1289 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 1290 ; FAST: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rdi 1291 ; 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 $rax 1295 ; GREEDY-LABEL: name: test_store_double 1296 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 1297 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 1298 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(p0) = COPY $rdi 1299 ; GREEDY: G_STORE [[TRUNC]](s64), [[COPY1]](p0) :: (store (s64) into %ir.p1) 1300 ; GREEDY: $rax = COPY [[COPY1]](p0) 1301 ; GREEDY: RET 0, implicit $rax 1302 %2:_(s128) = COPY $xmm0 1303 %0:_(s64) = G_TRUNC %2(s128) 1304 %1:_(p0) = COPY $rdi 1305 G_STORE %0(s64), %1(p0) :: (store (s64) into %ir.p1) 1306 $rax = COPY %1(p0) 1307 RET 0, implicit $rax 1308 1309... 1310--- 1311name: constInt_check 1312alignment: 16 1313legalized: true 1314registers: 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_check 1322 ; FAST: [[C:%[0-9]+]]:gpr(s8) = G_CONSTANT i8 8 1323 ; FAST: [[C1:%[0-9]+]]:gpr(s16) = G_CONSTANT i16 16 1324 ; FAST: [[C2:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 32 1325 ; FAST: [[C3:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 64 1326 ; FAST: RET 0 1327 ; GREEDY-LABEL: name: constInt_check 1328 ; GREEDY: [[C:%[0-9]+]]:gpr(s8) = G_CONSTANT i8 8 1329 ; GREEDY: [[C1:%[0-9]+]]:gpr(s16) = G_CONSTANT i16 16 1330 ; GREEDY: [[C2:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 32 1331 ; GREEDY: [[C3:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 64 1332 ; GREEDY: RET 0 1333 %0(s8) = G_CONSTANT i8 8 1334 %1(s16) = G_CONSTANT i16 16 1335 %2(s32) = G_CONSTANT i32 32 1336 %3(s64) = G_CONSTANT i64 64 1337 RET 0 1338 1339... 1340--- 1341name: trunc_check 1342alignment: 16 1343legalized: true 1344registers: 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_check 1352 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 1353 ; 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 0 1357 ; GREEDY-LABEL: name: trunc_check 1358 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 1359 ; 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 0 1363 %0(s32) = G_IMPLICIT_DEF 1364 %1(s1) = G_TRUNC %0(s32) 1365 %2(s8) = G_TRUNC %0(s32) 1366 %3(s16) = G_TRUNC %0(s32) 1367 RET 0 1368 1369... 1370--- 1371name: test_gep 1372legalized: true 1373registers: 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_gep 1382 ; FAST: [[DEF:%[0-9]+]]:gpr(p0) = G_IMPLICIT_DEF 1383 ; FAST: [[C:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 20 1384 ; FAST: [[PTR_ADD:%[0-9]+]]:gpr(p0) = G_PTR_ADD [[DEF]], [[C]](s64) 1385 ; FAST: RET 0 1386 ; 1387 ; GREEDY-LABEL: name: test_gep 1388 ; GREEDY: [[DEF:%[0-9]+]]:gpr(p0) = G_IMPLICIT_DEF 1389 ; GREEDY: [[C:%[0-9]+]]:gpr(s64) = G_CONSTANT i64 20 1390 ; GREEDY: [[PTR_ADD:%[0-9]+]]:gpr(p0) = G_PTR_ADD [[DEF]], [[C]](s64) 1391 ; GREEDY: RET 0 1392 %0(p0) = G_IMPLICIT_DEF 1393 %1(s64) = G_CONSTANT i64 20 1394 %2(p0) = G_PTR_ADD %0, %1(s64) 1395 RET 0 1396 1397... 1398--- 1399name: test_icmp_eq_i8 1400alignment: 16 1401legalized: true 1402regBankSelected: false 1403registers: 1404 - { id: 0, class: _ } 1405 - { id: 1, class: _ } 1406 - { id: 2, class: _ } 1407body: | 1408 bb.1 (%ir-block.0): 1409 liveins: $edi, $esi 1410 1411 ; FAST-LABEL: name: test_icmp_eq_i8 1412 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 1413 ; FAST: [[TRUNC:%[0-9]+]]:gpr(s8) = G_TRUNC [[COPY]](s32) 1414 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi 1415 ; 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 $al 1420 ; GREEDY-LABEL: name: test_icmp_eq_i8 1421 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 1422 ; GREEDY: [[TRUNC:%[0-9]+]]:gpr(s8) = G_TRUNC [[COPY]](s32) 1423 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi 1424 ; 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 $al 1429 %2:_(s32) = COPY $edi 1430 %0:_(s8) = G_TRUNC %2(s32) 1431 %3:_(s32) = COPY $esi 1432 %1:_(s8) = G_TRUNC %3(s32) 1433 %6:_(s8) = G_ICMP intpred(eq), %0(s8), %1 1434 %5:_(s8) = COPY %6(s8) 1435 $al = COPY %5(s8) 1436 RET 0, implicit $al 1437 1438... 1439--- 1440name: test_icmp_eq_i16 1441alignment: 16 1442legalized: true 1443regBankSelected: false 1444registers: 1445 - { id: 0, class: _ } 1446 - { id: 1, class: _ } 1447 - { id: 2, class: _ } 1448body: | 1449 bb.1 (%ir-block.0): 1450 liveins: $edi, $esi 1451 1452 ; FAST-LABEL: name: test_icmp_eq_i16 1453 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 1454 ; FAST: [[TRUNC:%[0-9]+]]:gpr(s16) = G_TRUNC [[COPY]](s32) 1455 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi 1456 ; 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 $al 1461 ; GREEDY-LABEL: name: test_icmp_eq_i16 1462 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 1463 ; GREEDY: [[TRUNC:%[0-9]+]]:gpr(s16) = G_TRUNC [[COPY]](s32) 1464 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi 1465 ; 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 $al 1470 %2:_(s32) = COPY $edi 1471 %0:_(s16) = G_TRUNC %2(s32) 1472 %3:_(s32) = COPY $esi 1473 %1:_(s16) = G_TRUNC %3(s32) 1474 %6:_(s8) = G_ICMP intpred(eq), %0(s16), %1 1475 %5:_(s8) = COPY %6(s8) 1476 $al = COPY %5(s8) 1477 RET 0, implicit $al 1478 1479... 1480--- 1481name: test_icmp_eq_i32 1482alignment: 16 1483legalized: true 1484regBankSelected: false 1485registers: 1486 - { id: 0, class: _ } 1487 - { id: 1, class: _ } 1488 - { id: 2, class: _ } 1489body: | 1490 bb.1 (%ir-block.0): 1491 liveins: $edi, $esi 1492 1493 ; FAST-LABEL: name: test_icmp_eq_i32 1494 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 1495 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi 1496 ; 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 $al 1500 ; GREEDY-LABEL: name: test_icmp_eq_i32 1501 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 1502 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi 1503 ; 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 $al 1507 %0:_(s32) = COPY $edi 1508 %1:_(s32) = COPY $esi 1509 %4:_(s8) = G_ICMP intpred(eq), %0(s32), %1 1510 %3:_(s8) = COPY %4(s8) 1511 $al = COPY %3(s8) 1512 RET 0, implicit $al 1513 1514... 1515--- 1516name: test_icmp_eq_i64 1517alignment: 16 1518legalized: true 1519regBankSelected: false 1520registers: 1521 - { id: 0, class: _ } 1522 - { id: 1, class: _ } 1523 - { id: 2, class: _ } 1524body: | 1525 bb.1 (%ir-block.0): 1526 liveins: $rdi, $rsi 1527 1528 ; FAST-LABEL: name: test_icmp_eq_i64 1529 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi 1530 ; FAST: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $rsi 1531 ; 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 $al 1535 ; GREEDY-LABEL: name: test_icmp_eq_i64 1536 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi 1537 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s64) = COPY $rsi 1538 ; 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 $al 1542 %0:_(s64) = COPY $rdi 1543 %1:_(s64) = COPY $rsi 1544 %4:_(s8) = G_ICMP intpred(eq), %0(s64), %1 1545 %3:_(s8) = COPY %4(s8) 1546 $al = COPY %3(s8) 1547 RET 0, implicit $al 1548 1549... 1550--- 1551name: test_xor_i8 1552alignment: 16 1553legalized: true 1554regBankSelected: false 1555registers: 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_i8 1565 ; FAST: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF 1566 ; FAST: [[XOR:%[0-9]+]]:gpr(s8) = G_XOR [[DEF]], [[DEF]] 1567 ; FAST: $al = COPY [[XOR]](s8) 1568 ; FAST: RET 0, implicit $al 1569 ; GREEDY-LABEL: name: test_xor_i8 1570 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF 1571 ; GREEDY: [[XOR:%[0-9]+]]:gpr(s8) = G_XOR [[DEF]], [[DEF]] 1572 ; GREEDY: $al = COPY [[XOR]](s8) 1573 ; GREEDY: RET 0, implicit $al 1574 %0(s8) = G_IMPLICIT_DEF 1575 %1(s8) = G_XOR %0, %0 1576 $al = COPY %1(s8) 1577 RET 0, implicit $al 1578 1579... 1580--- 1581name: test_or_i16 1582alignment: 16 1583legalized: true 1584regBankSelected: false 1585registers: 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_i16 1595 ; FAST: [[DEF:%[0-9]+]]:gpr(s16) = G_IMPLICIT_DEF 1596 ; FAST: [[OR:%[0-9]+]]:gpr(s16) = G_OR [[DEF]], [[DEF]] 1597 ; FAST: $ax = COPY [[OR]](s16) 1598 ; FAST: RET 0, implicit $ax 1599 ; GREEDY-LABEL: name: test_or_i16 1600 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s16) = G_IMPLICIT_DEF 1601 ; GREEDY: [[OR:%[0-9]+]]:gpr(s16) = G_OR [[DEF]], [[DEF]] 1602 ; GREEDY: $ax = COPY [[OR]](s16) 1603 ; GREEDY: RET 0, implicit $ax 1604 %0(s16) = G_IMPLICIT_DEF 1605 %1(s16) = G_OR %0, %0 1606 $ax = COPY %1(s16) 1607 RET 0, implicit $ax 1608 1609... 1610--- 1611name: test_and_i32 1612alignment: 16 1613legalized: true 1614regBankSelected: false 1615registers: 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_i32 1625 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 1626 ; FAST: [[AND:%[0-9]+]]:gpr(s32) = G_AND [[DEF]], [[DEF]] 1627 ; FAST: $eax = COPY [[AND]](s32) 1628 ; FAST: RET 0, implicit $eax 1629 ; GREEDY-LABEL: name: test_and_i32 1630 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 1631 ; GREEDY: [[AND:%[0-9]+]]:gpr(s32) = G_AND [[DEF]], [[DEF]] 1632 ; GREEDY: $eax = COPY [[AND]](s32) 1633 ; GREEDY: RET 0, implicit $eax 1634 %0(s32) = G_IMPLICIT_DEF 1635 %1(s32) = G_AND %0, %0 1636 $eax = COPY %1(s32) 1637 RET 0, implicit $eax 1638 1639... 1640--- 1641name: test_and_i64 1642alignment: 16 1643legalized: true 1644regBankSelected: false 1645registers: 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_i64 1655 ; FAST: [[DEF:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF 1656 ; FAST: [[AND:%[0-9]+]]:gpr(s64) = G_AND [[DEF]], [[DEF]] 1657 ; FAST: $rax = COPY [[AND]](s64) 1658 ; FAST: RET 0, implicit $rax 1659 ; GREEDY-LABEL: name: test_and_i64 1660 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s64) = G_IMPLICIT_DEF 1661 ; GREEDY: [[AND:%[0-9]+]]:gpr(s64) = G_AND [[DEF]], [[DEF]] 1662 ; GREEDY: $rax = COPY [[AND]](s64) 1663 ; GREEDY: RET 0, implicit $rax 1664 %0(s64) = G_IMPLICIT_DEF 1665 %1(s64) = G_AND %0, %0 1666 $rax = COPY %1(s64) 1667 RET 0, implicit $rax 1668 1669... 1670--- 1671name: test_global_ptrv 1672alignment: 16 1673legalized: true 1674regBankSelected: false 1675registers: 1676 - { id: 0, class: _, preferred-register: '' } 1677body: | 1678 bb.1.entry: 1679 ; FAST-LABEL: name: test_global_ptrv 1680 ; FAST: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @g_int 1681 ; FAST: $rax = COPY [[GV]](p0) 1682 ; FAST: RET 0, implicit $rax 1683 ; GREEDY-LABEL: name: test_global_ptrv 1684 ; GREEDY: [[GV:%[0-9]+]]:gpr(p0) = G_GLOBAL_VALUE @g_int 1685 ; GREEDY: $rax = COPY [[GV]](p0) 1686 ; GREEDY: RET 0, implicit $rax 1687 %0(p0) = G_GLOBAL_VALUE @g_int 1688 $rax = COPY %0(p0) 1689 RET 0, implicit $rax 1690 1691... 1692--- 1693name: test_undef 1694alignment: 16 1695legalized: true 1696regBankSelected: false 1697registers: 1698 - { id: 0, class: _, preferred-register: '' } 1699liveins: 1700fixedStack: 1701stack: 1702constants: 1703body: | 1704 bb.1 (%ir-block.0): 1705 ; FAST-LABEL: name: test_undef 1706 ; FAST: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF 1707 ; FAST: $al = COPY [[DEF]](s8) 1708 ; FAST: RET 0, implicit $al 1709 ; GREEDY-LABEL: name: test_undef 1710 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF 1711 ; GREEDY: $al = COPY [[DEF]](s8) 1712 ; GREEDY: RET 0, implicit $al 1713 %0(s8) = G_IMPLICIT_DEF 1714 $al = COPY %0(s8) 1715 RET 0, implicit $al 1716 1717... 1718--- 1719name: test_undef2 1720alignment: 16 1721legalized: true 1722regBankSelected: false 1723registers: 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: $edi 1734 1735 ; FAST-LABEL: name: test_undef2 1736 ; FAST: [[COPY:%[0-9]+]]:gpr(s8) = COPY $dil 1737 ; FAST: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF 1738 ; FAST: [[ADD:%[0-9]+]]:gpr(s8) = G_ADD [[COPY]], [[DEF]] 1739 ; FAST: $al = COPY [[ADD]](s8) 1740 ; FAST: RET 0, implicit $al 1741 ; GREEDY-LABEL: name: test_undef2 1742 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s8) = COPY $dil 1743 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s8) = G_IMPLICIT_DEF 1744 ; GREEDY: [[ADD:%[0-9]+]]:gpr(s8) = G_ADD [[COPY]], [[DEF]] 1745 ; GREEDY: $al = COPY [[ADD]](s8) 1746 ; GREEDY: RET 0, implicit $al 1747 %0(s8) = COPY $dil 1748 %1(s8) = G_IMPLICIT_DEF 1749 %2(s8) = G_ADD %0, %1 1750 $al = COPY %2(s8) 1751 RET 0, implicit $al 1752 1753... 1754--- 1755name: test_undef3 1756alignment: 16 1757legalized: true 1758regBankSelected: false 1759registers: 1760 - { id: 1, class: _, preferred-register: '' } 1761liveins: 1762fixedStack: 1763stack: 1764constants: 1765body: | 1766 bb.1 (%ir-block.0): 1767 ; FAST-LABEL: name: test_undef3 1768 ; FAST: [[DEF:%[0-9]+]]:vecr(s128) = G_IMPLICIT_DEF 1769 ; FAST: $xmm0 = COPY [[DEF]](s128) 1770 ; FAST: RET 0, implicit $xmm0 1771 ; GREEDY-LABEL: name: test_undef3 1772 ; GREEDY: [[DEF:%[0-9]+]]:vecr(s128) = G_IMPLICIT_DEF 1773 ; GREEDY: $xmm0 = COPY [[DEF]](s128) 1774 ; GREEDY: RET 0, implicit $xmm0 1775 %1(s128) = G_IMPLICIT_DEF 1776 $xmm0 = COPY %1(s128) 1777 RET 0, implicit $xmm0 1778 1779... 1780--- 1781name: test_undef4 1782alignment: 16 1783legalized: true 1784regBankSelected: false 1785registers: 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: $xmm0 1798 1799 ; FAST-LABEL: name: test_undef4 1800 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 1801 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 1802 ; FAST: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 1803 ; 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 $xmm0 1808 ; GREEDY-LABEL: name: test_undef4 1809 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 1810 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 1811 ; GREEDY: [[DEF:%[0-9]+]]:gpr(s32) = G_IMPLICIT_DEF 1812 ; 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 $xmm0 1817 %1:_(s128) = COPY $xmm0 1818 %0:_(s32) = G_TRUNC %1(s128) 1819 %2:_(s32) = G_IMPLICIT_DEF 1820 %3:_(s32) = G_FADD %0, %2 1821 %4:_(s128) = G_ANYEXT %3(s32) 1822 $xmm0 = COPY %4(s128) 1823 RET 0, implicit $xmm0 1824 1825... 1826--- 1827name: test_i32 1828alignment: 16 1829legalized: true 1830regBankSelected: false 1831tracksRegLiveness: true 1832registers: 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_i32 1842 ; FAST: bb.0.entry: 1843 ; FAST: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1844 ; FAST: liveins: $edi, $edx, $esi 1845 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 1846 ; FAST: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi 1847 ; FAST: [[COPY2:%[0-9]+]]:gpr(s32) = COPY $edx 1848 ; FAST: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 0 1849 ; 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.1 1852 ; FAST: G_BR %bb.2 1853 ; FAST: bb.1.cond.true: 1854 ; FAST: successors: %bb.3(0x80000000) 1855 ; FAST: G_BR %bb.3 1856 ; 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.2 1860 ; FAST: $eax = COPY [[PHI]](s32) 1861 ; FAST: RET 0, implicit $eax 1862 ; GREEDY-LABEL: name: test_i32 1863 ; GREEDY: bb.0.entry: 1864 ; GREEDY: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1865 ; GREEDY: liveins: $edi, $edx, $esi 1866 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 1867 ; GREEDY: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $esi 1868 ; GREEDY: [[COPY2:%[0-9]+]]:gpr(s32) = COPY $edx 1869 ; GREEDY: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 0 1870 ; 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.1 1873 ; GREEDY: G_BR %bb.2 1874 ; GREEDY: bb.1.cond.true: 1875 ; GREEDY: successors: %bb.3(0x80000000) 1876 ; GREEDY: G_BR %bb.3 1877 ; 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.2 1881 ; GREEDY: $eax = COPY [[PHI]](s32) 1882 ; GREEDY: RET 0, implicit $eax 1883 bb.0.entry: 1884 successors: %bb.1(0x40000000), %bb.2(0x40000000) 1885 liveins: $edi, $edx, $esi 1886 1887 %0(s32) = COPY $edi 1888 %1(s32) = COPY $esi 1889 %2(s32) = COPY $edx 1890 %3(s32) = G_CONSTANT i32 0 1891 %6(s8) = G_ICMP intpred(sgt), %0(s32), %3 1892 %4(s1) = G_TRUNC %6(s8) 1893 G_BRCOND %4(s1), %bb.1 1894 G_BR %bb.2 1895 1896 bb.1.cond.true: 1897 successors: %bb.3(0x80000000) 1898 1899 G_BR %bb.3 1900 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.2 1906 $eax = COPY %5(s32) 1907 RET 0, implicit $eax 1908 1909... 1910--- 1911name: test_float 1912alignment: 16 1913legalized: true 1914regBankSelected: false 1915tracksRegLiveness: true 1916registers: 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_float 1925 ; FAST: bb.0.entry: 1926 ; FAST: successors: %bb.2(0x40000000), %bb.1(0x40000000) 1927 ; FAST: liveins: $edi, $xmm0, $xmm1 1928 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 1929 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm0 1930 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128) 1931 ; FAST: [[COPY2:%[0-9]+]]:vecr(s128) = COPY $xmm1 1932 ; FAST: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY2]](s128) 1933 ; FAST: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 0 1934 ; 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.2 1937 ; 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.0 1941 ; FAST: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[PHI]](s32) 1942 ; FAST: $xmm0 = COPY [[ANYEXT]](s128) 1943 ; FAST: RET 0, implicit $xmm0 1944 ; GREEDY-LABEL: name: test_float 1945 ; GREEDY: bb.0.entry: 1946 ; GREEDY: successors: %bb.2(0x40000000), %bb.1(0x40000000) 1947 ; GREEDY: liveins: $edi, $xmm0, $xmm1 1948 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 1949 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm0 1950 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY1]](s128) 1951 ; GREEDY: [[COPY2:%[0-9]+]]:vecr(s128) = COPY $xmm1 1952 ; GREEDY: [[TRUNC1:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY2]](s128) 1953 ; GREEDY: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 0 1954 ; 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.2 1957 ; 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.0 1961 ; GREEDY: [[ANYEXT:%[0-9]+]]:vecr(s128) = G_ANYEXT [[PHI]](s32) 1962 ; GREEDY: $xmm0 = COPY [[ANYEXT]](s128) 1963 ; GREEDY: RET 0, implicit $xmm0 1964 bb.1.entry: 1965 successors: %bb.3(0x40000000), %bb.2(0x40000000) 1966 liveins: $edi, $xmm0, $xmm1 1967 1968 %0:_(s32) = COPY $edi 1969 %3:_(s128) = COPY $xmm0 1970 %1:_(s32) = G_TRUNC %3(s128) 1971 %4:_(s128) = COPY $xmm1 1972 %2:_(s32) = G_TRUNC %4(s128) 1973 %5:_(s32) = G_CONSTANT i32 0 1974 %9:_(s8) = G_ICMP intpred(sgt), %0(s32), %5 1975 %6:_(s1) = G_TRUNC %9(s8) 1976 G_BRCOND %6(s1), %bb.3 1977 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.1 1984 %8:_(s128) = G_ANYEXT %7(s32) 1985 $xmm0 = COPY %8(s128) 1986 RET 0, implicit $xmm0 1987 1988... 1989--- 1990name: test_fpext 1991alignment: 16 1992legalized: true 1993regBankSelected: false 1994registers: 1995 - { id: 0, class: _, preferred-register: '' } 1996 - { id: 1, class: _, preferred-register: '' } 1997body: | 1998 bb.1.entry: 1999 liveins: $xmm0 2000 2001 ; FAST-LABEL: name: test_fpext 2002 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2003 ; 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 $xmm0 2008 ; GREEDY-LABEL: name: test_fpext 2009 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2010 ; 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 $xmm0 2015 %1:_(s128) = COPY $xmm0 2016 %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 $xmm0 2021 2022... 2023--- 2024name: test_fptrunc 2025alignment: 16 2026legalized: true 2027tracksRegLiveness: true 2028registers: 2029 - { id: 0, class: _ } 2030 - { id: 1, class: _ } 2031 - { id: 2, class: _ } 2032 - { id: 3, class: _ } 2033body: | 2034 bb.1.entry: 2035 liveins: $xmm0 2036 2037 ; FAST-LABEL: name: test_fptrunc 2038 ; FAST: liveins: $xmm0 2039 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2040 ; 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 $xmm0 2045 ; GREEDY-LABEL: name: test_fptrunc 2046 ; GREEDY: liveins: $xmm0 2047 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2048 ; 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 $xmm0 2053 %1:_(s128) = COPY $xmm0 2054 %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 $xmm0 2059 2060... 2061--- 2062name: test_fconstant 2063# ALL-LABEL: name: test_fconstant 2064legalized: true 2065registers: 2066 - { id: 0, class: _ } 2067 - { id: 1, class: _ } 2068body: | 2069 bb.0: 2070 ; FAST-LABEL: name: test_fconstant 2071 ; FAST: [[C:%[0-9]+]]:vecr(s32) = G_FCONSTANT float 1.000000e+00 2072 ; FAST: [[C1:%[0-9]+]]:vecr(s64) = G_FCONSTANT double 2.000000e+00 2073 ; GREEDY-LABEL: name: test_fconstant 2074 ; GREEDY: [[C:%[0-9]+]]:vecr(s32) = G_FCONSTANT float 1.000000e+00 2075 ; GREEDY: [[C1:%[0-9]+]]:vecr(s64) = G_FCONSTANT double 2.000000e+00 2076 %0(s32) = G_FCONSTANT float 1.0 2077 %1(s64) = G_FCONSTANT double 2.0 2078 2079... 2080--- 2081name: int32_to_float 2082alignment: 16 2083legalized: true 2084tracksRegLiveness: true 2085registers: 2086 - { id: 0, class: _ } 2087 - { id: 1, class: _ } 2088 - { id: 2, class: _ } 2089body: | 2090 bb.1.entry: 2091 liveins: $edi 2092 2093 ; FAST-LABEL: name: int32_to_float 2094 ; FAST: liveins: $edi 2095 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 2096 ; 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 $xmm0 2100 ; GREEDY-LABEL: name: int32_to_float 2101 ; GREEDY: liveins: $edi 2102 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 2103 ; 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 $xmm0 2107 %0:_(s32) = COPY $edi 2108 %1:_(s32) = G_SITOFP %0(s32) 2109 %2:_(s128) = G_ANYEXT %1(s32) 2110 $xmm0 = COPY %2(s128) 2111 RET 0, implicit $xmm0 2112 2113... 2114--- 2115name: int64_to_float 2116alignment: 16 2117legalized: true 2118tracksRegLiveness: true 2119registers: 2120 - { id: 0, class: _ } 2121 - { id: 1, class: _ } 2122 - { id: 2, class: _ } 2123body: | 2124 bb.1.entry: 2125 liveins: $rdi 2126 2127 ; FAST-LABEL: name: int64_to_float 2128 ; FAST: liveins: $rdi 2129 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi 2130 ; 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 $xmm0 2134 ; GREEDY-LABEL: name: int64_to_float 2135 ; GREEDY: liveins: $rdi 2136 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi 2137 ; 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 $xmm0 2141 %0:_(s64) = COPY $rdi 2142 %1:_(s32) = G_SITOFP %0(s64) 2143 %2:_(s128) = G_ANYEXT %1(s32) 2144 $xmm0 = COPY %2(s128) 2145 RET 0, implicit $xmm0 2146 2147... 2148--- 2149name: int32_to_double 2150alignment: 16 2151legalized: true 2152tracksRegLiveness: true 2153registers: 2154 - { id: 0, class: _ } 2155 - { id: 1, class: _ } 2156 - { id: 2, class: _ } 2157body: | 2158 bb.1.entry: 2159 liveins: $edi 2160 2161 ; FAST-LABEL: name: int32_to_double 2162 ; FAST: liveins: $edi 2163 ; FAST: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 2164 ; 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 $xmm0 2168 ; GREEDY-LABEL: name: int32_to_double 2169 ; GREEDY: liveins: $edi 2170 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s32) = COPY $edi 2171 ; 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 $xmm0 2175 %0:_(s32) = COPY $edi 2176 %1:_(s64) = G_SITOFP %0(s32) 2177 %2:_(s128) = G_ANYEXT %1(s64) 2178 $xmm0 = COPY %2(s128) 2179 RET 0, implicit $xmm0 2180 2181... 2182--- 2183name: int64_to_double 2184alignment: 16 2185legalized: true 2186tracksRegLiveness: true 2187registers: 2188 - { id: 0, class: _ } 2189 - { id: 1, class: _ } 2190 - { id: 2, class: _ } 2191body: | 2192 bb.1.entry: 2193 liveins: $rdi 2194 2195 ; FAST-LABEL: name: int64_to_double 2196 ; FAST: liveins: $rdi 2197 ; FAST: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi 2198 ; 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 $xmm0 2202 ; GREEDY-LABEL: name: int64_to_double 2203 ; GREEDY: liveins: $rdi 2204 ; GREEDY: [[COPY:%[0-9]+]]:gpr(s64) = COPY $rdi 2205 ; 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 $xmm0 2209 %0:_(s64) = COPY $rdi 2210 %1:_(s64) = G_SITOFP %0(s64) 2211 %2:_(s128) = G_ANYEXT %1(s64) 2212 $xmm0 = COPY %2(s128) 2213 RET 0, implicit $xmm0 2214 2215... 2216--- 2217name: float_to_int8 2218alignment: 16 2219legalized: true 2220tracksRegLiveness: true 2221registers: 2222 - { id: 0, class: _ } 2223 - { id: 1, class: _ } 2224 - { id: 2, class: _ } 2225 - { id: 3, class: _ } 2226body: | 2227 bb.1.entry: 2228 liveins: $xmm0 2229 2230 ; FAST-LABEL: name: float_to_int8 2231 ; FAST: liveins: $xmm0 2232 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2233 ; 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 $al 2238 ; GREEDY-LABEL: name: float_to_int8 2239 ; GREEDY: liveins: $xmm0 2240 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2241 ; 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 $al 2246 %1:_(s128) = COPY $xmm0 2247 %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 $al 2252 2253... 2254--- 2255name: float_to_int16 2256alignment: 16 2257legalized: true 2258tracksRegLiveness: true 2259registers: 2260 - { id: 0, class: _ } 2261 - { id: 1, class: _ } 2262 - { id: 2, class: _ } 2263 - { id: 3, class: _ } 2264body: | 2265 bb.1.entry: 2266 liveins: $xmm0 2267 2268 ; FAST-LABEL: name: float_to_int16 2269 ; FAST: liveins: $xmm0 2270 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2271 ; 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 $ax 2276 ; GREEDY-LABEL: name: float_to_int16 2277 ; GREEDY: liveins: $xmm0 2278 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2279 ; 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 $ax 2284 %1:_(s128) = COPY $xmm0 2285 %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 $ax 2290 2291... 2292--- 2293name: float_to_int32 2294alignment: 16 2295legalized: true 2296tracksRegLiveness: true 2297registers: 2298 - { id: 0, class: _ } 2299 - { id: 1, class: _ } 2300 - { id: 2, class: _ } 2301body: | 2302 bb.1.entry: 2303 liveins: $xmm0 2304 2305 ; FAST-LABEL: name: float_to_int32 2306 ; FAST: liveins: $xmm0 2307 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2308 ; 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 $eax 2312 ; GREEDY-LABEL: name: float_to_int32 2313 ; GREEDY: liveins: $xmm0 2314 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2315 ; 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 $eax 2319 %1:_(s128) = COPY $xmm0 2320 %0:_(s32) = G_TRUNC %1(s128) 2321 %2:_(s32) = G_FPTOSI %0(s32) 2322 $eax = COPY %2(s32) 2323 RET 0, implicit $eax 2324 2325... 2326--- 2327name: float_to_int64 2328alignment: 16 2329legalized: true 2330tracksRegLiveness: true 2331registers: 2332 - { id: 0, class: _ } 2333 - { id: 1, class: _ } 2334 - { id: 2, class: _ } 2335body: | 2336 bb.1.entry: 2337 liveins: $xmm0 2338 2339 ; FAST-LABEL: name: float_to_int64 2340 ; FAST: liveins: $xmm0 2341 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2342 ; 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 $rax 2346 ; GREEDY-LABEL: name: float_to_int64 2347 ; GREEDY: liveins: $xmm0 2348 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2349 ; 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 $rax 2353 %1:_(s128) = COPY $xmm0 2354 %0:_(s32) = G_TRUNC %1(s128) 2355 %2:_(s64) = G_FPTOSI %0(s32) 2356 $rax = COPY %2(s64) 2357 RET 0, implicit $rax 2358 2359... 2360--- 2361name: double_to_int8 2362alignment: 16 2363legalized: true 2364tracksRegLiveness: true 2365registers: 2366 - { id: 0, class: _ } 2367 - { id: 1, class: _ } 2368 - { id: 2, class: _ } 2369 - { id: 3, class: _ } 2370body: | 2371 bb.1.entry: 2372 liveins: $xmm0 2373 2374 ; FAST-LABEL: name: double_to_int8 2375 ; FAST: liveins: $xmm0 2376 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2377 ; 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 $al 2382 ; GREEDY-LABEL: name: double_to_int8 2383 ; GREEDY: liveins: $xmm0 2384 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2385 ; 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 $al 2390 %1:_(s128) = COPY $xmm0 2391 %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 $al 2396 2397... 2398--- 2399name: double_to_int16 2400alignment: 16 2401legalized: true 2402tracksRegLiveness: true 2403registers: 2404 - { id: 0, class: _ } 2405 - { id: 1, class: _ } 2406 - { id: 2, class: _ } 2407 - { id: 3, class: _ } 2408body: | 2409 bb.1.entry: 2410 liveins: $xmm0 2411 2412 ; FAST-LABEL: name: double_to_int16 2413 ; FAST: liveins: $xmm0 2414 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2415 ; 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 $ax 2420 ; GREEDY-LABEL: name: double_to_int16 2421 ; GREEDY: liveins: $xmm0 2422 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2423 ; 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 $ax 2428 %1:_(s128) = COPY $xmm0 2429 %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 $ax 2434 2435... 2436--- 2437name: double_to_int32 2438alignment: 16 2439legalized: true 2440tracksRegLiveness: true 2441registers: 2442 - { id: 0, class: _ } 2443 - { id: 1, class: _ } 2444 - { id: 2, class: _ } 2445body: | 2446 bb.1.entry: 2447 liveins: $xmm0 2448 2449 ; FAST-LABEL: name: double_to_int32 2450 ; FAST: liveins: $xmm0 2451 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2452 ; 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 $eax 2456 ; GREEDY-LABEL: name: double_to_int32 2457 ; GREEDY: liveins: $xmm0 2458 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2459 ; 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 $eax 2463 %1:_(s128) = COPY $xmm0 2464 %0:_(s64) = G_TRUNC %1(s128) 2465 %2:_(s32) = G_FPTOSI %0(s64) 2466 $eax = COPY %2(s32) 2467 RET 0, implicit $eax 2468 2469... 2470--- 2471name: double_to_int64 2472alignment: 16 2473legalized: true 2474tracksRegLiveness: true 2475registers: 2476 - { id: 0, class: _ } 2477 - { id: 1, class: _ } 2478 - { id: 2, class: _ } 2479body: | 2480 bb.1.entry: 2481 liveins: $xmm0 2482 2483 ; FAST-LABEL: name: double_to_int64 2484 ; FAST: liveins: $xmm0 2485 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2486 ; 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 $rax 2490 ; GREEDY-LABEL: name: double_to_int64 2491 ; GREEDY: liveins: $xmm0 2492 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2493 ; 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 $rax 2497 %1:_(s128) = COPY $xmm0 2498 %0:_(s64) = G_TRUNC %1(s128) 2499 %2:_(s64) = G_FPTOSI %0(s64) 2500 $rax = COPY %2(s64) 2501 RET 0, implicit $rax 2502 2503... 2504--- 2505name: fcmp_float_oeq 2506alignment: 16 2507legalized: true 2508tracksRegLiveness: true 2509registers: 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, $xmm1 2520 2521 ; FAST-LABEL: name: fcmp_float_oeq 2522 ; FAST: liveins: $xmm0, $xmm1 2523 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2524 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2525 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2526 ; 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 $al 2531 ; GREEDY-LABEL: name: fcmp_float_oeq 2532 ; GREEDY: liveins: $xmm0, $xmm1 2533 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2534 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2535 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2536 ; 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 $al 2541 %2:_(s128) = COPY $xmm0 2542 %0:_(s32) = G_TRUNC %2(s128) 2543 %3:_(s128) = COPY $xmm1 2544 %1:_(s32) = G_TRUNC %3(s128) 2545 %6:_(s8) = G_FCMP floatpred(oeq), %0(s32), %1 2546 %5:_(s8) = COPY %6(s8) 2547 $al = COPY %5(s8) 2548 RET 0, implicit $al 2549 2550... 2551--- 2552name: fcmp_float_ogt 2553alignment: 16 2554legalized: true 2555tracksRegLiveness: true 2556registers: 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, $xmm1 2567 2568 ; FAST-LABEL: name: fcmp_float_ogt 2569 ; FAST: liveins: $xmm0, $xmm1 2570 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2571 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2572 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2573 ; 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 $al 2578 ; GREEDY-LABEL: name: fcmp_float_ogt 2579 ; GREEDY: liveins: $xmm0, $xmm1 2580 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2581 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2582 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2583 ; 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 $al 2588 %2:_(s128) = COPY $xmm0 2589 %0:_(s32) = G_TRUNC %2(s128) 2590 %3:_(s128) = COPY $xmm1 2591 %1:_(s32) = G_TRUNC %3(s128) 2592 %6:_(s8) = G_FCMP floatpred(ogt), %0(s32), %1 2593 %5:_(s8) = COPY %6(s8) 2594 $al = COPY %5(s8) 2595 RET 0, implicit $al 2596 2597... 2598--- 2599name: fcmp_float_oge 2600alignment: 16 2601legalized: true 2602tracksRegLiveness: true 2603registers: 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, $xmm1 2614 2615 ; FAST-LABEL: name: fcmp_float_oge 2616 ; FAST: liveins: $xmm0, $xmm1 2617 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2618 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2619 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2620 ; 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 $al 2625 ; GREEDY-LABEL: name: fcmp_float_oge 2626 ; GREEDY: liveins: $xmm0, $xmm1 2627 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2628 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2629 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2630 ; 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 $al 2635 %2:_(s128) = COPY $xmm0 2636 %0:_(s32) = G_TRUNC %2(s128) 2637 %3:_(s128) = COPY $xmm1 2638 %1:_(s32) = G_TRUNC %3(s128) 2639 %6:_(s8) = G_FCMP floatpred(oge), %0(s32), %1 2640 %5:_(s8) = COPY %6(s8) 2641 $al = COPY %5(s8) 2642 RET 0, implicit $al 2643 2644... 2645--- 2646name: fcmp_float_olt 2647alignment: 16 2648legalized: true 2649tracksRegLiveness: true 2650registers: 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, $xmm1 2661 2662 ; FAST-LABEL: name: fcmp_float_olt 2663 ; FAST: liveins: $xmm0, $xmm1 2664 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2665 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2666 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2667 ; 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 $al 2672 ; GREEDY-LABEL: name: fcmp_float_olt 2673 ; GREEDY: liveins: $xmm0, $xmm1 2674 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2675 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2676 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2677 ; 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 $al 2682 %2:_(s128) = COPY $xmm0 2683 %0:_(s32) = G_TRUNC %2(s128) 2684 %3:_(s128) = COPY $xmm1 2685 %1:_(s32) = G_TRUNC %3(s128) 2686 %6:_(s8) = G_FCMP floatpred(olt), %0(s32), %1 2687 %5:_(s8) = COPY %6(s8) 2688 $al = COPY %5(s8) 2689 RET 0, implicit $al 2690 2691... 2692--- 2693name: fcmp_float_ole 2694alignment: 16 2695legalized: true 2696tracksRegLiveness: true 2697registers: 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, $xmm1 2708 2709 ; FAST-LABEL: name: fcmp_float_ole 2710 ; FAST: liveins: $xmm0, $xmm1 2711 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2712 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2713 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2714 ; 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 $al 2719 ; GREEDY-LABEL: name: fcmp_float_ole 2720 ; GREEDY: liveins: $xmm0, $xmm1 2721 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2722 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2723 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2724 ; 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 $al 2729 %2:_(s128) = COPY $xmm0 2730 %0:_(s32) = G_TRUNC %2(s128) 2731 %3:_(s128) = COPY $xmm1 2732 %1:_(s32) = G_TRUNC %3(s128) 2733 %6:_(s8) = G_FCMP floatpred(ole), %0(s32), %1 2734 %5:_(s8) = COPY %6(s8) 2735 $al = COPY %5(s8) 2736 RET 0, implicit $al 2737 2738... 2739--- 2740name: fcmp_float_one 2741alignment: 16 2742legalized: true 2743tracksRegLiveness: true 2744registers: 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, $xmm1 2755 2756 ; FAST-LABEL: name: fcmp_float_one 2757 ; FAST: liveins: $xmm0, $xmm1 2758 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2759 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2760 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2761 ; 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 $al 2766 ; GREEDY-LABEL: name: fcmp_float_one 2767 ; GREEDY: liveins: $xmm0, $xmm1 2768 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2769 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2770 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2771 ; 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 $al 2776 %2:_(s128) = COPY $xmm0 2777 %0:_(s32) = G_TRUNC %2(s128) 2778 %3:_(s128) = COPY $xmm1 2779 %1:_(s32) = G_TRUNC %3(s128) 2780 %6:_(s8) = G_FCMP floatpred(one), %0(s32), %1 2781 %5:_(s8) = COPY %6(s8) 2782 $al = COPY %5(s8) 2783 RET 0, implicit $al 2784 2785... 2786--- 2787name: fcmp_float_ord 2788alignment: 16 2789legalized: true 2790tracksRegLiveness: true 2791registers: 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, $xmm1 2802 2803 ; FAST-LABEL: name: fcmp_float_ord 2804 ; FAST: liveins: $xmm0, $xmm1 2805 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2806 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2807 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2808 ; 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 $al 2813 ; GREEDY-LABEL: name: fcmp_float_ord 2814 ; GREEDY: liveins: $xmm0, $xmm1 2815 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2816 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2817 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2818 ; 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 $al 2823 %2:_(s128) = COPY $xmm0 2824 %0:_(s32) = G_TRUNC %2(s128) 2825 %3:_(s128) = COPY $xmm1 2826 %1:_(s32) = G_TRUNC %3(s128) 2827 %6:_(s8) = G_FCMP floatpred(ord), %0(s32), %1 2828 %5:_(s8) = COPY %6(s8) 2829 $al = COPY %5(s8) 2830 RET 0, implicit $al 2831 2832... 2833--- 2834name: fcmp_float_uno 2835alignment: 16 2836legalized: true 2837tracksRegLiveness: true 2838registers: 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, $xmm1 2849 2850 ; FAST-LABEL: name: fcmp_float_uno 2851 ; FAST: liveins: $xmm0, $xmm1 2852 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2853 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2854 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2855 ; 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 $al 2860 ; GREEDY-LABEL: name: fcmp_float_uno 2861 ; GREEDY: liveins: $xmm0, $xmm1 2862 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2863 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2864 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2865 ; 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 $al 2870 %2:_(s128) = COPY $xmm0 2871 %0:_(s32) = G_TRUNC %2(s128) 2872 %3:_(s128) = COPY $xmm1 2873 %1:_(s32) = G_TRUNC %3(s128) 2874 %6:_(s8) = G_FCMP floatpred(uno), %0(s32), %1 2875 %5:_(s8) = COPY %6(s8) 2876 $al = COPY %5(s8) 2877 RET 0, implicit $al 2878 2879... 2880--- 2881name: fcmp_float_ueq 2882alignment: 16 2883legalized: true 2884tracksRegLiveness: true 2885registers: 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, $xmm1 2896 2897 ; FAST-LABEL: name: fcmp_float_ueq 2898 ; FAST: liveins: $xmm0, $xmm1 2899 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2900 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2901 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2902 ; 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 $al 2907 ; GREEDY-LABEL: name: fcmp_float_ueq 2908 ; GREEDY: liveins: $xmm0, $xmm1 2909 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2910 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2911 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2912 ; 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 $al 2917 %2:_(s128) = COPY $xmm0 2918 %0:_(s32) = G_TRUNC %2(s128) 2919 %3:_(s128) = COPY $xmm1 2920 %1:_(s32) = G_TRUNC %3(s128) 2921 %6:_(s8) = G_FCMP floatpred(ueq), %0(s32), %1 2922 %5:_(s8) = COPY %6(s8) 2923 $al = COPY %5(s8) 2924 RET 0, implicit $al 2925 2926... 2927--- 2928name: fcmp_float_ugt 2929alignment: 16 2930legalized: true 2931tracksRegLiveness: true 2932registers: 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, $xmm1 2943 2944 ; FAST-LABEL: name: fcmp_float_ugt 2945 ; FAST: liveins: $xmm0, $xmm1 2946 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2947 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2948 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2949 ; 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 $al 2954 ; GREEDY-LABEL: name: fcmp_float_ugt 2955 ; GREEDY: liveins: $xmm0, $xmm1 2956 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2957 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2958 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2959 ; 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 $al 2964 %2:_(s128) = COPY $xmm0 2965 %0:_(s32) = G_TRUNC %2(s128) 2966 %3:_(s128) = COPY $xmm1 2967 %1:_(s32) = G_TRUNC %3(s128) 2968 %6:_(s8) = G_FCMP floatpred(ugt), %0(s32), %1 2969 %5:_(s8) = COPY %6(s8) 2970 $al = COPY %5(s8) 2971 RET 0, implicit $al 2972 2973... 2974--- 2975name: fcmp_float_uge 2976alignment: 16 2977legalized: true 2978tracksRegLiveness: true 2979registers: 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, $xmm1 2990 2991 ; FAST-LABEL: name: fcmp_float_uge 2992 ; FAST: liveins: $xmm0, $xmm1 2993 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 2994 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 2995 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 2996 ; 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 $al 3001 ; GREEDY-LABEL: name: fcmp_float_uge 3002 ; GREEDY: liveins: $xmm0, $xmm1 3003 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3004 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 3005 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3006 ; 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 $al 3011 %2:_(s128) = COPY $xmm0 3012 %0:_(s32) = G_TRUNC %2(s128) 3013 %3:_(s128) = COPY $xmm1 3014 %1:_(s32) = G_TRUNC %3(s128) 3015 %6:_(s8) = G_FCMP floatpred(uge), %0(s32), %1 3016 %5:_(s8) = COPY %6(s8) 3017 $al = COPY %5(s8) 3018 RET 0, implicit $al 3019 3020... 3021--- 3022name: fcmp_float_ult 3023alignment: 16 3024legalized: true 3025tracksRegLiveness: true 3026registers: 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, $xmm1 3037 3038 ; FAST-LABEL: name: fcmp_float_ult 3039 ; FAST: liveins: $xmm0, $xmm1 3040 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3041 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 3042 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3043 ; 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 $al 3048 ; GREEDY-LABEL: name: fcmp_float_ult 3049 ; GREEDY: liveins: $xmm0, $xmm1 3050 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3051 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 3052 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3053 ; 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 $al 3058 %2:_(s128) = COPY $xmm0 3059 %0:_(s32) = G_TRUNC %2(s128) 3060 %3:_(s128) = COPY $xmm1 3061 %1:_(s32) = G_TRUNC %3(s128) 3062 %6:_(s8) = G_FCMP floatpred(ult), %0(s32), %1 3063 %5:_(s8) = COPY %6(s8) 3064 $al = COPY %5(s8) 3065 RET 0, implicit $al 3066 3067... 3068--- 3069name: fcmp_float_ule 3070alignment: 16 3071legalized: true 3072tracksRegLiveness: true 3073registers: 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, $xmm1 3084 3085 ; FAST-LABEL: name: fcmp_float_ule 3086 ; FAST: liveins: $xmm0, $xmm1 3087 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3088 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 3089 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3090 ; 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 $al 3095 ; GREEDY-LABEL: name: fcmp_float_ule 3096 ; GREEDY: liveins: $xmm0, $xmm1 3097 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3098 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 3099 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3100 ; 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 $al 3105 %2:_(s128) = COPY $xmm0 3106 %0:_(s32) = G_TRUNC %2(s128) 3107 %3:_(s128) = COPY $xmm1 3108 %1:_(s32) = G_TRUNC %3(s128) 3109 %6:_(s8) = G_FCMP floatpred(ule), %0(s32), %1 3110 %5:_(s8) = COPY %6(s8) 3111 $al = COPY %5(s8) 3112 RET 0, implicit $al 3113 3114... 3115--- 3116name: fcmp_float_une 3117alignment: 16 3118legalized: true 3119tracksRegLiveness: true 3120registers: 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, $xmm1 3131 3132 ; FAST-LABEL: name: fcmp_float_une 3133 ; FAST: liveins: $xmm0, $xmm1 3134 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3135 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 3136 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3137 ; 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 $al 3142 ; GREEDY-LABEL: name: fcmp_float_une 3143 ; GREEDY: liveins: $xmm0, $xmm1 3144 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3145 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s32) = G_TRUNC [[COPY]](s128) 3146 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3147 ; 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 $al 3152 %2:_(s128) = COPY $xmm0 3153 %0:_(s32) = G_TRUNC %2(s128) 3154 %3:_(s128) = COPY $xmm1 3155 %1:_(s32) = G_TRUNC %3(s128) 3156 %6:_(s8) = G_FCMP floatpred(une), %0(s32), %1 3157 %5:_(s8) = COPY %6(s8) 3158 $al = COPY %5(s8) 3159 RET 0, implicit $al 3160 3161... 3162--- 3163name: fcmp_double_oeq 3164alignment: 16 3165legalized: true 3166tracksRegLiveness: true 3167registers: 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, $xmm1 3178 3179 ; FAST-LABEL: name: fcmp_double_oeq 3180 ; FAST: liveins: $xmm0, $xmm1 3181 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3182 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3183 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3184 ; 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 $al 3189 ; GREEDY-LABEL: name: fcmp_double_oeq 3190 ; GREEDY: liveins: $xmm0, $xmm1 3191 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3192 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3193 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3194 ; 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 $al 3199 %2:_(s128) = COPY $xmm0 3200 %0:_(s64) = G_TRUNC %2(s128) 3201 %3:_(s128) = COPY $xmm1 3202 %1:_(s64) = G_TRUNC %3(s128) 3203 %6:_(s8) = G_FCMP floatpred(oeq), %0(s64), %1 3204 %5:_(s8) = COPY %6(s8) 3205 $al = COPY %5(s8) 3206 RET 0, implicit $al 3207 3208... 3209--- 3210name: fcmp_double_ogt 3211alignment: 16 3212legalized: true 3213tracksRegLiveness: true 3214registers: 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, $xmm1 3225 3226 ; FAST-LABEL: name: fcmp_double_ogt 3227 ; FAST: liveins: $xmm0, $xmm1 3228 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3229 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3230 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3231 ; 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 $al 3236 ; GREEDY-LABEL: name: fcmp_double_ogt 3237 ; GREEDY: liveins: $xmm0, $xmm1 3238 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3239 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3240 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3241 ; 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 $al 3246 %2:_(s128) = COPY $xmm0 3247 %0:_(s64) = G_TRUNC %2(s128) 3248 %3:_(s128) = COPY $xmm1 3249 %1:_(s64) = G_TRUNC %3(s128) 3250 %6:_(s8) = G_FCMP floatpred(ogt), %0(s64), %1 3251 %5:_(s8) = COPY %6(s8) 3252 $al = COPY %5(s8) 3253 RET 0, implicit $al 3254 3255... 3256--- 3257name: fcmp_double_oge 3258alignment: 16 3259legalized: true 3260tracksRegLiveness: true 3261registers: 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, $xmm1 3272 3273 ; FAST-LABEL: name: fcmp_double_oge 3274 ; FAST: liveins: $xmm0, $xmm1 3275 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3276 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3277 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3278 ; 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 $al 3283 ; GREEDY-LABEL: name: fcmp_double_oge 3284 ; GREEDY: liveins: $xmm0, $xmm1 3285 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3286 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3287 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3288 ; 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 $al 3293 %2:_(s128) = COPY $xmm0 3294 %0:_(s64) = G_TRUNC %2(s128) 3295 %3:_(s128) = COPY $xmm1 3296 %1:_(s64) = G_TRUNC %3(s128) 3297 %6:_(s8) = G_FCMP floatpred(oge), %0(s64), %1 3298 %5:_(s8) = COPY %6(s8) 3299 $al = COPY %5(s8) 3300 RET 0, implicit $al 3301 3302... 3303--- 3304name: fcmp_double_olt 3305alignment: 16 3306legalized: true 3307tracksRegLiveness: true 3308registers: 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, $xmm1 3319 3320 ; FAST-LABEL: name: fcmp_double_olt 3321 ; FAST: liveins: $xmm0, $xmm1 3322 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3323 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3324 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3325 ; 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 $al 3330 ; GREEDY-LABEL: name: fcmp_double_olt 3331 ; GREEDY: liveins: $xmm0, $xmm1 3332 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3333 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3334 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3335 ; 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 $al 3340 %2:_(s128) = COPY $xmm0 3341 %0:_(s64) = G_TRUNC %2(s128) 3342 %3:_(s128) = COPY $xmm1 3343 %1:_(s64) = G_TRUNC %3(s128) 3344 %6:_(s8) = G_FCMP floatpred(olt), %0(s64), %1 3345 %5:_(s8) = COPY %6(s8) 3346 $al = COPY %5(s8) 3347 RET 0, implicit $al 3348 3349... 3350--- 3351name: fcmp_double_ole 3352alignment: 16 3353legalized: true 3354tracksRegLiveness: true 3355registers: 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, $xmm1 3366 3367 ; FAST-LABEL: name: fcmp_double_ole 3368 ; FAST: liveins: $xmm0, $xmm1 3369 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3370 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3371 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3372 ; 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 $al 3377 ; GREEDY-LABEL: name: fcmp_double_ole 3378 ; GREEDY: liveins: $xmm0, $xmm1 3379 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3380 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3381 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3382 ; 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 $al 3387 %2:_(s128) = COPY $xmm0 3388 %0:_(s64) = G_TRUNC %2(s128) 3389 %3:_(s128) = COPY $xmm1 3390 %1:_(s64) = G_TRUNC %3(s128) 3391 %6:_(s8) = G_FCMP floatpred(ole), %0(s64), %1 3392 %5:_(s8) = COPY %6(s8) 3393 $al = COPY %5(s8) 3394 RET 0, implicit $al 3395 3396... 3397--- 3398name: fcmp_double_one 3399alignment: 16 3400legalized: true 3401tracksRegLiveness: true 3402registers: 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, $xmm1 3413 3414 ; FAST-LABEL: name: fcmp_double_one 3415 ; FAST: liveins: $xmm0, $xmm1 3416 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3417 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3418 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3419 ; 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 $al 3424 ; GREEDY-LABEL: name: fcmp_double_one 3425 ; GREEDY: liveins: $xmm0, $xmm1 3426 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3427 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3428 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3429 ; 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 $al 3434 %2:_(s128) = COPY $xmm0 3435 %0:_(s64) = G_TRUNC %2(s128) 3436 %3:_(s128) = COPY $xmm1 3437 %1:_(s64) = G_TRUNC %3(s128) 3438 %6:_(s8) = G_FCMP floatpred(one), %0(s64), %1 3439 %5:_(s8) = COPY %6(s8) 3440 $al = COPY %5(s8) 3441 RET 0, implicit $al 3442 3443... 3444--- 3445name: fcmp_double_ord 3446alignment: 16 3447legalized: true 3448tracksRegLiveness: true 3449registers: 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, $xmm1 3460 3461 ; FAST-LABEL: name: fcmp_double_ord 3462 ; FAST: liveins: $xmm0, $xmm1 3463 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3464 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3465 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3466 ; 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 $al 3471 ; GREEDY-LABEL: name: fcmp_double_ord 3472 ; GREEDY: liveins: $xmm0, $xmm1 3473 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3474 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3475 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3476 ; 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 $al 3481 %2:_(s128) = COPY $xmm0 3482 %0:_(s64) = G_TRUNC %2(s128) 3483 %3:_(s128) = COPY $xmm1 3484 %1:_(s64) = G_TRUNC %3(s128) 3485 %6:_(s8) = G_FCMP floatpred(ord), %0(s64), %1 3486 %5:_(s8) = COPY %6(s8) 3487 $al = COPY %5(s8) 3488 RET 0, implicit $al 3489 3490... 3491--- 3492name: fcmp_double_uno 3493alignment: 16 3494legalized: true 3495tracksRegLiveness: true 3496registers: 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, $xmm1 3507 3508 ; FAST-LABEL: name: fcmp_double_uno 3509 ; FAST: liveins: $xmm0, $xmm1 3510 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3511 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3512 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3513 ; 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 $al 3518 ; GREEDY-LABEL: name: fcmp_double_uno 3519 ; GREEDY: liveins: $xmm0, $xmm1 3520 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3521 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3522 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3523 ; 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 $al 3528 %2:_(s128) = COPY $xmm0 3529 %0:_(s64) = G_TRUNC %2(s128) 3530 %3:_(s128) = COPY $xmm1 3531 %1:_(s64) = G_TRUNC %3(s128) 3532 %6:_(s8) = G_FCMP floatpred(uno), %0(s64), %1 3533 %5:_(s8) = COPY %6(s8) 3534 $al = COPY %5(s8) 3535 RET 0, implicit $al 3536 3537... 3538--- 3539name: fcmp_double_ueq 3540alignment: 16 3541legalized: true 3542tracksRegLiveness: true 3543registers: 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, $xmm1 3554 3555 ; FAST-LABEL: name: fcmp_double_ueq 3556 ; FAST: liveins: $xmm0, $xmm1 3557 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3558 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3559 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3560 ; 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 $al 3565 ; GREEDY-LABEL: name: fcmp_double_ueq 3566 ; GREEDY: liveins: $xmm0, $xmm1 3567 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3568 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3569 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3570 ; 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 $al 3575 %2:_(s128) = COPY $xmm0 3576 %0:_(s64) = G_TRUNC %2(s128) 3577 %3:_(s128) = COPY $xmm1 3578 %1:_(s64) = G_TRUNC %3(s128) 3579 %6:_(s8) = G_FCMP floatpred(ueq), %0(s64), %1 3580 %5:_(s8) = COPY %6(s8) 3581 $al = COPY %5(s8) 3582 RET 0, implicit $al 3583 3584... 3585--- 3586name: fcmp_double_ugt 3587alignment: 16 3588legalized: true 3589tracksRegLiveness: true 3590registers: 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, $xmm1 3601 3602 ; FAST-LABEL: name: fcmp_double_ugt 3603 ; FAST: liveins: $xmm0, $xmm1 3604 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3605 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3606 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3607 ; 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 $al 3612 ; GREEDY-LABEL: name: fcmp_double_ugt 3613 ; GREEDY: liveins: $xmm0, $xmm1 3614 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3615 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3616 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3617 ; 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 $al 3622 %2:_(s128) = COPY $xmm0 3623 %0:_(s64) = G_TRUNC %2(s128) 3624 %3:_(s128) = COPY $xmm1 3625 %1:_(s64) = G_TRUNC %3(s128) 3626 %6:_(s8) = G_FCMP floatpred(ugt), %0(s64), %1 3627 %5:_(s8) = COPY %6(s8) 3628 $al = COPY %5(s8) 3629 RET 0, implicit $al 3630 3631... 3632--- 3633name: fcmp_double_uge 3634alignment: 16 3635legalized: true 3636tracksRegLiveness: true 3637registers: 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, $xmm1 3648 3649 ; FAST-LABEL: name: fcmp_double_uge 3650 ; FAST: liveins: $xmm0, $xmm1 3651 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3652 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3653 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3654 ; 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 $al 3659 ; GREEDY-LABEL: name: fcmp_double_uge 3660 ; GREEDY: liveins: $xmm0, $xmm1 3661 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3662 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3663 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3664 ; 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 $al 3669 %2:_(s128) = COPY $xmm0 3670 %0:_(s64) = G_TRUNC %2(s128) 3671 %3:_(s128) = COPY $xmm1 3672 %1:_(s64) = G_TRUNC %3(s128) 3673 %6:_(s8) = G_FCMP floatpred(uge), %0(s64), %1 3674 %5:_(s8) = COPY %6(s8) 3675 $al = COPY %5(s8) 3676 RET 0, implicit $al 3677 3678... 3679--- 3680name: fcmp_double_ult 3681alignment: 16 3682legalized: true 3683tracksRegLiveness: true 3684registers: 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, $xmm1 3695 3696 ; FAST-LABEL: name: fcmp_double_ult 3697 ; FAST: liveins: $xmm0, $xmm1 3698 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3699 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3700 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3701 ; 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 $al 3706 ; GREEDY-LABEL: name: fcmp_double_ult 3707 ; GREEDY: liveins: $xmm0, $xmm1 3708 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3709 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3710 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3711 ; 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 $al 3716 %2:_(s128) = COPY $xmm0 3717 %0:_(s64) = G_TRUNC %2(s128) 3718 %3:_(s128) = COPY $xmm1 3719 %1:_(s64) = G_TRUNC %3(s128) 3720 %6:_(s8) = G_FCMP floatpred(ult), %0(s64), %1 3721 %5:_(s8) = COPY %6(s8) 3722 $al = COPY %5(s8) 3723 RET 0, implicit $al 3724 3725... 3726--- 3727name: fcmp_double_ule 3728alignment: 16 3729legalized: true 3730tracksRegLiveness: true 3731registers: 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, $xmm1 3742 3743 ; FAST-LABEL: name: fcmp_double_ule 3744 ; FAST: liveins: $xmm0, $xmm1 3745 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3746 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3747 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3748 ; 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 $al 3753 ; GREEDY-LABEL: name: fcmp_double_ule 3754 ; GREEDY: liveins: $xmm0, $xmm1 3755 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3756 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3757 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3758 ; 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 $al 3763 %2:_(s128) = COPY $xmm0 3764 %0:_(s64) = G_TRUNC %2(s128) 3765 %3:_(s128) = COPY $xmm1 3766 %1:_(s64) = G_TRUNC %3(s128) 3767 %6:_(s8) = G_FCMP floatpred(ule), %0(s64), %1 3768 %5:_(s8) = COPY %6(s8) 3769 $al = COPY %5(s8) 3770 RET 0, implicit $al 3771 3772... 3773--- 3774name: fcmp_double_une 3775alignment: 16 3776legalized: true 3777tracksRegLiveness: true 3778registers: 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, $xmm1 3789 3790 ; FAST-LABEL: name: fcmp_double_une 3791 ; FAST: liveins: $xmm0, $xmm1 3792 ; FAST: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3793 ; FAST: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3794 ; FAST: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3795 ; 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 $al 3800 ; GREEDY-LABEL: name: fcmp_double_une 3801 ; GREEDY: liveins: $xmm0, $xmm1 3802 ; GREEDY: [[COPY:%[0-9]+]]:vecr(s128) = COPY $xmm0 3803 ; GREEDY: [[TRUNC:%[0-9]+]]:vecr(s64) = G_TRUNC [[COPY]](s128) 3804 ; GREEDY: [[COPY1:%[0-9]+]]:vecr(s128) = COPY $xmm1 3805 ; 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 $al 3810 %2:_(s128) = COPY $xmm0 3811 %0:_(s64) = G_TRUNC %2(s128) 3812 %3:_(s128) = COPY $xmm1 3813 %1:_(s64) = G_TRUNC %3(s128) 3814 %6:_(s8) = G_FCMP floatpred(une), %0(s64), %1 3815 %5:_(s8) = COPY %6(s8) 3816 $al = COPY %5(s8) 3817 RET 0, implicit $al 3818 3819... 3820