Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / vand-vp.ll
blob032c3a014eca995b822f585f40c61b0a860a526e
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,RV32
4 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \
5 ; RUN:   | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <vscale x 8 x i7> @llvm.vp.and.nxv8i7(<vscale x 8 x i7>, <vscale x 8 x i7>, <vscale x 8 x i1>, i32)
9 define <vscale x 8 x i7> @vand_vx_nxv8i7(<vscale x 8 x i7> %a, i7 signext %b, <vscale x 8 x i1> %mask, i32 zeroext %evl) {
10 ; CHECK-LABEL: vand_vx_nxv8i7:
11 ; CHECK:       # %bb.0:
12 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
13 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
14 ; CHECK-NEXT:    ret
15   %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0
16   %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer
17   %v = call <vscale x 8 x i7> @llvm.vp.and.nxv8i7(<vscale x 8 x i7> %a, <vscale x 8 x i7> %vb, <vscale x 8 x i1> %mask, i32 %evl)
18   ret <vscale x 8 x i7> %v
21 declare <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8>, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
23 define <vscale x 1 x i8> @vand_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
24 ; CHECK-LABEL: vand_vv_nxv1i8:
25 ; CHECK:       # %bb.0:
26 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
27 ; CHECK-NEXT:    vand.vv v8, v8, v9, v0.t
28 ; CHECK-NEXT:    ret
29   %v = call <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)
30   ret <vscale x 1 x i8> %v
33 define <vscale x 1 x i8> @vand_vv_nxv1i8_unmasked(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, i32 zeroext %evl) {
34 ; CHECK-LABEL: vand_vv_nxv1i8_unmasked:
35 ; CHECK:       # %bb.0:
36 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
37 ; CHECK-NEXT:    vand.vv v8, v8, v9
38 ; CHECK-NEXT:    ret
39   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
40   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
41   %v = call <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)
42   ret <vscale x 1 x i8> %v
45 define <vscale x 1 x i8> @vand_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
46 ; CHECK-LABEL: vand_vx_nxv1i8:
47 ; CHECK:       # %bb.0:
48 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
49 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
50 ; CHECK-NEXT:    ret
51   %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
52   %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
53   %v = call <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
54   ret <vscale x 1 x i8> %v
57 define <vscale x 1 x i8> @vand_vx_nxv1i8_unmasked(<vscale x 1 x i8> %va, i8 %b, i32 zeroext %evl) {
58 ; CHECK-LABEL: vand_vx_nxv1i8_unmasked:
59 ; CHECK:       # %bb.0:
60 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
61 ; CHECK-NEXT:    vand.vx v8, v8, a0
62 ; CHECK-NEXT:    ret
63   %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
64   %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
65   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
66   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
67   %v = call <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
68   ret <vscale x 1 x i8> %v
71 define <vscale x 1 x i8> @vand_vi_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
72 ; CHECK-LABEL: vand_vi_nxv1i8:
73 ; CHECK:       # %bb.0:
74 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
75 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
76 ; CHECK-NEXT:    ret
77   %elt.head = insertelement <vscale x 1 x i8> poison, i8 4, i32 0
78   %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
79   %v = call <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
80   ret <vscale x 1 x i8> %v
83 define <vscale x 1 x i8> @vand_vi_nxv1i8_unmasked(<vscale x 1 x i8> %va, i32 zeroext %evl) {
84 ; CHECK-LABEL: vand_vi_nxv1i8_unmasked:
85 ; CHECK:       # %bb.0:
86 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
87 ; CHECK-NEXT:    vand.vi v8, v8, 4
88 ; CHECK-NEXT:    ret
89   %elt.head = insertelement <vscale x 1 x i8> poison, i8 4, i32 0
90   %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
91   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
92   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
93   %v = call <vscale x 1 x i8> @llvm.vp.and.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
94   ret <vscale x 1 x i8> %v
97 declare <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8>, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
99 define <vscale x 2 x i8> @vand_vv_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
100 ; CHECK-LABEL: vand_vv_nxv2i8:
101 ; CHECK:       # %bb.0:
102 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
103 ; CHECK-NEXT:    vand.vv v8, v8, v9, v0.t
104 ; CHECK-NEXT:    ret
105   %v = call <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)
106   ret <vscale x 2 x i8> %v
109 define <vscale x 2 x i8> @vand_vv_nxv2i8_unmasked(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, i32 zeroext %evl) {
110 ; CHECK-LABEL: vand_vv_nxv2i8_unmasked:
111 ; CHECK:       # %bb.0:
112 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
113 ; CHECK-NEXT:    vand.vv v8, v8, v9
114 ; CHECK-NEXT:    ret
115   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
116   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
117   %v = call <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)
118   ret <vscale x 2 x i8> %v
121 define <vscale x 2 x i8> @vand_vx_nxv2i8(<vscale x 2 x i8> %va, i8 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
122 ; CHECK-LABEL: vand_vx_nxv2i8:
123 ; CHECK:       # %bb.0:
124 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
125 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
126 ; CHECK-NEXT:    ret
127   %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
128   %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
129   %v = call <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
130   ret <vscale x 2 x i8> %v
133 define <vscale x 2 x i8> @vand_vx_nxv2i8_unmasked(<vscale x 2 x i8> %va, i8 %b, i32 zeroext %evl) {
134 ; CHECK-LABEL: vand_vx_nxv2i8_unmasked:
135 ; CHECK:       # %bb.0:
136 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
137 ; CHECK-NEXT:    vand.vx v8, v8, a0
138 ; CHECK-NEXT:    ret
139   %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
140   %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
141   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
142   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
143   %v = call <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
144   ret <vscale x 2 x i8> %v
147 define <vscale x 2 x i8> @vand_vi_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
148 ; CHECK-LABEL: vand_vi_nxv2i8:
149 ; CHECK:       # %bb.0:
150 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
151 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
152 ; CHECK-NEXT:    ret
153   %elt.head = insertelement <vscale x 2 x i8> poison, i8 4, i32 0
154   %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
155   %v = call <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
156   ret <vscale x 2 x i8> %v
159 define <vscale x 2 x i8> @vand_vi_nxv2i8_unmasked(<vscale x 2 x i8> %va, i32 zeroext %evl) {
160 ; CHECK-LABEL: vand_vi_nxv2i8_unmasked:
161 ; CHECK:       # %bb.0:
162 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
163 ; CHECK-NEXT:    vand.vi v8, v8, 4
164 ; CHECK-NEXT:    ret
165   %elt.head = insertelement <vscale x 2 x i8> poison, i8 4, i32 0
166   %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
167   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
168   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
169   %v = call <vscale x 2 x i8> @llvm.vp.and.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
170   ret <vscale x 2 x i8> %v
173 declare <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8>, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
175 define <vscale x 4 x i8> @vand_vv_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
176 ; CHECK-LABEL: vand_vv_nxv4i8:
177 ; CHECK:       # %bb.0:
178 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
179 ; CHECK-NEXT:    vand.vv v8, v8, v9, v0.t
180 ; CHECK-NEXT:    ret
181   %v = call <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)
182   ret <vscale x 4 x i8> %v
185 define <vscale x 4 x i8> @vand_vv_nxv4i8_unmasked(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, i32 zeroext %evl) {
186 ; CHECK-LABEL: vand_vv_nxv4i8_unmasked:
187 ; CHECK:       # %bb.0:
188 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
189 ; CHECK-NEXT:    vand.vv v8, v8, v9
190 ; CHECK-NEXT:    ret
191   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
192   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
193   %v = call <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)
194   ret <vscale x 4 x i8> %v
197 define <vscale x 4 x i8> @vand_vx_nxv4i8(<vscale x 4 x i8> %va, i8 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
198 ; CHECK-LABEL: vand_vx_nxv4i8:
199 ; CHECK:       # %bb.0:
200 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
201 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
202 ; CHECK-NEXT:    ret
203   %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
204   %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
205   %v = call <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
206   ret <vscale x 4 x i8> %v
209 define <vscale x 4 x i8> @vand_vx_nxv4i8_unmasked(<vscale x 4 x i8> %va, i8 %b, i32 zeroext %evl) {
210 ; CHECK-LABEL: vand_vx_nxv4i8_unmasked:
211 ; CHECK:       # %bb.0:
212 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
213 ; CHECK-NEXT:    vand.vx v8, v8, a0
214 ; CHECK-NEXT:    ret
215   %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
216   %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
217   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
218   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
219   %v = call <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
220   ret <vscale x 4 x i8> %v
223 define <vscale x 4 x i8> @vand_vi_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
224 ; CHECK-LABEL: vand_vi_nxv4i8:
225 ; CHECK:       # %bb.0:
226 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
227 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
228 ; CHECK-NEXT:    ret
229   %elt.head = insertelement <vscale x 4 x i8> poison, i8 4, i32 0
230   %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
231   %v = call <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
232   ret <vscale x 4 x i8> %v
235 define <vscale x 4 x i8> @vand_vi_nxv4i8_unmasked(<vscale x 4 x i8> %va, i32 zeroext %evl) {
236 ; CHECK-LABEL: vand_vi_nxv4i8_unmasked:
237 ; CHECK:       # %bb.0:
238 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
239 ; CHECK-NEXT:    vand.vi v8, v8, 4
240 ; CHECK-NEXT:    ret
241   %elt.head = insertelement <vscale x 4 x i8> poison, i8 4, i32 0
242   %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
243   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
244   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
245   %v = call <vscale x 4 x i8> @llvm.vp.and.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
246   ret <vscale x 4 x i8> %v
249 declare <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8>, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
251 define <vscale x 8 x i8> @vand_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
252 ; CHECK-LABEL: vand_vv_nxv8i8:
253 ; CHECK:       # %bb.0:
254 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
255 ; CHECK-NEXT:    vand.vv v8, v8, v9, v0.t
256 ; CHECK-NEXT:    ret
257   %v = call <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)
258   ret <vscale x 8 x i8> %v
261 define <vscale x 8 x i8> @vand_vv_nxv8i8_unmasked(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, i32 zeroext %evl) {
262 ; CHECK-LABEL: vand_vv_nxv8i8_unmasked:
263 ; CHECK:       # %bb.0:
264 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
265 ; CHECK-NEXT:    vand.vv v8, v8, v9
266 ; CHECK-NEXT:    ret
267   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
268   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
269   %v = call <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)
270   ret <vscale x 8 x i8> %v
273 define <vscale x 8 x i8> @vand_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
274 ; CHECK-LABEL: vand_vx_nxv8i8:
275 ; CHECK:       # %bb.0:
276 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
277 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
278 ; CHECK-NEXT:    ret
279   %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
280   %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
281   %v = call <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
282   ret <vscale x 8 x i8> %v
285 define <vscale x 8 x i8> @vand_vx_nxv8i8_unmasked(<vscale x 8 x i8> %va, i8 %b, i32 zeroext %evl) {
286 ; CHECK-LABEL: vand_vx_nxv8i8_unmasked:
287 ; CHECK:       # %bb.0:
288 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
289 ; CHECK-NEXT:    vand.vx v8, v8, a0
290 ; CHECK-NEXT:    ret
291   %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
292   %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
293   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
294   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
295   %v = call <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
296   ret <vscale x 8 x i8> %v
299 define <vscale x 8 x i8> @vand_vi_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
300 ; CHECK-LABEL: vand_vi_nxv8i8:
301 ; CHECK:       # %bb.0:
302 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
303 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
304 ; CHECK-NEXT:    ret
305   %elt.head = insertelement <vscale x 8 x i8> poison, i8 4, i32 0
306   %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
307   %v = call <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
308   ret <vscale x 8 x i8> %v
311 define <vscale x 8 x i8> @vand_vi_nxv8i8_unmasked(<vscale x 8 x i8> %va, i32 zeroext %evl) {
312 ; CHECK-LABEL: vand_vi_nxv8i8_unmasked:
313 ; CHECK:       # %bb.0:
314 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
315 ; CHECK-NEXT:    vand.vi v8, v8, 4
316 ; CHECK-NEXT:    ret
317   %elt.head = insertelement <vscale x 8 x i8> poison, i8 4, i32 0
318   %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
319   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
320   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
321   %v = call <vscale x 8 x i8> @llvm.vp.and.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
322   ret <vscale x 8 x i8> %v
325 declare <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i1>, i32)
327 define <vscale x 16 x i8> @vand_vv_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
328 ; CHECK-LABEL: vand_vv_nxv16i8:
329 ; CHECK:       # %bb.0:
330 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
331 ; CHECK-NEXT:    vand.vv v8, v8, v10, v0.t
332 ; CHECK-NEXT:    ret
333   %v = call <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)
334   ret <vscale x 16 x i8> %v
337 define <vscale x 16 x i8> @vand_vv_nxv16i8_unmasked(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, i32 zeroext %evl) {
338 ; CHECK-LABEL: vand_vv_nxv16i8_unmasked:
339 ; CHECK:       # %bb.0:
340 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
341 ; CHECK-NEXT:    vand.vv v8, v8, v10
342 ; CHECK-NEXT:    ret
343   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
344   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
345   %v = call <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)
346   ret <vscale x 16 x i8> %v
349 define <vscale x 16 x i8> @vand_vx_nxv16i8(<vscale x 16 x i8> %va, i8 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
350 ; CHECK-LABEL: vand_vx_nxv16i8:
351 ; CHECK:       # %bb.0:
352 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
353 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
354 ; CHECK-NEXT:    ret
355   %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
356   %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
357   %v = call <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
358   ret <vscale x 16 x i8> %v
361 define <vscale x 16 x i8> @vand_vx_nxv16i8_unmasked(<vscale x 16 x i8> %va, i8 %b, i32 zeroext %evl) {
362 ; CHECK-LABEL: vand_vx_nxv16i8_unmasked:
363 ; CHECK:       # %bb.0:
364 ; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
365 ; CHECK-NEXT:    vand.vx v8, v8, a0
366 ; CHECK-NEXT:    ret
367   %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
368   %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
369   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
370   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
371   %v = call <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
372   ret <vscale x 16 x i8> %v
375 define <vscale x 16 x i8> @vand_vi_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
376 ; CHECK-LABEL: vand_vi_nxv16i8:
377 ; CHECK:       # %bb.0:
378 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
379 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
380 ; CHECK-NEXT:    ret
381   %elt.head = insertelement <vscale x 16 x i8> poison, i8 4, i32 0
382   %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
383   %v = call <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
384   ret <vscale x 16 x i8> %v
387 define <vscale x 16 x i8> @vand_vi_nxv16i8_unmasked(<vscale x 16 x i8> %va, i32 zeroext %evl) {
388 ; CHECK-LABEL: vand_vi_nxv16i8_unmasked:
389 ; CHECK:       # %bb.0:
390 ; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
391 ; CHECK-NEXT:    vand.vi v8, v8, 4
392 ; CHECK-NEXT:    ret
393   %elt.head = insertelement <vscale x 16 x i8> poison, i8 4, i32 0
394   %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
395   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
396   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
397   %v = call <vscale x 16 x i8> @llvm.vp.and.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
398   ret <vscale x 16 x i8> %v
401 declare <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8>, <vscale x 32 x i8>, <vscale x 32 x i1>, i32)
403 define <vscale x 32 x i8> @vand_vv_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
404 ; CHECK-LABEL: vand_vv_nxv32i8:
405 ; CHECK:       # %bb.0:
406 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
407 ; CHECK-NEXT:    vand.vv v8, v8, v12, v0.t
408 ; CHECK-NEXT:    ret
409   %v = call <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)
410   ret <vscale x 32 x i8> %v
413 define <vscale x 32 x i8> @vand_vv_nxv32i8_unmasked(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, i32 zeroext %evl) {
414 ; CHECK-LABEL: vand_vv_nxv32i8_unmasked:
415 ; CHECK:       # %bb.0:
416 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
417 ; CHECK-NEXT:    vand.vv v8, v8, v12
418 ; CHECK-NEXT:    ret
419   %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
420   %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
421   %v = call <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)
422   ret <vscale x 32 x i8> %v
425 define <vscale x 32 x i8> @vand_vx_nxv32i8(<vscale x 32 x i8> %va, i8 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
426 ; CHECK-LABEL: vand_vx_nxv32i8:
427 ; CHECK:       # %bb.0:
428 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
429 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
430 ; CHECK-NEXT:    ret
431   %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
432   %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
433   %v = call <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
434   ret <vscale x 32 x i8> %v
437 define <vscale x 32 x i8> @vand_vx_nxv32i8_unmasked(<vscale x 32 x i8> %va, i8 %b, i32 zeroext %evl) {
438 ; CHECK-LABEL: vand_vx_nxv32i8_unmasked:
439 ; CHECK:       # %bb.0:
440 ; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
441 ; CHECK-NEXT:    vand.vx v8, v8, a0
442 ; CHECK-NEXT:    ret
443   %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
444   %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
445   %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
446   %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
447   %v = call <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
448   ret <vscale x 32 x i8> %v
451 define <vscale x 32 x i8> @vand_vi_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
452 ; CHECK-LABEL: vand_vi_nxv32i8:
453 ; CHECK:       # %bb.0:
454 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
455 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
456 ; CHECK-NEXT:    ret
457   %elt.head = insertelement <vscale x 32 x i8> poison, i8 4, i32 0
458   %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
459   %v = call <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
460   ret <vscale x 32 x i8> %v
463 define <vscale x 32 x i8> @vand_vi_nxv32i8_unmasked(<vscale x 32 x i8> %va, i32 zeroext %evl) {
464 ; CHECK-LABEL: vand_vi_nxv32i8_unmasked:
465 ; CHECK:       # %bb.0:
466 ; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
467 ; CHECK-NEXT:    vand.vi v8, v8, 4
468 ; CHECK-NEXT:    ret
469   %elt.head = insertelement <vscale x 32 x i8> poison, i8 4, i32 0
470   %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
471   %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
472   %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
473   %v = call <vscale x 32 x i8> @llvm.vp.and.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
474   ret <vscale x 32 x i8> %v
477 declare <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8>, <vscale x 64 x i8>, <vscale x 64 x i1>, i32)
479 define <vscale x 64 x i8> @vand_vv_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
480 ; CHECK-LABEL: vand_vv_nxv64i8:
481 ; CHECK:       # %bb.0:
482 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
483 ; CHECK-NEXT:    vand.vv v8, v8, v16, v0.t
484 ; CHECK-NEXT:    ret
485   %v = call <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)
486   ret <vscale x 64 x i8> %v
489 define <vscale x 64 x i8> @vand_vv_nxv64i8_unmasked(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, i32 zeroext %evl) {
490 ; CHECK-LABEL: vand_vv_nxv64i8_unmasked:
491 ; CHECK:       # %bb.0:
492 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
493 ; CHECK-NEXT:    vand.vv v8, v8, v16
494 ; CHECK-NEXT:    ret
495   %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
496   %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
497   %v = call <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)
498   ret <vscale x 64 x i8> %v
501 define <vscale x 64 x i8> @vand_vx_nxv64i8(<vscale x 64 x i8> %va, i8 %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
502 ; CHECK-LABEL: vand_vx_nxv64i8:
503 ; CHECK:       # %bb.0:
504 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
505 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
506 ; CHECK-NEXT:    ret
507   %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
508   %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
509   %v = call <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
510   ret <vscale x 64 x i8> %v
513 define <vscale x 64 x i8> @vand_vx_nxv64i8_unmasked(<vscale x 64 x i8> %va, i8 %b, i32 zeroext %evl) {
514 ; CHECK-LABEL: vand_vx_nxv64i8_unmasked:
515 ; CHECK:       # %bb.0:
516 ; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
517 ; CHECK-NEXT:    vand.vx v8, v8, a0
518 ; CHECK-NEXT:    ret
519   %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
520   %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
521   %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
522   %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
523   %v = call <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
524   ret <vscale x 64 x i8> %v
527 define <vscale x 64 x i8> @vand_vi_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i1> %m, i32 zeroext %evl) {
528 ; CHECK-LABEL: vand_vi_nxv64i8:
529 ; CHECK:       # %bb.0:
530 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
531 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
532 ; CHECK-NEXT:    ret
533   %elt.head = insertelement <vscale x 64 x i8> poison, i8 4, i32 0
534   %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
535   %v = call <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
536   ret <vscale x 64 x i8> %v
539 define <vscale x 64 x i8> @vand_vi_nxv64i8_unmasked(<vscale x 64 x i8> %va, i32 zeroext %evl) {
540 ; CHECK-LABEL: vand_vi_nxv64i8_unmasked:
541 ; CHECK:       # %bb.0:
542 ; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
543 ; CHECK-NEXT:    vand.vi v8, v8, 4
544 ; CHECK-NEXT:    ret
545   %elt.head = insertelement <vscale x 64 x i8> poison, i8 4, i32 0
546   %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
547   %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
548   %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
549   %v = call <vscale x 64 x i8> @llvm.vp.and.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
550   ret <vscale x 64 x i8> %v
553 declare <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16>, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
555 define <vscale x 1 x i16> @vand_vv_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
556 ; CHECK-LABEL: vand_vv_nxv1i16:
557 ; CHECK:       # %bb.0:
558 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
559 ; CHECK-NEXT:    vand.vv v8, v8, v9, v0.t
560 ; CHECK-NEXT:    ret
561   %v = call <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)
562   ret <vscale x 1 x i16> %v
565 define <vscale x 1 x i16> @vand_vv_nxv1i16_unmasked(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, i32 zeroext %evl) {
566 ; CHECK-LABEL: vand_vv_nxv1i16_unmasked:
567 ; CHECK:       # %bb.0:
568 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
569 ; CHECK-NEXT:    vand.vv v8, v8, v9
570 ; CHECK-NEXT:    ret
571   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
572   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
573   %v = call <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)
574   ret <vscale x 1 x i16> %v
577 define <vscale x 1 x i16> @vand_vx_nxv1i16(<vscale x 1 x i16> %va, i16 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
578 ; CHECK-LABEL: vand_vx_nxv1i16:
579 ; CHECK:       # %bb.0:
580 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
581 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
582 ; CHECK-NEXT:    ret
583   %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
584   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
585   %v = call <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
586   ret <vscale x 1 x i16> %v
589 define <vscale x 1 x i16> @vand_vx_nxv1i16_unmasked(<vscale x 1 x i16> %va, i16 %b, i32 zeroext %evl) {
590 ; CHECK-LABEL: vand_vx_nxv1i16_unmasked:
591 ; CHECK:       # %bb.0:
592 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
593 ; CHECK-NEXT:    vand.vx v8, v8, a0
594 ; CHECK-NEXT:    ret
595   %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
596   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
597   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
598   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
599   %v = call <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
600   ret <vscale x 1 x i16> %v
603 define <vscale x 1 x i16> @vand_vi_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
604 ; CHECK-LABEL: vand_vi_nxv1i16:
605 ; CHECK:       # %bb.0:
606 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
607 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
608 ; CHECK-NEXT:    ret
609   %elt.head = insertelement <vscale x 1 x i16> poison, i16 4, i32 0
610   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
611   %v = call <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
612   ret <vscale x 1 x i16> %v
615 define <vscale x 1 x i16> @vand_vi_nxv1i16_unmasked(<vscale x 1 x i16> %va, i32 zeroext %evl) {
616 ; CHECK-LABEL: vand_vi_nxv1i16_unmasked:
617 ; CHECK:       # %bb.0:
618 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
619 ; CHECK-NEXT:    vand.vi v8, v8, 4
620 ; CHECK-NEXT:    ret
621   %elt.head = insertelement <vscale x 1 x i16> poison, i16 4, i32 0
622   %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
623   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
624   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
625   %v = call <vscale x 1 x i16> @llvm.vp.and.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
626   ret <vscale x 1 x i16> %v
629 declare <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16>, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
631 define <vscale x 2 x i16> @vand_vv_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
632 ; CHECK-LABEL: vand_vv_nxv2i16:
633 ; CHECK:       # %bb.0:
634 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
635 ; CHECK-NEXT:    vand.vv v8, v8, v9, v0.t
636 ; CHECK-NEXT:    ret
637   %v = call <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)
638   ret <vscale x 2 x i16> %v
641 define <vscale x 2 x i16> @vand_vv_nxv2i16_unmasked(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, i32 zeroext %evl) {
642 ; CHECK-LABEL: vand_vv_nxv2i16_unmasked:
643 ; CHECK:       # %bb.0:
644 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
645 ; CHECK-NEXT:    vand.vv v8, v8, v9
646 ; CHECK-NEXT:    ret
647   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
648   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
649   %v = call <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)
650   ret <vscale x 2 x i16> %v
653 define <vscale x 2 x i16> @vand_vx_nxv2i16(<vscale x 2 x i16> %va, i16 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
654 ; CHECK-LABEL: vand_vx_nxv2i16:
655 ; CHECK:       # %bb.0:
656 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
657 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
658 ; CHECK-NEXT:    ret
659   %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
660   %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
661   %v = call <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
662   ret <vscale x 2 x i16> %v
665 define <vscale x 2 x i16> @vand_vx_nxv2i16_unmasked(<vscale x 2 x i16> %va, i16 %b, i32 zeroext %evl) {
666 ; CHECK-LABEL: vand_vx_nxv2i16_unmasked:
667 ; CHECK:       # %bb.0:
668 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
669 ; CHECK-NEXT:    vand.vx v8, v8, a0
670 ; CHECK-NEXT:    ret
671   %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
672   %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
673   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
674   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
675   %v = call <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
676   ret <vscale x 2 x i16> %v
679 define <vscale x 2 x i16> @vand_vi_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
680 ; CHECK-LABEL: vand_vi_nxv2i16:
681 ; CHECK:       # %bb.0:
682 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
683 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
684 ; CHECK-NEXT:    ret
685   %elt.head = insertelement <vscale x 2 x i16> poison, i16 4, i32 0
686   %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
687   %v = call <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
688   ret <vscale x 2 x i16> %v
691 define <vscale x 2 x i16> @vand_vi_nxv2i16_unmasked(<vscale x 2 x i16> %va, i32 zeroext %evl) {
692 ; CHECK-LABEL: vand_vi_nxv2i16_unmasked:
693 ; CHECK:       # %bb.0:
694 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
695 ; CHECK-NEXT:    vand.vi v8, v8, 4
696 ; CHECK-NEXT:    ret
697   %elt.head = insertelement <vscale x 2 x i16> poison, i16 4, i32 0
698   %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
699   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
700   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
701   %v = call <vscale x 2 x i16> @llvm.vp.and.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
702   ret <vscale x 2 x i16> %v
705 declare <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16>, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
707 define <vscale x 4 x i16> @vand_vv_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
708 ; CHECK-LABEL: vand_vv_nxv4i16:
709 ; CHECK:       # %bb.0:
710 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
711 ; CHECK-NEXT:    vand.vv v8, v8, v9, v0.t
712 ; CHECK-NEXT:    ret
713   %v = call <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)
714   ret <vscale x 4 x i16> %v
717 define <vscale x 4 x i16> @vand_vv_nxv4i16_unmasked(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, i32 zeroext %evl) {
718 ; CHECK-LABEL: vand_vv_nxv4i16_unmasked:
719 ; CHECK:       # %bb.0:
720 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
721 ; CHECK-NEXT:    vand.vv v8, v8, v9
722 ; CHECK-NEXT:    ret
723   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
724   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
725   %v = call <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)
726   ret <vscale x 4 x i16> %v
729 define <vscale x 4 x i16> @vand_vx_nxv4i16(<vscale x 4 x i16> %va, i16 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
730 ; CHECK-LABEL: vand_vx_nxv4i16:
731 ; CHECK:       # %bb.0:
732 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
733 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
734 ; CHECK-NEXT:    ret
735   %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
736   %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
737   %v = call <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
738   ret <vscale x 4 x i16> %v
741 define <vscale x 4 x i16> @vand_vx_nxv4i16_unmasked(<vscale x 4 x i16> %va, i16 %b, i32 zeroext %evl) {
742 ; CHECK-LABEL: vand_vx_nxv4i16_unmasked:
743 ; CHECK:       # %bb.0:
744 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
745 ; CHECK-NEXT:    vand.vx v8, v8, a0
746 ; CHECK-NEXT:    ret
747   %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
748   %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
749   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
750   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
751   %v = call <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
752   ret <vscale x 4 x i16> %v
755 define <vscale x 4 x i16> @vand_vi_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
756 ; CHECK-LABEL: vand_vi_nxv4i16:
757 ; CHECK:       # %bb.0:
758 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
759 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
760 ; CHECK-NEXT:    ret
761   %elt.head = insertelement <vscale x 4 x i16> poison, i16 4, i32 0
762   %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
763   %v = call <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
764   ret <vscale x 4 x i16> %v
767 define <vscale x 4 x i16> @vand_vi_nxv4i16_unmasked(<vscale x 4 x i16> %va, i32 zeroext %evl) {
768 ; CHECK-LABEL: vand_vi_nxv4i16_unmasked:
769 ; CHECK:       # %bb.0:
770 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
771 ; CHECK-NEXT:    vand.vi v8, v8, 4
772 ; CHECK-NEXT:    ret
773   %elt.head = insertelement <vscale x 4 x i16> poison, i16 4, i32 0
774   %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
775   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
776   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
777   %v = call <vscale x 4 x i16> @llvm.vp.and.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
778   ret <vscale x 4 x i16> %v
781 declare <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
783 define <vscale x 8 x i16> @vand_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
784 ; CHECK-LABEL: vand_vv_nxv8i16:
785 ; CHECK:       # %bb.0:
786 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
787 ; CHECK-NEXT:    vand.vv v8, v8, v10, v0.t
788 ; CHECK-NEXT:    ret
789   %v = call <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)
790   ret <vscale x 8 x i16> %v
793 define <vscale x 8 x i16> @vand_vv_nxv8i16_unmasked(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, i32 zeroext %evl) {
794 ; CHECK-LABEL: vand_vv_nxv8i16_unmasked:
795 ; CHECK:       # %bb.0:
796 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
797 ; CHECK-NEXT:    vand.vv v8, v8, v10
798 ; CHECK-NEXT:    ret
799   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
800   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
801   %v = call <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)
802   ret <vscale x 8 x i16> %v
805 define <vscale x 8 x i16> @vand_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
806 ; CHECK-LABEL: vand_vx_nxv8i16:
807 ; CHECK:       # %bb.0:
808 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
809 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
810 ; CHECK-NEXT:    ret
811   %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
812   %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
813   %v = call <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
814   ret <vscale x 8 x i16> %v
817 define <vscale x 8 x i16> @vand_vx_nxv8i16_unmasked(<vscale x 8 x i16> %va, i16 %b, i32 zeroext %evl) {
818 ; CHECK-LABEL: vand_vx_nxv8i16_unmasked:
819 ; CHECK:       # %bb.0:
820 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
821 ; CHECK-NEXT:    vand.vx v8, v8, a0
822 ; CHECK-NEXT:    ret
823   %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
824   %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
825   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
826   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
827   %v = call <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
828   ret <vscale x 8 x i16> %v
831 define <vscale x 8 x i16> @vand_vi_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
832 ; CHECK-LABEL: vand_vi_nxv8i16:
833 ; CHECK:       # %bb.0:
834 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
835 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
836 ; CHECK-NEXT:    ret
837   %elt.head = insertelement <vscale x 8 x i16> poison, i16 4, i32 0
838   %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
839   %v = call <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
840   ret <vscale x 8 x i16> %v
843 define <vscale x 8 x i16> @vand_vi_nxv8i16_unmasked(<vscale x 8 x i16> %va, i32 zeroext %evl) {
844 ; CHECK-LABEL: vand_vi_nxv8i16_unmasked:
845 ; CHECK:       # %bb.0:
846 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
847 ; CHECK-NEXT:    vand.vi v8, v8, 4
848 ; CHECK-NEXT:    ret
849   %elt.head = insertelement <vscale x 8 x i16> poison, i16 4, i32 0
850   %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
851   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
852   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
853   %v = call <vscale x 8 x i16> @llvm.vp.and.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
854   ret <vscale x 8 x i16> %v
857 declare <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16>, <vscale x 14 x i16>, <vscale x 14 x i1>, i32)
859 define <vscale x 14 x i16> @vand_vv_nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %b, <vscale x 14 x i1> %m, i32 zeroext %evl) {
860 ; CHECK-LABEL: vand_vv_nxv14i16:
861 ; CHECK:       # %bb.0:
862 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
863 ; CHECK-NEXT:    vand.vv v8, v8, v12, v0.t
864 ; CHECK-NEXT:    ret
865   %v = call <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %b, <vscale x 14 x i1> %m, i32 %evl)
866   ret <vscale x 14 x i16> %v
869 define <vscale x 14 x i16> @vand_vv_nxv14i16_unmasked(<vscale x 14 x i16> %va, <vscale x 14 x i16> %b, i32 zeroext %evl) {
870 ; CHECK-LABEL: vand_vv_nxv14i16_unmasked:
871 ; CHECK:       # %bb.0:
872 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
873 ; CHECK-NEXT:    vand.vv v8, v8, v12
874 ; CHECK-NEXT:    ret
875   %head = insertelement <vscale x 14 x i1> poison, i1 true, i32 0
876   %m = shufflevector <vscale x 14 x i1> %head, <vscale x 14 x i1> poison, <vscale x 14 x i32> zeroinitializer
877   %v = call <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %b, <vscale x 14 x i1> %m, i32 %evl)
878   ret <vscale x 14 x i16> %v
881 define <vscale x 14 x i16> @vand_vx_nxv14i16(<vscale x 14 x i16> %va, i16 %b, <vscale x 14 x i1> %m, i32 zeroext %evl) {
882 ; CHECK-LABEL: vand_vx_nxv14i16:
883 ; CHECK:       # %bb.0:
884 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
885 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
886 ; CHECK-NEXT:    ret
887   %elt.head = insertelement <vscale x 14 x i16> poison, i16 %b, i32 0
888   %vb = shufflevector <vscale x 14 x i16> %elt.head, <vscale x 14 x i16> poison, <vscale x 14 x i32> zeroinitializer
889   %v = call <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %vb, <vscale x 14 x i1> %m, i32 %evl)
890   ret <vscale x 14 x i16> %v
893 define <vscale x 14 x i16> @vand_vx_nxv14i16_unmasked(<vscale x 14 x i16> %va, i16 %b, i32 zeroext %evl) {
894 ; CHECK-LABEL: vand_vx_nxv14i16_unmasked:
895 ; CHECK:       # %bb.0:
896 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
897 ; CHECK-NEXT:    vand.vx v8, v8, a0
898 ; CHECK-NEXT:    ret
899   %elt.head = insertelement <vscale x 14 x i16> poison, i16 %b, i32 0
900   %vb = shufflevector <vscale x 14 x i16> %elt.head, <vscale x 14 x i16> poison, <vscale x 14 x i32> zeroinitializer
901   %head = insertelement <vscale x 14 x i1> poison, i1 true, i32 0
902   %m = shufflevector <vscale x 14 x i1> %head, <vscale x 14 x i1> poison, <vscale x 14 x i32> zeroinitializer
903   %v = call <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %vb, <vscale x 14 x i1> %m, i32 %evl)
904   ret <vscale x 14 x i16> %v
907 define <vscale x 14 x i16> @vand_vi_nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i1> %m, i32 zeroext %evl) {
908 ; CHECK-LABEL: vand_vi_nxv14i16:
909 ; CHECK:       # %bb.0:
910 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
911 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
912 ; CHECK-NEXT:    ret
913   %elt.head = insertelement <vscale x 14 x i16> poison, i16 4, i32 0
914   %vb = shufflevector <vscale x 14 x i16> %elt.head, <vscale x 14 x i16> poison, <vscale x 14 x i32> zeroinitializer
915   %v = call <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %vb, <vscale x 14 x i1> %m, i32 %evl)
916   ret <vscale x 14 x i16> %v
919 define <vscale x 14 x i16> @vand_vi_nxv14i16_unmasked(<vscale x 14 x i16> %va, i32 zeroext %evl) {
920 ; CHECK-LABEL: vand_vi_nxv14i16_unmasked:
921 ; CHECK:       # %bb.0:
922 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
923 ; CHECK-NEXT:    vand.vi v8, v8, 4
924 ; CHECK-NEXT:    ret
925   %elt.head = insertelement <vscale x 14 x i16> poison, i16 4, i32 0
926   %vb = shufflevector <vscale x 14 x i16> %elt.head, <vscale x 14 x i16> poison, <vscale x 14 x i32> zeroinitializer
927   %head = insertelement <vscale x 14 x i1> poison, i1 true, i32 0
928   %m = shufflevector <vscale x 14 x i1> %head, <vscale x 14 x i1> poison, <vscale x 14 x i32> zeroinitializer
929   %v = call <vscale x 14 x i16> @llvm.vp.and.nxv14i16(<vscale x 14 x i16> %va, <vscale x 14 x i16> %vb, <vscale x 14 x i1> %m, i32 %evl)
930   ret <vscale x 14 x i16> %v
933 declare <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16>, <vscale x 16 x i16>, <vscale x 16 x i1>, i32)
935 define <vscale x 16 x i16> @vand_vv_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
936 ; CHECK-LABEL: vand_vv_nxv16i16:
937 ; CHECK:       # %bb.0:
938 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
939 ; CHECK-NEXT:    vand.vv v8, v8, v12, v0.t
940 ; CHECK-NEXT:    ret
941   %v = call <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)
942   ret <vscale x 16 x i16> %v
945 define <vscale x 16 x i16> @vand_vv_nxv16i16_unmasked(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, i32 zeroext %evl) {
946 ; CHECK-LABEL: vand_vv_nxv16i16_unmasked:
947 ; CHECK:       # %bb.0:
948 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
949 ; CHECK-NEXT:    vand.vv v8, v8, v12
950 ; CHECK-NEXT:    ret
951   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
952   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
953   %v = call <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)
954   ret <vscale x 16 x i16> %v
957 define <vscale x 16 x i16> @vand_vx_nxv16i16(<vscale x 16 x i16> %va, i16 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
958 ; CHECK-LABEL: vand_vx_nxv16i16:
959 ; CHECK:       # %bb.0:
960 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
961 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
962 ; CHECK-NEXT:    ret
963   %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
964   %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
965   %v = call <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
966   ret <vscale x 16 x i16> %v
969 define <vscale x 16 x i16> @vand_vx_nxv16i16_unmasked(<vscale x 16 x i16> %va, i16 %b, i32 zeroext %evl) {
970 ; CHECK-LABEL: vand_vx_nxv16i16_unmasked:
971 ; CHECK:       # %bb.0:
972 ; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
973 ; CHECK-NEXT:    vand.vx v8, v8, a0
974 ; CHECK-NEXT:    ret
975   %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
976   %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
977   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
978   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
979   %v = call <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
980   ret <vscale x 16 x i16> %v
983 define <vscale x 16 x i16> @vand_vi_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
984 ; CHECK-LABEL: vand_vi_nxv16i16:
985 ; CHECK:       # %bb.0:
986 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
987 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
988 ; CHECK-NEXT:    ret
989   %elt.head = insertelement <vscale x 16 x i16> poison, i16 4, i32 0
990   %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
991   %v = call <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
992   ret <vscale x 16 x i16> %v
995 define <vscale x 16 x i16> @vand_vi_nxv16i16_unmasked(<vscale x 16 x i16> %va, i32 zeroext %evl) {
996 ; CHECK-LABEL: vand_vi_nxv16i16_unmasked:
997 ; CHECK:       # %bb.0:
998 ; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
999 ; CHECK-NEXT:    vand.vi v8, v8, 4
1000 ; CHECK-NEXT:    ret
1001   %elt.head = insertelement <vscale x 16 x i16> poison, i16 4, i32 0
1002   %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
1003   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1004   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1005   %v = call <vscale x 16 x i16> @llvm.vp.and.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
1006   ret <vscale x 16 x i16> %v
1009 declare <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16>, <vscale x 32 x i16>, <vscale x 32 x i1>, i32)
1011 define <vscale x 32 x i16> @vand_vv_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1012 ; CHECK-LABEL: vand_vv_nxv32i16:
1013 ; CHECK:       # %bb.0:
1014 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1015 ; CHECK-NEXT:    vand.vv v8, v8, v16, v0.t
1016 ; CHECK-NEXT:    ret
1017   %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)
1018   ret <vscale x 32 x i16> %v
1021 define <vscale x 32 x i16> @vand_vv_nxv32i16_unmasked(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, i32 zeroext %evl) {
1022 ; CHECK-LABEL: vand_vv_nxv32i16_unmasked:
1023 ; CHECK:       # %bb.0:
1024 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1025 ; CHECK-NEXT:    vand.vv v8, v8, v16
1026 ; CHECK-NEXT:    ret
1027   %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
1028   %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
1029   %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)
1030   ret <vscale x 32 x i16> %v
1033 define <vscale x 32 x i16> @vand_vx_nxv32i16(<vscale x 32 x i16> %va, i16 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1034 ; CHECK-LABEL: vand_vx_nxv32i16:
1035 ; CHECK:       # %bb.0:
1036 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
1037 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
1038 ; CHECK-NEXT:    ret
1039   %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
1040   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1041   %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
1042   ret <vscale x 32 x i16> %v
1045 define <vscale x 32 x i16> @vand_vx_nxv32i16_commute(<vscale x 32 x i16> %va, i16 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1046 ; CHECK-LABEL: vand_vx_nxv32i16_commute:
1047 ; CHECK:       # %bb.0:
1048 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
1049 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
1050 ; CHECK-NEXT:    ret
1051   %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
1052   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1053   %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %vb, <vscale x 32 x i16> %va, <vscale x 32 x i1> %m, i32 %evl)
1054   ret <vscale x 32 x i16> %v
1057 define <vscale x 32 x i16> @vand_vx_nxv32i16_unmasked(<vscale x 32 x i16> %va, i16 %b, i32 zeroext %evl) {
1058 ; CHECK-LABEL: vand_vx_nxv32i16_unmasked:
1059 ; CHECK:       # %bb.0:
1060 ; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
1061 ; CHECK-NEXT:    vand.vx v8, v8, a0
1062 ; CHECK-NEXT:    ret
1063   %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
1064   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1065   %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
1066   %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
1067   %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
1068   ret <vscale x 32 x i16> %v
1071 define <vscale x 32 x i16> @vand_vi_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i1> %m, i32 zeroext %evl) {
1072 ; CHECK-LABEL: vand_vi_nxv32i16:
1073 ; CHECK:       # %bb.0:
1074 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1075 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
1076 ; CHECK-NEXT:    ret
1077   %elt.head = insertelement <vscale x 32 x i16> poison, i16 4, i32 0
1078   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1079   %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
1080   ret <vscale x 32 x i16> %v
1083 define <vscale x 32 x i16> @vand_vi_nxv32i16_unmasked(<vscale x 32 x i16> %va, i32 zeroext %evl) {
1084 ; CHECK-LABEL: vand_vi_nxv32i16_unmasked:
1085 ; CHECK:       # %bb.0:
1086 ; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
1087 ; CHECK-NEXT:    vand.vi v8, v8, 4
1088 ; CHECK-NEXT:    ret
1089   %elt.head = insertelement <vscale x 32 x i16> poison, i16 4, i32 0
1090   %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
1091   %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
1092   %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
1093   %v = call <vscale x 32 x i16> @llvm.vp.and.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
1094   ret <vscale x 32 x i16> %v
1097 declare <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32>, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
1099 define <vscale x 1 x i32> @vand_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1100 ; CHECK-LABEL: vand_vv_nxv1i32:
1101 ; CHECK:       # %bb.0:
1102 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1103 ; CHECK-NEXT:    vand.vv v8, v8, v9, v0.t
1104 ; CHECK-NEXT:    ret
1105   %v = call <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)
1106   ret <vscale x 1 x i32> %v
1109 define <vscale x 1 x i32> @vand_vv_nxv1i32_unmasked(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, i32 zeroext %evl) {
1110 ; CHECK-LABEL: vand_vv_nxv1i32_unmasked:
1111 ; CHECK:       # %bb.0:
1112 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1113 ; CHECK-NEXT:    vand.vv v8, v8, v9
1114 ; CHECK-NEXT:    ret
1115   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1116   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1117   %v = call <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)
1118   ret <vscale x 1 x i32> %v
1121 define <vscale x 1 x i32> @vand_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1122 ; CHECK-LABEL: vand_vx_nxv1i32:
1123 ; CHECK:       # %bb.0:
1124 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1125 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
1126 ; CHECK-NEXT:    ret
1127   %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1128   %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1129   %v = call <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1130   ret <vscale x 1 x i32> %v
1133 define <vscale x 1 x i32> @vand_vx_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 %b, i32 zeroext %evl) {
1134 ; CHECK-LABEL: vand_vx_nxv1i32_unmasked:
1135 ; CHECK:       # %bb.0:
1136 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
1137 ; CHECK-NEXT:    vand.vx v8, v8, a0
1138 ; CHECK-NEXT:    ret
1139   %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
1140   %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1141   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1142   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1143   %v = call <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1144   ret <vscale x 1 x i32> %v
1147 define <vscale x 1 x i32> @vand_vi_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1148 ; CHECK-LABEL: vand_vi_nxv1i32:
1149 ; CHECK:       # %bb.0:
1150 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1151 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
1152 ; CHECK-NEXT:    ret
1153   %elt.head = insertelement <vscale x 1 x i32> poison, i32 4, i32 0
1154   %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1155   %v = call <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1156   ret <vscale x 1 x i32> %v
1159 define <vscale x 1 x i32> @vand_vi_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 zeroext %evl) {
1160 ; CHECK-LABEL: vand_vi_nxv1i32_unmasked:
1161 ; CHECK:       # %bb.0:
1162 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
1163 ; CHECK-NEXT:    vand.vi v8, v8, 4
1164 ; CHECK-NEXT:    ret
1165   %elt.head = insertelement <vscale x 1 x i32> poison, i32 4, i32 0
1166   %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
1167   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1168   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1169   %v = call <vscale x 1 x i32> @llvm.vp.and.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
1170   ret <vscale x 1 x i32> %v
1173 declare <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
1175 define <vscale x 2 x i32> @vand_vv_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1176 ; CHECK-LABEL: vand_vv_nxv2i32:
1177 ; CHECK:       # %bb.0:
1178 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1179 ; CHECK-NEXT:    vand.vv v8, v8, v9, v0.t
1180 ; CHECK-NEXT:    ret
1181   %v = call <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)
1182   ret <vscale x 2 x i32> %v
1185 define <vscale x 2 x i32> @vand_vv_nxv2i32_unmasked(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, i32 zeroext %evl) {
1186 ; CHECK-LABEL: vand_vv_nxv2i32_unmasked:
1187 ; CHECK:       # %bb.0:
1188 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1189 ; CHECK-NEXT:    vand.vv v8, v8, v9
1190 ; CHECK-NEXT:    ret
1191   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1192   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1193   %v = call <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)
1194   ret <vscale x 2 x i32> %v
1197 define <vscale x 2 x i32> @vand_vx_nxv2i32(<vscale x 2 x i32> %va, i32 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1198 ; CHECK-LABEL: vand_vx_nxv2i32:
1199 ; CHECK:       # %bb.0:
1200 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1201 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
1202 ; CHECK-NEXT:    ret
1203   %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1204   %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1205   %v = call <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1206   ret <vscale x 2 x i32> %v
1209 define <vscale x 2 x i32> @vand_vx_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 %b, i32 zeroext %evl) {
1210 ; CHECK-LABEL: vand_vx_nxv2i32_unmasked:
1211 ; CHECK:       # %bb.0:
1212 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
1213 ; CHECK-NEXT:    vand.vx v8, v8, a0
1214 ; CHECK-NEXT:    ret
1215   %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
1216   %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1217   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1218   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1219   %v = call <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1220   ret <vscale x 2 x i32> %v
1223 define <vscale x 2 x i32> @vand_vi_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1224 ; CHECK-LABEL: vand_vi_nxv2i32:
1225 ; CHECK:       # %bb.0:
1226 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1227 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
1228 ; CHECK-NEXT:    ret
1229   %elt.head = insertelement <vscale x 2 x i32> poison, i32 4, i32 0
1230   %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1231   %v = call <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1232   ret <vscale x 2 x i32> %v
1235 define <vscale x 2 x i32> @vand_vi_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 zeroext %evl) {
1236 ; CHECK-LABEL: vand_vi_nxv2i32_unmasked:
1237 ; CHECK:       # %bb.0:
1238 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
1239 ; CHECK-NEXT:    vand.vi v8, v8, 4
1240 ; CHECK-NEXT:    ret
1241   %elt.head = insertelement <vscale x 2 x i32> poison, i32 4, i32 0
1242   %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
1243   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1244   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1245   %v = call <vscale x 2 x i32> @llvm.vp.and.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
1246   ret <vscale x 2 x i32> %v
1249 declare <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
1251 define <vscale x 4 x i32> @vand_vv_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1252 ; CHECK-LABEL: vand_vv_nxv4i32:
1253 ; CHECK:       # %bb.0:
1254 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1255 ; CHECK-NEXT:    vand.vv v8, v8, v10, v0.t
1256 ; CHECK-NEXT:    ret
1257   %v = call <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)
1258   ret <vscale x 4 x i32> %v
1261 define <vscale x 4 x i32> @vand_vv_nxv4i32_unmasked(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, i32 zeroext %evl) {
1262 ; CHECK-LABEL: vand_vv_nxv4i32_unmasked:
1263 ; CHECK:       # %bb.0:
1264 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1265 ; CHECK-NEXT:    vand.vv v8, v8, v10
1266 ; CHECK-NEXT:    ret
1267   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1268   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1269   %v = call <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)
1270   ret <vscale x 4 x i32> %v
1273 define <vscale x 4 x i32> @vand_vx_nxv4i32(<vscale x 4 x i32> %va, i32 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1274 ; CHECK-LABEL: vand_vx_nxv4i32:
1275 ; CHECK:       # %bb.0:
1276 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1277 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
1278 ; CHECK-NEXT:    ret
1279   %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1280   %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1281   %v = call <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1282   ret <vscale x 4 x i32> %v
1285 define <vscale x 4 x i32> @vand_vx_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 %b, i32 zeroext %evl) {
1286 ; CHECK-LABEL: vand_vx_nxv4i32_unmasked:
1287 ; CHECK:       # %bb.0:
1288 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
1289 ; CHECK-NEXT:    vand.vx v8, v8, a0
1290 ; CHECK-NEXT:    ret
1291   %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
1292   %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1293   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1294   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1295   %v = call <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1296   ret <vscale x 4 x i32> %v
1299 define <vscale x 4 x i32> @vand_vi_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1300 ; CHECK-LABEL: vand_vi_nxv4i32:
1301 ; CHECK:       # %bb.0:
1302 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1303 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
1304 ; CHECK-NEXT:    ret
1305   %elt.head = insertelement <vscale x 4 x i32> poison, i32 4, i32 0
1306   %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1307   %v = call <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1308   ret <vscale x 4 x i32> %v
1311 define <vscale x 4 x i32> @vand_vi_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 zeroext %evl) {
1312 ; CHECK-LABEL: vand_vi_nxv4i32_unmasked:
1313 ; CHECK:       # %bb.0:
1314 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
1315 ; CHECK-NEXT:    vand.vi v8, v8, 4
1316 ; CHECK-NEXT:    ret
1317   %elt.head = insertelement <vscale x 4 x i32> poison, i32 4, i32 0
1318   %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
1319   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1320   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1321   %v = call <vscale x 4 x i32> @llvm.vp.and.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
1322   ret <vscale x 4 x i32> %v
1325 declare <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32>, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
1327 define <vscale x 8 x i32> @vand_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1328 ; CHECK-LABEL: vand_vv_nxv8i32:
1329 ; CHECK:       # %bb.0:
1330 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1331 ; CHECK-NEXT:    vand.vv v8, v8, v12, v0.t
1332 ; CHECK-NEXT:    ret
1333   %v = call <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)
1334   ret <vscale x 8 x i32> %v
1337 define <vscale x 8 x i32> @vand_vv_nxv8i32_unmasked(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, i32 zeroext %evl) {
1338 ; CHECK-LABEL: vand_vv_nxv8i32_unmasked:
1339 ; CHECK:       # %bb.0:
1340 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1341 ; CHECK-NEXT:    vand.vv v8, v8, v12
1342 ; CHECK-NEXT:    ret
1343   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1344   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1345   %v = call <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)
1346   ret <vscale x 8 x i32> %v
1349 define <vscale x 8 x i32> @vand_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1350 ; CHECK-LABEL: vand_vx_nxv8i32:
1351 ; CHECK:       # %bb.0:
1352 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1353 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
1354 ; CHECK-NEXT:    ret
1355   %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1356   %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1357   %v = call <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1358   ret <vscale x 8 x i32> %v
1361 define <vscale x 8 x i32> @vand_vx_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 %b, i32 zeroext %evl) {
1362 ; CHECK-LABEL: vand_vx_nxv8i32_unmasked:
1363 ; CHECK:       # %bb.0:
1364 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
1365 ; CHECK-NEXT:    vand.vx v8, v8, a0
1366 ; CHECK-NEXT:    ret
1367   %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
1368   %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1369   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1370   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1371   %v = call <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1372   ret <vscale x 8 x i32> %v
1375 define <vscale x 8 x i32> @vand_vi_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1376 ; CHECK-LABEL: vand_vi_nxv8i32:
1377 ; CHECK:       # %bb.0:
1378 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1379 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
1380 ; CHECK-NEXT:    ret
1381   %elt.head = insertelement <vscale x 8 x i32> poison, i32 4, i32 0
1382   %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1383   %v = call <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1384   ret <vscale x 8 x i32> %v
1387 define <vscale x 8 x i32> @vand_vi_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 zeroext %evl) {
1388 ; CHECK-LABEL: vand_vi_nxv8i32_unmasked:
1389 ; CHECK:       # %bb.0:
1390 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
1391 ; CHECK-NEXT:    vand.vi v8, v8, 4
1392 ; CHECK-NEXT:    ret
1393   %elt.head = insertelement <vscale x 8 x i32> poison, i32 4, i32 0
1394   %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
1395   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1396   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1397   %v = call <vscale x 8 x i32> @llvm.vp.and.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
1398   ret <vscale x 8 x i32> %v
1401 declare <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32>, <vscale x 16 x i32>, <vscale x 16 x i1>, i32)
1403 define <vscale x 16 x i32> @vand_vv_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1404 ; CHECK-LABEL: vand_vv_nxv16i32:
1405 ; CHECK:       # %bb.0:
1406 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1407 ; CHECK-NEXT:    vand.vv v8, v8, v16, v0.t
1408 ; CHECK-NEXT:    ret
1409   %v = call <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)
1410   ret <vscale x 16 x i32> %v
1413 define <vscale x 16 x i32> @vand_vv_nxv16i32_unmasked(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, i32 zeroext %evl) {
1414 ; CHECK-LABEL: vand_vv_nxv16i32_unmasked:
1415 ; CHECK:       # %bb.0:
1416 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1417 ; CHECK-NEXT:    vand.vv v8, v8, v16
1418 ; CHECK-NEXT:    ret
1419   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1420   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1421   %v = call <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)
1422   ret <vscale x 16 x i32> %v
1425 define <vscale x 16 x i32> @vand_vx_nxv16i32(<vscale x 16 x i32> %va, i32 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1426 ; CHECK-LABEL: vand_vx_nxv16i32:
1427 ; CHECK:       # %bb.0:
1428 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1429 ; CHECK-NEXT:    vand.vx v8, v8, a0, v0.t
1430 ; CHECK-NEXT:    ret
1431   %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1432   %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1433   %v = call <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1434   ret <vscale x 16 x i32> %v
1437 define <vscale x 16 x i32> @vand_vx_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 %b, i32 zeroext %evl) {
1438 ; CHECK-LABEL: vand_vx_nxv16i32_unmasked:
1439 ; CHECK:       # %bb.0:
1440 ; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
1441 ; CHECK-NEXT:    vand.vx v8, v8, a0
1442 ; CHECK-NEXT:    ret
1443   %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
1444   %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1445   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1446   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1447   %v = call <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1448   ret <vscale x 16 x i32> %v
1451 define <vscale x 16 x i32> @vand_vi_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i1> %m, i32 zeroext %evl) {
1452 ; CHECK-LABEL: vand_vi_nxv16i32:
1453 ; CHECK:       # %bb.0:
1454 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1455 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
1456 ; CHECK-NEXT:    ret
1457   %elt.head = insertelement <vscale x 16 x i32> poison, i32 4, i32 0
1458   %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1459   %v = call <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1460   ret <vscale x 16 x i32> %v
1463 define <vscale x 16 x i32> @vand_vi_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 zeroext %evl) {
1464 ; CHECK-LABEL: vand_vi_nxv16i32_unmasked:
1465 ; CHECK:       # %bb.0:
1466 ; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
1467 ; CHECK-NEXT:    vand.vi v8, v8, 4
1468 ; CHECK-NEXT:    ret
1469   %elt.head = insertelement <vscale x 16 x i32> poison, i32 4, i32 0
1470   %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
1471   %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
1472   %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
1473   %v = call <vscale x 16 x i32> @llvm.vp.and.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
1474   ret <vscale x 16 x i32> %v
1477 declare <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64>, <vscale x 1 x i64>, <vscale x 1 x i1>, i32)
1479 define <vscale x 1 x i64> @vand_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1480 ; CHECK-LABEL: vand_vv_nxv1i64:
1481 ; CHECK:       # %bb.0:
1482 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1483 ; CHECK-NEXT:    vand.vv v8, v8, v9, v0.t
1484 ; CHECK-NEXT:    ret
1485   %v = call <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)
1486   ret <vscale x 1 x i64> %v
1489 define <vscale x 1 x i64> @vand_vv_nxv1i64_unmasked(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, i32 zeroext %evl) {
1490 ; CHECK-LABEL: vand_vv_nxv1i64_unmasked:
1491 ; CHECK:       # %bb.0:
1492 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1493 ; CHECK-NEXT:    vand.vv v8, v8, v9
1494 ; CHECK-NEXT:    ret
1495   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1496   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1497   %v = call <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)
1498   ret <vscale x 1 x i64> %v
1501 define <vscale x 1 x i64> @vand_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1502 ; RV32-LABEL: vand_vx_nxv1i64:
1503 ; RV32:       # %bb.0:
1504 ; RV32-NEXT:    addi sp, sp, -16
1505 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1506 ; RV32-NEXT:    sw a1, 12(sp)
1507 ; RV32-NEXT:    sw a0, 8(sp)
1508 ; RV32-NEXT:    addi a0, sp, 8
1509 ; RV32-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
1510 ; RV32-NEXT:    vlse64.v v9, (a0), zero
1511 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1512 ; RV32-NEXT:    vand.vv v8, v8, v9, v0.t
1513 ; RV32-NEXT:    addi sp, sp, 16
1514 ; RV32-NEXT:    ret
1516 ; RV64-LABEL: vand_vx_nxv1i64:
1517 ; RV64:       # %bb.0:
1518 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1519 ; RV64-NEXT:    vand.vx v8, v8, a0, v0.t
1520 ; RV64-NEXT:    ret
1521   %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1522   %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1523   %v = call <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1524   ret <vscale x 1 x i64> %v
1527 define <vscale x 1 x i64> @vand_vx_nxv1i64_unmasked(<vscale x 1 x i64> %va, i64 %b, i32 zeroext %evl) {
1528 ; RV32-LABEL: vand_vx_nxv1i64_unmasked:
1529 ; RV32:       # %bb.0:
1530 ; RV32-NEXT:    addi sp, sp, -16
1531 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1532 ; RV32-NEXT:    sw a1, 12(sp)
1533 ; RV32-NEXT:    sw a0, 8(sp)
1534 ; RV32-NEXT:    addi a0, sp, 8
1535 ; RV32-NEXT:    vsetvli a1, zero, e64, m1, ta, ma
1536 ; RV32-NEXT:    vlse64.v v9, (a0), zero
1537 ; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
1538 ; RV32-NEXT:    vand.vv v8, v8, v9
1539 ; RV32-NEXT:    addi sp, sp, 16
1540 ; RV32-NEXT:    ret
1542 ; RV64-LABEL: vand_vx_nxv1i64_unmasked:
1543 ; RV64:       # %bb.0:
1544 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
1545 ; RV64-NEXT:    vand.vx v8, v8, a0
1546 ; RV64-NEXT:    ret
1547   %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1548   %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1549   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1550   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1551   %v = call <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1552   ret <vscale x 1 x i64> %v
1555 define <vscale x 1 x i64> @vand_vi_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i1> %m, i32 zeroext %evl) {
1556 ; CHECK-LABEL: vand_vi_nxv1i64:
1557 ; CHECK:       # %bb.0:
1558 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1559 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
1560 ; CHECK-NEXT:    ret
1561   %elt.head = insertelement <vscale x 1 x i64> poison, i64 4, i32 0
1562   %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1563   %v = call <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1564   ret <vscale x 1 x i64> %v
1567 define <vscale x 1 x i64> @vand_vi_nxv1i64_unmasked(<vscale x 1 x i64> %va, i32 zeroext %evl) {
1568 ; CHECK-LABEL: vand_vi_nxv1i64_unmasked:
1569 ; CHECK:       # %bb.0:
1570 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
1571 ; CHECK-NEXT:    vand.vi v8, v8, 4
1572 ; CHECK-NEXT:    ret
1573   %elt.head = insertelement <vscale x 1 x i64> poison, i64 4, i32 0
1574   %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1575   %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1576   %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1577   %v = call <vscale x 1 x i64> @llvm.vp.and.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1578   ret <vscale x 1 x i64> %v
1581 declare <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i1>, i32)
1583 define <vscale x 2 x i64> @vand_vv_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1584 ; CHECK-LABEL: vand_vv_nxv2i64:
1585 ; CHECK:       # %bb.0:
1586 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1587 ; CHECK-NEXT:    vand.vv v8, v8, v10, v0.t
1588 ; CHECK-NEXT:    ret
1589   %v = call <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)
1590   ret <vscale x 2 x i64> %v
1593 define <vscale x 2 x i64> @vand_vv_nxv2i64_unmasked(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, i32 zeroext %evl) {
1594 ; CHECK-LABEL: vand_vv_nxv2i64_unmasked:
1595 ; CHECK:       # %bb.0:
1596 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1597 ; CHECK-NEXT:    vand.vv v8, v8, v10
1598 ; CHECK-NEXT:    ret
1599   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1600   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1601   %v = call <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)
1602   ret <vscale x 2 x i64> %v
1605 define <vscale x 2 x i64> @vand_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1606 ; RV32-LABEL: vand_vx_nxv2i64:
1607 ; RV32:       # %bb.0:
1608 ; RV32-NEXT:    addi sp, sp, -16
1609 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1610 ; RV32-NEXT:    sw a1, 12(sp)
1611 ; RV32-NEXT:    sw a0, 8(sp)
1612 ; RV32-NEXT:    addi a0, sp, 8
1613 ; RV32-NEXT:    vsetvli a1, zero, e64, m2, ta, ma
1614 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1615 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1616 ; RV32-NEXT:    vand.vv v8, v8, v10, v0.t
1617 ; RV32-NEXT:    addi sp, sp, 16
1618 ; RV32-NEXT:    ret
1620 ; RV64-LABEL: vand_vx_nxv2i64:
1621 ; RV64:       # %bb.0:
1622 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1623 ; RV64-NEXT:    vand.vx v8, v8, a0, v0.t
1624 ; RV64-NEXT:    ret
1625   %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1626   %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1627   %v = call <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1628   ret <vscale x 2 x i64> %v
1631 define <vscale x 2 x i64> @vand_vx_nxv2i64_unmasked(<vscale x 2 x i64> %va, i64 %b, i32 zeroext %evl) {
1632 ; RV32-LABEL: vand_vx_nxv2i64_unmasked:
1633 ; RV32:       # %bb.0:
1634 ; RV32-NEXT:    addi sp, sp, -16
1635 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1636 ; RV32-NEXT:    sw a1, 12(sp)
1637 ; RV32-NEXT:    sw a0, 8(sp)
1638 ; RV32-NEXT:    addi a0, sp, 8
1639 ; RV32-NEXT:    vsetvli a1, zero, e64, m2, ta, ma
1640 ; RV32-NEXT:    vlse64.v v10, (a0), zero
1641 ; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
1642 ; RV32-NEXT:    vand.vv v8, v8, v10
1643 ; RV32-NEXT:    addi sp, sp, 16
1644 ; RV32-NEXT:    ret
1646 ; RV64-LABEL: vand_vx_nxv2i64_unmasked:
1647 ; RV64:       # %bb.0:
1648 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1649 ; RV64-NEXT:    vand.vx v8, v8, a0
1650 ; RV64-NEXT:    ret
1651   %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1652   %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1653   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1654   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1655   %v = call <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1656   ret <vscale x 2 x i64> %v
1659 define <vscale x 2 x i64> @vand_vi_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1660 ; CHECK-LABEL: vand_vi_nxv2i64:
1661 ; CHECK:       # %bb.0:
1662 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1663 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
1664 ; CHECK-NEXT:    ret
1665   %elt.head = insertelement <vscale x 2 x i64> poison, i64 4, i32 0
1666   %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1667   %v = call <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1668   ret <vscale x 2 x i64> %v
1671 define <vscale x 2 x i64> @vand_vi_nxv2i64_unmasked(<vscale x 2 x i64> %va, i32 zeroext %evl) {
1672 ; CHECK-LABEL: vand_vi_nxv2i64_unmasked:
1673 ; CHECK:       # %bb.0:
1674 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
1675 ; CHECK-NEXT:    vand.vi v8, v8, 4
1676 ; CHECK-NEXT:    ret
1677   %elt.head = insertelement <vscale x 2 x i64> poison, i64 4, i32 0
1678   %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1679   %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1680   %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1681   %v = call <vscale x 2 x i64> @llvm.vp.and.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1682   ret <vscale x 2 x i64> %v
1685 declare <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64>, <vscale x 4 x i64>, <vscale x 4 x i1>, i32)
1687 define <vscale x 4 x i64> @vand_vv_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1688 ; CHECK-LABEL: vand_vv_nxv4i64:
1689 ; CHECK:       # %bb.0:
1690 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1691 ; CHECK-NEXT:    vand.vv v8, v8, v12, v0.t
1692 ; CHECK-NEXT:    ret
1693   %v = call <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)
1694   ret <vscale x 4 x i64> %v
1697 define <vscale x 4 x i64> @vand_vv_nxv4i64_unmasked(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, i32 zeroext %evl) {
1698 ; CHECK-LABEL: vand_vv_nxv4i64_unmasked:
1699 ; CHECK:       # %bb.0:
1700 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1701 ; CHECK-NEXT:    vand.vv v8, v8, v12
1702 ; CHECK-NEXT:    ret
1703   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1704   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1705   %v = call <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)
1706   ret <vscale x 4 x i64> %v
1709 define <vscale x 4 x i64> @vand_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1710 ; RV32-LABEL: vand_vx_nxv4i64:
1711 ; RV32:       # %bb.0:
1712 ; RV32-NEXT:    addi sp, sp, -16
1713 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1714 ; RV32-NEXT:    sw a1, 12(sp)
1715 ; RV32-NEXT:    sw a0, 8(sp)
1716 ; RV32-NEXT:    addi a0, sp, 8
1717 ; RV32-NEXT:    vsetvli a1, zero, e64, m4, ta, ma
1718 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1719 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1720 ; RV32-NEXT:    vand.vv v8, v8, v12, v0.t
1721 ; RV32-NEXT:    addi sp, sp, 16
1722 ; RV32-NEXT:    ret
1724 ; RV64-LABEL: vand_vx_nxv4i64:
1725 ; RV64:       # %bb.0:
1726 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1727 ; RV64-NEXT:    vand.vx v8, v8, a0, v0.t
1728 ; RV64-NEXT:    ret
1729   %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1730   %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1731   %v = call <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1732   ret <vscale x 4 x i64> %v
1735 define <vscale x 4 x i64> @vand_vx_nxv4i64_unmasked(<vscale x 4 x i64> %va, i64 %b, i32 zeroext %evl) {
1736 ; RV32-LABEL: vand_vx_nxv4i64_unmasked:
1737 ; RV32:       # %bb.0:
1738 ; RV32-NEXT:    addi sp, sp, -16
1739 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1740 ; RV32-NEXT:    sw a1, 12(sp)
1741 ; RV32-NEXT:    sw a0, 8(sp)
1742 ; RV32-NEXT:    addi a0, sp, 8
1743 ; RV32-NEXT:    vsetvli a1, zero, e64, m4, ta, ma
1744 ; RV32-NEXT:    vlse64.v v12, (a0), zero
1745 ; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1746 ; RV32-NEXT:    vand.vv v8, v8, v12
1747 ; RV32-NEXT:    addi sp, sp, 16
1748 ; RV32-NEXT:    ret
1750 ; RV64-LABEL: vand_vx_nxv4i64_unmasked:
1751 ; RV64:       # %bb.0:
1752 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1753 ; RV64-NEXT:    vand.vx v8, v8, a0
1754 ; RV64-NEXT:    ret
1755   %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1756   %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1757   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1758   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1759   %v = call <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1760   ret <vscale x 4 x i64> %v
1763 define <vscale x 4 x i64> @vand_vi_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1764 ; CHECK-LABEL: vand_vi_nxv4i64:
1765 ; CHECK:       # %bb.0:
1766 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1767 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
1768 ; CHECK-NEXT:    ret
1769   %elt.head = insertelement <vscale x 4 x i64> poison, i64 4, i32 0
1770   %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1771   %v = call <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1772   ret <vscale x 4 x i64> %v
1775 define <vscale x 4 x i64> @vand_vi_nxv4i64_unmasked(<vscale x 4 x i64> %va, i32 zeroext %evl) {
1776 ; CHECK-LABEL: vand_vi_nxv4i64_unmasked:
1777 ; CHECK:       # %bb.0:
1778 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1779 ; CHECK-NEXT:    vand.vi v8, v8, 4
1780 ; CHECK-NEXT:    ret
1781   %elt.head = insertelement <vscale x 4 x i64> poison, i64 4, i32 0
1782   %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1783   %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1784   %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1785   %v = call <vscale x 4 x i64> @llvm.vp.and.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1786   ret <vscale x 4 x i64> %v
1789 declare <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64>, <vscale x 8 x i64>, <vscale x 8 x i1>, i32)
1791 define <vscale x 8 x i64> @vand_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1792 ; CHECK-LABEL: vand_vv_nxv8i64:
1793 ; CHECK:       # %bb.0:
1794 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1795 ; CHECK-NEXT:    vand.vv v8, v8, v16, v0.t
1796 ; CHECK-NEXT:    ret
1797   %v = call <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)
1798   ret <vscale x 8 x i64> %v
1801 define <vscale x 8 x i64> @vand_vv_nxv8i64_unmasked(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, i32 zeroext %evl) {
1802 ; CHECK-LABEL: vand_vv_nxv8i64_unmasked:
1803 ; CHECK:       # %bb.0:
1804 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1805 ; CHECK-NEXT:    vand.vv v8, v8, v16
1806 ; CHECK-NEXT:    ret
1807   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1808   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1809   %v = call <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)
1810   ret <vscale x 8 x i64> %v
1813 define <vscale x 8 x i64> @vand_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1814 ; RV32-LABEL: vand_vx_nxv8i64:
1815 ; RV32:       # %bb.0:
1816 ; RV32-NEXT:    addi sp, sp, -16
1817 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1818 ; RV32-NEXT:    sw a1, 12(sp)
1819 ; RV32-NEXT:    sw a0, 8(sp)
1820 ; RV32-NEXT:    addi a0, sp, 8
1821 ; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
1822 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1823 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1824 ; RV32-NEXT:    vand.vv v8, v8, v16, v0.t
1825 ; RV32-NEXT:    addi sp, sp, 16
1826 ; RV32-NEXT:    ret
1828 ; RV64-LABEL: vand_vx_nxv8i64:
1829 ; RV64:       # %bb.0:
1830 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1831 ; RV64-NEXT:    vand.vx v8, v8, a0, v0.t
1832 ; RV64-NEXT:    ret
1833   %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1834   %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1835   %v = call <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1836   ret <vscale x 8 x i64> %v
1839 define <vscale x 8 x i64> @vand_vx_nxv8i64_unmasked(<vscale x 8 x i64> %va, i64 %b, i32 zeroext %evl) {
1840 ; RV32-LABEL: vand_vx_nxv8i64_unmasked:
1841 ; RV32:       # %bb.0:
1842 ; RV32-NEXT:    addi sp, sp, -16
1843 ; RV32-NEXT:    .cfi_def_cfa_offset 16
1844 ; RV32-NEXT:    sw a1, 12(sp)
1845 ; RV32-NEXT:    sw a0, 8(sp)
1846 ; RV32-NEXT:    addi a0, sp, 8
1847 ; RV32-NEXT:    vsetvli a1, zero, e64, m8, ta, ma
1848 ; RV32-NEXT:    vlse64.v v16, (a0), zero
1849 ; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1850 ; RV32-NEXT:    vand.vv v8, v8, v16
1851 ; RV32-NEXT:    addi sp, sp, 16
1852 ; RV32-NEXT:    ret
1854 ; RV64-LABEL: vand_vx_nxv8i64_unmasked:
1855 ; RV64:       # %bb.0:
1856 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1857 ; RV64-NEXT:    vand.vx v8, v8, a0
1858 ; RV64-NEXT:    ret
1859   %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1860   %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1861   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1862   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1863   %v = call <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1864   ret <vscale x 8 x i64> %v
1867 define <vscale x 8 x i64> @vand_vi_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1868 ; CHECK-LABEL: vand_vi_nxv8i64:
1869 ; CHECK:       # %bb.0:
1870 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1871 ; CHECK-NEXT:    vand.vi v8, v8, 4, v0.t
1872 ; CHECK-NEXT:    ret
1873   %elt.head = insertelement <vscale x 8 x i64> poison, i64 4, i32 0
1874   %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1875   %v = call <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1876   ret <vscale x 8 x i64> %v
1879 define <vscale x 8 x i64> @vand_vi_nxv8i64_unmasked(<vscale x 8 x i64> %va, i32 zeroext %evl) {
1880 ; CHECK-LABEL: vand_vi_nxv8i64_unmasked:
1881 ; CHECK:       # %bb.0:
1882 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1883 ; CHECK-NEXT:    vand.vi v8, v8, 4
1884 ; CHECK-NEXT:    ret
1885   %elt.head = insertelement <vscale x 8 x i64> poison, i64 4, i32 0
1886   %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1887   %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1888   %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1889   %v = call <vscale x 8 x i64> @llvm.vp.and.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1890   ret <vscale x 8 x i64> %v