You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: llvm/test/CodeGen/RISCV/rvv/vl-opt-instrs.ll
+176Lines changed: 176 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -3595,3 +3595,179 @@ define <vscale x 4 x i32> @vmerge_vim(<vscale x 4 x i32> %a, <vscale x 4 x i1> %
3595
3595
%2 = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %1, iXLen %vl)
3596
3596
ret <vscale x 4 x i32> %2
3597
3597
}
3598
+
3599
+
define <vscale x 4 x i32> @vaadd_vv(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen %vl) {
3600
+
; NOVLOPT-LABEL: vaadd_vv:
3601
+
; NOVLOPT: # %bb.0:
3602
+
; NOVLOPT-NEXT: csrwi vxrm, 0
3603
+
; NOVLOPT-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3604
+
; NOVLOPT-NEXT: vaadd.vv v8, v8, v10
3605
+
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3606
+
; NOVLOPT-NEXT: vadd.vv v8, v8, v10
3607
+
; NOVLOPT-NEXT: ret
3608
+
;
3609
+
; VLOPT-LABEL: vaadd_vv:
3610
+
; VLOPT: # %bb.0:
3611
+
; VLOPT-NEXT: csrwi vxrm, 0
3612
+
; VLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3613
+
; VLOPT-NEXT: vaadd.vv v8, v8, v10
3614
+
; VLOPT-NEXT: vadd.vv v8, v8, v10
3615
+
; VLOPT-NEXT: ret
3616
+
%1 = call <vscale x 4 x i32> @llvm.riscv.vaadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen 0, iXLen -1)
3617
+
%2 = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %b, iXLen %vl)
3618
+
ret <vscale x 4 x i32> %2
3619
+
}
3620
+
3621
+
define <vscale x 4 x i32> @vaadd_vx(<vscale x 4 x i32> %a, i32%b, iXLen %vl) {
3622
+
; NOVLOPT-LABEL: vaadd_vx:
3623
+
; NOVLOPT: # %bb.0:
3624
+
; NOVLOPT-NEXT: csrwi vxrm, 0
3625
+
; NOVLOPT-NEXT: vsetvli a2, zero, e32, m2, ta, ma
3626
+
; NOVLOPT-NEXT: vaadd.vx v10, v8, a0
3627
+
; NOVLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
3628
+
; NOVLOPT-NEXT: vadd.vv v8, v10, v8
3629
+
; NOVLOPT-NEXT: ret
3630
+
;
3631
+
; VLOPT-LABEL: vaadd_vx:
3632
+
; VLOPT: # %bb.0:
3633
+
; VLOPT-NEXT: csrwi vxrm, 0
3634
+
; VLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
3635
+
; VLOPT-NEXT: vaadd.vx v10, v8, a0
3636
+
; VLOPT-NEXT: vadd.vv v8, v10, v8
3637
+
; VLOPT-NEXT: ret
3638
+
%1 = call <vscale x 4 x i32> @llvm.riscv.vaadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, i32%b, iXLen 0, iXLen -1)
3639
+
%2 = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %a, iXLen %vl)
3640
+
ret <vscale x 4 x i32> %2
3641
+
}
3642
+
3643
+
define <vscale x 4 x i32> @vasub_vv(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen %vl) {
3644
+
; NOVLOPT-LABEL: vasub_vv:
3645
+
; NOVLOPT: # %bb.0:
3646
+
; NOVLOPT-NEXT: csrwi vxrm, 0
3647
+
; NOVLOPT-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3648
+
; NOVLOPT-NEXT: vasub.vv v8, v8, v10
3649
+
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3650
+
; NOVLOPT-NEXT: vadd.vv v8, v8, v10
3651
+
; NOVLOPT-NEXT: ret
3652
+
;
3653
+
; VLOPT-LABEL: vasub_vv:
3654
+
; VLOPT: # %bb.0:
3655
+
; VLOPT-NEXT: csrwi vxrm, 0
3656
+
; VLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3657
+
; VLOPT-NEXT: vasub.vv v8, v8, v10
3658
+
; VLOPT-NEXT: vadd.vv v8, v8, v10
3659
+
; VLOPT-NEXT: ret
3660
+
%1 = call <vscale x 4 x i32> @llvm.riscv.vasub.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen 0, iXLen -1)
3661
+
%2 = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %b, iXLen %vl)
3662
+
ret <vscale x 4 x i32> %2
3663
+
}
3664
+
3665
+
define <vscale x 4 x i32> @vasub_vx(<vscale x 4 x i32> %a, i32%b, iXLen %vl) {
3666
+
; NOVLOPT-LABEL: vasub_vx:
3667
+
; NOVLOPT: # %bb.0:
3668
+
; NOVLOPT-NEXT: csrwi vxrm, 0
3669
+
; NOVLOPT-NEXT: vsetvli a2, zero, e32, m2, ta, ma
3670
+
; NOVLOPT-NEXT: vasub.vx v10, v8, a0
3671
+
; NOVLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
3672
+
; NOVLOPT-NEXT: vadd.vv v8, v10, v8
3673
+
; NOVLOPT-NEXT: ret
3674
+
;
3675
+
; VLOPT-LABEL: vasub_vx:
3676
+
; VLOPT: # %bb.0:
3677
+
; VLOPT-NEXT: csrwi vxrm, 0
3678
+
; VLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
3679
+
; VLOPT-NEXT: vasub.vx v10, v8, a0
3680
+
; VLOPT-NEXT: vadd.vv v8, v10, v8
3681
+
; VLOPT-NEXT: ret
3682
+
%1 = call <vscale x 4 x i32> @llvm.riscv.vasub.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, i32%b, iXLen 0, iXLen -1)
3683
+
%2 = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %a, iXLen %vl)
3684
+
ret <vscale x 4 x i32> %2
3685
+
}
3686
+
3687
+
define <vscale x 4 x i32> @vaaddu_vv(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen %vl) {
3688
+
; NOVLOPT-LABEL: vaaddu_vv:
3689
+
; NOVLOPT: # %bb.0:
3690
+
; NOVLOPT-NEXT: csrwi vxrm, 0
3691
+
; NOVLOPT-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3692
+
; NOVLOPT-NEXT: vaaddu.vv v8, v8, v10
3693
+
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3694
+
; NOVLOPT-NEXT: vadd.vv v8, v8, v10
3695
+
; NOVLOPT-NEXT: ret
3696
+
;
3697
+
; VLOPT-LABEL: vaaddu_vv:
3698
+
; VLOPT: # %bb.0:
3699
+
; VLOPT-NEXT: csrwi vxrm, 0
3700
+
; VLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3701
+
; VLOPT-NEXT: vaaddu.vv v8, v8, v10
3702
+
; VLOPT-NEXT: vadd.vv v8, v8, v10
3703
+
; VLOPT-NEXT: ret
3704
+
%1 = call <vscale x 4 x i32> @llvm.riscv.vaaddu.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen 0, iXLen -1)
3705
+
%2 = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %b, iXLen %vl)
3706
+
ret <vscale x 4 x i32> %2
3707
+
}
3708
+
3709
+
define <vscale x 4 x i32> @vaaddu_vx(<vscale x 4 x i32> %a, i32%b, iXLen %vl) {
3710
+
; NOVLOPT-LABEL: vaaddu_vx:
3711
+
; NOVLOPT: # %bb.0:
3712
+
; NOVLOPT-NEXT: csrwi vxrm, 0
3713
+
; NOVLOPT-NEXT: vsetvli a2, zero, e32, m2, ta, ma
3714
+
; NOVLOPT-NEXT: vaaddu.vx v10, v8, a0
3715
+
; NOVLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
3716
+
; NOVLOPT-NEXT: vadd.vv v8, v10, v8
3717
+
; NOVLOPT-NEXT: ret
3718
+
;
3719
+
; VLOPT-LABEL: vaaddu_vx:
3720
+
; VLOPT: # %bb.0:
3721
+
; VLOPT-NEXT: csrwi vxrm, 0
3722
+
; VLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
3723
+
; VLOPT-NEXT: vaaddu.vx v10, v8, a0
3724
+
; VLOPT-NEXT: vadd.vv v8, v10, v8
3725
+
; VLOPT-NEXT: ret
3726
+
%1 = call <vscale x 4 x i32> @llvm.riscv.vaaddu.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, i32%b, iXLen 0, iXLen -1)
3727
+
%2 = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %a, iXLen %vl)
3728
+
ret <vscale x 4 x i32> %2
3729
+
}
3730
+
3731
+
define <vscale x 4 x i32> @vasubu_vv(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen %vl) {
3732
+
; NOVLOPT-LABEL: vasubu_vv:
3733
+
; NOVLOPT: # %bb.0:
3734
+
; NOVLOPT-NEXT: csrwi vxrm, 0
3735
+
; NOVLOPT-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3736
+
; NOVLOPT-NEXT: vasubu.vv v8, v8, v10
3737
+
; NOVLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3738
+
; NOVLOPT-NEXT: vadd.vv v8, v8, v10
3739
+
; NOVLOPT-NEXT: ret
3740
+
;
3741
+
; VLOPT-LABEL: vasubu_vv:
3742
+
; VLOPT: # %bb.0:
3743
+
; VLOPT-NEXT: csrwi vxrm, 0
3744
+
; VLOPT-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3745
+
; VLOPT-NEXT: vasubu.vv v8, v8, v10
3746
+
; VLOPT-NEXT: vadd.vv v8, v8, v10
3747
+
; VLOPT-NEXT: ret
3748
+
%1 = call <vscale x 4 x i32> @llvm.riscv.vasubu.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen 0, iXLen -1)
3749
+
%2 = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %b, iXLen %vl)
3750
+
ret <vscale x 4 x i32> %2
3751
+
}
3752
+
3753
+
define <vscale x 4 x i32> @vasubu_vx(<vscale x 4 x i32> %a, i32%b, iXLen %vl) {
3754
+
; NOVLOPT-LABEL: vasubu_vx:
3755
+
; NOVLOPT: # %bb.0:
3756
+
; NOVLOPT-NEXT: csrwi vxrm, 0
3757
+
; NOVLOPT-NEXT: vsetvli a2, zero, e32, m2, ta, ma
3758
+
; NOVLOPT-NEXT: vasubu.vx v10, v8, a0
3759
+
; NOVLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
3760
+
; NOVLOPT-NEXT: vadd.vv v8, v10, v8
3761
+
; NOVLOPT-NEXT: ret
3762
+
;
3763
+
; VLOPT-LABEL: vasubu_vx:
3764
+
; VLOPT: # %bb.0:
3765
+
; VLOPT-NEXT: csrwi vxrm, 0
3766
+
; VLOPT-NEXT: vsetvli zero, a1, e32, m2, ta, ma
3767
+
; VLOPT-NEXT: vasubu.vx v10, v8, a0
3768
+
; VLOPT-NEXT: vadd.vv v8, v10, v8
3769
+
; VLOPT-NEXT: ret
3770
+
%1 = call <vscale x 4 x i32> @llvm.riscv.vasubu.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, i32%b, iXLen 0, iXLen -1)
3771
+
%2 = call <vscale x 4 x i32> @llvm.riscv.vadd.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %1, <vscale x 4 x i32> %a, iXLen %vl)
0 commit comments