[RISCV] Support postRA vsetvl insertion pass (#70549)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vmul-vp-mask.ll
blob419b55124a5016a6c58a0446c823d27b3bf332f7
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s \
3 ; RUN:   | FileCheck %s --check-prefixes=CHECK
4 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \
5 ; RUN:   | FileCheck %s --check-prefixes=CHECK
8 declare <vscale x 2 x i1> @llvm.vp.mul.nxv2i1(<vscale x 2 x i1>, <vscale x 2 x i1>, <vscale x 2 x i1>, i32)
10 define <vscale x 2 x i1> @vmul_vv_nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
11 ; CHECK-LABEL: vmul_vv_nxv2i1:
12 ; CHECK:       # %bb.0:
13 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
14 ; CHECK-NEXT:    vmand.mm v0, v0, v8
15 ; CHECK-NEXT:    ret
16   %v = call <vscale x 2 x i1> @llvm.vp.mul.nxv2i1(<vscale x 2 x i1> %va, <vscale x 2 x i1> %b, <vscale x 2 x i1> %m, i32 %evl)
17   ret <vscale x 2 x i1> %v
20 declare <vscale x 4 x i1> @llvm.vp.mul.nxv4i1(<vscale x 4 x i1>, <vscale x 4 x i1>, <vscale x 4 x i1>, i32)
22 define <vscale x 4 x i1> @vmul_vv_nxv4i1(<vscale x 4 x i1> %va, <vscale x 4 x i1> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
23 ; CHECK-LABEL: vmul_vv_nxv4i1:
24 ; CHECK:       # %bb.0:
25 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
26 ; CHECK-NEXT:    vmand.mm v0, v0, v8
27 ; CHECK-NEXT:    ret
28   %v = call <vscale x 4 x i1> @llvm.vp.mul.nxv4i1(<vscale x 4 x i1> %va, <vscale x 4 x i1> %b, <vscale x 4 x i1> %m, i32 %evl)
29   ret <vscale x 4 x i1> %v
32 declare <vscale x 8 x i1> @llvm.vp.mul.nxv8i1(<vscale x 8 x i1>, <vscale x 8 x i1>, <vscale x 8 x i1>, i32)
34 define <vscale x 8 x i1> @vmul_vv_nxv8i1(<vscale x 8 x i1> %va, <vscale x 8 x i1> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
35 ; CHECK-LABEL: vmul_vv_nxv8i1:
36 ; CHECK:       # %bb.0:
37 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
38 ; CHECK-NEXT:    vmand.mm v0, v0, v8
39 ; CHECK-NEXT:    ret
40   %v = call <vscale x 8 x i1> @llvm.vp.mul.nxv8i1(<vscale x 8 x i1> %va, <vscale x 8 x i1> %b, <vscale x 8 x i1> %m, i32 %evl)
41   ret <vscale x 8 x i1> %v
44 declare <vscale x 16 x i1> @llvm.vp.mul.nxv16i1(<vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>, i32)
46 define <vscale x 16 x i1> @vmul_vv_nxv16i1(<vscale x 16 x i1> %va, <vscale x 16 x i1> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
47 ; CHECK-LABEL: vmul_vv_nxv16i1:
48 ; CHECK:       # %bb.0:
49 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
50 ; CHECK-NEXT:    vmand.mm v0, v0, v8
51 ; CHECK-NEXT:    ret
52   %v = call <vscale x 16 x i1> @llvm.vp.mul.nxv16i1(<vscale x 16 x i1> %va, <vscale x 16 x i1> %b, <vscale x 16 x i1> %m, i32 %evl)
53   ret <vscale x 16 x i1> %v
56 declare <vscale x 32 x i1> @llvm.vp.mul.nxv32i1(<vscale x 32 x i1>, <vscale x 32 x i1>, <vscale x 32 x i1>, i32)
58 define <vscale x 32 x i1> @vmul_vv_nxv32i1(<vscale x 32 x i1> %va, <vscale x 32 x i1> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
59 ; CHECK-LABEL: vmul_vv_nxv32i1:
60 ; CHECK:       # %bb.0:
61 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
62 ; CHECK-NEXT:    vmand.mm v0, v0, v8
63 ; CHECK-NEXT:    ret
64   %v = call <vscale x 32 x i1> @llvm.vp.mul.nxv32i1(<vscale x 32 x i1> %va, <vscale x 32 x i1> %b, <vscale x 32 x i1> %m, i32 %evl)
65   ret <vscale x 32 x i1> %v