Revert "[InstCombine] Support gep nuw in icmp folds" (#118698)
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-vdivu-vp.ll
blobf1155a0657b40e55542e885595322004e143f26b
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:
11 ; CHECK:       # %bb.0:
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
17 ; CHECK-NEXT:    ret
18   %v = call <8 x i7> @llvm.vp.udiv.v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 %evl)
19   ret <8 x i7> %v
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:
26 ; CHECK:       # %bb.0:
27 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
28 ; CHECK-NEXT:    vdivu.vv v8, v8, v9, v0.t
29 ; CHECK-NEXT:    ret
30   %v = call <2 x i8> @llvm.vp.udiv.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
31   ret <2 x i8> %v
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:
36 ; CHECK:       # %bb.0:
37 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
38 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
39 ; CHECK-NEXT:    ret
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)
41   ret <2 x i8> %v
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:
46 ; CHECK:       # %bb.0:
47 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
48 ; CHECK-NEXT:    vdivu.vx v8, v8, a0, v0.t
49 ; CHECK-NEXT:    ret
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)
53   ret <2 x i8> %v
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:
58 ; CHECK:       # %bb.0:
59 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
60 ; CHECK-NEXT:    vdivu.vx v8, v8, a0
61 ; CHECK-NEXT:    ret
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)
65   ret <2 x i8> %v
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:
72 ; CHECK:       # %bb.0:
73 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
74 ; CHECK-NEXT:    vdivu.vv v8, v8, v9, v0.t
75 ; CHECK-NEXT:    ret
76   %v = call <4 x i8> @llvm.vp.udiv.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
77   ret <4 x i8> %v
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:
82 ; CHECK:       # %bb.0:
83 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
84 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
85 ; CHECK-NEXT:    ret
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)
87   ret <4 x i8> %v
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:
92 ; CHECK:       # %bb.0:
93 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
94 ; CHECK-NEXT:    vdivu.vx v8, v8, a0, v0.t
95 ; CHECK-NEXT:    ret
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)
99   ret <4 x i8> %v
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:
104 ; CHECK:       # %bb.0:
105 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
106 ; CHECK-NEXT:    vdivu.vx v8, v8, a0
107 ; CHECK-NEXT:    ret
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)
111   ret <4 x i8> %v
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:
118 ; CHECK:       # %bb.0:
119 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
120 ; CHECK-NEXT:    vdivu.vv v8, v8, v9, v0.t
121 ; CHECK-NEXT:    ret
122   %v = call <6 x i8> @llvm.vp.udiv.v6i8(<6 x i8> %va, <6 x i8> %b, <6 x i1> %m, i32 %evl)
123   ret <6 x i8> %v
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:
130 ; CHECK:       # %bb.0:
131 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
132 ; CHECK-NEXT:    vdivu.vv v8, v8, v9, v0.t
133 ; CHECK-NEXT:    ret
134   %v = call <8 x i8> @llvm.vp.udiv.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
135   ret <8 x i8> %v
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:
140 ; CHECK:       # %bb.0:
141 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
142 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
143 ; CHECK-NEXT:    ret
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)
145   ret <8 x i8> %v
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:
150 ; CHECK:       # %bb.0:
151 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
152 ; CHECK-NEXT:    vdivu.vx v8, v8, a0, v0.t
153 ; CHECK-NEXT:    ret
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)
157   ret <8 x i8> %v
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:
162 ; CHECK:       # %bb.0:
163 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
164 ; CHECK-NEXT:    vdivu.vx v8, v8, a0
165 ; CHECK-NEXT:    ret
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)
169   ret <8 x i8> %v
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:
176 ; CHECK:       # %bb.0:
177 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
178 ; CHECK-NEXT:    vdivu.vv v8, v8, v9, v0.t
179 ; CHECK-NEXT:    ret
180   %v = call <16 x i8> @llvm.vp.udiv.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
181   ret <16 x i8> %v
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:
186 ; CHECK:       # %bb.0:
187 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
188 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
189 ; CHECK-NEXT:    ret
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)
191   ret <16 x i8> %v
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:
196 ; CHECK:       # %bb.0:
197 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
198 ; CHECK-NEXT:    vdivu.vx v8, v8, a0, v0.t
199 ; CHECK-NEXT:    ret
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)
203   ret <16 x i8> %v
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:
208 ; CHECK:       # %bb.0:
209 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
210 ; CHECK-NEXT:    vdivu.vx v8, v8, a0
211 ; CHECK-NEXT:    ret
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)
215   ret <16 x i8> %v
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:
222 ; CHECK:       # %bb.0:
223 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
224 ; CHECK-NEXT:    vdivu.vv v8, v8, v9, v0.t
225 ; CHECK-NEXT:    ret
226   %v = call <2 x i16> @llvm.vp.udiv.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
227   ret <2 x i16> %v
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:
232 ; CHECK:       # %bb.0:
233 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
234 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
235 ; CHECK-NEXT:    ret
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)
237   ret <2 x i16> %v
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:
242 ; CHECK:       # %bb.0:
243 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
244 ; CHECK-NEXT:    vdivu.vx v8, v8, a0, v0.t
245 ; CHECK-NEXT:    ret
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)
249   ret <2 x i16> %v
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:
254 ; CHECK:       # %bb.0:
255 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
256 ; CHECK-NEXT:    vdivu.vx v8, v8, a0
257 ; CHECK-NEXT:    ret
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)
261   ret <2 x i16> %v
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:
268 ; CHECK:       # %bb.0:
269 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
270 ; CHECK-NEXT:    vdivu.vv v8, v8, v9, v0.t
271 ; CHECK-NEXT:    ret
272   %v = call <4 x i16> @llvm.vp.udiv.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
273   ret <4 x i16> %v
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:
278 ; CHECK:       # %bb.0:
279 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
280 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
281 ; CHECK-NEXT:    ret
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)
283   ret <4 x i16> %v
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:
288 ; CHECK:       # %bb.0:
289 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
290 ; CHECK-NEXT:    vdivu.vx v8, v8, a0, v0.t
291 ; CHECK-NEXT:    ret
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)
295   ret <4 x i16> %v
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:
300 ; CHECK:       # %bb.0:
301 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
302 ; CHECK-NEXT:    vdivu.vx v8, v8, a0
303 ; CHECK-NEXT:    ret
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)
307   ret <4 x i16> %v
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:
314 ; CHECK:       # %bb.0:
315 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
316 ; CHECK-NEXT:    vdivu.vv v8, v8, v9, v0.t
317 ; CHECK-NEXT:    ret
318   %v = call <8 x i16> @llvm.vp.udiv.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
319   ret <8 x i16> %v
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:
324 ; CHECK:       # %bb.0:
325 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
326 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
327 ; CHECK-NEXT:    ret
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)
329   ret <8 x i16> %v
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:
334 ; CHECK:       # %bb.0:
335 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
336 ; CHECK-NEXT:    vdivu.vx v8, v8, a0, v0.t
337 ; CHECK-NEXT:    ret
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)
341   ret <8 x i16> %v
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:
346 ; CHECK:       # %bb.0:
347 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
348 ; CHECK-NEXT:    vdivu.vx v8, v8, a0
349 ; CHECK-NEXT:    ret
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)
353   ret <8 x i16> %v
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:
360 ; CHECK:       # %bb.0:
361 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
362 ; CHECK-NEXT:    vdivu.vv v8, v8, v10, v0.t
363 ; CHECK-NEXT:    ret
364   %v = call <16 x i16> @llvm.vp.udiv.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
365   ret <16 x i16> %v
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:
370 ; CHECK:       # %bb.0:
371 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
372 ; CHECK-NEXT:    vdivu.vv v8, v8, v10
373 ; CHECK-NEXT:    ret
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)
375   ret <16 x i16> %v
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:
380 ; CHECK:       # %bb.0:
381 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
382 ; CHECK-NEXT:    vdivu.vx v8, v8, a0, v0.t
383 ; CHECK-NEXT:    ret
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)
387   ret <16 x i16> %v
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:
392 ; CHECK:       # %bb.0:
393 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
394 ; CHECK-NEXT:    vdivu.vx v8, v8, a0
395 ; CHECK-NEXT:    ret
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)
399   ret <16 x i16> %v
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:
406 ; CHECK:       # %bb.0:
407 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
408 ; CHECK-NEXT:    vdivu.vv v8, v8, v9, v0.t
409 ; CHECK-NEXT:    ret
410   %v = call <2 x i32> @llvm.vp.udiv.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
411   ret <2 x i32> %v
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:
416 ; CHECK:       # %bb.0:
417 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
418 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
419 ; CHECK-NEXT:    ret
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)
421   ret <2 x i32> %v
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:
426 ; CHECK:       # %bb.0:
427 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
428 ; CHECK-NEXT:    vdivu.vx v8, v8, a0, v0.t
429 ; CHECK-NEXT:    ret
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)
433   ret <2 x i32> %v
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:
438 ; CHECK:       # %bb.0:
439 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
440 ; CHECK-NEXT:    vdivu.vx v8, v8, a0
441 ; CHECK-NEXT:    ret
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)
445   ret <2 x i32> %v
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:
452 ; CHECK:       # %bb.0:
453 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
454 ; CHECK-NEXT:    vdivu.vv v8, v8, v9, v0.t
455 ; CHECK-NEXT:    ret
456   %v = call <4 x i32> @llvm.vp.udiv.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
457   ret <4 x i32> %v
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:
462 ; CHECK:       # %bb.0:
463 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
464 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
465 ; CHECK-NEXT:    ret
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)
467   ret <4 x i32> %v
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:
472 ; CHECK:       # %bb.0:
473 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
474 ; CHECK-NEXT:    vdivu.vx v8, v8, a0, v0.t
475 ; CHECK-NEXT:    ret
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)
479   ret <4 x i32> %v
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:
484 ; CHECK:       # %bb.0:
485 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
486 ; CHECK-NEXT:    vdivu.vx v8, v8, a0
487 ; CHECK-NEXT:    ret
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)
491   ret <4 x i32> %v
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:
498 ; CHECK:       # %bb.0:
499 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
500 ; CHECK-NEXT:    vdivu.vv v8, v8, v10, v0.t
501 ; CHECK-NEXT:    ret
502   %v = call <8 x i32> @llvm.vp.udiv.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
503   ret <8 x i32> %v
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:
508 ; CHECK:       # %bb.0:
509 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
510 ; CHECK-NEXT:    vdivu.vv v8, v8, v10
511 ; CHECK-NEXT:    ret
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)
513   ret <8 x i32> %v
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:
518 ; CHECK:       # %bb.0:
519 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
520 ; CHECK-NEXT:    vdivu.vx v8, v8, a0, v0.t
521 ; CHECK-NEXT:    ret
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)
525   ret <8 x i32> %v
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:
530 ; CHECK:       # %bb.0:
531 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
532 ; CHECK-NEXT:    vdivu.vx v8, v8, a0
533 ; CHECK-NEXT:    ret
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)
537   ret <8 x i32> %v
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:
544 ; CHECK:       # %bb.0:
545 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
546 ; CHECK-NEXT:    vdivu.vv v8, v8, v12, v0.t
547 ; CHECK-NEXT:    ret
548   %v = call <16 x i32> @llvm.vp.udiv.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
549   ret <16 x i32> %v
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:
554 ; CHECK:       # %bb.0:
555 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
556 ; CHECK-NEXT:    vdivu.vv v8, v8, v12
557 ; CHECK-NEXT:    ret
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)
559   ret <16 x i32> %v
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:
564 ; CHECK:       # %bb.0:
565 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
566 ; CHECK-NEXT:    vdivu.vx v8, v8, a0, v0.t
567 ; CHECK-NEXT:    ret
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)
571   ret <16 x i32> %v
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:
576 ; CHECK:       # %bb.0:
577 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
578 ; CHECK-NEXT:    vdivu.vx v8, v8, a0
579 ; CHECK-NEXT:    ret
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)
583   ret <16 x i32> %v
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:
590 ; CHECK:       # %bb.0:
591 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
592 ; CHECK-NEXT:    vdivu.vv v8, v8, v9, v0.t
593 ; CHECK-NEXT:    ret
594   %v = call <2 x i64> @llvm.vp.udiv.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
595   ret <2 x i64> %v
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:
600 ; CHECK:       # %bb.0:
601 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
602 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
603 ; CHECK-NEXT:    ret
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)
605   ret <2 x i64> %v
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:
610 ; RV32:       # %bb.0:
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
622 ; RV32-NEXT:    ret
624 ; RV64-LABEL: vdivu_vx_v2i64:
625 ; RV64:       # %bb.0:
626 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
627 ; RV64-NEXT:    vdivu.vx v8, v8, a0, v0.t
628 ; RV64-NEXT:    ret
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)
632   ret <2 x i64> %v
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:
637 ; RV32:       # %bb.0:
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
649 ; RV32-NEXT:    ret
651 ; RV64-LABEL: vdivu_vx_v2i64_unmasked:
652 ; RV64:       # %bb.0:
653 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
654 ; RV64-NEXT:    vdivu.vx v8, v8, a0
655 ; RV64-NEXT:    ret
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)
659   ret <2 x i64> %v
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:
666 ; CHECK:       # %bb.0:
667 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
668 ; CHECK-NEXT:    vdivu.vv v8, v8, v10, v0.t
669 ; CHECK-NEXT:    ret
670   %v = call <4 x i64> @llvm.vp.udiv.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
671   ret <4 x i64> %v
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:
676 ; CHECK:       # %bb.0:
677 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
678 ; CHECK-NEXT:    vdivu.vv v8, v8, v10
679 ; CHECK-NEXT:    ret
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)
681   ret <4 x i64> %v
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:
686 ; RV32:       # %bb.0:
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
698 ; RV32-NEXT:    ret
700 ; RV64-LABEL: vdivu_vx_v4i64:
701 ; RV64:       # %bb.0:
702 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
703 ; RV64-NEXT:    vdivu.vx v8, v8, a0, v0.t
704 ; RV64-NEXT:    ret
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)
708   ret <4 x i64> %v
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:
713 ; RV32:       # %bb.0:
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
725 ; RV32-NEXT:    ret
727 ; RV64-LABEL: vdivu_vx_v4i64_unmasked:
728 ; RV64:       # %bb.0:
729 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
730 ; RV64-NEXT:    vdivu.vx v8, v8, a0
731 ; RV64-NEXT:    ret
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)
735   ret <4 x i64> %v
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:
742 ; CHECK:       # %bb.0:
743 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
744 ; CHECK-NEXT:    vdivu.vv v8, v8, v12, v0.t
745 ; CHECK-NEXT:    ret
746   %v = call <8 x i64> @llvm.vp.udiv.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
747   ret <8 x i64> %v
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:
752 ; CHECK:       # %bb.0:
753 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
754 ; CHECK-NEXT:    vdivu.vv v8, v8, v12
755 ; CHECK-NEXT:    ret
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)
757   ret <8 x i64> %v
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:
762 ; RV32:       # %bb.0:
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
774 ; RV32-NEXT:    ret
776 ; RV64-LABEL: vdivu_vx_v8i64:
777 ; RV64:       # %bb.0:
778 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
779 ; RV64-NEXT:    vdivu.vx v8, v8, a0, v0.t
780 ; RV64-NEXT:    ret
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)
784   ret <8 x i64> %v
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:
789 ; RV32:       # %bb.0:
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
801 ; RV32-NEXT:    ret
803 ; RV64-LABEL: vdivu_vx_v8i64_unmasked:
804 ; RV64:       # %bb.0:
805 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
806 ; RV64-NEXT:    vdivu.vx v8, v8, a0
807 ; RV64-NEXT:    ret
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)
811   ret <8 x i64> %v
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:
818 ; CHECK:       # %bb.0:
819 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
820 ; CHECK-NEXT:    vdivu.vv v8, v8, v16, v0.t
821 ; CHECK-NEXT:    ret
822   %v = call <16 x i64> @llvm.vp.udiv.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
823   ret <16 x i64> %v
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:
828 ; CHECK:       # %bb.0:
829 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
830 ; CHECK-NEXT:    vdivu.vv v8, v8, v16
831 ; CHECK-NEXT:    ret
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)
833   ret <16 x i64> %v
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:
838 ; RV32:       # %bb.0:
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
850 ; RV32-NEXT:    ret
852 ; RV64-LABEL: vdivu_vx_v16i64:
853 ; RV64:       # %bb.0:
854 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
855 ; RV64-NEXT:    vdivu.vx v8, v8, a0, v0.t
856 ; RV64-NEXT:    ret
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)
860   ret <16 x i64> %v
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:
865 ; RV32:       # %bb.0:
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
877 ; RV32-NEXT:    ret
879 ; RV64-LABEL: vdivu_vx_v16i64_unmasked:
880 ; RV64:       # %bb.0:
881 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
882 ; RV64-NEXT:    vdivu.vx v8, v8, a0
883 ; RV64-NEXT:    ret
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)
887   ret <16 x i64> %v
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:
893 ; CHECK:       # %bb.0:
894 ; CHECK-NEXT:    vsetivli zero, 3, e8, mf2, ta, ma
895 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
896 ; CHECK-NEXT:    ret
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)
898   ret <8 x i8> %v
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:
903 ; CHECK:       # %bb.0:
904 ; CHECK-NEXT:    vsetivli zero, 7, e8, mf2, ta, ma
905 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
906 ; CHECK-NEXT:    ret
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)
908   ret <8 x i8> %v
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:
915 ; CHECK:       # %bb.0:
916 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
917 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
918 ; CHECK-NEXT:    ret
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)
920   ret <3 x i8> %v
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:
925 ; CHECK:       # %bb.0:
926 ; CHECK-NEXT:    vsetivli zero, 3, e8, mf4, ta, ma
927 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
928 ; CHECK-NEXT:    ret
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)
930   ret <3 x i8> %v
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:
937 ; CHECK:       # %bb.0:
938 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
939 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
940 ; CHECK-NEXT:    ret
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)
942   ret <7 x i8> %v
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:
947 ; CHECK:       # %bb.0:
948 ; CHECK-NEXT:    vsetivli zero, 7, e8, mf2, ta, ma
949 ; CHECK-NEXT:    vdivu.vv v8, v8, v9
950 ; CHECK-NEXT:    ret
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)
952   ret <7 x i8> %v