| OLD | NEW |
| 1 ; This file is extracted from fp.pnacl.ll and vector-fcmp.ll in the lit | 1 ; This file is extracted from fp.pnacl.ll and vector-fcmp.ll in the lit |
| 2 ; tests, with the "internal" attribute removed from the functions. | 2 ; tests, with the "internal" attribute removed from the functions. |
| 3 | 3 |
| 4 define i32 @fcmpFalseFloat(float %a, float %b) { | 4 define i32 @fcmpFalseFloat(float %a, float %b) { |
| 5 entry: | 5 entry: |
| 6 %cmp = fcmp false float %a, %b | 6 %cmp = fcmp false float %a, %b |
| 7 %cmp.ret_ext = zext i1 %cmp to i32 | 7 %cmp.ret_ext = zext i1 %cmp to i32 |
| 8 ret i32 %cmp.ret_ext | 8 ret i32 %cmp.ret_ext |
| 9 } | 9 } |
| 10 ; CHECK: fcmpFalseFloat: | 10 ; CHECK: fcmpFalseFloat: |
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 | 314 |
| 315 define i32 @fcmpTrueDouble(double %a, double %b) { | 315 define i32 @fcmpTrueDouble(double %a, double %b) { |
| 316 entry: | 316 entry: |
| 317 %cmp = fcmp true double %a, %b | 317 %cmp = fcmp true double %a, %b |
| 318 %cmp.ret_ext = zext i1 %cmp to i32 | 318 %cmp.ret_ext = zext i1 %cmp to i32 |
| 319 ret i32 %cmp.ret_ext | 319 ret i32 %cmp.ret_ext |
| 320 } | 320 } |
| 321 ; CHECK: fcmpTrueDouble: | 321 ; CHECK: fcmpTrueDouble: |
| 322 ; CHECK: mov {{.*}}, 1 | 322 ; CHECK: mov {{.*}}, 1 |
| 323 | 323 |
| 324 define i32 @fcmpSelectFalseFloat(float %a, float %b, i32 %c, i32 %d) { |
| 325 entry: |
| 326 %cmp = fcmp false float %a, %b |
| 327 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 328 ret i32 %cmp.ret_ext |
| 329 } |
| 330 ; CHECK: fcmpSelectFalseFloat: |
| 331 ; CHECK: mov {{.*}}, 0 |
| 332 |
| 333 define i32 @fcmpSelectFalseDouble(double %a, double %b, i32 %c, i32 %d) { |
| 334 entry: |
| 335 %cmp = fcmp false double %a, %b |
| 336 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 337 ret i32 %cmp.ret_ext |
| 338 } |
| 339 ; CHECK: fcmpSelectFalseDouble: |
| 340 ; CHECK: mov {{.*}}, 0 |
| 341 |
| 342 define i32 @fcmpSelectOeqFloat(float %a, float %b, i32 %c, i32 %d) { |
| 343 entry: |
| 344 %cmp = fcmp oeq float %a, %b |
| 345 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 346 ret i32 %cmp.ret_ext |
| 347 } |
| 348 ; CHECK: fcmpSelectOeqFloat: |
| 349 ; CHECK: ucomiss |
| 350 ; CHECK: jne . |
| 351 ; CHECK: jp . |
| 352 |
| 353 define i32 @fcmpSelectOeqDouble(double %a, double %b, i32 %c, i32 %d) { |
| 354 entry: |
| 355 %cmp = fcmp oeq double %a, %b |
| 356 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 357 ret i32 %cmp.ret_ext |
| 358 } |
| 359 ; CHECK: fcmpSelectOeqDouble: |
| 360 ; CHECK: ucomisd |
| 361 ; CHECK: jne . |
| 362 ; CHECK: jp . |
| 363 |
| 364 define i32 @fcmpSelectOgtFloat(float %a, float %b, i32 %c, i32 %d) { |
| 365 entry: |
| 366 %cmp = fcmp ogt float %a, %b |
| 367 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 368 ret i32 %cmp.ret_ext |
| 369 } |
| 370 ; CHECK: fcmpSelectOgtFloat: |
| 371 ; CHECK: ucomiss |
| 372 ; CHECK: ja . |
| 373 |
| 374 define i32 @fcmpSelectOgtDouble(double %a, double %b, i32 %c, i32 %d) { |
| 375 entry: |
| 376 %cmp = fcmp ogt double %a, %b |
| 377 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 378 ret i32 %cmp.ret_ext |
| 379 } |
| 380 ; CHECK: fcmpSelectOgtDouble: |
| 381 ; CHECK: ucomisd |
| 382 ; CHECK: ja . |
| 383 |
| 384 define i32 @fcmpSelectOgeFloat(float %a, float %b, i32 %c, i32 %d) { |
| 385 entry: |
| 386 %cmp = fcmp oge float %a, %b |
| 387 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 388 ret i32 %cmp.ret_ext |
| 389 } |
| 390 ; CHECK: fcmpSelectOgeFloat: |
| 391 ; CHECK: ucomiss |
| 392 ; CHECK: jae . |
| 393 |
| 394 define i32 @fcmpSelectOgeDouble(double %a, double %b, i32 %c, i32 %d) { |
| 395 entry: |
| 396 %cmp = fcmp oge double %a, %b |
| 397 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 398 ret i32 %cmp.ret_ext |
| 399 } |
| 400 ; CHECK: fcmpSelectOgeDouble: |
| 401 ; CHECK: ucomisd |
| 402 ; CHECK: jae . |
| 403 |
| 404 define i32 @fcmpSelectOltFloat(float %a, float %b, i32 %c, i32 %d) { |
| 405 entry: |
| 406 %cmp = fcmp olt float %a, %b |
| 407 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 408 ret i32 %cmp.ret_ext |
| 409 } |
| 410 ; CHECK: fcmpSelectOltFloat: |
| 411 ; CHECK: ucomiss |
| 412 ; CHECK: ja . |
| 413 |
| 414 define i32 @fcmpSelectOltDouble(double %a, double %b, i32 %c, i32 %d) { |
| 415 entry: |
| 416 %cmp = fcmp olt double %a, %b |
| 417 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 418 ret i32 %cmp.ret_ext |
| 419 } |
| 420 ; CHECK: fcmpSelectOltDouble: |
| 421 ; CHECK: ucomisd |
| 422 ; CHECK: ja . |
| 423 |
| 424 define i32 @fcmpSelectOleFloat(float %a, float %b, i32 %c, i32 %d) { |
| 425 entry: |
| 426 %cmp = fcmp ole float %a, %b |
| 427 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 428 ret i32 %cmp.ret_ext |
| 429 } |
| 430 ; CHECK: fcmpSelectOleFloat: |
| 431 ; CHECK: ucomiss |
| 432 ; CHECK: jae . |
| 433 |
| 434 define i32 @fcmpSelectOleDouble(double %a, double %b, i32 %c, i32 %d) { |
| 435 entry: |
| 436 %cmp = fcmp ole double %a, %b |
| 437 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 438 ret i32 %cmp.ret_ext |
| 439 } |
| 440 ; CHECK: fcmpSelectOleDouble: |
| 441 ; CHECK: ucomisd |
| 442 ; CHECK: jae . |
| 443 |
| 444 define i32 @fcmpSelectOneFloat(float %a, float %b, i32 %c, i32 %d) { |
| 445 entry: |
| 446 %cmp = fcmp one float %a, %b |
| 447 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 448 ret i32 %cmp.ret_ext |
| 449 } |
| 450 ; CHECK: fcmpSelectOneFloat: |
| 451 ; CHECK: ucomiss |
| 452 ; CHECK: jne . |
| 453 |
| 454 define i32 @fcmpSelectOneDouble(double %a, double %b, i32 %c, i32 %d) { |
| 455 entry: |
| 456 %cmp = fcmp one double %a, %b |
| 457 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 458 ret i32 %cmp.ret_ext |
| 459 } |
| 460 ; CHECK: fcmpSelectOneDouble: |
| 461 ; CHECK: ucomisd |
| 462 ; CHECK: jne . |
| 463 |
| 464 define i32 @fcmpSelectOrdFloat(float %a, float %b, i32 %c, i32 %d) { |
| 465 entry: |
| 466 %cmp = fcmp ord float %a, %b |
| 467 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 468 ret i32 %cmp.ret_ext |
| 469 } |
| 470 ; CHECK: fcmpSelectOrdFloat: |
| 471 ; CHECK: ucomiss |
| 472 ; CHECK: jnp . |
| 473 |
| 474 define i32 @fcmpSelectOrdDouble(double %a, double %b, i32 %c, i32 %d) { |
| 475 entry: |
| 476 %cmp = fcmp ord double %a, %b |
| 477 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 478 ret i32 %cmp.ret_ext |
| 479 } |
| 480 ; CHECK: fcmpSelectOrdDouble: |
| 481 ; CHECK: ucomisd |
| 482 ; CHECK: jnp . |
| 483 |
| 484 define i32 @fcmpSelectUeqFloat(float %a, float %b, i32 %c, i32 %d) { |
| 485 entry: |
| 486 %cmp = fcmp ueq float %a, %b |
| 487 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 488 ret i32 %cmp.ret_ext |
| 489 } |
| 490 ; CHECK: fcmpSelectUeqFloat: |
| 491 ; CHECK: ucomiss |
| 492 ; CHECK: je . |
| 493 |
| 494 define i32 @fcmpSelectUeqDouble(double %a, double %b, i32 %c, i32 %d) { |
| 495 entry: |
| 496 %cmp = fcmp ueq double %a, %b |
| 497 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 498 ret i32 %cmp.ret_ext |
| 499 } |
| 500 ; CHECK: fcmpSelectUeqDouble: |
| 501 ; CHECK: ucomisd |
| 502 ; CHECK: je . |
| 503 |
| 504 define i32 @fcmpSelectUgtFloat(float %a, float %b, i32 %c, i32 %d) { |
| 505 entry: |
| 506 %cmp = fcmp ugt float %a, %b |
| 507 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 508 ret i32 %cmp.ret_ext |
| 509 } |
| 510 ; CHECK: fcmpSelectUgtFloat: |
| 511 ; CHECK: ucomiss |
| 512 ; CHECK: jb . |
| 513 |
| 514 define i32 @fcmpSelectUgtDouble(double %a, double %b, i32 %c, i32 %d) { |
| 515 entry: |
| 516 %cmp = fcmp ugt double %a, %b |
| 517 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 518 ret i32 %cmp.ret_ext |
| 519 } |
| 520 ; CHECK: fcmpSelectUgtDouble: |
| 521 ; CHECK: ucomisd |
| 522 ; CHECK: jb . |
| 523 |
| 524 define i32 @fcmpSelectUgeFloat(float %a, float %b, i32 %c, i32 %d) { |
| 525 entry: |
| 526 %cmp = fcmp uge float %a, %b |
| 527 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 528 ret i32 %cmp.ret_ext |
| 529 } |
| 530 ; CHECK: fcmpSelectUgeFloat: |
| 531 ; CHECK: ucomiss |
| 532 ; CHECK: jbe . |
| 533 |
| 534 define i32 @fcmpSelectUgeDouble(double %a, double %b, i32 %c, i32 %d) { |
| 535 entry: |
| 536 %cmp = fcmp uge double %a, %b |
| 537 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 538 ret i32 %cmp.ret_ext |
| 539 } |
| 540 ; CHECK: fcmpSelectUgeDouble: |
| 541 ; CHECK: ucomisd |
| 542 ; CHECK: jbe . |
| 543 |
| 544 define i32 @fcmpSelectUltFloat(float %a, float %b, i32 %c, i32 %d) { |
| 545 entry: |
| 546 %cmp = fcmp ult float %a, %b |
| 547 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 548 ret i32 %cmp.ret_ext |
| 549 } |
| 550 ; CHECK: fcmpSelectUltFloat: |
| 551 ; CHECK: ucomiss |
| 552 ; CHECK: jb . |
| 553 |
| 554 define i32 @fcmpSelectUltDouble(double %a, double %b, i32 %c, i32 %d) { |
| 555 entry: |
| 556 %cmp = fcmp ult double %a, %b |
| 557 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 558 ret i32 %cmp.ret_ext |
| 559 } |
| 560 ; CHECK: fcmpSelectUltDouble: |
| 561 ; CHECK: ucomisd |
| 562 ; CHECK: jb . |
| 563 |
| 564 define i32 @fcmpSelectUleFloat(float %a, float %b, i32 %c, i32 %d) { |
| 565 entry: |
| 566 %cmp = fcmp ule float %a, %b |
| 567 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 568 ret i32 %cmp.ret_ext |
| 569 } |
| 570 ; CHECK: fcmpSelectUleFloat: |
| 571 ; CHECK: ucomiss |
| 572 ; CHECK: jbe . |
| 573 |
| 574 define i32 @fcmpSelectUleDouble(double %a, double %b, i32 %c, i32 %d) { |
| 575 entry: |
| 576 %cmp = fcmp ule double %a, %b |
| 577 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 578 ret i32 %cmp.ret_ext |
| 579 } |
| 580 ; CHECK: fcmpSelectUleDouble: |
| 581 ; CHECK: ucomisd |
| 582 ; CHECK: jbe . |
| 583 |
| 584 define i32 @fcmpSelectUneFloat(float %a, float %b, i32 %c, i32 %d) { |
| 585 entry: |
| 586 %cmp = fcmp une float %a, %b |
| 587 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 588 ret i32 %cmp.ret_ext |
| 589 } |
| 590 ; CHECK: fcmpSelectUneFloat: |
| 591 ; CHECK: ucomiss |
| 592 ; CHECK: je . |
| 593 ; CHECK: jnp . |
| 594 |
| 595 define i32 @fcmpSelectUneDouble(double %a, double %b, i32 %c, i32 %d) { |
| 596 entry: |
| 597 %cmp = fcmp une double %a, %b |
| 598 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 599 ret i32 %cmp.ret_ext |
| 600 } |
| 601 ; CHECK: fcmpSelectUneDouble: |
| 602 ; CHECK: ucomisd |
| 603 ; CHECK: je . |
| 604 ; CHECK: jnp . |
| 605 |
| 606 define i32 @fcmpSelectUnoFloat(float %a, float %b, i32 %c, i32 %d) { |
| 607 entry: |
| 608 %cmp = fcmp uno float %a, %b |
| 609 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 610 ret i32 %cmp.ret_ext |
| 611 } |
| 612 ; CHECK: fcmpSelectUnoFloat: |
| 613 ; CHECK: ucomiss |
| 614 ; CHECK: jp . |
| 615 |
| 616 define i32 @fcmpSelectUnoDouble(double %a, double %b, i32 %c, i32 %d) { |
| 617 entry: |
| 618 %cmp = fcmp uno double %a, %b |
| 619 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 620 ret i32 %cmp.ret_ext |
| 621 } |
| 622 ; CHECK: fcmpSelectUnoDouble: |
| 623 ; CHECK: ucomisd |
| 624 ; CHECK: jp . |
| 625 |
| 626 define i32 @fcmpSelectTrueFloat(float %a, float %b, i32 %c, i32 %d) { |
| 627 entry: |
| 628 %cmp = fcmp true float %a, %b |
| 629 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 630 ret i32 %cmp.ret_ext |
| 631 } |
| 632 ; CHECK: fcmpSelectTrueFloat: |
| 633 ; CHECK: mov {{.*}}, 1 |
| 634 |
| 635 define i32 @fcmpSelectTrueDouble(double %a, double %b, i32 %c, i32 %d) { |
| 636 entry: |
| 637 %cmp = fcmp true double %a, %b |
| 638 %cmp.ret_ext = select i1 %cmp, i32 %c, i32 %d |
| 639 ret i32 %cmp.ret_ext |
| 640 } |
| 641 ; CHECK: fcmpSelectTrueDouble: |
| 642 ; CHECK: mov {{.*}}, 1 |
| 643 |
| 324 define <4 x i32> @fcmpFalseVector(<4 x float> %a, <4 x float> %b) { | 644 define <4 x i32> @fcmpFalseVector(<4 x float> %a, <4 x float> %b) { |
| 325 entry: | 645 entry: |
| 326 %res.trunc = fcmp false <4 x float> %a, %b | 646 %res.trunc = fcmp false <4 x float> %a, %b |
| 327 %res = sext <4 x i1> %res.trunc to <4 x i32> | 647 %res = sext <4 x i1> %res.trunc to <4 x i32> |
| 328 ret <4 x i32> %res | 648 ret <4 x i32> %res |
| 329 ; CHECK-LABEL: fcmpFalseVector: | 649 ; CHECK-LABEL: fcmpFalseVector: |
| 330 ; CHECK: pxor | 650 ; CHECK: pxor |
| 331 } | 651 } |
| 332 | 652 |
| 333 define <4 x i32> @fcmpOeqVector(<4 x float> %a, <4 x float> %b) { | 653 define <4 x i32> @fcmpOeqVector(<4 x float> %a, <4 x float> %b) { |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 } | 781 } |
| 462 | 782 |
| 463 define <4 x i32> @fcmpUnoVector(<4 x float> %a, <4 x float> %b) { | 783 define <4 x i32> @fcmpUnoVector(<4 x float> %a, <4 x float> %b) { |
| 464 entry: | 784 entry: |
| 465 %res.trunc = fcmp uno <4 x float> %a, %b | 785 %res.trunc = fcmp uno <4 x float> %a, %b |
| 466 %res = sext <4 x i1> %res.trunc to <4 x i32> | 786 %res = sext <4 x i1> %res.trunc to <4 x i32> |
| 467 ret <4 x i32> %res | 787 ret <4 x i32> %res |
| 468 ; CHECK-LABEL: fcmpUnoVector: | 788 ; CHECK-LABEL: fcmpUnoVector: |
| 469 ; CHECK: cmpunordps | 789 ; CHECK: cmpunordps |
| 470 } | 790 } |
| OLD | NEW |