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.sdiv.v8i7(<8 x i7>, <8 x i7>, <8 x i1>, i32)
9 define <8 x i7> @vdiv_vv_v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 zeroext %evl) {
10 ; CHECK-LABEL: vdiv_vv_v8i7:
12 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
13 ; CHECK-NEXT: vsll.vi v9, v9, 1, v0.t
14 ; CHECK-NEXT: vsra.vi v9, v9, 1, v0.t
15 ; CHECK-NEXT: vsll.vi v8, v8, 1, v0.t
16 ; CHECK-NEXT: vsra.vi v8, v8, 1, v0.t
17 ; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t
19 %v = call <8 x i7> @llvm.vp.sdiv.v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 %evl)
23 declare <2 x i8> @llvm.vp.sdiv.v2i8(<2 x i8>, <2 x i8>, <2 x i1>, i32)
25 define <2 x i8> @vdiv_vv_v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 zeroext %evl) {
26 ; CHECK-LABEL: vdiv_vv_v2i8:
28 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
29 ; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t
31 %v = call <2 x i8> @llvm.vp.sdiv.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
35 define <2 x i8> @vdiv_vv_v2i8_unmasked(<2 x i8> %va, <2 x i8> %b, i32 zeroext %evl) {
36 ; CHECK-LABEL: vdiv_vv_v2i8_unmasked:
38 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
39 ; CHECK-NEXT: vdiv.vv v8, v8, v9
41 %v = call <2 x i8> @llvm.vp.sdiv.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> splat (i1 true), i32 %evl)
45 define <2 x i8> @vdiv_vx_v2i8(<2 x i8> %va, i8 %b, <2 x i1> %m, i32 zeroext %evl) {
46 ; CHECK-LABEL: vdiv_vx_v2i8:
48 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
49 ; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t
51 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
52 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
53 %v = call <2 x i8> @llvm.vp.sdiv.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
57 define <2 x i8> @vdiv_vx_v2i8_unmasked(<2 x i8> %va, i8 %b, i32 zeroext %evl) {
58 ; CHECK-LABEL: vdiv_vx_v2i8_unmasked:
60 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
61 ; CHECK-NEXT: vdiv.vx v8, v8, a0
63 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
64 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
65 %v = call <2 x i8> @llvm.vp.sdiv.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> splat (i1 true), i32 %evl)
69 declare <4 x i8> @llvm.vp.sdiv.v4i8(<4 x i8>, <4 x i8>, <4 x i1>, i32)
71 define <4 x i8> @vdiv_vv_v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 zeroext %evl) {
72 ; CHECK-LABEL: vdiv_vv_v4i8:
74 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
75 ; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t
77 %v = call <4 x i8> @llvm.vp.sdiv.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
81 define <4 x i8> @vdiv_vv_v4i8_unmasked(<4 x i8> %va, <4 x i8> %b, i32 zeroext %evl) {
82 ; CHECK-LABEL: vdiv_vv_v4i8_unmasked:
84 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
85 ; CHECK-NEXT: vdiv.vv v8, v8, v9
87 %v = call <4 x i8> @llvm.vp.sdiv.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> splat (i1 true), i32 %evl)
91 define <4 x i8> @vdiv_vx_v4i8(<4 x i8> %va, i8 %b, <4 x i1> %m, i32 zeroext %evl) {
92 ; CHECK-LABEL: vdiv_vx_v4i8:
94 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
95 ; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t
97 %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
98 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
99 %v = call <4 x i8> @llvm.vp.sdiv.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
103 define <4 x i8> @vdiv_vx_v4i8_unmasked(<4 x i8> %va, i8 %b, i32 zeroext %evl) {
104 ; CHECK-LABEL: vdiv_vx_v4i8_unmasked:
106 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
107 ; CHECK-NEXT: vdiv.vx v8, v8, a0
109 %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
110 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
111 %v = call <4 x i8> @llvm.vp.sdiv.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> splat (i1 true), i32 %evl)
115 declare <6 x i8> @llvm.vp.sdiv.v6i8(<6 x i8>, <6 x i8>, <6 x i1>, i32)
117 define <6 x i8> @vdiv_vv_v6i8(<6 x i8> %va, <6 x i8> %b, <6 x i1> %m, i32 zeroext %evl) {
118 ; CHECK-LABEL: vdiv_vv_v6i8:
120 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
121 ; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t
123 %v = call <6 x i8> @llvm.vp.sdiv.v6i8(<6 x i8> %va, <6 x i8> %b, <6 x i1> %m, i32 %evl)
127 declare <8 x i8> @llvm.vp.sdiv.v8i8(<8 x i8>, <8 x i8>, <8 x i1>, i32)
129 define <8 x i8> @vdiv_vv_v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 zeroext %evl) {
130 ; CHECK-LABEL: vdiv_vv_v8i8:
132 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
133 ; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t
135 %v = call <8 x i8> @llvm.vp.sdiv.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
139 define <8 x i8> @vdiv_vv_v8i8_unmasked(<8 x i8> %va, <8 x i8> %b, i32 zeroext %evl) {
140 ; CHECK-LABEL: vdiv_vv_v8i8_unmasked:
142 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
143 ; CHECK-NEXT: vdiv.vv v8, v8, v9
145 %v = call <8 x i8> @llvm.vp.sdiv.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> splat (i1 true), i32 %evl)
149 define <8 x i8> @vdiv_vx_v8i8(<8 x i8> %va, i8 %b, <8 x i1> %m, i32 zeroext %evl) {
150 ; CHECK-LABEL: vdiv_vx_v8i8:
152 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
153 ; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t
155 %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
156 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
157 %v = call <8 x i8> @llvm.vp.sdiv.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
161 define <8 x i8> @vdiv_vx_v8i8_unmasked(<8 x i8> %va, i8 %b, i32 zeroext %evl) {
162 ; CHECK-LABEL: vdiv_vx_v8i8_unmasked:
164 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
165 ; CHECK-NEXT: vdiv.vx v8, v8, a0
167 %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
168 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
169 %v = call <8 x i8> @llvm.vp.sdiv.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> splat (i1 true), i32 %evl)
173 declare <16 x i8> @llvm.vp.sdiv.v16i8(<16 x i8>, <16 x i8>, <16 x i1>, i32)
175 define <16 x i8> @vdiv_vv_v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 zeroext %evl) {
176 ; CHECK-LABEL: vdiv_vv_v16i8:
178 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
179 ; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t
181 %v = call <16 x i8> @llvm.vp.sdiv.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
185 define <16 x i8> @vdiv_vv_v16i8_unmasked(<16 x i8> %va, <16 x i8> %b, i32 zeroext %evl) {
186 ; CHECK-LABEL: vdiv_vv_v16i8_unmasked:
188 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
189 ; CHECK-NEXT: vdiv.vv v8, v8, v9
191 %v = call <16 x i8> @llvm.vp.sdiv.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> splat (i1 true), i32 %evl)
195 define <16 x i8> @vdiv_vx_v16i8(<16 x i8> %va, i8 %b, <16 x i1> %m, i32 zeroext %evl) {
196 ; CHECK-LABEL: vdiv_vx_v16i8:
198 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
199 ; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t
201 %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
202 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
203 %v = call <16 x i8> @llvm.vp.sdiv.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
207 define <16 x i8> @vdiv_vx_v16i8_unmasked(<16 x i8> %va, i8 %b, i32 zeroext %evl) {
208 ; CHECK-LABEL: vdiv_vx_v16i8_unmasked:
210 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
211 ; CHECK-NEXT: vdiv.vx v8, v8, a0
213 %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
214 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
215 %v = call <16 x i8> @llvm.vp.sdiv.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> splat (i1 true), i32 %evl)
219 declare <2 x i16> @llvm.vp.sdiv.v2i16(<2 x i16>, <2 x i16>, <2 x i1>, i32)
221 define <2 x i16> @vdiv_vv_v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 zeroext %evl) {
222 ; CHECK-LABEL: vdiv_vv_v2i16:
224 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
225 ; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t
227 %v = call <2 x i16> @llvm.vp.sdiv.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
231 define <2 x i16> @vdiv_vv_v2i16_unmasked(<2 x i16> %va, <2 x i16> %b, i32 zeroext %evl) {
232 ; CHECK-LABEL: vdiv_vv_v2i16_unmasked:
234 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
235 ; CHECK-NEXT: vdiv.vv v8, v8, v9
237 %v = call <2 x i16> @llvm.vp.sdiv.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> splat (i1 true), i32 %evl)
241 define <2 x i16> @vdiv_vx_v2i16(<2 x i16> %va, i16 %b, <2 x i1> %m, i32 zeroext %evl) {
242 ; CHECK-LABEL: vdiv_vx_v2i16:
244 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
245 ; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t
247 %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
248 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
249 %v = call <2 x i16> @llvm.vp.sdiv.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
253 define <2 x i16> @vdiv_vx_v2i16_unmasked(<2 x i16> %va, i16 %b, i32 zeroext %evl) {
254 ; CHECK-LABEL: vdiv_vx_v2i16_unmasked:
256 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
257 ; CHECK-NEXT: vdiv.vx v8, v8, a0
259 %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
260 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
261 %v = call <2 x i16> @llvm.vp.sdiv.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> splat (i1 true), i32 %evl)
265 declare <4 x i16> @llvm.vp.sdiv.v4i16(<4 x i16>, <4 x i16>, <4 x i1>, i32)
267 define <4 x i16> @vdiv_vv_v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 zeroext %evl) {
268 ; CHECK-LABEL: vdiv_vv_v4i16:
270 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
271 ; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t
273 %v = call <4 x i16> @llvm.vp.sdiv.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
277 define <4 x i16> @vdiv_vv_v4i16_unmasked(<4 x i16> %va, <4 x i16> %b, i32 zeroext %evl) {
278 ; CHECK-LABEL: vdiv_vv_v4i16_unmasked:
280 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
281 ; CHECK-NEXT: vdiv.vv v8, v8, v9
283 %v = call <4 x i16> @llvm.vp.sdiv.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> splat (i1 true), i32 %evl)
287 define <4 x i16> @vdiv_vx_v4i16(<4 x i16> %va, i16 %b, <4 x i1> %m, i32 zeroext %evl) {
288 ; CHECK-LABEL: vdiv_vx_v4i16:
290 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
291 ; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t
293 %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
294 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
295 %v = call <4 x i16> @llvm.vp.sdiv.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
299 define <4 x i16> @vdiv_vx_v4i16_unmasked(<4 x i16> %va, i16 %b, i32 zeroext %evl) {
300 ; CHECK-LABEL: vdiv_vx_v4i16_unmasked:
302 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
303 ; CHECK-NEXT: vdiv.vx v8, v8, a0
305 %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
306 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
307 %v = call <4 x i16> @llvm.vp.sdiv.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> splat (i1 true), i32 %evl)
311 declare <8 x i16> @llvm.vp.sdiv.v8i16(<8 x i16>, <8 x i16>, <8 x i1>, i32)
313 define <8 x i16> @vdiv_vv_v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 zeroext %evl) {
314 ; CHECK-LABEL: vdiv_vv_v8i16:
316 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
317 ; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t
319 %v = call <8 x i16> @llvm.vp.sdiv.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
323 define <8 x i16> @vdiv_vv_v8i16_unmasked(<8 x i16> %va, <8 x i16> %b, i32 zeroext %evl) {
324 ; CHECK-LABEL: vdiv_vv_v8i16_unmasked:
326 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
327 ; CHECK-NEXT: vdiv.vv v8, v8, v9
329 %v = call <8 x i16> @llvm.vp.sdiv.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> splat (i1 true), i32 %evl)
333 define <8 x i16> @vdiv_vx_v8i16(<8 x i16> %va, i16 %b, <8 x i1> %m, i32 zeroext %evl) {
334 ; CHECK-LABEL: vdiv_vx_v8i16:
336 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
337 ; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t
339 %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
340 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
341 %v = call <8 x i16> @llvm.vp.sdiv.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
345 define <8 x i16> @vdiv_vx_v8i16_unmasked(<8 x i16> %va, i16 %b, i32 zeroext %evl) {
346 ; CHECK-LABEL: vdiv_vx_v8i16_unmasked:
348 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
349 ; CHECK-NEXT: vdiv.vx v8, v8, a0
351 %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
352 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
353 %v = call <8 x i16> @llvm.vp.sdiv.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> splat (i1 true), i32 %evl)
357 declare <16 x i16> @llvm.vp.sdiv.v16i16(<16 x i16>, <16 x i16>, <16 x i1>, i32)
359 define <16 x i16> @vdiv_vv_v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 zeroext %evl) {
360 ; CHECK-LABEL: vdiv_vv_v16i16:
362 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
363 ; CHECK-NEXT: vdiv.vv v8, v8, v10, v0.t
365 %v = call <16 x i16> @llvm.vp.sdiv.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
369 define <16 x i16> @vdiv_vv_v16i16_unmasked(<16 x i16> %va, <16 x i16> %b, i32 zeroext %evl) {
370 ; CHECK-LABEL: vdiv_vv_v16i16_unmasked:
372 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
373 ; CHECK-NEXT: vdiv.vv v8, v8, v10
375 %v = call <16 x i16> @llvm.vp.sdiv.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> splat (i1 true), i32 %evl)
379 define <16 x i16> @vdiv_vx_v16i16(<16 x i16> %va, i16 %b, <16 x i1> %m, i32 zeroext %evl) {
380 ; CHECK-LABEL: vdiv_vx_v16i16:
382 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
383 ; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t
385 %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
386 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
387 %v = call <16 x i16> @llvm.vp.sdiv.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
391 define <16 x i16> @vdiv_vx_v16i16_unmasked(<16 x i16> %va, i16 %b, i32 zeroext %evl) {
392 ; CHECK-LABEL: vdiv_vx_v16i16_unmasked:
394 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
395 ; CHECK-NEXT: vdiv.vx v8, v8, a0
397 %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
398 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
399 %v = call <16 x i16> @llvm.vp.sdiv.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> splat (i1 true), i32 %evl)
403 declare <2 x i32> @llvm.vp.sdiv.v2i32(<2 x i32>, <2 x i32>, <2 x i1>, i32)
405 define <2 x i32> @vdiv_vv_v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 zeroext %evl) {
406 ; CHECK-LABEL: vdiv_vv_v2i32:
408 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
409 ; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t
411 %v = call <2 x i32> @llvm.vp.sdiv.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
415 define <2 x i32> @vdiv_vv_v2i32_unmasked(<2 x i32> %va, <2 x i32> %b, i32 zeroext %evl) {
416 ; CHECK-LABEL: vdiv_vv_v2i32_unmasked:
418 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
419 ; CHECK-NEXT: vdiv.vv v8, v8, v9
421 %v = call <2 x i32> @llvm.vp.sdiv.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> splat (i1 true), i32 %evl)
425 define <2 x i32> @vdiv_vx_v2i32(<2 x i32> %va, i32 %b, <2 x i1> %m, i32 zeroext %evl) {
426 ; CHECK-LABEL: vdiv_vx_v2i32:
428 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
429 ; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t
431 %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
432 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
433 %v = call <2 x i32> @llvm.vp.sdiv.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
437 define <2 x i32> @vdiv_vx_v2i32_unmasked(<2 x i32> %va, i32 %b, i32 zeroext %evl) {
438 ; CHECK-LABEL: vdiv_vx_v2i32_unmasked:
440 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
441 ; CHECK-NEXT: vdiv.vx v8, v8, a0
443 %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
444 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
445 %v = call <2 x i32> @llvm.vp.sdiv.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> splat (i1 true), i32 %evl)
449 declare <4 x i32> @llvm.vp.sdiv.v4i32(<4 x i32>, <4 x i32>, <4 x i1>, i32)
451 define <4 x i32> @vdiv_vv_v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 zeroext %evl) {
452 ; CHECK-LABEL: vdiv_vv_v4i32:
454 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
455 ; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t
457 %v = call <4 x i32> @llvm.vp.sdiv.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
461 define <4 x i32> @vdiv_vv_v4i32_unmasked(<4 x i32> %va, <4 x i32> %b, i32 zeroext %evl) {
462 ; CHECK-LABEL: vdiv_vv_v4i32_unmasked:
464 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
465 ; CHECK-NEXT: vdiv.vv v8, v8, v9
467 %v = call <4 x i32> @llvm.vp.sdiv.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> splat (i1 true), i32 %evl)
471 define <4 x i32> @vdiv_vx_v4i32(<4 x i32> %va, i32 %b, <4 x i1> %m, i32 zeroext %evl) {
472 ; CHECK-LABEL: vdiv_vx_v4i32:
474 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
475 ; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t
477 %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
478 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
479 %v = call <4 x i32> @llvm.vp.sdiv.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
483 define <4 x i32> @vdiv_vx_v4i32_unmasked(<4 x i32> %va, i32 %b, i32 zeroext %evl) {
484 ; CHECK-LABEL: vdiv_vx_v4i32_unmasked:
486 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
487 ; CHECK-NEXT: vdiv.vx v8, v8, a0
489 %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
490 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
491 %v = call <4 x i32> @llvm.vp.sdiv.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> splat (i1 true), i32 %evl)
495 declare <8 x i32> @llvm.vp.sdiv.v8i32(<8 x i32>, <8 x i32>, <8 x i1>, i32)
497 define <8 x i32> @vdiv_vv_v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 zeroext %evl) {
498 ; CHECK-LABEL: vdiv_vv_v8i32:
500 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
501 ; CHECK-NEXT: vdiv.vv v8, v8, v10, v0.t
503 %v = call <8 x i32> @llvm.vp.sdiv.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
507 define <8 x i32> @vdiv_vv_v8i32_unmasked(<8 x i32> %va, <8 x i32> %b, i32 zeroext %evl) {
508 ; CHECK-LABEL: vdiv_vv_v8i32_unmasked:
510 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
511 ; CHECK-NEXT: vdiv.vv v8, v8, v10
513 %v = call <8 x i32> @llvm.vp.sdiv.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> splat (i1 true), i32 %evl)
517 define <8 x i32> @vdiv_vx_v8i32(<8 x i32> %va, i32 %b, <8 x i1> %m, i32 zeroext %evl) {
518 ; CHECK-LABEL: vdiv_vx_v8i32:
520 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
521 ; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t
523 %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
524 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
525 %v = call <8 x i32> @llvm.vp.sdiv.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
529 define <8 x i32> @vdiv_vx_v8i32_unmasked(<8 x i32> %va, i32 %b, i32 zeroext %evl) {
530 ; CHECK-LABEL: vdiv_vx_v8i32_unmasked:
532 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
533 ; CHECK-NEXT: vdiv.vx v8, v8, a0
535 %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
536 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
537 %v = call <8 x i32> @llvm.vp.sdiv.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> splat (i1 true), i32 %evl)
541 declare <16 x i32> @llvm.vp.sdiv.v16i32(<16 x i32>, <16 x i32>, <16 x i1>, i32)
543 define <16 x i32> @vdiv_vv_v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 zeroext %evl) {
544 ; CHECK-LABEL: vdiv_vv_v16i32:
546 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
547 ; CHECK-NEXT: vdiv.vv v8, v8, v12, v0.t
549 %v = call <16 x i32> @llvm.vp.sdiv.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
553 define <16 x i32> @vdiv_vv_v16i32_unmasked(<16 x i32> %va, <16 x i32> %b, i32 zeroext %evl) {
554 ; CHECK-LABEL: vdiv_vv_v16i32_unmasked:
556 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
557 ; CHECK-NEXT: vdiv.vv v8, v8, v12
559 %v = call <16 x i32> @llvm.vp.sdiv.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> splat (i1 true), i32 %evl)
563 define <16 x i32> @vdiv_vx_v16i32(<16 x i32> %va, i32 %b, <16 x i1> %m, i32 zeroext %evl) {
564 ; CHECK-LABEL: vdiv_vx_v16i32:
566 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
567 ; CHECK-NEXT: vdiv.vx v8, v8, a0, v0.t
569 %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
570 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
571 %v = call <16 x i32> @llvm.vp.sdiv.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
575 define <16 x i32> @vdiv_vx_v16i32_unmasked(<16 x i32> %va, i32 %b, i32 zeroext %evl) {
576 ; CHECK-LABEL: vdiv_vx_v16i32_unmasked:
578 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
579 ; CHECK-NEXT: vdiv.vx v8, v8, a0
581 %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
582 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
583 %v = call <16 x i32> @llvm.vp.sdiv.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> splat (i1 true), i32 %evl)
587 declare <2 x i64> @llvm.vp.sdiv.v2i64(<2 x i64>, <2 x i64>, <2 x i1>, i32)
589 define <2 x i64> @vdiv_vv_v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 zeroext %evl) {
590 ; CHECK-LABEL: vdiv_vv_v2i64:
592 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
593 ; CHECK-NEXT: vdiv.vv v8, v8, v9, v0.t
595 %v = call <2 x i64> @llvm.vp.sdiv.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
599 define <2 x i64> @vdiv_vv_v2i64_unmasked(<2 x i64> %va, <2 x i64> %b, i32 zeroext %evl) {
600 ; CHECK-LABEL: vdiv_vv_v2i64_unmasked:
602 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
603 ; CHECK-NEXT: vdiv.vv v8, v8, v9
605 %v = call <2 x i64> @llvm.vp.sdiv.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> splat (i1 true), i32 %evl)
609 define <2 x i64> @vdiv_vx_v2i64(<2 x i64> %va, i64 %b, <2 x i1> %m, i32 zeroext %evl) {
610 ; RV32-LABEL: vdiv_vx_v2i64:
612 ; RV32-NEXT: addi sp, sp, -16
613 ; RV32-NEXT: .cfi_def_cfa_offset 16
614 ; RV32-NEXT: sw a1, 12(sp)
615 ; RV32-NEXT: sw a0, 8(sp)
616 ; RV32-NEXT: addi a0, sp, 8
617 ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
618 ; RV32-NEXT: vlse64.v v9, (a0), zero
619 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
620 ; RV32-NEXT: vdiv.vv v8, v8, v9, v0.t
621 ; RV32-NEXT: addi sp, sp, 16
624 ; RV64-LABEL: vdiv_vx_v2i64:
626 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
627 ; RV64-NEXT: vdiv.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.sdiv.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
635 define <2 x i64> @vdiv_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
636 ; RV32-LABEL: vdiv_vx_v2i64_unmasked:
638 ; RV32-NEXT: addi sp, sp, -16
639 ; RV32-NEXT: .cfi_def_cfa_offset 16
640 ; RV32-NEXT: sw a1, 12(sp)
641 ; RV32-NEXT: sw a0, 8(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: vdiv.vv v8, v8, v9
647 ; RV32-NEXT: addi sp, sp, 16
650 ; RV64-LABEL: vdiv_vx_v2i64_unmasked:
652 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
653 ; RV64-NEXT: vdiv.vx v8, v8, a0
655 %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
656 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
657 %v = call <2 x i64> @llvm.vp.sdiv.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> splat (i1 true), i32 %evl)
661 declare <4 x i64> @llvm.vp.sdiv.v4i64(<4 x i64>, <4 x i64>, <4 x i1>, i32)
663 define <4 x i64> @vdiv_vv_v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 zeroext %evl) {
664 ; CHECK-LABEL: vdiv_vv_v4i64:
666 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
667 ; CHECK-NEXT: vdiv.vv v8, v8, v10, v0.t
669 %v = call <4 x i64> @llvm.vp.sdiv.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
673 define <4 x i64> @vdiv_vv_v4i64_unmasked(<4 x i64> %va, <4 x i64> %b, i32 zeroext %evl) {
674 ; CHECK-LABEL: vdiv_vv_v4i64_unmasked:
676 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
677 ; CHECK-NEXT: vdiv.vv v8, v8, v10
679 %v = call <4 x i64> @llvm.vp.sdiv.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> splat (i1 true), i32 %evl)
683 define <4 x i64> @vdiv_vx_v4i64(<4 x i64> %va, i64 %b, <4 x i1> %m, i32 zeroext %evl) {
684 ; RV32-LABEL: vdiv_vx_v4i64:
686 ; RV32-NEXT: addi sp, sp, -16
687 ; RV32-NEXT: .cfi_def_cfa_offset 16
688 ; RV32-NEXT: sw a1, 12(sp)
689 ; RV32-NEXT: sw a0, 8(sp)
690 ; RV32-NEXT: addi a0, sp, 8
691 ; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
692 ; RV32-NEXT: vlse64.v v10, (a0), zero
693 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
694 ; RV32-NEXT: vdiv.vv v8, v8, v10, v0.t
695 ; RV32-NEXT: addi sp, sp, 16
698 ; RV64-LABEL: vdiv_vx_v4i64:
700 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
701 ; RV64-NEXT: vdiv.vx v8, v8, a0, v0.t
703 %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
704 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
705 %v = call <4 x i64> @llvm.vp.sdiv.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
709 define <4 x i64> @vdiv_vx_v4i64_unmasked(<4 x i64> %va, i64 %b, i32 zeroext %evl) {
710 ; RV32-LABEL: vdiv_vx_v4i64_unmasked:
712 ; RV32-NEXT: addi sp, sp, -16
713 ; RV32-NEXT: .cfi_def_cfa_offset 16
714 ; RV32-NEXT: sw a1, 12(sp)
715 ; RV32-NEXT: sw a0, 8(sp)
716 ; RV32-NEXT: addi a0, sp, 8
717 ; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
718 ; RV32-NEXT: vlse64.v v10, (a0), zero
719 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
720 ; RV32-NEXT: vdiv.vv v8, v8, v10
721 ; RV32-NEXT: addi sp, sp, 16
724 ; RV64-LABEL: vdiv_vx_v4i64_unmasked:
726 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
727 ; RV64-NEXT: vdiv.vx v8, v8, a0
729 %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
730 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
731 %v = call <4 x i64> @llvm.vp.sdiv.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> splat (i1 true), i32 %evl)
735 declare <8 x i64> @llvm.vp.sdiv.v8i64(<8 x i64>, <8 x i64>, <8 x i1>, i32)
737 define <8 x i64> @vdiv_vv_v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 zeroext %evl) {
738 ; CHECK-LABEL: vdiv_vv_v8i64:
740 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
741 ; CHECK-NEXT: vdiv.vv v8, v8, v12, v0.t
743 %v = call <8 x i64> @llvm.vp.sdiv.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
747 define <8 x i64> @vdiv_vv_v8i64_unmasked(<8 x i64> %va, <8 x i64> %b, i32 zeroext %evl) {
748 ; CHECK-LABEL: vdiv_vv_v8i64_unmasked:
750 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
751 ; CHECK-NEXT: vdiv.vv v8, v8, v12
753 %v = call <8 x i64> @llvm.vp.sdiv.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> splat (i1 true), i32 %evl)
757 define <8 x i64> @vdiv_vx_v8i64(<8 x i64> %va, i64 %b, <8 x i1> %m, i32 zeroext %evl) {
758 ; RV32-LABEL: vdiv_vx_v8i64:
760 ; RV32-NEXT: addi sp, sp, -16
761 ; RV32-NEXT: .cfi_def_cfa_offset 16
762 ; RV32-NEXT: sw a1, 12(sp)
763 ; RV32-NEXT: sw a0, 8(sp)
764 ; RV32-NEXT: addi a0, sp, 8
765 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
766 ; RV32-NEXT: vlse64.v v12, (a0), zero
767 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
768 ; RV32-NEXT: vdiv.vv v8, v8, v12, v0.t
769 ; RV32-NEXT: addi sp, sp, 16
772 ; RV64-LABEL: vdiv_vx_v8i64:
774 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
775 ; RV64-NEXT: vdiv.vx v8, v8, a0, v0.t
777 %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
778 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
779 %v = call <8 x i64> @llvm.vp.sdiv.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
783 define <8 x i64> @vdiv_vx_v8i64_unmasked(<8 x i64> %va, i64 %b, i32 zeroext %evl) {
784 ; RV32-LABEL: vdiv_vx_v8i64_unmasked:
786 ; RV32-NEXT: addi sp, sp, -16
787 ; RV32-NEXT: .cfi_def_cfa_offset 16
788 ; RV32-NEXT: sw a1, 12(sp)
789 ; RV32-NEXT: sw a0, 8(sp)
790 ; RV32-NEXT: addi a0, sp, 8
791 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
792 ; RV32-NEXT: vlse64.v v12, (a0), zero
793 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
794 ; RV32-NEXT: vdiv.vv v8, v8, v12
795 ; RV32-NEXT: addi sp, sp, 16
798 ; RV64-LABEL: vdiv_vx_v8i64_unmasked:
800 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
801 ; RV64-NEXT: vdiv.vx v8, v8, a0
803 %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
804 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
805 %v = call <8 x i64> @llvm.vp.sdiv.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> splat (i1 true), i32 %evl)
809 declare <16 x i64> @llvm.vp.sdiv.v16i64(<16 x i64>, <16 x i64>, <16 x i1>, i32)
811 define <16 x i64> @vdiv_vv_v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 zeroext %evl) {
812 ; CHECK-LABEL: vdiv_vv_v16i64:
814 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
815 ; CHECK-NEXT: vdiv.vv v8, v8, v16, v0.t
817 %v = call <16 x i64> @llvm.vp.sdiv.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
821 define <16 x i64> @vdiv_vv_v16i64_unmasked(<16 x i64> %va, <16 x i64> %b, i32 zeroext %evl) {
822 ; CHECK-LABEL: vdiv_vv_v16i64_unmasked:
824 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
825 ; CHECK-NEXT: vdiv.vv v8, v8, v16
827 %v = call <16 x i64> @llvm.vp.sdiv.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> splat (i1 true), i32 %evl)
831 define <16 x i64> @vdiv_vx_v16i64(<16 x i64> %va, i64 %b, <16 x i1> %m, i32 zeroext %evl) {
832 ; RV32-LABEL: vdiv_vx_v16i64:
834 ; RV32-NEXT: addi sp, sp, -16
835 ; RV32-NEXT: .cfi_def_cfa_offset 16
836 ; RV32-NEXT: sw a1, 12(sp)
837 ; RV32-NEXT: sw a0, 8(sp)
838 ; RV32-NEXT: addi a0, sp, 8
839 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
840 ; RV32-NEXT: vlse64.v v16, (a0), zero
841 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
842 ; RV32-NEXT: vdiv.vv v8, v8, v16, v0.t
843 ; RV32-NEXT: addi sp, sp, 16
846 ; RV64-LABEL: vdiv_vx_v16i64:
848 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
849 ; RV64-NEXT: vdiv.vx v8, v8, a0, v0.t
851 %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
852 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
853 %v = call <16 x i64> @llvm.vp.sdiv.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
857 define <16 x i64> @vdiv_vx_v16i64_unmasked(<16 x i64> %va, i64 %b, i32 zeroext %evl) {
858 ; RV32-LABEL: vdiv_vx_v16i64_unmasked:
860 ; RV32-NEXT: addi sp, sp, -16
861 ; RV32-NEXT: .cfi_def_cfa_offset 16
862 ; RV32-NEXT: sw a1, 12(sp)
863 ; RV32-NEXT: sw a0, 8(sp)
864 ; RV32-NEXT: addi a0, sp, 8
865 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
866 ; RV32-NEXT: vlse64.v v16, (a0), zero
867 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
868 ; RV32-NEXT: vdiv.vv v8, v8, v16
869 ; RV32-NEXT: addi sp, sp, 16
872 ; RV64-LABEL: vdiv_vx_v16i64_unmasked:
874 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
875 ; RV64-NEXT: vdiv.vx v8, v8, a0
877 %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
878 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
879 %v = call <16 x i64> @llvm.vp.sdiv.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> splat (i1 true), i32 %evl)