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 <8 x i7> @llvm.vp.udiv.v8i7(<8 x i7>, <8 x i7>, <8 x i1>, i32)
9 define <8 x i7> @vdivu_vv_v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 zeroext %evl) {
10 ; CHECK-LABEL: vdivu_vv_v8i7:
12 ; CHECK-NEXT: li a1, 127
13 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
14 ; CHECK-NEXT: vand.vx v9, v9, a1, v0.t
15 ; CHECK-NEXT: vand.vx v8, v8, a1, v0.t
16 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
18 %v = call <8 x i7> @llvm.vp.udiv.v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 %evl)
22 declare <2 x i8> @llvm.vp.udiv.v2i8(<2 x i8>, <2 x i8>, <2 x i1>, i32)
24 define <2 x i8> @vdivu_vv_v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 zeroext %evl) {
25 ; CHECK-LABEL: vdivu_vv_v2i8:
27 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
28 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
30 %v = call <2 x i8> @llvm.vp.udiv.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
34 define <2 x i8> @vdivu_vv_v2i8_unmasked(<2 x i8> %va, <2 x i8> %b, i32 zeroext %evl) {
35 ; CHECK-LABEL: vdivu_vv_v2i8_unmasked:
37 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
38 ; CHECK-NEXT: vdivu.vv v8, v8, v9
40 %v = call <2 x i8> @llvm.vp.udiv.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> splat (i1 true), i32 %evl)
44 define <2 x i8> @vdivu_vx_v2i8(<2 x i8> %va, i8 %b, <2 x i1> %m, i32 zeroext %evl) {
45 ; CHECK-LABEL: vdivu_vx_v2i8:
47 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
48 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
50 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
51 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
52 %v = call <2 x i8> @llvm.vp.udiv.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
56 define <2 x i8> @vdivu_vx_v2i8_unmasked(<2 x i8> %va, i8 %b, i32 zeroext %evl) {
57 ; CHECK-LABEL: vdivu_vx_v2i8_unmasked:
59 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
60 ; CHECK-NEXT: vdivu.vx v8, v8, a0
62 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
63 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
64 %v = call <2 x i8> @llvm.vp.udiv.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> splat (i1 true), i32 %evl)
68 declare <4 x i8> @llvm.vp.udiv.v4i8(<4 x i8>, <4 x i8>, <4 x i1>, i32)
70 define <4 x i8> @vdivu_vv_v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 zeroext %evl) {
71 ; CHECK-LABEL: vdivu_vv_v4i8:
73 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
74 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
76 %v = call <4 x i8> @llvm.vp.udiv.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
80 define <4 x i8> @vdivu_vv_v4i8_unmasked(<4 x i8> %va, <4 x i8> %b, i32 zeroext %evl) {
81 ; CHECK-LABEL: vdivu_vv_v4i8_unmasked:
83 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
84 ; CHECK-NEXT: vdivu.vv v8, v8, v9
86 %v = call <4 x i8> @llvm.vp.udiv.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> splat (i1 true), i32 %evl)
90 define <4 x i8> @vdivu_vx_v4i8(<4 x i8> %va, i8 %b, <4 x i1> %m, i32 zeroext %evl) {
91 ; CHECK-LABEL: vdivu_vx_v4i8:
93 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
94 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
96 %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
97 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
98 %v = call <4 x i8> @llvm.vp.udiv.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
102 define <4 x i8> @vdivu_vx_v4i8_unmasked(<4 x i8> %va, i8 %b, i32 zeroext %evl) {
103 ; CHECK-LABEL: vdivu_vx_v4i8_unmasked:
105 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
106 ; CHECK-NEXT: vdivu.vx v8, v8, a0
108 %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
109 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
110 %v = call <4 x i8> @llvm.vp.udiv.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> splat (i1 true), i32 %evl)
114 declare <6 x i8> @llvm.vp.udiv.v6i8(<6 x i8>, <6 x i8>, <6 x i1>, i32)
116 define <6 x i8> @vdivu_vv_v6i8(<6 x i8> %va, <6 x i8> %b, <6 x i1> %m, i32 zeroext %evl) {
117 ; CHECK-LABEL: vdivu_vv_v6i8:
119 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
120 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
122 %v = call <6 x i8> @llvm.vp.udiv.v6i8(<6 x i8> %va, <6 x i8> %b, <6 x i1> %m, i32 %evl)
126 declare <8 x i8> @llvm.vp.udiv.v8i8(<8 x i8>, <8 x i8>, <8 x i1>, i32)
128 define <8 x i8> @vdivu_vv_v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 zeroext %evl) {
129 ; CHECK-LABEL: vdivu_vv_v8i8:
131 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
132 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
134 %v = call <8 x i8> @llvm.vp.udiv.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
138 define <8 x i8> @vdivu_vv_v8i8_unmasked(<8 x i8> %va, <8 x i8> %b, i32 zeroext %evl) {
139 ; CHECK-LABEL: vdivu_vv_v8i8_unmasked:
141 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
142 ; CHECK-NEXT: vdivu.vv v8, v8, v9
144 %v = call <8 x i8> @llvm.vp.udiv.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> splat (i1 true), i32 %evl)
148 define <8 x i8> @vdivu_vx_v8i8(<8 x i8> %va, i8 %b, <8 x i1> %m, i32 zeroext %evl) {
149 ; CHECK-LABEL: vdivu_vx_v8i8:
151 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
152 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
154 %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
155 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
156 %v = call <8 x i8> @llvm.vp.udiv.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
160 define <8 x i8> @vdivu_vx_v8i8_unmasked(<8 x i8> %va, i8 %b, i32 zeroext %evl) {
161 ; CHECK-LABEL: vdivu_vx_v8i8_unmasked:
163 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
164 ; CHECK-NEXT: vdivu.vx v8, v8, a0
166 %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
167 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
168 %v = call <8 x i8> @llvm.vp.udiv.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> splat (i1 true), i32 %evl)
172 declare <16 x i8> @llvm.vp.udiv.v16i8(<16 x i8>, <16 x i8>, <16 x i1>, i32)
174 define <16 x i8> @vdivu_vv_v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 zeroext %evl) {
175 ; CHECK-LABEL: vdivu_vv_v16i8:
177 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
178 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
180 %v = call <16 x i8> @llvm.vp.udiv.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
184 define <16 x i8> @vdivu_vv_v16i8_unmasked(<16 x i8> %va, <16 x i8> %b, i32 zeroext %evl) {
185 ; CHECK-LABEL: vdivu_vv_v16i8_unmasked:
187 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
188 ; CHECK-NEXT: vdivu.vv v8, v8, v9
190 %v = call <16 x i8> @llvm.vp.udiv.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> splat (i1 true), i32 %evl)
194 define <16 x i8> @vdivu_vx_v16i8(<16 x i8> %va, i8 %b, <16 x i1> %m, i32 zeroext %evl) {
195 ; CHECK-LABEL: vdivu_vx_v16i8:
197 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
198 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
200 %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
201 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
202 %v = call <16 x i8> @llvm.vp.udiv.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
206 define <16 x i8> @vdivu_vx_v16i8_unmasked(<16 x i8> %va, i8 %b, i32 zeroext %evl) {
207 ; CHECK-LABEL: vdivu_vx_v16i8_unmasked:
209 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
210 ; CHECK-NEXT: vdivu.vx v8, v8, a0
212 %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
213 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
214 %v = call <16 x i8> @llvm.vp.udiv.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> splat (i1 true), i32 %evl)
218 declare <2 x i16> @llvm.vp.udiv.v2i16(<2 x i16>, <2 x i16>, <2 x i1>, i32)
220 define <2 x i16> @vdivu_vv_v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 zeroext %evl) {
221 ; CHECK-LABEL: vdivu_vv_v2i16:
223 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
224 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
226 %v = call <2 x i16> @llvm.vp.udiv.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
230 define <2 x i16> @vdivu_vv_v2i16_unmasked(<2 x i16> %va, <2 x i16> %b, i32 zeroext %evl) {
231 ; CHECK-LABEL: vdivu_vv_v2i16_unmasked:
233 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
234 ; CHECK-NEXT: vdivu.vv v8, v8, v9
236 %v = call <2 x i16> @llvm.vp.udiv.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> splat (i1 true), i32 %evl)
240 define <2 x i16> @vdivu_vx_v2i16(<2 x i16> %va, i16 %b, <2 x i1> %m, i32 zeroext %evl) {
241 ; CHECK-LABEL: vdivu_vx_v2i16:
243 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
244 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
246 %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
247 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
248 %v = call <2 x i16> @llvm.vp.udiv.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
252 define <2 x i16> @vdivu_vx_v2i16_unmasked(<2 x i16> %va, i16 %b, i32 zeroext %evl) {
253 ; CHECK-LABEL: vdivu_vx_v2i16_unmasked:
255 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
256 ; CHECK-NEXT: vdivu.vx v8, v8, a0
258 %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
259 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
260 %v = call <2 x i16> @llvm.vp.udiv.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> splat (i1 true), i32 %evl)
264 declare <4 x i16> @llvm.vp.udiv.v4i16(<4 x i16>, <4 x i16>, <4 x i1>, i32)
266 define <4 x i16> @vdivu_vv_v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 zeroext %evl) {
267 ; CHECK-LABEL: vdivu_vv_v4i16:
269 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
270 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
272 %v = call <4 x i16> @llvm.vp.udiv.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
276 define <4 x i16> @vdivu_vv_v4i16_unmasked(<4 x i16> %va, <4 x i16> %b, i32 zeroext %evl) {
277 ; CHECK-LABEL: vdivu_vv_v4i16_unmasked:
279 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
280 ; CHECK-NEXT: vdivu.vv v8, v8, v9
282 %v = call <4 x i16> @llvm.vp.udiv.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> splat (i1 true), i32 %evl)
286 define <4 x i16> @vdivu_vx_v4i16(<4 x i16> %va, i16 %b, <4 x i1> %m, i32 zeroext %evl) {
287 ; CHECK-LABEL: vdivu_vx_v4i16:
289 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
290 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
292 %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
293 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
294 %v = call <4 x i16> @llvm.vp.udiv.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
298 define <4 x i16> @vdivu_vx_v4i16_unmasked(<4 x i16> %va, i16 %b, i32 zeroext %evl) {
299 ; CHECK-LABEL: vdivu_vx_v4i16_unmasked:
301 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
302 ; CHECK-NEXT: vdivu.vx v8, v8, a0
304 %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
305 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
306 %v = call <4 x i16> @llvm.vp.udiv.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> splat (i1 true), i32 %evl)
310 declare <8 x i16> @llvm.vp.udiv.v8i16(<8 x i16>, <8 x i16>, <8 x i1>, i32)
312 define <8 x i16> @vdivu_vv_v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 zeroext %evl) {
313 ; CHECK-LABEL: vdivu_vv_v8i16:
315 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
316 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
318 %v = call <8 x i16> @llvm.vp.udiv.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
322 define <8 x i16> @vdivu_vv_v8i16_unmasked(<8 x i16> %va, <8 x i16> %b, i32 zeroext %evl) {
323 ; CHECK-LABEL: vdivu_vv_v8i16_unmasked:
325 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
326 ; CHECK-NEXT: vdivu.vv v8, v8, v9
328 %v = call <8 x i16> @llvm.vp.udiv.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> splat (i1 true), i32 %evl)
332 define <8 x i16> @vdivu_vx_v8i16(<8 x i16> %va, i16 %b, <8 x i1> %m, i32 zeroext %evl) {
333 ; CHECK-LABEL: vdivu_vx_v8i16:
335 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
336 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
338 %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
339 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
340 %v = call <8 x i16> @llvm.vp.udiv.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
344 define <8 x i16> @vdivu_vx_v8i16_unmasked(<8 x i16> %va, i16 %b, i32 zeroext %evl) {
345 ; CHECK-LABEL: vdivu_vx_v8i16_unmasked:
347 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
348 ; CHECK-NEXT: vdivu.vx v8, v8, a0
350 %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
351 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
352 %v = call <8 x i16> @llvm.vp.udiv.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> splat (i1 true), i32 %evl)
356 declare <16 x i16> @llvm.vp.udiv.v16i16(<16 x i16>, <16 x i16>, <16 x i1>, i32)
358 define <16 x i16> @vdivu_vv_v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 zeroext %evl) {
359 ; CHECK-LABEL: vdivu_vv_v16i16:
361 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
362 ; CHECK-NEXT: vdivu.vv v8, v8, v10, v0.t
364 %v = call <16 x i16> @llvm.vp.udiv.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
368 define <16 x i16> @vdivu_vv_v16i16_unmasked(<16 x i16> %va, <16 x i16> %b, i32 zeroext %evl) {
369 ; CHECK-LABEL: vdivu_vv_v16i16_unmasked:
371 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
372 ; CHECK-NEXT: vdivu.vv v8, v8, v10
374 %v = call <16 x i16> @llvm.vp.udiv.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> splat (i1 true), i32 %evl)
378 define <16 x i16> @vdivu_vx_v16i16(<16 x i16> %va, i16 %b, <16 x i1> %m, i32 zeroext %evl) {
379 ; CHECK-LABEL: vdivu_vx_v16i16:
381 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
382 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
384 %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
385 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
386 %v = call <16 x i16> @llvm.vp.udiv.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
390 define <16 x i16> @vdivu_vx_v16i16_unmasked(<16 x i16> %va, i16 %b, i32 zeroext %evl) {
391 ; CHECK-LABEL: vdivu_vx_v16i16_unmasked:
393 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
394 ; CHECK-NEXT: vdivu.vx v8, v8, a0
396 %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
397 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
398 %v = call <16 x i16> @llvm.vp.udiv.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> splat (i1 true), i32 %evl)
402 declare <2 x i32> @llvm.vp.udiv.v2i32(<2 x i32>, <2 x i32>, <2 x i1>, i32)
404 define <2 x i32> @vdivu_vv_v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 zeroext %evl) {
405 ; CHECK-LABEL: vdivu_vv_v2i32:
407 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
408 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
410 %v = call <2 x i32> @llvm.vp.udiv.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
414 define <2 x i32> @vdivu_vv_v2i32_unmasked(<2 x i32> %va, <2 x i32> %b, i32 zeroext %evl) {
415 ; CHECK-LABEL: vdivu_vv_v2i32_unmasked:
417 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
418 ; CHECK-NEXT: vdivu.vv v8, v8, v9
420 %v = call <2 x i32> @llvm.vp.udiv.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> splat (i1 true), i32 %evl)
424 define <2 x i32> @vdivu_vx_v2i32(<2 x i32> %va, i32 %b, <2 x i1> %m, i32 zeroext %evl) {
425 ; CHECK-LABEL: vdivu_vx_v2i32:
427 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
428 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
430 %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
431 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
432 %v = call <2 x i32> @llvm.vp.udiv.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
436 define <2 x i32> @vdivu_vx_v2i32_unmasked(<2 x i32> %va, i32 %b, i32 zeroext %evl) {
437 ; CHECK-LABEL: vdivu_vx_v2i32_unmasked:
439 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
440 ; CHECK-NEXT: vdivu.vx v8, v8, a0
442 %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
443 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
444 %v = call <2 x i32> @llvm.vp.udiv.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> splat (i1 true), i32 %evl)
448 declare <4 x i32> @llvm.vp.udiv.v4i32(<4 x i32>, <4 x i32>, <4 x i1>, i32)
450 define <4 x i32> @vdivu_vv_v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 zeroext %evl) {
451 ; CHECK-LABEL: vdivu_vv_v4i32:
453 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
454 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
456 %v = call <4 x i32> @llvm.vp.udiv.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
460 define <4 x i32> @vdivu_vv_v4i32_unmasked(<4 x i32> %va, <4 x i32> %b, i32 zeroext %evl) {
461 ; CHECK-LABEL: vdivu_vv_v4i32_unmasked:
463 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
464 ; CHECK-NEXT: vdivu.vv v8, v8, v9
466 %v = call <4 x i32> @llvm.vp.udiv.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> splat (i1 true), i32 %evl)
470 define <4 x i32> @vdivu_vx_v4i32(<4 x i32> %va, i32 %b, <4 x i1> %m, i32 zeroext %evl) {
471 ; CHECK-LABEL: vdivu_vx_v4i32:
473 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
474 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
476 %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
477 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
478 %v = call <4 x i32> @llvm.vp.udiv.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
482 define <4 x i32> @vdivu_vx_v4i32_unmasked(<4 x i32> %va, i32 %b, i32 zeroext %evl) {
483 ; CHECK-LABEL: vdivu_vx_v4i32_unmasked:
485 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
486 ; CHECK-NEXT: vdivu.vx v8, v8, a0
488 %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
489 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
490 %v = call <4 x i32> @llvm.vp.udiv.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> splat (i1 true), i32 %evl)
494 declare <8 x i32> @llvm.vp.udiv.v8i32(<8 x i32>, <8 x i32>, <8 x i1>, i32)
496 define <8 x i32> @vdivu_vv_v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 zeroext %evl) {
497 ; CHECK-LABEL: vdivu_vv_v8i32:
499 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
500 ; CHECK-NEXT: vdivu.vv v8, v8, v10, v0.t
502 %v = call <8 x i32> @llvm.vp.udiv.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
506 define <8 x i32> @vdivu_vv_v8i32_unmasked(<8 x i32> %va, <8 x i32> %b, i32 zeroext %evl) {
507 ; CHECK-LABEL: vdivu_vv_v8i32_unmasked:
509 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
510 ; CHECK-NEXT: vdivu.vv v8, v8, v10
512 %v = call <8 x i32> @llvm.vp.udiv.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> splat (i1 true), i32 %evl)
516 define <8 x i32> @vdivu_vx_v8i32(<8 x i32> %va, i32 %b, <8 x i1> %m, i32 zeroext %evl) {
517 ; CHECK-LABEL: vdivu_vx_v8i32:
519 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
520 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
522 %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
523 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
524 %v = call <8 x i32> @llvm.vp.udiv.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
528 define <8 x i32> @vdivu_vx_v8i32_unmasked(<8 x i32> %va, i32 %b, i32 zeroext %evl) {
529 ; CHECK-LABEL: vdivu_vx_v8i32_unmasked:
531 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
532 ; CHECK-NEXT: vdivu.vx v8, v8, a0
534 %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
535 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
536 %v = call <8 x i32> @llvm.vp.udiv.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> splat (i1 true), i32 %evl)
540 declare <16 x i32> @llvm.vp.udiv.v16i32(<16 x i32>, <16 x i32>, <16 x i1>, i32)
542 define <16 x i32> @vdivu_vv_v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 zeroext %evl) {
543 ; CHECK-LABEL: vdivu_vv_v16i32:
545 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
546 ; CHECK-NEXT: vdivu.vv v8, v8, v12, v0.t
548 %v = call <16 x i32> @llvm.vp.udiv.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
552 define <16 x i32> @vdivu_vv_v16i32_unmasked(<16 x i32> %va, <16 x i32> %b, i32 zeroext %evl) {
553 ; CHECK-LABEL: vdivu_vv_v16i32_unmasked:
555 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
556 ; CHECK-NEXT: vdivu.vv v8, v8, v12
558 %v = call <16 x i32> @llvm.vp.udiv.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> splat (i1 true), i32 %evl)
562 define <16 x i32> @vdivu_vx_v16i32(<16 x i32> %va, i32 %b, <16 x i1> %m, i32 zeroext %evl) {
563 ; CHECK-LABEL: vdivu_vx_v16i32:
565 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
566 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
568 %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
569 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
570 %v = call <16 x i32> @llvm.vp.udiv.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
574 define <16 x i32> @vdivu_vx_v16i32_unmasked(<16 x i32> %va, i32 %b, i32 zeroext %evl) {
575 ; CHECK-LABEL: vdivu_vx_v16i32_unmasked:
577 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
578 ; CHECK-NEXT: vdivu.vx v8, v8, a0
580 %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
581 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
582 %v = call <16 x i32> @llvm.vp.udiv.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> splat (i1 true), i32 %evl)
586 declare <2 x i64> @llvm.vp.udiv.v2i64(<2 x i64>, <2 x i64>, <2 x i1>, i32)
588 define <2 x i64> @vdivu_vv_v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 zeroext %evl) {
589 ; CHECK-LABEL: vdivu_vv_v2i64:
591 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
592 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
594 %v = call <2 x i64> @llvm.vp.udiv.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
598 define <2 x i64> @vdivu_vv_v2i64_unmasked(<2 x i64> %va, <2 x i64> %b, i32 zeroext %evl) {
599 ; CHECK-LABEL: vdivu_vv_v2i64_unmasked:
601 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
602 ; CHECK-NEXT: vdivu.vv v8, v8, v9
604 %v = call <2 x i64> @llvm.vp.udiv.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> splat (i1 true), i32 %evl)
608 define <2 x i64> @vdivu_vx_v2i64(<2 x i64> %va, i64 %b, <2 x i1> %m, i32 zeroext %evl) {
609 ; RV32-LABEL: vdivu_vx_v2i64:
611 ; RV32-NEXT: addi sp, sp, -16
612 ; RV32-NEXT: .cfi_def_cfa_offset 16
613 ; RV32-NEXT: sw a0, 8(sp)
614 ; RV32-NEXT: sw a1, 12(sp)
615 ; RV32-NEXT: addi a0, sp, 8
616 ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
617 ; RV32-NEXT: vlse64.v v9, (a0), zero
618 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
619 ; RV32-NEXT: vdivu.vv v8, v8, v9, v0.t
620 ; RV32-NEXT: addi sp, sp, 16
621 ; RV32-NEXT: .cfi_def_cfa_offset 0
624 ; RV64-LABEL: vdivu_vx_v2i64:
626 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
627 ; RV64-NEXT: vdivu.vx v8, v8, a0, v0.t
629 %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
630 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
631 %v = call <2 x i64> @llvm.vp.udiv.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
635 define <2 x i64> @vdivu_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
636 ; RV32-LABEL: vdivu_vx_v2i64_unmasked:
638 ; RV32-NEXT: addi sp, sp, -16
639 ; RV32-NEXT: .cfi_def_cfa_offset 16
640 ; RV32-NEXT: sw a0, 8(sp)
641 ; RV32-NEXT: sw a1, 12(sp)
642 ; RV32-NEXT: addi a0, sp, 8
643 ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
644 ; RV32-NEXT: vlse64.v v9, (a0), zero
645 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
646 ; RV32-NEXT: vdivu.vv v8, v8, v9
647 ; RV32-NEXT: addi sp, sp, 16
648 ; RV32-NEXT: .cfi_def_cfa_offset 0
651 ; RV64-LABEL: vdivu_vx_v2i64_unmasked:
653 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
654 ; RV64-NEXT: vdivu.vx v8, v8, a0
656 %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
657 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
658 %v = call <2 x i64> @llvm.vp.udiv.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> splat (i1 true), i32 %evl)
662 declare <4 x i64> @llvm.vp.udiv.v4i64(<4 x i64>, <4 x i64>, <4 x i1>, i32)
664 define <4 x i64> @vdivu_vv_v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 zeroext %evl) {
665 ; CHECK-LABEL: vdivu_vv_v4i64:
667 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
668 ; CHECK-NEXT: vdivu.vv v8, v8, v10, v0.t
670 %v = call <4 x i64> @llvm.vp.udiv.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
674 define <4 x i64> @vdivu_vv_v4i64_unmasked(<4 x i64> %va, <4 x i64> %b, i32 zeroext %evl) {
675 ; CHECK-LABEL: vdivu_vv_v4i64_unmasked:
677 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
678 ; CHECK-NEXT: vdivu.vv v8, v8, v10
680 %v = call <4 x i64> @llvm.vp.udiv.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> splat (i1 true), i32 %evl)
684 define <4 x i64> @vdivu_vx_v4i64(<4 x i64> %va, i64 %b, <4 x i1> %m, i32 zeroext %evl) {
685 ; RV32-LABEL: vdivu_vx_v4i64:
687 ; RV32-NEXT: addi sp, sp, -16
688 ; RV32-NEXT: .cfi_def_cfa_offset 16
689 ; RV32-NEXT: sw a0, 8(sp)
690 ; RV32-NEXT: sw a1, 12(sp)
691 ; RV32-NEXT: addi a0, sp, 8
692 ; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
693 ; RV32-NEXT: vlse64.v v10, (a0), zero
694 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
695 ; RV32-NEXT: vdivu.vv v8, v8, v10, v0.t
696 ; RV32-NEXT: addi sp, sp, 16
697 ; RV32-NEXT: .cfi_def_cfa_offset 0
700 ; RV64-LABEL: vdivu_vx_v4i64:
702 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
703 ; RV64-NEXT: vdivu.vx v8, v8, a0, v0.t
705 %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
706 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
707 %v = call <4 x i64> @llvm.vp.udiv.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
711 define <4 x i64> @vdivu_vx_v4i64_unmasked(<4 x i64> %va, i64 %b, i32 zeroext %evl) {
712 ; RV32-LABEL: vdivu_vx_v4i64_unmasked:
714 ; RV32-NEXT: addi sp, sp, -16
715 ; RV32-NEXT: .cfi_def_cfa_offset 16
716 ; RV32-NEXT: sw a0, 8(sp)
717 ; RV32-NEXT: sw a1, 12(sp)
718 ; RV32-NEXT: addi a0, sp, 8
719 ; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
720 ; RV32-NEXT: vlse64.v v10, (a0), zero
721 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
722 ; RV32-NEXT: vdivu.vv v8, v8, v10
723 ; RV32-NEXT: addi sp, sp, 16
724 ; RV32-NEXT: .cfi_def_cfa_offset 0
727 ; RV64-LABEL: vdivu_vx_v4i64_unmasked:
729 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
730 ; RV64-NEXT: vdivu.vx v8, v8, a0
732 %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
733 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
734 %v = call <4 x i64> @llvm.vp.udiv.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> splat (i1 true), i32 %evl)
738 declare <8 x i64> @llvm.vp.udiv.v8i64(<8 x i64>, <8 x i64>, <8 x i1>, i32)
740 define <8 x i64> @vdivu_vv_v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 zeroext %evl) {
741 ; CHECK-LABEL: vdivu_vv_v8i64:
743 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
744 ; CHECK-NEXT: vdivu.vv v8, v8, v12, v0.t
746 %v = call <8 x i64> @llvm.vp.udiv.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
750 define <8 x i64> @vdivu_vv_v8i64_unmasked(<8 x i64> %va, <8 x i64> %b, i32 zeroext %evl) {
751 ; CHECK-LABEL: vdivu_vv_v8i64_unmasked:
753 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
754 ; CHECK-NEXT: vdivu.vv v8, v8, v12
756 %v = call <8 x i64> @llvm.vp.udiv.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> splat (i1 true), i32 %evl)
760 define <8 x i64> @vdivu_vx_v8i64(<8 x i64> %va, i64 %b, <8 x i1> %m, i32 zeroext %evl) {
761 ; RV32-LABEL: vdivu_vx_v8i64:
763 ; RV32-NEXT: addi sp, sp, -16
764 ; RV32-NEXT: .cfi_def_cfa_offset 16
765 ; RV32-NEXT: sw a0, 8(sp)
766 ; RV32-NEXT: sw a1, 12(sp)
767 ; RV32-NEXT: addi a0, sp, 8
768 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
769 ; RV32-NEXT: vlse64.v v12, (a0), zero
770 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
771 ; RV32-NEXT: vdivu.vv v8, v8, v12, v0.t
772 ; RV32-NEXT: addi sp, sp, 16
773 ; RV32-NEXT: .cfi_def_cfa_offset 0
776 ; RV64-LABEL: vdivu_vx_v8i64:
778 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
779 ; RV64-NEXT: vdivu.vx v8, v8, a0, v0.t
781 %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
782 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
783 %v = call <8 x i64> @llvm.vp.udiv.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
787 define <8 x i64> @vdivu_vx_v8i64_unmasked(<8 x i64> %va, i64 %b, i32 zeroext %evl) {
788 ; RV32-LABEL: vdivu_vx_v8i64_unmasked:
790 ; RV32-NEXT: addi sp, sp, -16
791 ; RV32-NEXT: .cfi_def_cfa_offset 16
792 ; RV32-NEXT: sw a0, 8(sp)
793 ; RV32-NEXT: sw a1, 12(sp)
794 ; RV32-NEXT: addi a0, sp, 8
795 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
796 ; RV32-NEXT: vlse64.v v12, (a0), zero
797 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
798 ; RV32-NEXT: vdivu.vv v8, v8, v12
799 ; RV32-NEXT: addi sp, sp, 16
800 ; RV32-NEXT: .cfi_def_cfa_offset 0
803 ; RV64-LABEL: vdivu_vx_v8i64_unmasked:
805 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
806 ; RV64-NEXT: vdivu.vx v8, v8, a0
808 %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
809 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
810 %v = call <8 x i64> @llvm.vp.udiv.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> splat (i1 true), i32 %evl)
814 declare <16 x i64> @llvm.vp.udiv.v16i64(<16 x i64>, <16 x i64>, <16 x i1>, i32)
816 define <16 x i64> @vdivu_vv_v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 zeroext %evl) {
817 ; CHECK-LABEL: vdivu_vv_v16i64:
819 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
820 ; CHECK-NEXT: vdivu.vv v8, v8, v16, v0.t
822 %v = call <16 x i64> @llvm.vp.udiv.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
826 define <16 x i64> @vdivu_vv_v16i64_unmasked(<16 x i64> %va, <16 x i64> %b, i32 zeroext %evl) {
827 ; CHECK-LABEL: vdivu_vv_v16i64_unmasked:
829 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
830 ; CHECK-NEXT: vdivu.vv v8, v8, v16
832 %v = call <16 x i64> @llvm.vp.udiv.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> splat (i1 true), i32 %evl)
836 define <16 x i64> @vdivu_vx_v16i64(<16 x i64> %va, i64 %b, <16 x i1> %m, i32 zeroext %evl) {
837 ; RV32-LABEL: vdivu_vx_v16i64:
839 ; RV32-NEXT: addi sp, sp, -16
840 ; RV32-NEXT: .cfi_def_cfa_offset 16
841 ; RV32-NEXT: sw a0, 8(sp)
842 ; RV32-NEXT: sw a1, 12(sp)
843 ; RV32-NEXT: addi a0, sp, 8
844 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
845 ; RV32-NEXT: vlse64.v v16, (a0), zero
846 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
847 ; RV32-NEXT: vdivu.vv v8, v8, v16, v0.t
848 ; RV32-NEXT: addi sp, sp, 16
849 ; RV32-NEXT: .cfi_def_cfa_offset 0
852 ; RV64-LABEL: vdivu_vx_v16i64:
854 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
855 ; RV64-NEXT: vdivu.vx v8, v8, a0, v0.t
857 %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
858 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
859 %v = call <16 x i64> @llvm.vp.udiv.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
863 define <16 x i64> @vdivu_vx_v16i64_unmasked(<16 x i64> %va, i64 %b, i32 zeroext %evl) {
864 ; RV32-LABEL: vdivu_vx_v16i64_unmasked:
866 ; RV32-NEXT: addi sp, sp, -16
867 ; RV32-NEXT: .cfi_def_cfa_offset 16
868 ; RV32-NEXT: sw a0, 8(sp)
869 ; RV32-NEXT: sw a1, 12(sp)
870 ; RV32-NEXT: addi a0, sp, 8
871 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
872 ; RV32-NEXT: vlse64.v v16, (a0), zero
873 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
874 ; RV32-NEXT: vdivu.vv v8, v8, v16
875 ; RV32-NEXT: addi sp, sp, 16
876 ; RV32-NEXT: .cfi_def_cfa_offset 0
879 ; RV64-LABEL: vdivu_vx_v16i64_unmasked:
881 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
882 ; RV64-NEXT: vdivu.vx v8, v8, a0
884 %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
885 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
886 %v = call <16 x i64> @llvm.vp.udiv.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> splat (i1 true), i32 %evl)
891 define <8 x i8> @vdivu_vv_v8i8_unmasked_avl3(<8 x i8> %va, <8 x i8> %b) {
892 ; CHECK-LABEL: vdivu_vv_v8i8_unmasked_avl3:
894 ; CHECK-NEXT: vsetivli zero, 3, e8, mf2, ta, ma
895 ; CHECK-NEXT: vdivu.vv v8, v8, v9
897 %v = call <8 x i8> @llvm.vp.udiv.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> splat (i1 true), i32 3)
901 define <8 x i8> @vdivu_vv_v8i8_unmasked_avl7(<8 x i8> %va, <8 x i8> %b) {
902 ; CHECK-LABEL: vdivu_vv_v8i8_unmasked_avl7:
904 ; CHECK-NEXT: vsetivli zero, 7, e8, mf2, ta, ma
905 ; CHECK-NEXT: vdivu.vv v8, v8, v9
907 %v = call <8 x i8> @llvm.vp.udiv.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> splat (i1 true), i32 7)
911 declare <3 x i8> @llvm.vp.udiv.v3i8(<3 x i8>, <3 x i8>, <3 x i1>, i32)
913 define <3 x i8> @vdivu_vv_v3i8_unmasked(<3 x i8> %va, <3 x i8> %b, i32 zeroext %evl) {
914 ; CHECK-LABEL: vdivu_vv_v3i8_unmasked:
916 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
917 ; CHECK-NEXT: vdivu.vv v8, v8, v9
919 %v = call <3 x i8> @llvm.vp.udiv.v3i8(<3 x i8> %va, <3 x i8> %b, <3 x i1> splat (i1 true), i32 %evl)
923 define <3 x i8> @vdivu_vv_v3i8_unmasked_avl3(<3 x i8> %va, <3 x i8> %b) {
924 ; CHECK-LABEL: vdivu_vv_v3i8_unmasked_avl3:
926 ; CHECK-NEXT: vsetivli zero, 3, e8, mf4, ta, ma
927 ; CHECK-NEXT: vdivu.vv v8, v8, v9
929 %v = call <3 x i8> @llvm.vp.udiv.v3i8(<3 x i8> %va, <3 x i8> %b, <3 x i1> splat (i1 true), i32 3)
933 declare <7 x i8> @llvm.vp.udiv.v7i8(<7 x i8>, <7 x i8>, <7 x i1>, i32)
935 define <7 x i8> @vdivu_vv_v7i8_unmasked(<7 x i8> %va, <7 x i8> %b, i32 zeroext %evl) {
936 ; CHECK-LABEL: vdivu_vv_v7i8_unmasked:
938 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
939 ; CHECK-NEXT: vdivu.vv v8, v8, v9
941 %v = call <7 x i8> @llvm.vp.udiv.v7i8(<7 x i8> %va, <7 x i8> %b, <7 x i1> splat (i1 true), i32 %evl)
945 define <7 x i8> @vdivu_vv_v7i8_unmasked_avl7(<7 x i8> %va, <7 x i8> %b) {
946 ; CHECK-LABEL: vdivu_vv_v7i8_unmasked_avl7:
948 ; CHECK-NEXT: vsetivli zero, 7, e8, mf2, ta, ma
949 ; CHECK-NEXT: vdivu.vv v8, v8, v9
951 %v = call <7 x i8> @llvm.vp.udiv.v7i8(<7 x i8> %va, <7 x i8> %b, <7 x i1> splat (i1 true), i32 7)