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
+143Lines changed: 143 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -3398,3 +3398,146 @@ define <vscale x 4 x double> @vfrec7(<vscale x 4 x float> %a) {
3398
3398
%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)
3399
3399
ret <vscale x 4 x double> %2
3400
3400
}
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)
0 commit comments