Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / RISCV / rvv / fixed-vectors-vdiv-vp.ll
blobe3c7d02462cc7f7adc9fa771e371fbd7da92224e
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:
11 ; CHECK:       # %bb.0:
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
18 ; CHECK-NEXT:    ret
19   %v = call <8 x i7> @llvm.vp.sdiv.v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 %evl)
20   ret <8 x i7> %v
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:
27 ; CHECK:       # %bb.0:
28 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
29 ; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
30 ; CHECK-NEXT:    ret
31   %v = call <2 x i8> @llvm.vp.sdiv.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
32   ret <2 x i8> %v
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:
37 ; CHECK:       # %bb.0:
38 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
39 ; CHECK-NEXT:    vdiv.vv v8, v8, v9
40 ; CHECK-NEXT:    ret
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)
42   ret <2 x i8> %v
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:
47 ; CHECK:       # %bb.0:
48 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
49 ; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
50 ; CHECK-NEXT:    ret
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)
54   ret <2 x i8> %v
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:
59 ; CHECK:       # %bb.0:
60 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
61 ; CHECK-NEXT:    vdiv.vx v8, v8, a0
62 ; CHECK-NEXT:    ret
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)
66   ret <2 x i8> %v
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:
73 ; CHECK:       # %bb.0:
74 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
75 ; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
76 ; CHECK-NEXT:    ret
77   %v = call <4 x i8> @llvm.vp.sdiv.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
78   ret <4 x i8> %v
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:
83 ; CHECK:       # %bb.0:
84 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
85 ; CHECK-NEXT:    vdiv.vv v8, v8, v9
86 ; CHECK-NEXT:    ret
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)
88   ret <4 x i8> %v
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:
93 ; CHECK:       # %bb.0:
94 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
95 ; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
96 ; CHECK-NEXT:    ret
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)
100   ret <4 x i8> %v
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:
105 ; CHECK:       # %bb.0:
106 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
107 ; CHECK-NEXT:    vdiv.vx v8, v8, a0
108 ; CHECK-NEXT:    ret
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)
112   ret <4 x i8> %v
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:
119 ; CHECK:       # %bb.0:
120 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
121 ; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
122 ; CHECK-NEXT:    ret
123   %v = call <6 x i8> @llvm.vp.sdiv.v6i8(<6 x i8> %va, <6 x i8> %b, <6 x i1> %m, i32 %evl)
124   ret <6 x i8> %v
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:
131 ; CHECK:       # %bb.0:
132 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
133 ; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
134 ; CHECK-NEXT:    ret
135   %v = call <8 x i8> @llvm.vp.sdiv.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
136   ret <8 x i8> %v
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:
141 ; CHECK:       # %bb.0:
142 ; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
143 ; CHECK-NEXT:    vdiv.vv v8, v8, v9
144 ; CHECK-NEXT:    ret
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)
146   ret <8 x i8> %v
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:
151 ; CHECK:       # %bb.0:
152 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
153 ; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
154 ; CHECK-NEXT:    ret
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)
158   ret <8 x i8> %v
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:
163 ; CHECK:       # %bb.0:
164 ; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
165 ; CHECK-NEXT:    vdiv.vx v8, v8, a0
166 ; CHECK-NEXT:    ret
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)
170   ret <8 x i8> %v
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:
177 ; CHECK:       # %bb.0:
178 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
179 ; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
180 ; CHECK-NEXT:    ret
181   %v = call <16 x i8> @llvm.vp.sdiv.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
182   ret <16 x i8> %v
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:
187 ; CHECK:       # %bb.0:
188 ; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
189 ; CHECK-NEXT:    vdiv.vv v8, v8, v9
190 ; CHECK-NEXT:    ret
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)
192   ret <16 x i8> %v
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:
197 ; CHECK:       # %bb.0:
198 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
199 ; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
200 ; CHECK-NEXT:    ret
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)
204   ret <16 x i8> %v
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:
209 ; CHECK:       # %bb.0:
210 ; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
211 ; CHECK-NEXT:    vdiv.vx v8, v8, a0
212 ; CHECK-NEXT:    ret
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)
216   ret <16 x i8> %v
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:
223 ; CHECK:       # %bb.0:
224 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
225 ; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
226 ; CHECK-NEXT:    ret
227   %v = call <2 x i16> @llvm.vp.sdiv.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
228   ret <2 x i16> %v
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:
233 ; CHECK:       # %bb.0:
234 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
235 ; CHECK-NEXT:    vdiv.vv v8, v8, v9
236 ; CHECK-NEXT:    ret
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)
238   ret <2 x i16> %v
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:
243 ; CHECK:       # %bb.0:
244 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
245 ; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
246 ; CHECK-NEXT:    ret
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)
250   ret <2 x i16> %v
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:
255 ; CHECK:       # %bb.0:
256 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
257 ; CHECK-NEXT:    vdiv.vx v8, v8, a0
258 ; CHECK-NEXT:    ret
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)
262   ret <2 x i16> %v
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:
269 ; CHECK:       # %bb.0:
270 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
271 ; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
272 ; CHECK-NEXT:    ret
273   %v = call <4 x i16> @llvm.vp.sdiv.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
274   ret <4 x i16> %v
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:
279 ; CHECK:       # %bb.0:
280 ; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
281 ; CHECK-NEXT:    vdiv.vv v8, v8, v9
282 ; CHECK-NEXT:    ret
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)
284   ret <4 x i16> %v
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:
289 ; CHECK:       # %bb.0:
290 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
291 ; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
292 ; CHECK-NEXT:    ret
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)
296   ret <4 x i16> %v
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:
301 ; CHECK:       # %bb.0:
302 ; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
303 ; CHECK-NEXT:    vdiv.vx v8, v8, a0
304 ; CHECK-NEXT:    ret
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)
308   ret <4 x i16> %v
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:
315 ; CHECK:       # %bb.0:
316 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
317 ; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
318 ; CHECK-NEXT:    ret
319   %v = call <8 x i16> @llvm.vp.sdiv.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
320   ret <8 x i16> %v
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:
325 ; CHECK:       # %bb.0:
326 ; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
327 ; CHECK-NEXT:    vdiv.vv v8, v8, v9
328 ; CHECK-NEXT:    ret
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)
330   ret <8 x i16> %v
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:
335 ; CHECK:       # %bb.0:
336 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
337 ; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
338 ; CHECK-NEXT:    ret
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)
342   ret <8 x i16> %v
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:
347 ; CHECK:       # %bb.0:
348 ; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
349 ; CHECK-NEXT:    vdiv.vx v8, v8, a0
350 ; CHECK-NEXT:    ret
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)
354   ret <8 x i16> %v
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:
361 ; CHECK:       # %bb.0:
362 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
363 ; CHECK-NEXT:    vdiv.vv v8, v8, v10, v0.t
364 ; CHECK-NEXT:    ret
365   %v = call <16 x i16> @llvm.vp.sdiv.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
366   ret <16 x i16> %v
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:
371 ; CHECK:       # %bb.0:
372 ; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
373 ; CHECK-NEXT:    vdiv.vv v8, v8, v10
374 ; CHECK-NEXT:    ret
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)
376   ret <16 x i16> %v
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:
381 ; CHECK:       # %bb.0:
382 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
383 ; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
384 ; CHECK-NEXT:    ret
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)
388   ret <16 x i16> %v
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:
393 ; CHECK:       # %bb.0:
394 ; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
395 ; CHECK-NEXT:    vdiv.vx v8, v8, a0
396 ; CHECK-NEXT:    ret
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)
400   ret <16 x i16> %v
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:
407 ; CHECK:       # %bb.0:
408 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
409 ; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
410 ; CHECK-NEXT:    ret
411   %v = call <2 x i32> @llvm.vp.sdiv.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
412   ret <2 x i32> %v
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:
417 ; CHECK:       # %bb.0:
418 ; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
419 ; CHECK-NEXT:    vdiv.vv v8, v8, v9
420 ; CHECK-NEXT:    ret
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)
422   ret <2 x i32> %v
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:
427 ; CHECK:       # %bb.0:
428 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
429 ; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
430 ; CHECK-NEXT:    ret
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)
434   ret <2 x i32> %v
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:
439 ; CHECK:       # %bb.0:
440 ; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
441 ; CHECK-NEXT:    vdiv.vx v8, v8, a0
442 ; CHECK-NEXT:    ret
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)
446   ret <2 x i32> %v
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:
453 ; CHECK:       # %bb.0:
454 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
455 ; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
456 ; CHECK-NEXT:    ret
457   %v = call <4 x i32> @llvm.vp.sdiv.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
458   ret <4 x i32> %v
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:
463 ; CHECK:       # %bb.0:
464 ; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
465 ; CHECK-NEXT:    vdiv.vv v8, v8, v9
466 ; CHECK-NEXT:    ret
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)
468   ret <4 x i32> %v
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:
473 ; CHECK:       # %bb.0:
474 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
475 ; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
476 ; CHECK-NEXT:    ret
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)
480   ret <4 x i32> %v
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:
485 ; CHECK:       # %bb.0:
486 ; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
487 ; CHECK-NEXT:    vdiv.vx v8, v8, a0
488 ; CHECK-NEXT:    ret
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)
492   ret <4 x i32> %v
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:
499 ; CHECK:       # %bb.0:
500 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
501 ; CHECK-NEXT:    vdiv.vv v8, v8, v10, v0.t
502 ; CHECK-NEXT:    ret
503   %v = call <8 x i32> @llvm.vp.sdiv.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
504   ret <8 x i32> %v
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:
509 ; CHECK:       # %bb.0:
510 ; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
511 ; CHECK-NEXT:    vdiv.vv v8, v8, v10
512 ; CHECK-NEXT:    ret
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)
514   ret <8 x i32> %v
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:
519 ; CHECK:       # %bb.0:
520 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
521 ; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
522 ; CHECK-NEXT:    ret
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)
526   ret <8 x i32> %v
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:
531 ; CHECK:       # %bb.0:
532 ; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
533 ; CHECK-NEXT:    vdiv.vx v8, v8, a0
534 ; CHECK-NEXT:    ret
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)
538   ret <8 x i32> %v
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:
545 ; CHECK:       # %bb.0:
546 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
547 ; CHECK-NEXT:    vdiv.vv v8, v8, v12, v0.t
548 ; CHECK-NEXT:    ret
549   %v = call <16 x i32> @llvm.vp.sdiv.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
550   ret <16 x i32> %v
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:
555 ; CHECK:       # %bb.0:
556 ; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
557 ; CHECK-NEXT:    vdiv.vv v8, v8, v12
558 ; CHECK-NEXT:    ret
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)
560   ret <16 x i32> %v
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:
565 ; CHECK:       # %bb.0:
566 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
567 ; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
568 ; CHECK-NEXT:    ret
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)
572   ret <16 x i32> %v
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:
577 ; CHECK:       # %bb.0:
578 ; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
579 ; CHECK-NEXT:    vdiv.vx v8, v8, a0
580 ; CHECK-NEXT:    ret
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)
584   ret <16 x i32> %v
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:
591 ; CHECK:       # %bb.0:
592 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
593 ; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
594 ; CHECK-NEXT:    ret
595   %v = call <2 x i64> @llvm.vp.sdiv.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
596   ret <2 x i64> %v
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:
601 ; CHECK:       # %bb.0:
602 ; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
603 ; CHECK-NEXT:    vdiv.vv v8, v8, v9
604 ; CHECK-NEXT:    ret
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)
606   ret <2 x i64> %v
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:
611 ; RV32:       # %bb.0:
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
622 ; RV32-NEXT:    ret
624 ; RV64-LABEL: vdiv_vx_v2i64:
625 ; RV64:       # %bb.0:
626 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
627 ; RV64-NEXT:    vdiv.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.sdiv.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> @vdiv_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
636 ; RV32-LABEL: vdiv_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 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
648 ; RV32-NEXT:    ret
650 ; RV64-LABEL: vdiv_vx_v2i64_unmasked:
651 ; RV64:       # %bb.0:
652 ; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
653 ; RV64-NEXT:    vdiv.vx v8, v8, a0
654 ; RV64-NEXT:    ret
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)
658   ret <2 x i64> %v
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:
665 ; CHECK:       # %bb.0:
666 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
667 ; CHECK-NEXT:    vdiv.vv v8, v8, v10, v0.t
668 ; CHECK-NEXT:    ret
669   %v = call <4 x i64> @llvm.vp.sdiv.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
670   ret <4 x i64> %v
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:
675 ; CHECK:       # %bb.0:
676 ; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
677 ; CHECK-NEXT:    vdiv.vv v8, v8, v10
678 ; CHECK-NEXT:    ret
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)
680   ret <4 x i64> %v
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:
685 ; RV32:       # %bb.0:
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
696 ; RV32-NEXT:    ret
698 ; RV64-LABEL: vdiv_vx_v4i64:
699 ; RV64:       # %bb.0:
700 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
701 ; RV64-NEXT:    vdiv.vx v8, v8, a0, v0.t
702 ; RV64-NEXT:    ret
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)
706   ret <4 x i64> %v
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:
711 ; RV32:       # %bb.0:
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
722 ; RV32-NEXT:    ret
724 ; RV64-LABEL: vdiv_vx_v4i64_unmasked:
725 ; RV64:       # %bb.0:
726 ; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
727 ; RV64-NEXT:    vdiv.vx v8, v8, a0
728 ; RV64-NEXT:    ret
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)
732   ret <4 x i64> %v
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:
739 ; CHECK:       # %bb.0:
740 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
741 ; CHECK-NEXT:    vdiv.vv v8, v8, v12, v0.t
742 ; CHECK-NEXT:    ret
743   %v = call <8 x i64> @llvm.vp.sdiv.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
744   ret <8 x i64> %v
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:
749 ; CHECK:       # %bb.0:
750 ; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
751 ; CHECK-NEXT:    vdiv.vv v8, v8, v12
752 ; CHECK-NEXT:    ret
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)
754   ret <8 x i64> %v
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:
759 ; RV32:       # %bb.0:
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
770 ; RV32-NEXT:    ret
772 ; RV64-LABEL: vdiv_vx_v8i64:
773 ; RV64:       # %bb.0:
774 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
775 ; RV64-NEXT:    vdiv.vx v8, v8, a0, v0.t
776 ; RV64-NEXT:    ret
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)
780   ret <8 x i64> %v
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:
785 ; RV32:       # %bb.0:
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
796 ; RV32-NEXT:    ret
798 ; RV64-LABEL: vdiv_vx_v8i64_unmasked:
799 ; RV64:       # %bb.0:
800 ; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
801 ; RV64-NEXT:    vdiv.vx v8, v8, a0
802 ; RV64-NEXT:    ret
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)
806   ret <8 x i64> %v
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:
813 ; CHECK:       # %bb.0:
814 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
815 ; CHECK-NEXT:    vdiv.vv v8, v8, v16, v0.t
816 ; CHECK-NEXT:    ret
817   %v = call <16 x i64> @llvm.vp.sdiv.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
818   ret <16 x i64> %v
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:
823 ; CHECK:       # %bb.0:
824 ; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
825 ; CHECK-NEXT:    vdiv.vv v8, v8, v16
826 ; CHECK-NEXT:    ret
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)
828   ret <16 x i64> %v
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:
833 ; RV32:       # %bb.0:
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
844 ; RV32-NEXT:    ret
846 ; RV64-LABEL: vdiv_vx_v16i64:
847 ; RV64:       # %bb.0:
848 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
849 ; RV64-NEXT:    vdiv.vx v8, v8, a0, v0.t
850 ; RV64-NEXT:    ret
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)
854   ret <16 x i64> %v
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:
859 ; RV32:       # %bb.0:
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
870 ; RV32-NEXT:    ret
872 ; RV64-LABEL: vdiv_vx_v16i64_unmasked:
873 ; RV64:       # %bb.0:
874 ; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
875 ; RV64-NEXT:    vdiv.vx v8, v8, a0
876 ; RV64-NEXT:    ret
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)
880   ret <16 x i64> %v