|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
2 | 2 | ; RUN: llc -mtriple=riscv32 -target-abi=ilp32d -mattr=+v,+zvfh -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH |
3 | 3 | ; RUN: llc -mtriple=riscv64 -target-abi=lp64d -mattr=+v,+zvfh -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFH |
4 | | -; RUN: llc -mtriple=riscv32 -target-abi=ilp32d -mattr=+v,+zvfhmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN,RV32-ZVFHMIN |
5 | | -; RUN: llc -mtriple=riscv64 -target-abi=lp64d -mattr=+v,+zvfhmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN,RV64-ZVFHMIN |
| 4 | +; RUN: llc -mtriple=riscv32 -target-abi=ilp32d -mattr=+v,+zvfhmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN |
| 5 | +; RUN: llc -mtriple=riscv64 -target-abi=lp64d -mattr=+v,+zvfhmin -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,ZVFHMIN |
6 | 6 |
|
7 | 7 | define void @fadd_v8f16(ptr %x, ptr %y) { |
8 | 8 | ; ZVFH-LABEL: fadd_v8f16: |
@@ -484,259 +484,15 @@ define void @fabs_v6f16(ptr %x) { |
484 | 484 | ; ZVFH-NEXT: vse16.v v8, (a0) |
485 | 485 | ; ZVFH-NEXT: ret |
486 | 486 | ; |
487 | | -; RV32-ZVFHMIN-LABEL: fabs_v6f16: |
488 | | -; RV32-ZVFHMIN: # %bb.0: |
489 | | -; RV32-ZVFHMIN-NEXT: addi sp, sp, -48 |
490 | | -; RV32-ZVFHMIN-NEXT: .cfi_def_cfa_offset 48 |
491 | | -; RV32-ZVFHMIN-NEXT: sw ra, 44(sp) # 4-byte Folded Spill |
492 | | -; RV32-ZVFHMIN-NEXT: sw s0, 40(sp) # 4-byte Folded Spill |
493 | | -; RV32-ZVFHMIN-NEXT: sw s1, 36(sp) # 4-byte Folded Spill |
494 | | -; RV32-ZVFHMIN-NEXT: fsd fs0, 24(sp) # 8-byte Folded Spill |
495 | | -; RV32-ZVFHMIN-NEXT: .cfi_offset ra, -4 |
496 | | -; RV32-ZVFHMIN-NEXT: .cfi_offset s0, -8 |
497 | | -; RV32-ZVFHMIN-NEXT: .cfi_offset s1, -12 |
498 | | -; RV32-ZVFHMIN-NEXT: .cfi_offset fs0, -24 |
499 | | -; RV32-ZVFHMIN-NEXT: csrr a1, vlenb |
500 | | -; RV32-ZVFHMIN-NEXT: slli a1, a1, 1 |
501 | | -; RV32-ZVFHMIN-NEXT: sub sp, sp, a1 |
502 | | -; RV32-ZVFHMIN-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x30, 0x22, 0x11, 0x02, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 48 + 2 * vlenb |
503 | | -; RV32-ZVFHMIN-NEXT: mv s0, a0 |
504 | | -; RV32-ZVFHMIN-NEXT: vsetivli zero, 6, e16, m1, ta, ma |
505 | | -; RV32-ZVFHMIN-NEXT: vle16.v v8, (a0) |
506 | | -; RV32-ZVFHMIN-NEXT: csrr a0, vlenb |
507 | | -; RV32-ZVFHMIN-NEXT: add a0, sp, a0 |
508 | | -; RV32-ZVFHMIN-NEXT: addi a0, a0, 16 |
509 | | -; RV32-ZVFHMIN-NEXT: vs1r.v v8, (a0) # Unknown-size Folded Spill |
510 | | -; RV32-ZVFHMIN-NEXT: vmv.x.s a0, v8 |
511 | | -; RV32-ZVFHMIN-NEXT: fmv.w.x fa0, a0 |
512 | | -; RV32-ZVFHMIN-NEXT: call __extendhfsf2 |
513 | | -; RV32-ZVFHMIN-NEXT: fmv.s fs0, fa0 |
514 | | -; RV32-ZVFHMIN-NEXT: csrr a0, vlenb |
515 | | -; RV32-ZVFHMIN-NEXT: add a0, sp, a0 |
516 | | -; RV32-ZVFHMIN-NEXT: addi a0, a0, 16 |
517 | | -; RV32-ZVFHMIN-NEXT: vl1r.v v8, (a0) # Unknown-size Folded Reload |
518 | | -; RV32-ZVFHMIN-NEXT: vsetivli zero, 1, e16, m1, ta, ma |
519 | | -; RV32-ZVFHMIN-NEXT: vslidedown.vi v8, v8, 1 |
520 | | -; RV32-ZVFHMIN-NEXT: vmv.x.s a0, v8 |
521 | | -; RV32-ZVFHMIN-NEXT: fmv.w.x fa0, a0 |
522 | | -; RV32-ZVFHMIN-NEXT: call __extendhfsf2 |
523 | | -; RV32-ZVFHMIN-NEXT: fabs.s fa0, fa0 |
524 | | -; RV32-ZVFHMIN-NEXT: call __truncsfhf2 |
525 | | -; RV32-ZVFHMIN-NEXT: fabs.s fa5, fs0 |
526 | | -; RV32-ZVFHMIN-NEXT: fmv.x.w s1, fa0 |
527 | | -; RV32-ZVFHMIN-NEXT: fmv.s fa0, fa5 |
528 | | -; RV32-ZVFHMIN-NEXT: call __truncsfhf2 |
529 | | -; RV32-ZVFHMIN-NEXT: fmv.x.w a0, fa0 |
530 | | -; RV32-ZVFHMIN-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
531 | | -; RV32-ZVFHMIN-NEXT: vmv.v.x v8, a0 |
532 | | -; RV32-ZVFHMIN-NEXT: vslide1down.vx v8, v8, s1 |
533 | | -; RV32-ZVFHMIN-NEXT: addi a0, sp, 16 |
534 | | -; RV32-ZVFHMIN-NEXT: vs1r.v v8, (a0) # Unknown-size Folded Spill |
535 | | -; RV32-ZVFHMIN-NEXT: csrr a0, vlenb |
536 | | -; RV32-ZVFHMIN-NEXT: add a0, sp, a0 |
537 | | -; RV32-ZVFHMIN-NEXT: addi a0, a0, 16 |
538 | | -; RV32-ZVFHMIN-NEXT: vl1r.v v8, (a0) # Unknown-size Folded Reload |
539 | | -; RV32-ZVFHMIN-NEXT: vslidedown.vi v8, v8, 2 |
540 | | -; RV32-ZVFHMIN-NEXT: vmv.x.s a0, v8 |
541 | | -; RV32-ZVFHMIN-NEXT: fmv.w.x fa0, a0 |
542 | | -; RV32-ZVFHMIN-NEXT: call __extendhfsf2 |
543 | | -; RV32-ZVFHMIN-NEXT: fabs.s fa0, fa0 |
544 | | -; RV32-ZVFHMIN-NEXT: call __truncsfhf2 |
545 | | -; RV32-ZVFHMIN-NEXT: fmv.x.w a0, fa0 |
546 | | -; RV32-ZVFHMIN-NEXT: addi a1, sp, 16 |
547 | | -; RV32-ZVFHMIN-NEXT: vl1r.v v8, (a1) # Unknown-size Folded Reload |
548 | | -; RV32-ZVFHMIN-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
549 | | -; RV32-ZVFHMIN-NEXT: vslide1down.vx v8, v8, a0 |
550 | | -; RV32-ZVFHMIN-NEXT: addi a0, sp, 16 |
551 | | -; RV32-ZVFHMIN-NEXT: vs1r.v v8, (a0) # Unknown-size Folded Spill |
552 | | -; RV32-ZVFHMIN-NEXT: csrr a0, vlenb |
553 | | -; RV32-ZVFHMIN-NEXT: add a0, sp, a0 |
554 | | -; RV32-ZVFHMIN-NEXT: addi a0, a0, 16 |
555 | | -; RV32-ZVFHMIN-NEXT: vl1r.v v8, (a0) # Unknown-size Folded Reload |
556 | | -; RV32-ZVFHMIN-NEXT: vslidedown.vi v8, v8, 3 |
557 | | -; RV32-ZVFHMIN-NEXT: vmv.x.s a0, v8 |
558 | | -; RV32-ZVFHMIN-NEXT: fmv.w.x fa0, a0 |
559 | | -; RV32-ZVFHMIN-NEXT: call __extendhfsf2 |
560 | | -; RV32-ZVFHMIN-NEXT: fabs.s fa0, fa0 |
561 | | -; RV32-ZVFHMIN-NEXT: call __truncsfhf2 |
562 | | -; RV32-ZVFHMIN-NEXT: fmv.x.w a0, fa0 |
563 | | -; RV32-ZVFHMIN-NEXT: addi a1, sp, 16 |
564 | | -; RV32-ZVFHMIN-NEXT: vl1r.v v8, (a1) # Unknown-size Folded Reload |
565 | | -; RV32-ZVFHMIN-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
566 | | -; RV32-ZVFHMIN-NEXT: vslide1down.vx v8, v8, a0 |
567 | | -; RV32-ZVFHMIN-NEXT: addi a0, sp, 16 |
568 | | -; RV32-ZVFHMIN-NEXT: vs1r.v v8, (a0) # Unknown-size Folded Spill |
569 | | -; RV32-ZVFHMIN-NEXT: csrr a0, vlenb |
570 | | -; RV32-ZVFHMIN-NEXT: add a0, sp, a0 |
571 | | -; RV32-ZVFHMIN-NEXT: addi a0, a0, 16 |
572 | | -; RV32-ZVFHMIN-NEXT: vl1r.v v8, (a0) # Unknown-size Folded Reload |
573 | | -; RV32-ZVFHMIN-NEXT: vslidedown.vi v8, v8, 4 |
574 | | -; RV32-ZVFHMIN-NEXT: vmv.x.s a0, v8 |
575 | | -; RV32-ZVFHMIN-NEXT: fmv.w.x fa0, a0 |
576 | | -; RV32-ZVFHMIN-NEXT: call __extendhfsf2 |
577 | | -; RV32-ZVFHMIN-NEXT: fabs.s fa0, fa0 |
578 | | -; RV32-ZVFHMIN-NEXT: call __truncsfhf2 |
579 | | -; RV32-ZVFHMIN-NEXT: fmv.x.w a0, fa0 |
580 | | -; RV32-ZVFHMIN-NEXT: addi a1, sp, 16 |
581 | | -; RV32-ZVFHMIN-NEXT: vl1r.v v8, (a1) # Unknown-size Folded Reload |
582 | | -; RV32-ZVFHMIN-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
583 | | -; RV32-ZVFHMIN-NEXT: vslide1down.vx v8, v8, a0 |
584 | | -; RV32-ZVFHMIN-NEXT: addi a0, sp, 16 |
585 | | -; RV32-ZVFHMIN-NEXT: vs1r.v v8, (a0) # Unknown-size Folded Spill |
586 | | -; RV32-ZVFHMIN-NEXT: csrr a0, vlenb |
587 | | -; RV32-ZVFHMIN-NEXT: add a0, sp, a0 |
588 | | -; RV32-ZVFHMIN-NEXT: addi a0, a0, 16 |
589 | | -; RV32-ZVFHMIN-NEXT: vl1r.v v8, (a0) # Unknown-size Folded Reload |
590 | | -; RV32-ZVFHMIN-NEXT: vslidedown.vi v8, v8, 5 |
591 | | -; RV32-ZVFHMIN-NEXT: vmv.x.s a0, v8 |
592 | | -; RV32-ZVFHMIN-NEXT: fmv.w.x fa0, a0 |
593 | | -; RV32-ZVFHMIN-NEXT: call __extendhfsf2 |
594 | | -; RV32-ZVFHMIN-NEXT: fabs.s fa0, fa0 |
595 | | -; RV32-ZVFHMIN-NEXT: call __truncsfhf2 |
596 | | -; RV32-ZVFHMIN-NEXT: fmv.x.w a0, fa0 |
597 | | -; RV32-ZVFHMIN-NEXT: addi a1, sp, 16 |
598 | | -; RV32-ZVFHMIN-NEXT: vl1r.v v8, (a1) # Unknown-size Folded Reload |
599 | | -; RV32-ZVFHMIN-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
600 | | -; RV32-ZVFHMIN-NEXT: vslide1down.vx v8, v8, a0 |
601 | | -; RV32-ZVFHMIN-NEXT: vsetivli zero, 6, e16, m1, ta, ma |
602 | | -; RV32-ZVFHMIN-NEXT: vslidedown.vi v8, v8, 2 |
603 | | -; RV32-ZVFHMIN-NEXT: vse16.v v8, (s0) |
604 | | -; RV32-ZVFHMIN-NEXT: csrr a0, vlenb |
605 | | -; RV32-ZVFHMIN-NEXT: slli a0, a0, 1 |
606 | | -; RV32-ZVFHMIN-NEXT: add sp, sp, a0 |
607 | | -; RV32-ZVFHMIN-NEXT: lw ra, 44(sp) # 4-byte Folded Reload |
608 | | -; RV32-ZVFHMIN-NEXT: lw s0, 40(sp) # 4-byte Folded Reload |
609 | | -; RV32-ZVFHMIN-NEXT: lw s1, 36(sp) # 4-byte Folded Reload |
610 | | -; RV32-ZVFHMIN-NEXT: fld fs0, 24(sp) # 8-byte Folded Reload |
611 | | -; RV32-ZVFHMIN-NEXT: addi sp, sp, 48 |
612 | | -; RV32-ZVFHMIN-NEXT: ret |
613 | | -; |
614 | | -; RV64-ZVFHMIN-LABEL: fabs_v6f16: |
615 | | -; RV64-ZVFHMIN: # %bb.0: |
616 | | -; RV64-ZVFHMIN-NEXT: addi sp, sp, -48 |
617 | | -; RV64-ZVFHMIN-NEXT: .cfi_def_cfa_offset 48 |
618 | | -; RV64-ZVFHMIN-NEXT: sd ra, 40(sp) # 8-byte Folded Spill |
619 | | -; RV64-ZVFHMIN-NEXT: sd s0, 32(sp) # 8-byte Folded Spill |
620 | | -; RV64-ZVFHMIN-NEXT: sd s1, 24(sp) # 8-byte Folded Spill |
621 | | -; RV64-ZVFHMIN-NEXT: fsd fs0, 16(sp) # 8-byte Folded Spill |
622 | | -; RV64-ZVFHMIN-NEXT: .cfi_offset ra, -8 |
623 | | -; RV64-ZVFHMIN-NEXT: .cfi_offset s0, -16 |
624 | | -; RV64-ZVFHMIN-NEXT: .cfi_offset s1, -24 |
625 | | -; RV64-ZVFHMIN-NEXT: .cfi_offset fs0, -32 |
626 | | -; RV64-ZVFHMIN-NEXT: csrr a1, vlenb |
627 | | -; RV64-ZVFHMIN-NEXT: slli a1, a1, 1 |
628 | | -; RV64-ZVFHMIN-NEXT: sub sp, sp, a1 |
629 | | -; RV64-ZVFHMIN-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x30, 0x22, 0x11, 0x02, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 48 + 2 * vlenb |
630 | | -; RV64-ZVFHMIN-NEXT: mv s0, a0 |
631 | | -; RV64-ZVFHMIN-NEXT: vsetivli zero, 6, e16, m1, ta, ma |
632 | | -; RV64-ZVFHMIN-NEXT: vle16.v v8, (a0) |
633 | | -; RV64-ZVFHMIN-NEXT: csrr a0, vlenb |
634 | | -; RV64-ZVFHMIN-NEXT: add a0, sp, a0 |
635 | | -; RV64-ZVFHMIN-NEXT: addi a0, a0, 16 |
636 | | -; RV64-ZVFHMIN-NEXT: vs1r.v v8, (a0) # Unknown-size Folded Spill |
637 | | -; RV64-ZVFHMIN-NEXT: vmv.x.s a0, v8 |
638 | | -; RV64-ZVFHMIN-NEXT: fmv.w.x fa0, a0 |
639 | | -; RV64-ZVFHMIN-NEXT: call __extendhfsf2 |
640 | | -; RV64-ZVFHMIN-NEXT: fmv.s fs0, fa0 |
641 | | -; RV64-ZVFHMIN-NEXT: csrr a0, vlenb |
642 | | -; RV64-ZVFHMIN-NEXT: add a0, sp, a0 |
643 | | -; RV64-ZVFHMIN-NEXT: addi a0, a0, 16 |
644 | | -; RV64-ZVFHMIN-NEXT: vl1r.v v8, (a0) # Unknown-size Folded Reload |
645 | | -; RV64-ZVFHMIN-NEXT: vsetivli zero, 1, e16, m1, ta, ma |
646 | | -; RV64-ZVFHMIN-NEXT: vslidedown.vi v8, v8, 1 |
647 | | -; RV64-ZVFHMIN-NEXT: vmv.x.s a0, v8 |
648 | | -; RV64-ZVFHMIN-NEXT: fmv.w.x fa0, a0 |
649 | | -; RV64-ZVFHMIN-NEXT: call __extendhfsf2 |
650 | | -; RV64-ZVFHMIN-NEXT: fabs.s fa0, fa0 |
651 | | -; RV64-ZVFHMIN-NEXT: call __truncsfhf2 |
652 | | -; RV64-ZVFHMIN-NEXT: fabs.s fa5, fs0 |
653 | | -; RV64-ZVFHMIN-NEXT: fmv.x.w s1, fa0 |
654 | | -; RV64-ZVFHMIN-NEXT: fmv.s fa0, fa5 |
655 | | -; RV64-ZVFHMIN-NEXT: call __truncsfhf2 |
656 | | -; RV64-ZVFHMIN-NEXT: fmv.x.w a0, fa0 |
657 | | -; RV64-ZVFHMIN-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
658 | | -; RV64-ZVFHMIN-NEXT: vmv.v.x v8, a0 |
659 | | -; RV64-ZVFHMIN-NEXT: vslide1down.vx v8, v8, s1 |
660 | | -; RV64-ZVFHMIN-NEXT: addi a0, sp, 16 |
661 | | -; RV64-ZVFHMIN-NEXT: vs1r.v v8, (a0) # Unknown-size Folded Spill |
662 | | -; RV64-ZVFHMIN-NEXT: csrr a0, vlenb |
663 | | -; RV64-ZVFHMIN-NEXT: add a0, sp, a0 |
664 | | -; RV64-ZVFHMIN-NEXT: addi a0, a0, 16 |
665 | | -; RV64-ZVFHMIN-NEXT: vl1r.v v8, (a0) # Unknown-size Folded Reload |
666 | | -; RV64-ZVFHMIN-NEXT: vslidedown.vi v8, v8, 2 |
667 | | -; RV64-ZVFHMIN-NEXT: vmv.x.s a0, v8 |
668 | | -; RV64-ZVFHMIN-NEXT: fmv.w.x fa0, a0 |
669 | | -; RV64-ZVFHMIN-NEXT: call __extendhfsf2 |
670 | | -; RV64-ZVFHMIN-NEXT: fabs.s fa0, fa0 |
671 | | -; RV64-ZVFHMIN-NEXT: call __truncsfhf2 |
672 | | -; RV64-ZVFHMIN-NEXT: fmv.x.w a0, fa0 |
673 | | -; RV64-ZVFHMIN-NEXT: addi a1, sp, 16 |
674 | | -; RV64-ZVFHMIN-NEXT: vl1r.v v8, (a1) # Unknown-size Folded Reload |
675 | | -; RV64-ZVFHMIN-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
676 | | -; RV64-ZVFHMIN-NEXT: vslide1down.vx v8, v8, a0 |
677 | | -; RV64-ZVFHMIN-NEXT: addi a0, sp, 16 |
678 | | -; RV64-ZVFHMIN-NEXT: vs1r.v v8, (a0) # Unknown-size Folded Spill |
679 | | -; RV64-ZVFHMIN-NEXT: csrr a0, vlenb |
680 | | -; RV64-ZVFHMIN-NEXT: add a0, sp, a0 |
681 | | -; RV64-ZVFHMIN-NEXT: addi a0, a0, 16 |
682 | | -; RV64-ZVFHMIN-NEXT: vl1r.v v8, (a0) # Unknown-size Folded Reload |
683 | | -; RV64-ZVFHMIN-NEXT: vslidedown.vi v8, v8, 3 |
684 | | -; RV64-ZVFHMIN-NEXT: vmv.x.s a0, v8 |
685 | | -; RV64-ZVFHMIN-NEXT: fmv.w.x fa0, a0 |
686 | | -; RV64-ZVFHMIN-NEXT: call __extendhfsf2 |
687 | | -; RV64-ZVFHMIN-NEXT: fabs.s fa0, fa0 |
688 | | -; RV64-ZVFHMIN-NEXT: call __truncsfhf2 |
689 | | -; RV64-ZVFHMIN-NEXT: fmv.x.w a0, fa0 |
690 | | -; RV64-ZVFHMIN-NEXT: addi a1, sp, 16 |
691 | | -; RV64-ZVFHMIN-NEXT: vl1r.v v8, (a1) # Unknown-size Folded Reload |
692 | | -; RV64-ZVFHMIN-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
693 | | -; RV64-ZVFHMIN-NEXT: vslide1down.vx v8, v8, a0 |
694 | | -; RV64-ZVFHMIN-NEXT: addi a0, sp, 16 |
695 | | -; RV64-ZVFHMIN-NEXT: vs1r.v v8, (a0) # Unknown-size Folded Spill |
696 | | -; RV64-ZVFHMIN-NEXT: csrr a0, vlenb |
697 | | -; RV64-ZVFHMIN-NEXT: add a0, sp, a0 |
698 | | -; RV64-ZVFHMIN-NEXT: addi a0, a0, 16 |
699 | | -; RV64-ZVFHMIN-NEXT: vl1r.v v8, (a0) # Unknown-size Folded Reload |
700 | | -; RV64-ZVFHMIN-NEXT: vslidedown.vi v8, v8, 4 |
701 | | -; RV64-ZVFHMIN-NEXT: vmv.x.s a0, v8 |
702 | | -; RV64-ZVFHMIN-NEXT: fmv.w.x fa0, a0 |
703 | | -; RV64-ZVFHMIN-NEXT: call __extendhfsf2 |
704 | | -; RV64-ZVFHMIN-NEXT: fabs.s fa0, fa0 |
705 | | -; RV64-ZVFHMIN-NEXT: call __truncsfhf2 |
706 | | -; RV64-ZVFHMIN-NEXT: fmv.x.w a0, fa0 |
707 | | -; RV64-ZVFHMIN-NEXT: addi a1, sp, 16 |
708 | | -; RV64-ZVFHMIN-NEXT: vl1r.v v8, (a1) # Unknown-size Folded Reload |
709 | | -; RV64-ZVFHMIN-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
710 | | -; RV64-ZVFHMIN-NEXT: vslide1down.vx v8, v8, a0 |
711 | | -; RV64-ZVFHMIN-NEXT: addi a0, sp, 16 |
712 | | -; RV64-ZVFHMIN-NEXT: vs1r.v v8, (a0) # Unknown-size Folded Spill |
713 | | -; RV64-ZVFHMIN-NEXT: csrr a0, vlenb |
714 | | -; RV64-ZVFHMIN-NEXT: add a0, sp, a0 |
715 | | -; RV64-ZVFHMIN-NEXT: addi a0, a0, 16 |
716 | | -; RV64-ZVFHMIN-NEXT: vl1r.v v8, (a0) # Unknown-size Folded Reload |
717 | | -; RV64-ZVFHMIN-NEXT: vslidedown.vi v8, v8, 5 |
718 | | -; RV64-ZVFHMIN-NEXT: vmv.x.s a0, v8 |
719 | | -; RV64-ZVFHMIN-NEXT: fmv.w.x fa0, a0 |
720 | | -; RV64-ZVFHMIN-NEXT: call __extendhfsf2 |
721 | | -; RV64-ZVFHMIN-NEXT: fabs.s fa0, fa0 |
722 | | -; RV64-ZVFHMIN-NEXT: call __truncsfhf2 |
723 | | -; RV64-ZVFHMIN-NEXT: fmv.x.w a0, fa0 |
724 | | -; RV64-ZVFHMIN-NEXT: addi a1, sp, 16 |
725 | | -; RV64-ZVFHMIN-NEXT: vl1r.v v8, (a1) # Unknown-size Folded Reload |
726 | | -; RV64-ZVFHMIN-NEXT: vsetivli zero, 8, e16, m1, ta, ma |
727 | | -; RV64-ZVFHMIN-NEXT: vslide1down.vx v8, v8, a0 |
728 | | -; RV64-ZVFHMIN-NEXT: vsetivli zero, 6, e16, m1, ta, ma |
729 | | -; RV64-ZVFHMIN-NEXT: vslidedown.vi v8, v8, 2 |
730 | | -; RV64-ZVFHMIN-NEXT: vse16.v v8, (s0) |
731 | | -; RV64-ZVFHMIN-NEXT: csrr a0, vlenb |
732 | | -; RV64-ZVFHMIN-NEXT: slli a0, a0, 1 |
733 | | -; RV64-ZVFHMIN-NEXT: add sp, sp, a0 |
734 | | -; RV64-ZVFHMIN-NEXT: ld ra, 40(sp) # 8-byte Folded Reload |
735 | | -; RV64-ZVFHMIN-NEXT: ld s0, 32(sp) # 8-byte Folded Reload |
736 | | -; RV64-ZVFHMIN-NEXT: ld s1, 24(sp) # 8-byte Folded Reload |
737 | | -; RV64-ZVFHMIN-NEXT: fld fs0, 16(sp) # 8-byte Folded Reload |
738 | | -; RV64-ZVFHMIN-NEXT: addi sp, sp, 48 |
739 | | -; RV64-ZVFHMIN-NEXT: ret |
| 487 | +; ZVFHMIN-LABEL: fabs_v6f16: |
| 488 | +; ZVFHMIN: # %bb.0: |
| 489 | +; ZVFHMIN-NEXT: vsetivli zero, 6, e16, m1, ta, ma |
| 490 | +; ZVFHMIN-NEXT: vle16.v v8, (a0) |
| 491 | +; ZVFHMIN-NEXT: lui a1, 8 |
| 492 | +; ZVFHMIN-NEXT: addi a1, a1, -1 |
| 493 | +; ZVFHMIN-NEXT: vand.vx v8, v8, a1 |
| 494 | +; ZVFHMIN-NEXT: vse16.v v8, (a0) |
| 495 | +; ZVFHMIN-NEXT: ret |
740 | 496 | %a = load <6 x half>, ptr %x |
741 | 497 | %b = call <6 x half> @llvm.fabs.v6f16(<6 x half> %a) |
742 | 498 | store <6 x half> %b, ptr %x |
|
0 commit comments