Skip to content

Commit 40f4e9e

Browse files
Pre-commit tests for PR adding more instruction to vlopt
1 parent 9815210 commit 40f4e9e

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed

llvm/test/CodeGen/RISCV/rvv/vl-opt-instrs.ll

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3398,3 +3398,146 @@ define <vscale x 4 x double> @vfrec7(<vscale x 4 x float> %a) {
33983398
%2 = call <vscale x 4 x double> @llvm.riscv.vfwmacc(<vscale x 4 x double> poison, <vscale x 4 x float> %a, <vscale x 4 x float> %1, iXLen 7, iXLen 6, iXLen 0)
33993399
ret <vscale x 4 x double> %2
34003400
}
3401+
3402+
define <vscale x 4 x i32> @vandn_vv(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen %vl) {
3403+
; CHECK-LABEL: vandn_vv:
3404+
; CHECK: # %bb.0:
3405+
; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3406+
; CHECK-NEXT: vandn.vv v10, v8, v10
3407+
; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3408+
; CHECK-NEXT: vadd.vv v8, v10, v8
3409+
; CHECK-NEXT: ret
3410+
%1 = call <vscale x 4 x i32> @llvm.riscv.vandn.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen -1)
3411+
%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)
3412+
ret <vscale x 4 x i32> %2
3413+
}
3414+
3415+
define <vscale x 4 x i32> @vandn_vx(<vscale x 4 x i32> %a, i32 %b, iXLen %vl) {
3416+
; CHECK-LABEL: vandn_vx:
3417+
; CHECK: # %bb.0:
3418+
; CHECK-NEXT: vsetvli a2, zero, e32, m2, ta, ma
3419+
; CHECK-NEXT: vandn.vx v10, v8, a0
3420+
; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
3421+
; CHECK-NEXT: vadd.vv v8, v10, v8
3422+
; CHECK-NEXT: ret
3423+
%1 = call <vscale x 4 x i32> @llvm.riscv.vandn.nxv4i32.i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, i32 %b, iXLen -1)
3424+
%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)
3425+
ret <vscale x 4 x i32> %2
3426+
}
3427+
3428+
define <vscale x 4 x i32> @vbrev_v(<vscale x 4 x i32> %a, iXLen %vl) {
3429+
; CHECK-LABEL: vbrev_v:
3430+
; CHECK: # %bb.0:
3431+
; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3432+
; CHECK-NEXT: vbrev.v v10, v8
3433+
; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3434+
; CHECK-NEXT: vadd.vv v8, v10, v8
3435+
; CHECK-NEXT: ret
3436+
%1 = call <vscale x 4 x i32> @llvm.riscv.vbrev.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, iXLen -1)
3437+
%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)
3438+
ret <vscale x 4 x i32> %2
3439+
}
3440+
3441+
define <vscale x 4 x i32> @vclz_v(<vscale x 4 x i32> %a, iXLen %vl) {
3442+
; CHECK-LABEL: vclz_v:
3443+
; CHECK: # %bb.0:
3444+
; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3445+
; CHECK-NEXT: vclz.v v10, v8
3446+
; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3447+
; CHECK-NEXT: vadd.vv v8, v10, v8
3448+
; CHECK-NEXT: ret
3449+
%1 = call <vscale x 4 x i32> @llvm.riscv.vclz.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, iXLen -1)
3450+
%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)
3451+
ret <vscale x 4 x i32> %2
3452+
}
3453+
3454+
define <vscale x 4 x i32> @vcpop_v(<vscale x 4 x i32> %a, iXLen %vl) {
3455+
; CHECK-LABEL: vcpop_v:
3456+
; CHECK: # %bb.0:
3457+
; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3458+
; CHECK-NEXT: vcpop.v v10, v8
3459+
; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3460+
; CHECK-NEXT: vadd.vv v8, v10, v8
3461+
; CHECK-NEXT: ret
3462+
%1 = call <vscale x 4 x i32> @llvm.riscv.vcpopv.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, iXLen -1)
3463+
%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)
3464+
ret <vscale x 4 x i32> %2
3465+
}
3466+
3467+
define <vscale x 4 x i32> @vctz_v(<vscale x 4 x i32> %a, iXLen %vl) {
3468+
; CHECK-LABEL: vctz_v:
3469+
; CHECK: # %bb.0:
3470+
; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3471+
; CHECK-NEXT: vctz.v v10, v8
3472+
; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3473+
; CHECK-NEXT: vadd.vv v8, v10, v8
3474+
; CHECK-NEXT: ret
3475+
%1 = call <vscale x 4 x i32> @llvm.riscv.vctz.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, iXLen -1)
3476+
%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)
3477+
ret <vscale x 4 x i32> %2
3478+
}
3479+
3480+
define <vscale x 4 x i32> @vror_vv(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen %vl) {
3481+
; CHECK-LABEL: vror_vv:
3482+
; CHECK: # %bb.0:
3483+
; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3484+
; CHECK-NEXT: vror.vv v10, v8, v10
3485+
; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3486+
; CHECK-NEXT: vadd.vv v8, v10, v8
3487+
; CHECK-NEXT: ret
3488+
%1 = call <vscale x 4 x i32> @llvm.riscv.vror.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen -1)
3489+
%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)
3490+
ret <vscale x 4 x i32> %2
3491+
}
3492+
3493+
define <vscale x 4 x i32> @vror_vx(<vscale x 4 x i32> %a, iXLen %b, iXLen %vl) {
3494+
; CHECK-LABEL: vror_vx:
3495+
; CHECK: # %bb.0:
3496+
; CHECK-NEXT: vsetvli a2, zero, e32, m2, ta, ma
3497+
; CHECK-NEXT: vror.vx v10, v8, a0
3498+
; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
3499+
; CHECK-NEXT: vadd.vv v8, v10, v8
3500+
; CHECK-NEXT: ret
3501+
%1 = call <vscale x 4 x i32> @llvm.riscv.vror.nxv4i32.iXLen(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, iXLen %b, iXLen -1)
3502+
%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)
3503+
ret <vscale x 4 x i32> %2
3504+
}
3505+
3506+
define <vscale x 4 x i32> @vror_vi(<vscale x 4 x i32> %a, iXLen %vl) {
3507+
; CHECK-LABEL: vror_vi:
3508+
; CHECK: # %bb.0:
3509+
; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3510+
; CHECK-NEXT: vror.vi v10, v8, 5
3511+
; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3512+
; CHECK-NEXT: vadd.vv v8, v10, v8
3513+
; CHECK-NEXT: ret
3514+
%1 = call <vscale x 4 x i32> @llvm.riscv.vror.nxv4i32.iXLen(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, iXLen 5, iXLen -1)
3515+
%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)
3516+
ret <vscale x 4 x i32> %2
3517+
}
3518+
3519+
define <vscale x 4 x i32> @vrol_vv(<vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen %vl) {
3520+
; CHECK-LABEL: vrol_vv:
3521+
; CHECK: # %bb.0:
3522+
; CHECK-NEXT: vsetvli a1, zero, e32, m2, ta, ma
3523+
; CHECK-NEXT: vrol.vv v10, v8, v10
3524+
; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
3525+
; CHECK-NEXT: vadd.vv v8, v10, v8
3526+
; CHECK-NEXT: ret
3527+
%1 = call <vscale x 4 x i32> @llvm.riscv.vrol.nxv4i32.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, <vscale x 4 x i32> %b, iXLen -1)
3528+
%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)
3529+
ret <vscale x 4 x i32> %2
3530+
}
3531+
3532+
define <vscale x 4 x i32> @vrol_vx(<vscale x 4 x i32> %a, iXLen %b, iXLen %vl) {
3533+
; CHECK-LABEL: vrol_vx:
3534+
; CHECK: # %bb.0:
3535+
; CHECK-NEXT: vsetvli a2, zero, e32, m2, ta, ma
3536+
; CHECK-NEXT: vrol.vx v10, v8, a0
3537+
; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
3538+
; CHECK-NEXT: vadd.vv v8, v10, v8
3539+
; CHECK-NEXT: ret
3540+
%1 = call <vscale x 4 x i32> @llvm.riscv.vrol.nxv4i32.iXLen(<vscale x 4 x i32> poison, <vscale x 4 x i32> %a, iXLen %b, iXLen -1)
3541+
%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)
3542+
ret <vscale x 4 x i32> %2
3543+
}

0 commit comments

Comments
 (0)