xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/vdiv-vp.ll (revision 36e4176f1d83d04cdebb4e1870561099b2478d80)
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
6
7declare <vscale x 8 x i7> @llvm.vp.sdiv.nxv8i7(<vscale x 8 x i7>, <vscale x 8 x i7>, <vscale x 8 x i1>, i32)
8
9define <vscale x 8 x i7> @vdiv_vx_nxv8i7(<vscale x 8 x i7> %a, i7 signext %b, <vscale x 8 x i1> %mask, i32 zeroext %evl) {
10; CHECK-LABEL: vdiv_vx_nxv8i7:
11; CHECK:       # %bb.0:
12; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
13; CHECK-NEXT:    vsll.vi v8, v8, 1, v0.t
14; CHECK-NEXT:    vmv.v.x v9, a0
15; CHECK-NEXT:    vsra.vi v8, v8, 1, v0.t
16; CHECK-NEXT:    vsll.vi v9, v9, 1, v0.t
17; CHECK-NEXT:    vsra.vi v9, v9, 1, v0.t
18; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
19; CHECK-NEXT:    ret
20  %elt.head = insertelement <vscale x 8 x i7> poison, i7 %b, i32 0
21  %vb = shufflevector <vscale x 8 x i7> %elt.head, <vscale x 8 x i7> poison, <vscale x 8 x i32> zeroinitializer
22  %v = call <vscale x 8 x i7> @llvm.vp.sdiv.nxv8i7(<vscale x 8 x i7> %a, <vscale x 8 x i7> %vb, <vscale x 8 x i1> %mask, i32 %evl)
23  ret <vscale x 8 x i7> %v
24}
25
26declare <vscale x 1 x i8> @llvm.vp.sdiv.nxv1i8(<vscale x 1 x i8>, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
27
28define <vscale x 1 x i8> @vdiv_vv_nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
29; CHECK-LABEL: vdiv_vv_nxv1i8:
30; CHECK:       # %bb.0:
31; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
32; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
33; CHECK-NEXT:    ret
34  %v = call <vscale x 1 x i8> @llvm.vp.sdiv.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)
35  ret <vscale x 1 x i8> %v
36}
37
38define <vscale x 1 x i8> @vdiv_vv_nxv1i8_unmasked(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, i32 zeroext %evl) {
39; CHECK-LABEL: vdiv_vv_nxv1i8_unmasked:
40; CHECK:       # %bb.0:
41; CHECK-NEXT:    vsetvli zero, a0, e8, mf8, ta, ma
42; CHECK-NEXT:    vdiv.vv v8, v8, v9
43; CHECK-NEXT:    ret
44  %v = call <vscale x 1 x i8> @llvm.vp.sdiv.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
45  ret <vscale x 1 x i8> %v
46}
47
48define <vscale x 1 x i8> @vdiv_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
49; CHECK-LABEL: vdiv_vx_nxv1i8:
50; CHECK:       # %bb.0:
51; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
52; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
53; CHECK-NEXT:    ret
54  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
55  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
56  %v = call <vscale x 1 x i8> @llvm.vp.sdiv.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
57  ret <vscale x 1 x i8> %v
58}
59
60define <vscale x 1 x i8> @vdiv_vx_nxv1i8_unmasked(<vscale x 1 x i8> %va, i8 %b, i32 zeroext %evl) {
61; CHECK-LABEL: vdiv_vx_nxv1i8_unmasked:
62; CHECK:       # %bb.0:
63; CHECK-NEXT:    vsetvli zero, a1, e8, mf8, ta, ma
64; CHECK-NEXT:    vdiv.vx v8, v8, a0
65; CHECK-NEXT:    ret
66  %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
67  %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
68  %v = call <vscale x 1 x i8> @llvm.vp.sdiv.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
69  ret <vscale x 1 x i8> %v
70}
71
72declare <vscale x 2 x i8> @llvm.vp.sdiv.nxv2i8(<vscale x 2 x i8>, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
73
74define <vscale x 2 x i8> @vdiv_vv_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
75; CHECK-LABEL: vdiv_vv_nxv2i8:
76; CHECK:       # %bb.0:
77; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
78; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
79; CHECK-NEXT:    ret
80  %v = call <vscale x 2 x i8> @llvm.vp.sdiv.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)
81  ret <vscale x 2 x i8> %v
82}
83
84define <vscale x 2 x i8> @vdiv_vv_nxv2i8_unmasked(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, i32 zeroext %evl) {
85; CHECK-LABEL: vdiv_vv_nxv2i8_unmasked:
86; CHECK:       # %bb.0:
87; CHECK-NEXT:    vsetvli zero, a0, e8, mf4, ta, ma
88; CHECK-NEXT:    vdiv.vv v8, v8, v9
89; CHECK-NEXT:    ret
90  %v = call <vscale x 2 x i8> @llvm.vp.sdiv.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
91  ret <vscale x 2 x i8> %v
92}
93
94define <vscale x 2 x i8> @vdiv_vx_nxv2i8(<vscale x 2 x i8> %va, i8 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
95; CHECK-LABEL: vdiv_vx_nxv2i8:
96; CHECK:       # %bb.0:
97; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
98; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
99; CHECK-NEXT:    ret
100  %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
101  %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
102  %v = call <vscale x 2 x i8> @llvm.vp.sdiv.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
103  ret <vscale x 2 x i8> %v
104}
105
106define <vscale x 2 x i8> @vdiv_vx_nxv2i8_unmasked(<vscale x 2 x i8> %va, i8 %b, i32 zeroext %evl) {
107; CHECK-LABEL: vdiv_vx_nxv2i8_unmasked:
108; CHECK:       # %bb.0:
109; CHECK-NEXT:    vsetvli zero, a1, e8, mf4, ta, ma
110; CHECK-NEXT:    vdiv.vx v8, v8, a0
111; CHECK-NEXT:    ret
112  %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
113  %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
114  %v = call <vscale x 2 x i8> @llvm.vp.sdiv.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
115  ret <vscale x 2 x i8> %v
116}
117
118declare <vscale x 3 x i8> @llvm.vp.sdiv.nxv3i8(<vscale x 3 x i8>, <vscale x 3 x i8>, <vscale x 3 x i1>, i32)
119
120define <vscale x 3 x i8> @vdiv_vv_nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %b, <vscale x 3 x i1> %m, i32 zeroext %evl) {
121; CHECK-LABEL: vdiv_vv_nxv3i8:
122; CHECK:       # %bb.0:
123; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
124; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
125; CHECK-NEXT:    ret
126  %v = call <vscale x 3 x i8> @llvm.vp.sdiv.nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %b, <vscale x 3 x i1> %m, i32 %evl)
127  ret <vscale x 3 x i8> %v
128}
129
130declare <vscale x 4 x i8> @llvm.vp.sdiv.nxv4i8(<vscale x 4 x i8>, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
131
132define <vscale x 4 x i8> @vdiv_vv_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
133; CHECK-LABEL: vdiv_vv_nxv4i8:
134; CHECK:       # %bb.0:
135; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
136; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
137; CHECK-NEXT:    ret
138  %v = call <vscale x 4 x i8> @llvm.vp.sdiv.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)
139  ret <vscale x 4 x i8> %v
140}
141
142define <vscale x 4 x i8> @vdiv_vv_nxv4i8_unmasked(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, i32 zeroext %evl) {
143; CHECK-LABEL: vdiv_vv_nxv4i8_unmasked:
144; CHECK:       # %bb.0:
145; CHECK-NEXT:    vsetvli zero, a0, e8, mf2, ta, ma
146; CHECK-NEXT:    vdiv.vv v8, v8, v9
147; CHECK-NEXT:    ret
148  %v = call <vscale x 4 x i8> @llvm.vp.sdiv.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
149  ret <vscale x 4 x i8> %v
150}
151
152define <vscale x 4 x i8> @vdiv_vx_nxv4i8(<vscale x 4 x i8> %va, i8 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
153; CHECK-LABEL: vdiv_vx_nxv4i8:
154; CHECK:       # %bb.0:
155; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
156; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
157; CHECK-NEXT:    ret
158  %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
159  %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
160  %v = call <vscale x 4 x i8> @llvm.vp.sdiv.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
161  ret <vscale x 4 x i8> %v
162}
163
164define <vscale x 4 x i8> @vdiv_vx_nxv4i8_unmasked(<vscale x 4 x i8> %va, i8 %b, i32 zeroext %evl) {
165; CHECK-LABEL: vdiv_vx_nxv4i8_unmasked:
166; CHECK:       # %bb.0:
167; CHECK-NEXT:    vsetvli zero, a1, e8, mf2, ta, ma
168; CHECK-NEXT:    vdiv.vx v8, v8, a0
169; CHECK-NEXT:    ret
170  %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
171  %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
172  %v = call <vscale x 4 x i8> @llvm.vp.sdiv.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
173  ret <vscale x 4 x i8> %v
174}
175
176declare <vscale x 8 x i8> @llvm.vp.sdiv.nxv8i8(<vscale x 8 x i8>, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
177
178define <vscale x 8 x i8> @vdiv_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
179; CHECK-LABEL: vdiv_vv_nxv8i8:
180; CHECK:       # %bb.0:
181; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
182; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
183; CHECK-NEXT:    ret
184  %v = call <vscale x 8 x i8> @llvm.vp.sdiv.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)
185  ret <vscale x 8 x i8> %v
186}
187
188define <vscale x 8 x i8> @vdiv_vv_nxv8i8_unmasked(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, i32 zeroext %evl) {
189; CHECK-LABEL: vdiv_vv_nxv8i8_unmasked:
190; CHECK:       # %bb.0:
191; CHECK-NEXT:    vsetvli zero, a0, e8, m1, ta, ma
192; CHECK-NEXT:    vdiv.vv v8, v8, v9
193; CHECK-NEXT:    ret
194  %v = call <vscale x 8 x i8> @llvm.vp.sdiv.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
195  ret <vscale x 8 x i8> %v
196}
197
198define <vscale x 8 x i8> @vdiv_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
199; CHECK-LABEL: vdiv_vx_nxv8i8:
200; CHECK:       # %bb.0:
201; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
202; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
203; CHECK-NEXT:    ret
204  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
205  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
206  %v = call <vscale x 8 x i8> @llvm.vp.sdiv.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
207  ret <vscale x 8 x i8> %v
208}
209
210define <vscale x 8 x i8> @vdiv_vx_nxv8i8_unmasked(<vscale x 8 x i8> %va, i8 %b, i32 zeroext %evl) {
211; CHECK-LABEL: vdiv_vx_nxv8i8_unmasked:
212; CHECK:       # %bb.0:
213; CHECK-NEXT:    vsetvli zero, a1, e8, m1, ta, ma
214; CHECK-NEXT:    vdiv.vx v8, v8, a0
215; CHECK-NEXT:    ret
216  %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
217  %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
218  %v = call <vscale x 8 x i8> @llvm.vp.sdiv.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
219  ret <vscale x 8 x i8> %v
220}
221
222declare <vscale x 16 x i8> @llvm.vp.sdiv.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i1>, i32)
223
224define <vscale x 16 x i8> @vdiv_vv_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
225; CHECK-LABEL: vdiv_vv_nxv16i8:
226; CHECK:       # %bb.0:
227; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
228; CHECK-NEXT:    vdiv.vv v8, v8, v10, v0.t
229; CHECK-NEXT:    ret
230  %v = call <vscale x 16 x i8> @llvm.vp.sdiv.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)
231  ret <vscale x 16 x i8> %v
232}
233
234define <vscale x 16 x i8> @vdiv_vv_nxv16i8_unmasked(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, i32 zeroext %evl) {
235; CHECK-LABEL: vdiv_vv_nxv16i8_unmasked:
236; CHECK:       # %bb.0:
237; CHECK-NEXT:    vsetvli zero, a0, e8, m2, ta, ma
238; CHECK-NEXT:    vdiv.vv v8, v8, v10
239; CHECK-NEXT:    ret
240  %v = call <vscale x 16 x i8> @llvm.vp.sdiv.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
241  ret <vscale x 16 x i8> %v
242}
243
244define <vscale x 16 x i8> @vdiv_vx_nxv16i8(<vscale x 16 x i8> %va, i8 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
245; CHECK-LABEL: vdiv_vx_nxv16i8:
246; CHECK:       # %bb.0:
247; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
248; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
249; CHECK-NEXT:    ret
250  %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
251  %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
252  %v = call <vscale x 16 x i8> @llvm.vp.sdiv.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
253  ret <vscale x 16 x i8> %v
254}
255
256define <vscale x 16 x i8> @vdiv_vx_nxv16i8_unmasked(<vscale x 16 x i8> %va, i8 %b, i32 zeroext %evl) {
257; CHECK-LABEL: vdiv_vx_nxv16i8_unmasked:
258; CHECK:       # %bb.0:
259; CHECK-NEXT:    vsetvli zero, a1, e8, m2, ta, ma
260; CHECK-NEXT:    vdiv.vx v8, v8, a0
261; CHECK-NEXT:    ret
262  %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
263  %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
264  %v = call <vscale x 16 x i8> @llvm.vp.sdiv.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
265  ret <vscale x 16 x i8> %v
266}
267
268declare <vscale x 32 x i8> @llvm.vp.sdiv.nxv32i8(<vscale x 32 x i8>, <vscale x 32 x i8>, <vscale x 32 x i1>, i32)
269
270define <vscale x 32 x i8> @vdiv_vv_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
271; CHECK-LABEL: vdiv_vv_nxv32i8:
272; CHECK:       # %bb.0:
273; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
274; CHECK-NEXT:    vdiv.vv v8, v8, v12, v0.t
275; CHECK-NEXT:    ret
276  %v = call <vscale x 32 x i8> @llvm.vp.sdiv.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)
277  ret <vscale x 32 x i8> %v
278}
279
280define <vscale x 32 x i8> @vdiv_vv_nxv32i8_unmasked(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, i32 zeroext %evl) {
281; CHECK-LABEL: vdiv_vv_nxv32i8_unmasked:
282; CHECK:       # %bb.0:
283; CHECK-NEXT:    vsetvli zero, a0, e8, m4, ta, ma
284; CHECK-NEXT:    vdiv.vv v8, v8, v12
285; CHECK-NEXT:    ret
286  %v = call <vscale x 32 x i8> @llvm.vp.sdiv.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)
287  ret <vscale x 32 x i8> %v
288}
289
290define <vscale x 32 x i8> @vdiv_vx_nxv32i8(<vscale x 32 x i8> %va, i8 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
291; CHECK-LABEL: vdiv_vx_nxv32i8:
292; CHECK:       # %bb.0:
293; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
294; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
295; CHECK-NEXT:    ret
296  %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
297  %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
298  %v = call <vscale x 32 x i8> @llvm.vp.sdiv.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
299  ret <vscale x 32 x i8> %v
300}
301
302define <vscale x 32 x i8> @vdiv_vx_nxv32i8_unmasked(<vscale x 32 x i8> %va, i8 %b, i32 zeroext %evl) {
303; CHECK-LABEL: vdiv_vx_nxv32i8_unmasked:
304; CHECK:       # %bb.0:
305; CHECK-NEXT:    vsetvli zero, a1, e8, m4, ta, ma
306; CHECK-NEXT:    vdiv.vx v8, v8, a0
307; CHECK-NEXT:    ret
308  %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
309  %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
310  %v = call <vscale x 32 x i8> @llvm.vp.sdiv.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)
311  ret <vscale x 32 x i8> %v
312}
313
314declare <vscale x 64 x i8> @llvm.vp.sdiv.nxv64i8(<vscale x 64 x i8>, <vscale x 64 x i8>, <vscale x 64 x i1>, i32)
315
316define <vscale x 64 x i8> @vdiv_vv_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
317; CHECK-LABEL: vdiv_vv_nxv64i8:
318; CHECK:       # %bb.0:
319; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
320; CHECK-NEXT:    vdiv.vv v8, v8, v16, v0.t
321; CHECK-NEXT:    ret
322  %v = call <vscale x 64 x i8> @llvm.vp.sdiv.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)
323  ret <vscale x 64 x i8> %v
324}
325
326define <vscale x 64 x i8> @vdiv_vv_nxv64i8_unmasked(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, i32 zeroext %evl) {
327; CHECK-LABEL: vdiv_vv_nxv64i8_unmasked:
328; CHECK:       # %bb.0:
329; CHECK-NEXT:    vsetvli zero, a0, e8, m8, ta, ma
330; CHECK-NEXT:    vdiv.vv v8, v8, v16
331; CHECK-NEXT:    ret
332  %v = call <vscale x 64 x i8> @llvm.vp.sdiv.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> splat (i1 true), i32 %evl)
333  ret <vscale x 64 x i8> %v
334}
335
336define <vscale x 64 x i8> @vdiv_vx_nxv64i8(<vscale x 64 x i8> %va, i8 %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
337; CHECK-LABEL: vdiv_vx_nxv64i8:
338; CHECK:       # %bb.0:
339; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
340; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
341; CHECK-NEXT:    ret
342  %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
343  %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
344  %v = call <vscale x 64 x i8> @llvm.vp.sdiv.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
345  ret <vscale x 64 x i8> %v
346}
347
348define <vscale x 64 x i8> @vdiv_vx_nxv64i8_unmasked(<vscale x 64 x i8> %va, i8 %b, i32 zeroext %evl) {
349; CHECK-LABEL: vdiv_vx_nxv64i8_unmasked:
350; CHECK:       # %bb.0:
351; CHECK-NEXT:    vsetvli zero, a1, e8, m8, ta, ma
352; CHECK-NEXT:    vdiv.vx v8, v8, a0
353; CHECK-NEXT:    ret
354  %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
355  %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
356  %v = call <vscale x 64 x i8> @llvm.vp.sdiv.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> splat (i1 true), i32 %evl)
357  ret <vscale x 64 x i8> %v
358}
359
360declare <vscale x 1 x i16> @llvm.vp.sdiv.nxv1i16(<vscale x 1 x i16>, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
361
362define <vscale x 1 x i16> @vdiv_vv_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
363; CHECK-LABEL: vdiv_vv_nxv1i16:
364; CHECK:       # %bb.0:
365; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
366; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
367; CHECK-NEXT:    ret
368  %v = call <vscale x 1 x i16> @llvm.vp.sdiv.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)
369  ret <vscale x 1 x i16> %v
370}
371
372define <vscale x 1 x i16> @vdiv_vv_nxv1i16_unmasked(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, i32 zeroext %evl) {
373; CHECK-LABEL: vdiv_vv_nxv1i16_unmasked:
374; CHECK:       # %bb.0:
375; CHECK-NEXT:    vsetvli zero, a0, e16, mf4, ta, ma
376; CHECK-NEXT:    vdiv.vv v8, v8, v9
377; CHECK-NEXT:    ret
378  %v = call <vscale x 1 x i16> @llvm.vp.sdiv.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
379  ret <vscale x 1 x i16> %v
380}
381
382define <vscale x 1 x i16> @vdiv_vx_nxv1i16(<vscale x 1 x i16> %va, i16 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
383; CHECK-LABEL: vdiv_vx_nxv1i16:
384; CHECK:       # %bb.0:
385; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
386; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
387; CHECK-NEXT:    ret
388  %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
389  %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
390  %v = call <vscale x 1 x i16> @llvm.vp.sdiv.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
391  ret <vscale x 1 x i16> %v
392}
393
394define <vscale x 1 x i16> @vdiv_vx_nxv1i16_unmasked(<vscale x 1 x i16> %va, i16 %b, i32 zeroext %evl) {
395; CHECK-LABEL: vdiv_vx_nxv1i16_unmasked:
396; CHECK:       # %bb.0:
397; CHECK-NEXT:    vsetvli zero, a1, e16, mf4, ta, ma
398; CHECK-NEXT:    vdiv.vx v8, v8, a0
399; CHECK-NEXT:    ret
400  %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
401  %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
402  %v = call <vscale x 1 x i16> @llvm.vp.sdiv.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
403  ret <vscale x 1 x i16> %v
404}
405
406declare <vscale x 2 x i16> @llvm.vp.sdiv.nxv2i16(<vscale x 2 x i16>, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
407
408define <vscale x 2 x i16> @vdiv_vv_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
409; CHECK-LABEL: vdiv_vv_nxv2i16:
410; CHECK:       # %bb.0:
411; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
412; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
413; CHECK-NEXT:    ret
414  %v = call <vscale x 2 x i16> @llvm.vp.sdiv.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)
415  ret <vscale x 2 x i16> %v
416}
417
418define <vscale x 2 x i16> @vdiv_vv_nxv2i16_unmasked(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, i32 zeroext %evl) {
419; CHECK-LABEL: vdiv_vv_nxv2i16_unmasked:
420; CHECK:       # %bb.0:
421; CHECK-NEXT:    vsetvli zero, a0, e16, mf2, ta, ma
422; CHECK-NEXT:    vdiv.vv v8, v8, v9
423; CHECK-NEXT:    ret
424  %v = call <vscale x 2 x i16> @llvm.vp.sdiv.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
425  ret <vscale x 2 x i16> %v
426}
427
428define <vscale x 2 x i16> @vdiv_vx_nxv2i16(<vscale x 2 x i16> %va, i16 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
429; CHECK-LABEL: vdiv_vx_nxv2i16:
430; CHECK:       # %bb.0:
431; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
432; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
433; CHECK-NEXT:    ret
434  %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
435  %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
436  %v = call <vscale x 2 x i16> @llvm.vp.sdiv.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
437  ret <vscale x 2 x i16> %v
438}
439
440define <vscale x 2 x i16> @vdiv_vx_nxv2i16_unmasked(<vscale x 2 x i16> %va, i16 %b, i32 zeroext %evl) {
441; CHECK-LABEL: vdiv_vx_nxv2i16_unmasked:
442; CHECK:       # %bb.0:
443; CHECK-NEXT:    vsetvli zero, a1, e16, mf2, ta, ma
444; CHECK-NEXT:    vdiv.vx v8, v8, a0
445; CHECK-NEXT:    ret
446  %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
447  %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
448  %v = call <vscale x 2 x i16> @llvm.vp.sdiv.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
449  ret <vscale x 2 x i16> %v
450}
451
452declare <vscale x 4 x i16> @llvm.vp.sdiv.nxv4i16(<vscale x 4 x i16>, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
453
454define <vscale x 4 x i16> @vdiv_vv_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
455; CHECK-LABEL: vdiv_vv_nxv4i16:
456; CHECK:       # %bb.0:
457; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
458; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
459; CHECK-NEXT:    ret
460  %v = call <vscale x 4 x i16> @llvm.vp.sdiv.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)
461  ret <vscale x 4 x i16> %v
462}
463
464define <vscale x 4 x i16> @vdiv_vv_nxv4i16_unmasked(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, i32 zeroext %evl) {
465; CHECK-LABEL: vdiv_vv_nxv4i16_unmasked:
466; CHECK:       # %bb.0:
467; CHECK-NEXT:    vsetvli zero, a0, e16, m1, ta, ma
468; CHECK-NEXT:    vdiv.vv v8, v8, v9
469; CHECK-NEXT:    ret
470  %v = call <vscale x 4 x i16> @llvm.vp.sdiv.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
471  ret <vscale x 4 x i16> %v
472}
473
474define <vscale x 4 x i16> @vdiv_vx_nxv4i16(<vscale x 4 x i16> %va, i16 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
475; CHECK-LABEL: vdiv_vx_nxv4i16:
476; CHECK:       # %bb.0:
477; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
478; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
479; CHECK-NEXT:    ret
480  %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
481  %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
482  %v = call <vscale x 4 x i16> @llvm.vp.sdiv.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
483  ret <vscale x 4 x i16> %v
484}
485
486define <vscale x 4 x i16> @vdiv_vx_nxv4i16_unmasked(<vscale x 4 x i16> %va, i16 %b, i32 zeroext %evl) {
487; CHECK-LABEL: vdiv_vx_nxv4i16_unmasked:
488; CHECK:       # %bb.0:
489; CHECK-NEXT:    vsetvli zero, a1, e16, m1, ta, ma
490; CHECK-NEXT:    vdiv.vx v8, v8, a0
491; CHECK-NEXT:    ret
492  %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
493  %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
494  %v = call <vscale x 4 x i16> @llvm.vp.sdiv.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
495  ret <vscale x 4 x i16> %v
496}
497
498declare <vscale x 8 x i16> @llvm.vp.sdiv.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
499
500define <vscale x 8 x i16> @vdiv_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
501; CHECK-LABEL: vdiv_vv_nxv8i16:
502; CHECK:       # %bb.0:
503; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
504; CHECK-NEXT:    vdiv.vv v8, v8, v10, v0.t
505; CHECK-NEXT:    ret
506  %v = call <vscale x 8 x i16> @llvm.vp.sdiv.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)
507  ret <vscale x 8 x i16> %v
508}
509
510define <vscale x 8 x i16> @vdiv_vv_nxv8i16_unmasked(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, i32 zeroext %evl) {
511; CHECK-LABEL: vdiv_vv_nxv8i16_unmasked:
512; CHECK:       # %bb.0:
513; CHECK-NEXT:    vsetvli zero, a0, e16, m2, ta, ma
514; CHECK-NEXT:    vdiv.vv v8, v8, v10
515; CHECK-NEXT:    ret
516  %v = call <vscale x 8 x i16> @llvm.vp.sdiv.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
517  ret <vscale x 8 x i16> %v
518}
519
520define <vscale x 8 x i16> @vdiv_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
521; CHECK-LABEL: vdiv_vx_nxv8i16:
522; CHECK:       # %bb.0:
523; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
524; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
525; CHECK-NEXT:    ret
526  %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
527  %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
528  %v = call <vscale x 8 x i16> @llvm.vp.sdiv.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
529  ret <vscale x 8 x i16> %v
530}
531
532define <vscale x 8 x i16> @vdiv_vx_nxv8i16_unmasked(<vscale x 8 x i16> %va, i16 %b, i32 zeroext %evl) {
533; CHECK-LABEL: vdiv_vx_nxv8i16_unmasked:
534; CHECK:       # %bb.0:
535; CHECK-NEXT:    vsetvli zero, a1, e16, m2, ta, ma
536; CHECK-NEXT:    vdiv.vx v8, v8, a0
537; CHECK-NEXT:    ret
538  %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
539  %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
540  %v = call <vscale x 8 x i16> @llvm.vp.sdiv.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
541  ret <vscale x 8 x i16> %v
542}
543
544declare <vscale x 16 x i16> @llvm.vp.sdiv.nxv16i16(<vscale x 16 x i16>, <vscale x 16 x i16>, <vscale x 16 x i1>, i32)
545
546define <vscale x 16 x i16> @vdiv_vv_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
547; CHECK-LABEL: vdiv_vv_nxv16i16:
548; CHECK:       # %bb.0:
549; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
550; CHECK-NEXT:    vdiv.vv v8, v8, v12, v0.t
551; CHECK-NEXT:    ret
552  %v = call <vscale x 16 x i16> @llvm.vp.sdiv.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)
553  ret <vscale x 16 x i16> %v
554}
555
556define <vscale x 16 x i16> @vdiv_vv_nxv16i16_unmasked(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, i32 zeroext %evl) {
557; CHECK-LABEL: vdiv_vv_nxv16i16_unmasked:
558; CHECK:       # %bb.0:
559; CHECK-NEXT:    vsetvli zero, a0, e16, m4, ta, ma
560; CHECK-NEXT:    vdiv.vv v8, v8, v12
561; CHECK-NEXT:    ret
562  %v = call <vscale x 16 x i16> @llvm.vp.sdiv.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
563  ret <vscale x 16 x i16> %v
564}
565
566define <vscale x 16 x i16> @vdiv_vx_nxv16i16(<vscale x 16 x i16> %va, i16 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
567; CHECK-LABEL: vdiv_vx_nxv16i16:
568; CHECK:       # %bb.0:
569; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
570; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
571; CHECK-NEXT:    ret
572  %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
573  %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
574  %v = call <vscale x 16 x i16> @llvm.vp.sdiv.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
575  ret <vscale x 16 x i16> %v
576}
577
578define <vscale x 16 x i16> @vdiv_vx_nxv16i16_unmasked(<vscale x 16 x i16> %va, i16 %b, i32 zeroext %evl) {
579; CHECK-LABEL: vdiv_vx_nxv16i16_unmasked:
580; CHECK:       # %bb.0:
581; CHECK-NEXT:    vsetvli zero, a1, e16, m4, ta, ma
582; CHECK-NEXT:    vdiv.vx v8, v8, a0
583; CHECK-NEXT:    ret
584  %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
585  %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
586  %v = call <vscale x 16 x i16> @llvm.vp.sdiv.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
587  ret <vscale x 16 x i16> %v
588}
589
590declare <vscale x 32 x i16> @llvm.vp.sdiv.nxv32i16(<vscale x 32 x i16>, <vscale x 32 x i16>, <vscale x 32 x i1>, i32)
591
592define <vscale x 32 x i16> @vdiv_vv_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
593; CHECK-LABEL: vdiv_vv_nxv32i16:
594; CHECK:       # %bb.0:
595; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
596; CHECK-NEXT:    vdiv.vv v8, v8, v16, v0.t
597; CHECK-NEXT:    ret
598  %v = call <vscale x 32 x i16> @llvm.vp.sdiv.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)
599  ret <vscale x 32 x i16> %v
600}
601
602define <vscale x 32 x i16> @vdiv_vv_nxv32i16_unmasked(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, i32 zeroext %evl) {
603; CHECK-LABEL: vdiv_vv_nxv32i16_unmasked:
604; CHECK:       # %bb.0:
605; CHECK-NEXT:    vsetvli zero, a0, e16, m8, ta, ma
606; CHECK-NEXT:    vdiv.vv v8, v8, v16
607; CHECK-NEXT:    ret
608  %v = call <vscale x 32 x i16> @llvm.vp.sdiv.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> splat (i1 true), i32 %evl)
609  ret <vscale x 32 x i16> %v
610}
611
612define <vscale x 32 x i16> @vdiv_vx_nxv32i16(<vscale x 32 x i16> %va, i16 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
613; CHECK-LABEL: vdiv_vx_nxv32i16:
614; CHECK:       # %bb.0:
615; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
616; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
617; CHECK-NEXT:    ret
618  %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
619  %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
620  %v = call <vscale x 32 x i16> @llvm.vp.sdiv.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
621  ret <vscale x 32 x i16> %v
622}
623
624define <vscale x 32 x i16> @vdiv_vx_nxv32i16_unmasked(<vscale x 32 x i16> %va, i16 %b, i32 zeroext %evl) {
625; CHECK-LABEL: vdiv_vx_nxv32i16_unmasked:
626; CHECK:       # %bb.0:
627; CHECK-NEXT:    vsetvli zero, a1, e16, m8, ta, ma
628; CHECK-NEXT:    vdiv.vx v8, v8, a0
629; CHECK-NEXT:    ret
630  %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
631  %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
632  %v = call <vscale x 32 x i16> @llvm.vp.sdiv.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> splat (i1 true), i32 %evl)
633  ret <vscale x 32 x i16> %v
634}
635
636declare <vscale x 1 x i32> @llvm.vp.sdiv.nxv1i32(<vscale x 1 x i32>, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
637
638define <vscale x 1 x i32> @vdiv_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
639; CHECK-LABEL: vdiv_vv_nxv1i32:
640; CHECK:       # %bb.0:
641; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
642; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
643; CHECK-NEXT:    ret
644  %v = call <vscale x 1 x i32> @llvm.vp.sdiv.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)
645  ret <vscale x 1 x i32> %v
646}
647
648define <vscale x 1 x i32> @vdiv_vv_nxv1i32_unmasked(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, i32 zeroext %evl) {
649; CHECK-LABEL: vdiv_vv_nxv1i32_unmasked:
650; CHECK:       # %bb.0:
651; CHECK-NEXT:    vsetvli zero, a0, e32, mf2, ta, ma
652; CHECK-NEXT:    vdiv.vv v8, v8, v9
653; CHECK-NEXT:    ret
654  %v = call <vscale x 1 x i32> @llvm.vp.sdiv.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
655  ret <vscale x 1 x i32> %v
656}
657
658define <vscale x 1 x i32> @vdiv_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
659; CHECK-LABEL: vdiv_vx_nxv1i32:
660; CHECK:       # %bb.0:
661; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
662; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
663; CHECK-NEXT:    ret
664  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
665  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
666  %v = call <vscale x 1 x i32> @llvm.vp.sdiv.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
667  ret <vscale x 1 x i32> %v
668}
669
670define <vscale x 1 x i32> @vdiv_vx_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 %b, i32 zeroext %evl) {
671; CHECK-LABEL: vdiv_vx_nxv1i32_unmasked:
672; CHECK:       # %bb.0:
673; CHECK-NEXT:    vsetvli zero, a1, e32, mf2, ta, ma
674; CHECK-NEXT:    vdiv.vx v8, v8, a0
675; CHECK-NEXT:    ret
676  %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
677  %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
678  %v = call <vscale x 1 x i32> @llvm.vp.sdiv.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
679  ret <vscale x 1 x i32> %v
680}
681
682declare <vscale x 2 x i32> @llvm.vp.sdiv.nxv2i32(<vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
683
684define <vscale x 2 x i32> @vdiv_vv_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
685; CHECK-LABEL: vdiv_vv_nxv2i32:
686; CHECK:       # %bb.0:
687; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
688; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
689; CHECK-NEXT:    ret
690  %v = call <vscale x 2 x i32> @llvm.vp.sdiv.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)
691  ret <vscale x 2 x i32> %v
692}
693
694define <vscale x 2 x i32> @vdiv_vv_nxv2i32_unmasked(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, i32 zeroext %evl) {
695; CHECK-LABEL: vdiv_vv_nxv2i32_unmasked:
696; CHECK:       # %bb.0:
697; CHECK-NEXT:    vsetvli zero, a0, e32, m1, ta, ma
698; CHECK-NEXT:    vdiv.vv v8, v8, v9
699; CHECK-NEXT:    ret
700  %v = call <vscale x 2 x i32> @llvm.vp.sdiv.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
701  ret <vscale x 2 x i32> %v
702}
703
704define <vscale x 2 x i32> @vdiv_vx_nxv2i32(<vscale x 2 x i32> %va, i32 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
705; CHECK-LABEL: vdiv_vx_nxv2i32:
706; CHECK:       # %bb.0:
707; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
708; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
709; CHECK-NEXT:    ret
710  %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
711  %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
712  %v = call <vscale x 2 x i32> @llvm.vp.sdiv.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
713  ret <vscale x 2 x i32> %v
714}
715
716define <vscale x 2 x i32> @vdiv_vx_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 %b, i32 zeroext %evl) {
717; CHECK-LABEL: vdiv_vx_nxv2i32_unmasked:
718; CHECK:       # %bb.0:
719; CHECK-NEXT:    vsetvli zero, a1, e32, m1, ta, ma
720; CHECK-NEXT:    vdiv.vx v8, v8, a0
721; CHECK-NEXT:    ret
722  %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
723  %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
724  %v = call <vscale x 2 x i32> @llvm.vp.sdiv.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
725  ret <vscale x 2 x i32> %v
726}
727
728declare <vscale x 4 x i32> @llvm.vp.sdiv.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
729
730define <vscale x 4 x i32> @vdiv_vv_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
731; CHECK-LABEL: vdiv_vv_nxv4i32:
732; CHECK:       # %bb.0:
733; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
734; CHECK-NEXT:    vdiv.vv v8, v8, v10, v0.t
735; CHECK-NEXT:    ret
736  %v = call <vscale x 4 x i32> @llvm.vp.sdiv.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)
737  ret <vscale x 4 x i32> %v
738}
739
740define <vscale x 4 x i32> @vdiv_vv_nxv4i32_unmasked(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, i32 zeroext %evl) {
741; CHECK-LABEL: vdiv_vv_nxv4i32_unmasked:
742; CHECK:       # %bb.0:
743; CHECK-NEXT:    vsetvli zero, a0, e32, m2, ta, ma
744; CHECK-NEXT:    vdiv.vv v8, v8, v10
745; CHECK-NEXT:    ret
746  %v = call <vscale x 4 x i32> @llvm.vp.sdiv.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
747  ret <vscale x 4 x i32> %v
748}
749
750define <vscale x 4 x i32> @vdiv_vx_nxv4i32(<vscale x 4 x i32> %va, i32 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
751; CHECK-LABEL: vdiv_vx_nxv4i32:
752; CHECK:       # %bb.0:
753; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
754; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
755; CHECK-NEXT:    ret
756  %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
757  %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
758  %v = call <vscale x 4 x i32> @llvm.vp.sdiv.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
759  ret <vscale x 4 x i32> %v
760}
761
762define <vscale x 4 x i32> @vdiv_vx_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 %b, i32 zeroext %evl) {
763; CHECK-LABEL: vdiv_vx_nxv4i32_unmasked:
764; CHECK:       # %bb.0:
765; CHECK-NEXT:    vsetvli zero, a1, e32, m2, ta, ma
766; CHECK-NEXT:    vdiv.vx v8, v8, a0
767; CHECK-NEXT:    ret
768  %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
769  %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
770  %v = call <vscale x 4 x i32> @llvm.vp.sdiv.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
771  ret <vscale x 4 x i32> %v
772}
773
774declare <vscale x 8 x i32> @llvm.vp.sdiv.nxv8i32(<vscale x 8 x i32>, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
775
776define <vscale x 8 x i32> @vdiv_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
777; CHECK-LABEL: vdiv_vv_nxv8i32:
778; CHECK:       # %bb.0:
779; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
780; CHECK-NEXT:    vdiv.vv v8, v8, v12, v0.t
781; CHECK-NEXT:    ret
782  %v = call <vscale x 8 x i32> @llvm.vp.sdiv.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)
783  ret <vscale x 8 x i32> %v
784}
785
786define <vscale x 8 x i32> @vdiv_vv_nxv8i32_unmasked(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, i32 zeroext %evl) {
787; CHECK-LABEL: vdiv_vv_nxv8i32_unmasked:
788; CHECK:       # %bb.0:
789; CHECK-NEXT:    vsetvli zero, a0, e32, m4, ta, ma
790; CHECK-NEXT:    vdiv.vv v8, v8, v12
791; CHECK-NEXT:    ret
792  %v = call <vscale x 8 x i32> @llvm.vp.sdiv.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
793  ret <vscale x 8 x i32> %v
794}
795
796define <vscale x 8 x i32> @vdiv_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
797; CHECK-LABEL: vdiv_vx_nxv8i32:
798; CHECK:       # %bb.0:
799; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
800; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
801; CHECK-NEXT:    ret
802  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
803  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
804  %v = call <vscale x 8 x i32> @llvm.vp.sdiv.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
805  ret <vscale x 8 x i32> %v
806}
807
808define <vscale x 8 x i32> @vdiv_vx_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 %b, i32 zeroext %evl) {
809; CHECK-LABEL: vdiv_vx_nxv8i32_unmasked:
810; CHECK:       # %bb.0:
811; CHECK-NEXT:    vsetvli zero, a1, e32, m4, ta, ma
812; CHECK-NEXT:    vdiv.vx v8, v8, a0
813; CHECK-NEXT:    ret
814  %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
815  %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
816  %v = call <vscale x 8 x i32> @llvm.vp.sdiv.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
817  ret <vscale x 8 x i32> %v
818}
819
820declare <vscale x 16 x i32> @llvm.vp.sdiv.nxv16i32(<vscale x 16 x i32>, <vscale x 16 x i32>, <vscale x 16 x i1>, i32)
821
822define <vscale x 16 x i32> @vdiv_vv_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
823; CHECK-LABEL: vdiv_vv_nxv16i32:
824; CHECK:       # %bb.0:
825; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
826; CHECK-NEXT:    vdiv.vv v8, v8, v16, v0.t
827; CHECK-NEXT:    ret
828  %v = call <vscale x 16 x i32> @llvm.vp.sdiv.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)
829  ret <vscale x 16 x i32> %v
830}
831
832define <vscale x 16 x i32> @vdiv_vv_nxv16i32_unmasked(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, i32 zeroext %evl) {
833; CHECK-LABEL: vdiv_vv_nxv16i32_unmasked:
834; CHECK:       # %bb.0:
835; CHECK-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
836; CHECK-NEXT:    vdiv.vv v8, v8, v16
837; CHECK-NEXT:    ret
838  %v = call <vscale x 16 x i32> @llvm.vp.sdiv.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> splat (i1 true), i32 %evl)
839  ret <vscale x 16 x i32> %v
840}
841
842define <vscale x 16 x i32> @vdiv_vx_nxv16i32(<vscale x 16 x i32> %va, i32 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
843; CHECK-LABEL: vdiv_vx_nxv16i32:
844; CHECK:       # %bb.0:
845; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
846; CHECK-NEXT:    vdiv.vx v8, v8, a0, v0.t
847; CHECK-NEXT:    ret
848  %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
849  %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
850  %v = call <vscale x 16 x i32> @llvm.vp.sdiv.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
851  ret <vscale x 16 x i32> %v
852}
853
854define <vscale x 16 x i32> @vdiv_vx_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 %b, i32 zeroext %evl) {
855; CHECK-LABEL: vdiv_vx_nxv16i32_unmasked:
856; CHECK:       # %bb.0:
857; CHECK-NEXT:    vsetvli zero, a1, e32, m8, ta, ma
858; CHECK-NEXT:    vdiv.vx v8, v8, a0
859; CHECK-NEXT:    ret
860  %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
861  %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
862  %v = call <vscale x 16 x i32> @llvm.vp.sdiv.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> splat (i1 true), i32 %evl)
863  ret <vscale x 16 x i32> %v
864}
865
866declare <vscale x 1 x i64> @llvm.vp.sdiv.nxv1i64(<vscale x 1 x i64>, <vscale x 1 x i64>, <vscale x 1 x i1>, i32)
867
868define <vscale x 1 x i64> @vdiv_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
869; CHECK-LABEL: vdiv_vv_nxv1i64:
870; CHECK:       # %bb.0:
871; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
872; CHECK-NEXT:    vdiv.vv v8, v8, v9, v0.t
873; CHECK-NEXT:    ret
874  %v = call <vscale x 1 x i64> @llvm.vp.sdiv.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)
875  ret <vscale x 1 x i64> %v
876}
877
878define <vscale x 1 x i64> @vdiv_vv_nxv1i64_unmasked(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, i32 zeroext %evl) {
879; CHECK-LABEL: vdiv_vv_nxv1i64_unmasked:
880; CHECK:       # %bb.0:
881; CHECK-NEXT:    vsetvli zero, a0, e64, m1, ta, ma
882; CHECK-NEXT:    vdiv.vv v8, v8, v9
883; CHECK-NEXT:    ret
884  %v = call <vscale x 1 x i64> @llvm.vp.sdiv.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> splat (i1 true), i32 %evl)
885  ret <vscale x 1 x i64> %v
886}
887
888define <vscale x 1 x i64> @vdiv_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
889; RV32-LABEL: vdiv_vx_nxv1i64:
890; RV32:       # %bb.0:
891; RV32-NEXT:    addi sp, sp, -16
892; RV32-NEXT:    .cfi_def_cfa_offset 16
893; RV32-NEXT:    sw a0, 8(sp)
894; RV32-NEXT:    sw a1, 12(sp)
895; RV32-NEXT:    addi a0, sp, 8
896; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
897; RV32-NEXT:    vlse64.v v9, (a0), zero
898; RV32-NEXT:    vdiv.vv v8, v8, v9, v0.t
899; RV32-NEXT:    addi sp, sp, 16
900; RV32-NEXT:    .cfi_def_cfa_offset 0
901; RV32-NEXT:    ret
902;
903; RV64-LABEL: vdiv_vx_nxv1i64:
904; RV64:       # %bb.0:
905; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
906; RV64-NEXT:    vdiv.vx v8, v8, a0, v0.t
907; RV64-NEXT:    ret
908  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
909  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
910  %v = call <vscale x 1 x i64> @llvm.vp.sdiv.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
911  ret <vscale x 1 x i64> %v
912}
913
914define <vscale x 1 x i64> @vdiv_vx_nxv1i64_unmasked(<vscale x 1 x i64> %va, i64 %b, i32 zeroext %evl) {
915; RV32-LABEL: vdiv_vx_nxv1i64_unmasked:
916; RV32:       # %bb.0:
917; RV32-NEXT:    addi sp, sp, -16
918; RV32-NEXT:    .cfi_def_cfa_offset 16
919; RV32-NEXT:    sw a0, 8(sp)
920; RV32-NEXT:    sw a1, 12(sp)
921; RV32-NEXT:    addi a0, sp, 8
922; RV32-NEXT:    vsetvli zero, a2, e64, m1, ta, ma
923; RV32-NEXT:    vlse64.v v9, (a0), zero
924; RV32-NEXT:    vdiv.vv v8, v8, v9
925; RV32-NEXT:    addi sp, sp, 16
926; RV32-NEXT:    .cfi_def_cfa_offset 0
927; RV32-NEXT:    ret
928;
929; RV64-LABEL: vdiv_vx_nxv1i64_unmasked:
930; RV64:       # %bb.0:
931; RV64-NEXT:    vsetvli zero, a1, e64, m1, ta, ma
932; RV64-NEXT:    vdiv.vx v8, v8, a0
933; RV64-NEXT:    ret
934  %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
935  %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
936  %v = call <vscale x 1 x i64> @llvm.vp.sdiv.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> splat (i1 true), i32 %evl)
937  ret <vscale x 1 x i64> %v
938}
939
940declare <vscale x 2 x i64> @llvm.vp.sdiv.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i1>, i32)
941
942define <vscale x 2 x i64> @vdiv_vv_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
943; CHECK-LABEL: vdiv_vv_nxv2i64:
944; CHECK:       # %bb.0:
945; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
946; CHECK-NEXT:    vdiv.vv v8, v8, v10, v0.t
947; CHECK-NEXT:    ret
948  %v = call <vscale x 2 x i64> @llvm.vp.sdiv.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)
949  ret <vscale x 2 x i64> %v
950}
951
952define <vscale x 2 x i64> @vdiv_vv_nxv2i64_unmasked(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, i32 zeroext %evl) {
953; CHECK-LABEL: vdiv_vv_nxv2i64_unmasked:
954; CHECK:       # %bb.0:
955; CHECK-NEXT:    vsetvli zero, a0, e64, m2, ta, ma
956; CHECK-NEXT:    vdiv.vv v8, v8, v10
957; CHECK-NEXT:    ret
958  %v = call <vscale x 2 x i64> @llvm.vp.sdiv.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> splat (i1 true), i32 %evl)
959  ret <vscale x 2 x i64> %v
960}
961
962define <vscale x 2 x i64> @vdiv_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
963; RV32-LABEL: vdiv_vx_nxv2i64:
964; RV32:       # %bb.0:
965; RV32-NEXT:    addi sp, sp, -16
966; RV32-NEXT:    .cfi_def_cfa_offset 16
967; RV32-NEXT:    sw a0, 8(sp)
968; RV32-NEXT:    sw a1, 12(sp)
969; RV32-NEXT:    addi a0, sp, 8
970; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
971; RV32-NEXT:    vlse64.v v10, (a0), zero
972; RV32-NEXT:    vdiv.vv v8, v8, v10, v0.t
973; RV32-NEXT:    addi sp, sp, 16
974; RV32-NEXT:    .cfi_def_cfa_offset 0
975; RV32-NEXT:    ret
976;
977; RV64-LABEL: vdiv_vx_nxv2i64:
978; RV64:       # %bb.0:
979; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
980; RV64-NEXT:    vdiv.vx v8, v8, a0, v0.t
981; RV64-NEXT:    ret
982  %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
983  %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
984  %v = call <vscale x 2 x i64> @llvm.vp.sdiv.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
985  ret <vscale x 2 x i64> %v
986}
987
988define <vscale x 2 x i64> @vdiv_vx_nxv2i64_unmasked(<vscale x 2 x i64> %va, i64 %b, i32 zeroext %evl) {
989; RV32-LABEL: vdiv_vx_nxv2i64_unmasked:
990; RV32:       # %bb.0:
991; RV32-NEXT:    addi sp, sp, -16
992; RV32-NEXT:    .cfi_def_cfa_offset 16
993; RV32-NEXT:    sw a0, 8(sp)
994; RV32-NEXT:    sw a1, 12(sp)
995; RV32-NEXT:    addi a0, sp, 8
996; RV32-NEXT:    vsetvli zero, a2, e64, m2, ta, ma
997; RV32-NEXT:    vlse64.v v10, (a0), zero
998; RV32-NEXT:    vdiv.vv v8, v8, v10
999; RV32-NEXT:    addi sp, sp, 16
1000; RV32-NEXT:    .cfi_def_cfa_offset 0
1001; RV32-NEXT:    ret
1002;
1003; RV64-LABEL: vdiv_vx_nxv2i64_unmasked:
1004; RV64:       # %bb.0:
1005; RV64-NEXT:    vsetvli zero, a1, e64, m2, ta, ma
1006; RV64-NEXT:    vdiv.vx v8, v8, a0
1007; RV64-NEXT:    ret
1008  %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1009  %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1010  %v = call <vscale x 2 x i64> @llvm.vp.sdiv.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> splat (i1 true), i32 %evl)
1011  ret <vscale x 2 x i64> %v
1012}
1013
1014declare <vscale x 4 x i64> @llvm.vp.sdiv.nxv4i64(<vscale x 4 x i64>, <vscale x 4 x i64>, <vscale x 4 x i1>, i32)
1015
1016define <vscale x 4 x i64> @vdiv_vv_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1017; CHECK-LABEL: vdiv_vv_nxv4i64:
1018; CHECK:       # %bb.0:
1019; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1020; CHECK-NEXT:    vdiv.vv v8, v8, v12, v0.t
1021; CHECK-NEXT:    ret
1022  %v = call <vscale x 4 x i64> @llvm.vp.sdiv.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)
1023  ret <vscale x 4 x i64> %v
1024}
1025
1026define <vscale x 4 x i64> @vdiv_vv_nxv4i64_unmasked(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, i32 zeroext %evl) {
1027; CHECK-LABEL: vdiv_vv_nxv4i64_unmasked:
1028; CHECK:       # %bb.0:
1029; CHECK-NEXT:    vsetvli zero, a0, e64, m4, ta, ma
1030; CHECK-NEXT:    vdiv.vv v8, v8, v12
1031; CHECK-NEXT:    ret
1032  %v = call <vscale x 4 x i64> @llvm.vp.sdiv.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> splat (i1 true), i32 %evl)
1033  ret <vscale x 4 x i64> %v
1034}
1035
1036define <vscale x 4 x i64> @vdiv_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1037; RV32-LABEL: vdiv_vx_nxv4i64:
1038; RV32:       # %bb.0:
1039; RV32-NEXT:    addi sp, sp, -16
1040; RV32-NEXT:    .cfi_def_cfa_offset 16
1041; RV32-NEXT:    sw a0, 8(sp)
1042; RV32-NEXT:    sw a1, 12(sp)
1043; RV32-NEXT:    addi a0, sp, 8
1044; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1045; RV32-NEXT:    vlse64.v v12, (a0), zero
1046; RV32-NEXT:    vdiv.vv v8, v8, v12, v0.t
1047; RV32-NEXT:    addi sp, sp, 16
1048; RV32-NEXT:    .cfi_def_cfa_offset 0
1049; RV32-NEXT:    ret
1050;
1051; RV64-LABEL: vdiv_vx_nxv4i64:
1052; RV64:       # %bb.0:
1053; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1054; RV64-NEXT:    vdiv.vx v8, v8, a0, v0.t
1055; RV64-NEXT:    ret
1056  %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1057  %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1058  %v = call <vscale x 4 x i64> @llvm.vp.sdiv.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1059  ret <vscale x 4 x i64> %v
1060}
1061
1062define <vscale x 4 x i64> @vdiv_vx_nxv4i64_unmasked(<vscale x 4 x i64> %va, i64 %b, i32 zeroext %evl) {
1063; RV32-LABEL: vdiv_vx_nxv4i64_unmasked:
1064; RV32:       # %bb.0:
1065; RV32-NEXT:    addi sp, sp, -16
1066; RV32-NEXT:    .cfi_def_cfa_offset 16
1067; RV32-NEXT:    sw a0, 8(sp)
1068; RV32-NEXT:    sw a1, 12(sp)
1069; RV32-NEXT:    addi a0, sp, 8
1070; RV32-NEXT:    vsetvli zero, a2, e64, m4, ta, ma
1071; RV32-NEXT:    vlse64.v v12, (a0), zero
1072; RV32-NEXT:    vdiv.vv v8, v8, v12
1073; RV32-NEXT:    addi sp, sp, 16
1074; RV32-NEXT:    .cfi_def_cfa_offset 0
1075; RV32-NEXT:    ret
1076;
1077; RV64-LABEL: vdiv_vx_nxv4i64_unmasked:
1078; RV64:       # %bb.0:
1079; RV64-NEXT:    vsetvli zero, a1, e64, m4, ta, ma
1080; RV64-NEXT:    vdiv.vx v8, v8, a0
1081; RV64-NEXT:    ret
1082  %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1083  %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1084  %v = call <vscale x 4 x i64> @llvm.vp.sdiv.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> splat (i1 true), i32 %evl)
1085  ret <vscale x 4 x i64> %v
1086}
1087
1088declare <vscale x 8 x i64> @llvm.vp.sdiv.nxv8i64(<vscale x 8 x i64>, <vscale x 8 x i64>, <vscale x 8 x i1>, i32)
1089
1090define <vscale x 8 x i64> @vdiv_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1091; CHECK-LABEL: vdiv_vv_nxv8i64:
1092; CHECK:       # %bb.0:
1093; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1094; CHECK-NEXT:    vdiv.vv v8, v8, v16, v0.t
1095; CHECK-NEXT:    ret
1096  %v = call <vscale x 8 x i64> @llvm.vp.sdiv.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)
1097  ret <vscale x 8 x i64> %v
1098}
1099
1100define <vscale x 8 x i64> @vdiv_vv_nxv8i64_unmasked(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, i32 zeroext %evl) {
1101; CHECK-LABEL: vdiv_vv_nxv8i64_unmasked:
1102; CHECK:       # %bb.0:
1103; CHECK-NEXT:    vsetvli zero, a0, e64, m8, ta, ma
1104; CHECK-NEXT:    vdiv.vv v8, v8, v16
1105; CHECK-NEXT:    ret
1106  %v = call <vscale x 8 x i64> @llvm.vp.sdiv.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> splat (i1 true), i32 %evl)
1107  ret <vscale x 8 x i64> %v
1108}
1109
1110define <vscale x 8 x i64> @vdiv_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1111; RV32-LABEL: vdiv_vx_nxv8i64:
1112; RV32:       # %bb.0:
1113; RV32-NEXT:    addi sp, sp, -16
1114; RV32-NEXT:    .cfi_def_cfa_offset 16
1115; RV32-NEXT:    sw a0, 8(sp)
1116; RV32-NEXT:    sw a1, 12(sp)
1117; RV32-NEXT:    addi a0, sp, 8
1118; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1119; RV32-NEXT:    vlse64.v v16, (a0), zero
1120; RV32-NEXT:    vdiv.vv v8, v8, v16, v0.t
1121; RV32-NEXT:    addi sp, sp, 16
1122; RV32-NEXT:    .cfi_def_cfa_offset 0
1123; RV32-NEXT:    ret
1124;
1125; RV64-LABEL: vdiv_vx_nxv8i64:
1126; RV64:       # %bb.0:
1127; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1128; RV64-NEXT:    vdiv.vx v8, v8, a0, v0.t
1129; RV64-NEXT:    ret
1130  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1131  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1132  %v = call <vscale x 8 x i64> @llvm.vp.sdiv.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1133  ret <vscale x 8 x i64> %v
1134}
1135
1136define <vscale x 8 x i64> @vdiv_vx_nxv8i64_unmasked(<vscale x 8 x i64> %va, i64 %b, i32 zeroext %evl) {
1137; RV32-LABEL: vdiv_vx_nxv8i64_unmasked:
1138; RV32:       # %bb.0:
1139; RV32-NEXT:    addi sp, sp, -16
1140; RV32-NEXT:    .cfi_def_cfa_offset 16
1141; RV32-NEXT:    sw a0, 8(sp)
1142; RV32-NEXT:    sw a1, 12(sp)
1143; RV32-NEXT:    addi a0, sp, 8
1144; RV32-NEXT:    vsetvli zero, a2, e64, m8, ta, ma
1145; RV32-NEXT:    vlse64.v v16, (a0), zero
1146; RV32-NEXT:    vdiv.vv v8, v8, v16
1147; RV32-NEXT:    addi sp, sp, 16
1148; RV32-NEXT:    .cfi_def_cfa_offset 0
1149; RV32-NEXT:    ret
1150;
1151; RV64-LABEL: vdiv_vx_nxv8i64_unmasked:
1152; RV64:       # %bb.0:
1153; RV64-NEXT:    vsetvli zero, a1, e64, m8, ta, ma
1154; RV64-NEXT:    vdiv.vx v8, v8, a0
1155; RV64-NEXT:    ret
1156  %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1157  %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1158  %v = call <vscale x 8 x i64> @llvm.vp.sdiv.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> splat (i1 true), i32 %evl)
1159  ret <vscale x 8 x i64> %v
1160}
1161