|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 |
| -; RUN: llc -mtriple=riscv64 -mattr=+m,+f,+d,+a,+c,+v \ |
3 |
| -; RUN: -target-abi=lp64d -verify-machineinstrs -O2 < %s | FileCheck %s |
| 2 | +; RUN: llc -mtriple=riscv64 -mattr=+m,+f,+d,+a,+c,+v -verify-machineinstrs -O2 < %s | FileCheck %s --check-prefixes=CHECK,NOMINVL |
| 3 | +; RUN: llc -mtriple=riscv64 -mattr=+m,+f,+d,+a,+c,+v,+minimize-vl -verify-machineinstrs -O2 < %s | FileCheck %s --check-prefixes=CHECK,MINVL |
4 | 4 |
|
5 | 5 | declare i64 @llvm.riscv.vsetvli(i64, i64, i64)
|
6 | 6 | declare i64 @llvm.riscv.vsetvlimax(i64, i64)
|
@@ -722,3 +722,92 @@ define i64 @avl_undef2() {
|
722 | 722 | %1 = tail call i64 @llvm.riscv.vsetvli(i64 poison, i64 2, i64 7)
|
723 | 723 | ret i64 %1
|
724 | 724 | }
|
| 725 | + |
| 726 | +define <vscale x 1 x i64> @vslideup_vl1(<vscale x 1 x i64> %a) nounwind { |
| 727 | +; CHECK-LABEL: vslideup_vl1: |
| 728 | +; CHECK: # %bb.0: # %entry |
| 729 | +; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma |
| 730 | +; CHECK-NEXT: vslideup.vi v9, v8, 1 |
| 731 | +; CHECK-NEXT: vadd.vv v8, v9, v9 |
| 732 | +; CHECK-NEXT: ret |
| 733 | +entry: |
| 734 | + %1 = tail call <vscale x 1 x i64> @llvm.riscv.vslideup( |
| 735 | + <vscale x 1 x i64> poison, |
| 736 | + <vscale x 1 x i64> %a, |
| 737 | + i64 1, |
| 738 | + i64 1, |
| 739 | + i64 3) |
| 740 | + %2 = tail call <vscale x 1 x i64> @llvm.riscv.vadd( |
| 741 | + <vscale x 1 x i64> poison, |
| 742 | + <vscale x 1 x i64> %1, |
| 743 | + <vscale x 1 x i64> %1, |
| 744 | + i64 2) |
| 745 | + ret <vscale x 1 x i64> %2 |
| 746 | +} |
| 747 | + |
| 748 | +define <vscale x 1 x i64> @vslidedown_vl1(<vscale x 1 x i64> %a) nounwind { |
| 749 | +; CHECK-LABEL: vslidedown_vl1: |
| 750 | +; CHECK: # %bb.0: # %entry |
| 751 | +; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma |
| 752 | +; CHECK-NEXT: vslidedown.vi v8, v8, 1 |
| 753 | +; CHECK-NEXT: vadd.vv v8, v8, v8 |
| 754 | +; CHECK-NEXT: ret |
| 755 | +entry: |
| 756 | + %1 = tail call <vscale x 1 x i64> @llvm.riscv.vslidedown( |
| 757 | + <vscale x 1 x i64> poison, |
| 758 | + <vscale x 1 x i64> %a, |
| 759 | + i64 1, |
| 760 | + i64 1, |
| 761 | + i64 3) |
| 762 | + %2 = tail call <vscale x 1 x i64> @llvm.riscv.vadd( |
| 763 | + <vscale x 1 x i64> poison, |
| 764 | + <vscale x 1 x i64> %1, |
| 765 | + <vscale x 1 x i64> %1, |
| 766 | + i64 2) |
| 767 | + ret <vscale x 1 x i64> %2 |
| 768 | +} |
| 769 | + |
| 770 | + |
| 771 | +define <vscale x 1 x i64> @vmv.v.x_vl1() nounwind { |
| 772 | +; CHECK-LABEL: vmv.v.x_vl1: |
| 773 | +; CHECK: # %bb.0: # %entry |
| 774 | +; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma |
| 775 | +; CHECK-NEXT: vmv.v.i v8, 1 |
| 776 | +; CHECK-NEXT: vadd.vv v8, v8, v8 |
| 777 | +; CHECK-NEXT: ret |
| 778 | +entry: |
| 779 | + %1 = tail call <vscale x 1 x i64> @llvm.riscv.vmv.v.x( |
| 780 | + <vscale x 1 x i64> poison, |
| 781 | + i64 1, |
| 782 | + i64 1) |
| 783 | + %2 = tail call <vscale x 1 x i64> @llvm.riscv.vadd( |
| 784 | + <vscale x 1 x i64> poison, |
| 785 | + <vscale x 1 x i64> %1, |
| 786 | + <vscale x 1 x i64> %1, |
| 787 | + i64 2) |
| 788 | + ret <vscale x 1 x i64> %2 |
| 789 | +} |
| 790 | + |
| 791 | +define <vscale x 1 x double> @vfmv.v.f_vl1(double %f) nounwind { |
| 792 | +; CHECK-LABEL: vfmv.v.f_vl1: |
| 793 | +; CHECK: # %bb.0: # %entry |
| 794 | +; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma |
| 795 | +; CHECK-NEXT: vfmv.s.f v8, fa0 |
| 796 | +; CHECK-NEXT: vfadd.vv v8, v8, v8 |
| 797 | +; CHECK-NEXT: ret |
| 798 | +entry: |
| 799 | + %1 = tail call <vscale x 1 x double> @llvm.riscv.vfmv.v.f( |
| 800 | + <vscale x 1 x double> poison, |
| 801 | + double %f, |
| 802 | + i64 1) |
| 803 | + %2 = tail call <vscale x 1 x double> @llvm.riscv.vfadd( |
| 804 | + <vscale x 1 x double> poison, |
| 805 | + <vscale x 1 x double> %1, |
| 806 | + <vscale x 1 x double> %1, |
| 807 | + i64 7, |
| 808 | + i64 2) |
| 809 | + ret <vscale x 1 x double> %2 |
| 810 | +} |
| 811 | +;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: |
| 812 | +; MINVL: {{.*}} |
| 813 | +; NOMINVL: {{.*}} |
0 commit comments