|
1 |
| -; RUN: llc < %s -march=arm64 -aarch64-neon-syntax=apple | FileCheck %s |
| 1 | +; RUN: llc < %s -march=arm64 -mcpu=cyclone -aarch64-neon-syntax=apple | FileCheck %s |
| 2 | +; RUN: llc < %s -march=arm64 -mcpu=cortex-a57 | FileCheck --check-prefix=CHECK-A57 %s |
2 | 3 | ; rdar://13082402
|
3 | 4 |
|
4 | 5 | define float @t1(i32* nocapture %src) nounwind ssp {
|
@@ -409,6 +410,10 @@ define float @sfct1(i8* nocapture %sp0) {
|
409 | 410 | ; CHECK-NEXT: sshll.4s v[[SEXTREG:[0-9]+]], [[SEXTREG1]], #0
|
410 | 411 | ; CHECK: scvtf [[REG:s[0-9]+]], s[[SEXTREG]]
|
411 | 412 | ; CHECK-NEXT: fmul s0, [[REG]], [[REG]]
|
| 413 | +; CHECK-A57-LABEL: sfct1: |
| 414 | +; CHECK-A57: ldrsb w[[REGNUM:[0-9]+]], [x0, #1] |
| 415 | +; CHECK-A57-NEXT: scvtf [[REG:s[0-9]+]], w[[REGNUM]] |
| 416 | +; CHECK-A57-NEXT: fmul s0, [[REG]], [[REG]] |
412 | 417 | entry:
|
413 | 418 | %addr = getelementptr i8* %sp0, i64 1
|
414 | 419 | %pix_sp0.0.copyload = load i8* %addr, align 1
|
@@ -466,6 +471,10 @@ define float @sfct5(i8* nocapture %sp0, i64 %offset) {
|
466 | 471 | ; CHECK-NEXT: sshll.4s v[[SEXTREG:[0-9]+]], [[SEXTREG1]], #0
|
467 | 472 | ; CHECK: scvtf [[REG:s[0-9]+]], s[[SEXTREG]]
|
468 | 473 | ; CHECK-NEXT: fmul s0, [[REG]], [[REG]]
|
| 474 | +; CHECK-A57-LABEL: sfct5: |
| 475 | +; CHECK-A57: ldrsb w[[REGNUM:[0-9]+]], [x0, x1] |
| 476 | +; CHECK-A57-NEXT: scvtf [[REG:s[0-9]+]], w[[REGNUM]] |
| 477 | +; CHECK-A57-NEXT: fmul s0, [[REG]], [[REG]] |
469 | 478 | entry:
|
470 | 479 | %addr = getelementptr i8* %sp0, i64 %offset
|
471 | 480 | %pix_sp0.0.copyload = load i8* %addr, align 1
|
@@ -536,6 +545,10 @@ define double @sfct10(i16* nocapture %sp0) {
|
536 | 545 | ; CHECK-NEXT: sshll.2d v[[SEXTREG:[0-9]+]], [[SEXTREG1]], #0
|
537 | 546 | ; CHECK: scvtf [[REG:d[0-9]+]], d[[SEXTREG]]
|
538 | 547 | ; CHECK-NEXT: fmul d0, [[REG]], [[REG]]
|
| 548 | +; CHECK-A57-LABEL: sfct10: |
| 549 | +; CHECK-A57: ldrsh w[[REGNUM:[0-9]+]], [x0, #2] |
| 550 | +; CHECK-A57-NEXT: scvtf [[REG:d[0-9]+]], w[[REGNUM]] |
| 551 | +; CHECK-A57-NEXT: fmul d0, [[REG]], [[REG]] |
539 | 552 | entry:
|
540 | 553 | %addr = getelementptr i16* %sp0, i64 1
|
541 | 554 | %pix_sp0.0.copyload = load i16* %addr, align 1
|
@@ -592,6 +605,10 @@ define double @sfct14(i16* nocapture %sp0, i64 %offset) {
|
592 | 605 | ; CHECK-NEXT: sshll.2d v[[SEXTREG:[0-9]+]], [[SEXTREG1]], #0
|
593 | 606 | ; CHECK: scvtf [[REG:d[0-9]+]], d[[SEXTREG]]
|
594 | 607 | ; CHECK-NEXT: fmul d0, [[REG]], [[REG]]
|
| 608 | +; CHECK-A57-LABEL: sfct14: |
| 609 | +; CHECK-A57: ldrsh w[[REGNUM:[0-9]+]], [x0, x1, lsl #1] |
| 610 | +; CHECK-A57-NEXT: scvtf [[REG:d[0-9]+]], w[[REGNUM]] |
| 611 | +; CHECK-A57-NEXT: fmul d0, [[REG]], [[REG]] |
595 | 612 | entry:
|
596 | 613 | %addr = getelementptr i16* %sp0, i64 %offset
|
597 | 614 | %pix_sp0.0.copyload = load i16* %addr, align 1
|
@@ -636,6 +653,10 @@ entry:
|
636 | 653 | ; CHECK-NEXT: sshll.4s v[[SEXTREG:[0-9]+]], [[SEXTREG1]], #0
|
637 | 654 | ; CHECK: scvtf [[REG:s[0-9]+]], s[[SEXTREG]]
|
638 | 655 | ; CHECK-NEXT: fmul s0, [[REG]], [[REG]]
|
| 656 | +; CHECK-A57-LABEL: sfct17: |
| 657 | +; CHECK-A57: ldursb w[[REGNUM:[0-9]+]], [x0, #-1] |
| 658 | +; CHECK-A57-NEXT: scvtf [[REG:s[0-9]+]], w[[REGNUM]] |
| 659 | +; CHECK-A57-NEXT: fmul s0, [[REG]], [[REG]] |
639 | 660 | %bitcast = ptrtoint i8* %sp0 to i64
|
640 | 661 | %add = add i64 %bitcast, -1
|
641 | 662 | %addr = inttoptr i64 %add to i8*
|
@@ -713,6 +734,10 @@ define double @sfct22(i16* nocapture %sp0) {
|
713 | 734 | ; CHECK-NEXT: sshll.2d v[[SEXTREG:[0-9]+]], [[SEXTREG1]], #0
|
714 | 735 | ; CHECK: scvtf [[REG:d[0-9]+]], d[[SEXTREG]]
|
715 | 736 | ; CHECK-NEXT: fmul d0, [[REG]], [[REG]]
|
| 737 | +; CHECK-A57-LABEL: sfct22: |
| 738 | +; CHECK-A57: ldursh w[[REGNUM:[0-9]+]], [x0, #1] |
| 739 | +; CHECK-A57-NEXT: scvtf [[REG:d[0-9]+]], w[[REGNUM]] |
| 740 | +; CHECK-A57-NEXT: fmul d0, [[REG]], [[REG]] |
716 | 741 | %bitcast = ptrtoint i16* %sp0 to i64
|
717 | 742 | %add = add i64 %bitcast, 1
|
718 | 743 | %addr = inttoptr i64 %add to i16*
|
|
0 commit comments