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 <vscale x 8 x i7> @llvm.vp.udiv.nxv8i7(<vscale x 8 x i7>, <vscale x 8 x i7>, <vscale x 8 x i1>, i32)
9 define <vscale x 8 x i7> @vdivu_vx_nxv8i7(<vscale x 8 x i7> %a, i7 signext %b, <vscale x 8 x i1> %mask, i32 zeroext %evl) {
10 ; CHECK-LABEL: vdivu_vx_nxv8i7:
12 ; CHECK-NEXT: li a2, 127
13 ; CHECK-NEXT: vsetvli a3, zero, e8, m1, ta, ma
14 ; CHECK-NEXT: vand.vx v8, v8, a2
15 ; CHECK-NEXT: vmv.v.x v9, a0
16 ; CHECK-NEXT: vand.vx v9, v9, a2
17 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
18 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
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.udiv.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
26 declare <vscale x 1 x i8> @llvm.vp.udiv.nxv1i8(<vscale x 1 x i8>, <vscale x 1 x i8>, <vscale x 1 x i1>, i32)
28 define <vscale x 1 x i8> @vdivu_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: vdivu_vv_nxv1i8:
31 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
32 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
34 %v = call <vscale x 1 x i8> @llvm.vp.udiv.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
38 define <vscale x 1 x i8> @vdivu_vv_nxv1i8_unmasked(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, i32 zeroext %evl) {
39 ; CHECK-LABEL: vdivu_vv_nxv1i8_unmasked:
41 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
42 ; CHECK-NEXT: vdivu.vv v8, v8, v9
44 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
45 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
46 %v = call <vscale x 1 x i8> @llvm.vp.udiv.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %b, <vscale x 1 x i1> %m, i32 %evl)
47 ret <vscale x 1 x i8> %v
50 define <vscale x 1 x i8> @vdivu_vx_nxv1i8(<vscale x 1 x i8> %va, i8 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
51 ; CHECK-LABEL: vdivu_vx_nxv1i8:
53 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
54 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
56 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
57 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
58 %v = call <vscale x 1 x i8> @llvm.vp.udiv.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
59 ret <vscale x 1 x i8> %v
62 define <vscale x 1 x i8> @vdivu_vx_nxv1i8_unmasked(<vscale x 1 x i8> %va, i8 %b, i32 zeroext %evl) {
63 ; CHECK-LABEL: vdivu_vx_nxv1i8_unmasked:
65 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
66 ; CHECK-NEXT: vdivu.vx v8, v8, a0
68 %elt.head = insertelement <vscale x 1 x i8> poison, i8 %b, i32 0
69 %vb = shufflevector <vscale x 1 x i8> %elt.head, <vscale x 1 x i8> poison, <vscale x 1 x i32> zeroinitializer
70 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
71 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
72 %v = call <vscale x 1 x i8> @llvm.vp.udiv.nxv1i8(<vscale x 1 x i8> %va, <vscale x 1 x i8> %vb, <vscale x 1 x i1> %m, i32 %evl)
73 ret <vscale x 1 x i8> %v
76 declare <vscale x 2 x i8> @llvm.vp.udiv.nxv2i8(<vscale x 2 x i8>, <vscale x 2 x i8>, <vscale x 2 x i1>, i32)
78 define <vscale x 2 x i8> @vdivu_vv_nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
79 ; CHECK-LABEL: vdivu_vv_nxv2i8:
81 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
82 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
84 %v = call <vscale x 2 x i8> @llvm.vp.udiv.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)
85 ret <vscale x 2 x i8> %v
88 define <vscale x 2 x i8> @vdivu_vv_nxv2i8_unmasked(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, i32 zeroext %evl) {
89 ; CHECK-LABEL: vdivu_vv_nxv2i8_unmasked:
91 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
92 ; CHECK-NEXT: vdivu.vv v8, v8, v9
94 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
95 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
96 %v = call <vscale x 2 x i8> @llvm.vp.udiv.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %b, <vscale x 2 x i1> %m, i32 %evl)
97 ret <vscale x 2 x i8> %v
100 define <vscale x 2 x i8> @vdivu_vx_nxv2i8(<vscale x 2 x i8> %va, i8 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
101 ; CHECK-LABEL: vdivu_vx_nxv2i8:
103 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
104 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
106 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
107 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
108 %v = call <vscale x 2 x i8> @llvm.vp.udiv.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
109 ret <vscale x 2 x i8> %v
112 define <vscale x 2 x i8> @vdivu_vx_nxv2i8_unmasked(<vscale x 2 x i8> %va, i8 %b, i32 zeroext %evl) {
113 ; CHECK-LABEL: vdivu_vx_nxv2i8_unmasked:
115 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
116 ; CHECK-NEXT: vdivu.vx v8, v8, a0
118 %elt.head = insertelement <vscale x 2 x i8> poison, i8 %b, i32 0
119 %vb = shufflevector <vscale x 2 x i8> %elt.head, <vscale x 2 x i8> poison, <vscale x 2 x i32> zeroinitializer
120 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
121 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
122 %v = call <vscale x 2 x i8> @llvm.vp.udiv.nxv2i8(<vscale x 2 x i8> %va, <vscale x 2 x i8> %vb, <vscale x 2 x i1> %m, i32 %evl)
123 ret <vscale x 2 x i8> %v
126 declare <vscale x 3 x i8> @llvm.vp.udiv.nxv3i8(<vscale x 3 x i8>, <vscale x 3 x i8>, <vscale x 3 x i1>, i32)
128 define <vscale x 3 x i8> @vdivu_vv_nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %b, <vscale x 3 x i1> %m, i32 zeroext %evl) {
129 ; CHECK-LABEL: vdivu_vv_nxv3i8:
131 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
132 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
134 %v = call <vscale x 3 x i8> @llvm.vp.udiv.nxv3i8(<vscale x 3 x i8> %va, <vscale x 3 x i8> %b, <vscale x 3 x i1> %m, i32 %evl)
135 ret <vscale x 3 x i8> %v
138 declare <vscale x 4 x i8> @llvm.vp.udiv.nxv4i8(<vscale x 4 x i8>, <vscale x 4 x i8>, <vscale x 4 x i1>, i32)
140 define <vscale x 4 x i8> @vdivu_vv_nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
141 ; CHECK-LABEL: vdivu_vv_nxv4i8:
143 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
144 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
146 %v = call <vscale x 4 x i8> @llvm.vp.udiv.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)
147 ret <vscale x 4 x i8> %v
150 define <vscale x 4 x i8> @vdivu_vv_nxv4i8_unmasked(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, i32 zeroext %evl) {
151 ; CHECK-LABEL: vdivu_vv_nxv4i8_unmasked:
153 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
154 ; CHECK-NEXT: vdivu.vv v8, v8, v9
156 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
157 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
158 %v = call <vscale x 4 x i8> @llvm.vp.udiv.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %b, <vscale x 4 x i1> %m, i32 %evl)
159 ret <vscale x 4 x i8> %v
162 define <vscale x 4 x i8> @vdivu_vx_nxv4i8(<vscale x 4 x i8> %va, i8 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
163 ; CHECK-LABEL: vdivu_vx_nxv4i8:
165 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
166 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
168 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
169 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
170 %v = call <vscale x 4 x i8> @llvm.vp.udiv.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
171 ret <vscale x 4 x i8> %v
174 define <vscale x 4 x i8> @vdivu_vx_nxv4i8_unmasked(<vscale x 4 x i8> %va, i8 %b, i32 zeroext %evl) {
175 ; CHECK-LABEL: vdivu_vx_nxv4i8_unmasked:
177 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
178 ; CHECK-NEXT: vdivu.vx v8, v8, a0
180 %elt.head = insertelement <vscale x 4 x i8> poison, i8 %b, i32 0
181 %vb = shufflevector <vscale x 4 x i8> %elt.head, <vscale x 4 x i8> poison, <vscale x 4 x i32> zeroinitializer
182 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
183 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
184 %v = call <vscale x 4 x i8> @llvm.vp.udiv.nxv4i8(<vscale x 4 x i8> %va, <vscale x 4 x i8> %vb, <vscale x 4 x i1> %m, i32 %evl)
185 ret <vscale x 4 x i8> %v
188 declare <vscale x 8 x i8> @llvm.vp.udiv.nxv8i8(<vscale x 8 x i8>, <vscale x 8 x i8>, <vscale x 8 x i1>, i32)
190 define <vscale x 8 x i8> @vdivu_vv_nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
191 ; CHECK-LABEL: vdivu_vv_nxv8i8:
193 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
194 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
196 %v = call <vscale x 8 x i8> @llvm.vp.udiv.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)
197 ret <vscale x 8 x i8> %v
200 define <vscale x 8 x i8> @vdivu_vv_nxv8i8_unmasked(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, i32 zeroext %evl) {
201 ; CHECK-LABEL: vdivu_vv_nxv8i8_unmasked:
203 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
204 ; CHECK-NEXT: vdivu.vv v8, v8, v9
206 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
207 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
208 %v = call <vscale x 8 x i8> @llvm.vp.udiv.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %b, <vscale x 8 x i1> %m, i32 %evl)
209 ret <vscale x 8 x i8> %v
212 define <vscale x 8 x i8> @vdivu_vx_nxv8i8(<vscale x 8 x i8> %va, i8 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
213 ; CHECK-LABEL: vdivu_vx_nxv8i8:
215 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
216 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
218 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
219 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
220 %v = call <vscale x 8 x i8> @llvm.vp.udiv.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
221 ret <vscale x 8 x i8> %v
224 define <vscale x 8 x i8> @vdivu_vx_nxv8i8_unmasked(<vscale x 8 x i8> %va, i8 %b, i32 zeroext %evl) {
225 ; CHECK-LABEL: vdivu_vx_nxv8i8_unmasked:
227 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
228 ; CHECK-NEXT: vdivu.vx v8, v8, a0
230 %elt.head = insertelement <vscale x 8 x i8> poison, i8 %b, i32 0
231 %vb = shufflevector <vscale x 8 x i8> %elt.head, <vscale x 8 x i8> poison, <vscale x 8 x i32> zeroinitializer
232 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
233 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
234 %v = call <vscale x 8 x i8> @llvm.vp.udiv.nxv8i8(<vscale x 8 x i8> %va, <vscale x 8 x i8> %vb, <vscale x 8 x i1> %m, i32 %evl)
235 ret <vscale x 8 x i8> %v
238 declare <vscale x 16 x i8> @llvm.vp.udiv.nxv16i8(<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i1>, i32)
240 define <vscale x 16 x i8> @vdivu_vv_nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
241 ; CHECK-LABEL: vdivu_vv_nxv16i8:
243 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
244 ; CHECK-NEXT: vdivu.vv v8, v8, v10, v0.t
246 %v = call <vscale x 16 x i8> @llvm.vp.udiv.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)
247 ret <vscale x 16 x i8> %v
250 define <vscale x 16 x i8> @vdivu_vv_nxv16i8_unmasked(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, i32 zeroext %evl) {
251 ; CHECK-LABEL: vdivu_vv_nxv16i8_unmasked:
253 ; CHECK-NEXT: vsetvli zero, a0, e8, m2, ta, ma
254 ; CHECK-NEXT: vdivu.vv v8, v8, v10
256 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
257 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
258 %v = call <vscale x 16 x i8> @llvm.vp.udiv.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %b, <vscale x 16 x i1> %m, i32 %evl)
259 ret <vscale x 16 x i8> %v
262 define <vscale x 16 x i8> @vdivu_vx_nxv16i8(<vscale x 16 x i8> %va, i8 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
263 ; CHECK-LABEL: vdivu_vx_nxv16i8:
265 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
266 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
268 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
269 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
270 %v = call <vscale x 16 x i8> @llvm.vp.udiv.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
271 ret <vscale x 16 x i8> %v
274 define <vscale x 16 x i8> @vdivu_vx_nxv16i8_unmasked(<vscale x 16 x i8> %va, i8 %b, i32 zeroext %evl) {
275 ; CHECK-LABEL: vdivu_vx_nxv16i8_unmasked:
277 ; CHECK-NEXT: vsetvli zero, a1, e8, m2, ta, ma
278 ; CHECK-NEXT: vdivu.vx v8, v8, a0
280 %elt.head = insertelement <vscale x 16 x i8> poison, i8 %b, i32 0
281 %vb = shufflevector <vscale x 16 x i8> %elt.head, <vscale x 16 x i8> poison, <vscale x 16 x i32> zeroinitializer
282 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
283 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
284 %v = call <vscale x 16 x i8> @llvm.vp.udiv.nxv16i8(<vscale x 16 x i8> %va, <vscale x 16 x i8> %vb, <vscale x 16 x i1> %m, i32 %evl)
285 ret <vscale x 16 x i8> %v
288 declare <vscale x 32 x i8> @llvm.vp.udiv.nxv32i8(<vscale x 32 x i8>, <vscale x 32 x i8>, <vscale x 32 x i1>, i32)
290 define <vscale x 32 x i8> @vdivu_vv_nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
291 ; CHECK-LABEL: vdivu_vv_nxv32i8:
293 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
294 ; CHECK-NEXT: vdivu.vv v8, v8, v12, v0.t
296 %v = call <vscale x 32 x i8> @llvm.vp.udiv.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)
297 ret <vscale x 32 x i8> %v
300 define <vscale x 32 x i8> @vdivu_vv_nxv32i8_unmasked(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, i32 zeroext %evl) {
301 ; CHECK-LABEL: vdivu_vv_nxv32i8_unmasked:
303 ; CHECK-NEXT: vsetvli zero, a0, e8, m4, ta, ma
304 ; CHECK-NEXT: vdivu.vv v8, v8, v12
306 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
307 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
308 %v = call <vscale x 32 x i8> @llvm.vp.udiv.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %b, <vscale x 32 x i1> %m, i32 %evl)
309 ret <vscale x 32 x i8> %v
312 define <vscale x 32 x i8> @vdivu_vx_nxv32i8(<vscale x 32 x i8> %va, i8 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
313 ; CHECK-LABEL: vdivu_vx_nxv32i8:
315 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
316 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
318 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
319 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
320 %v = call <vscale x 32 x i8> @llvm.vp.udiv.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
321 ret <vscale x 32 x i8> %v
324 define <vscale x 32 x i8> @vdivu_vx_nxv32i8_unmasked(<vscale x 32 x i8> %va, i8 %b, i32 zeroext %evl) {
325 ; CHECK-LABEL: vdivu_vx_nxv32i8_unmasked:
327 ; CHECK-NEXT: vsetvli zero, a1, e8, m4, ta, ma
328 ; CHECK-NEXT: vdivu.vx v8, v8, a0
330 %elt.head = insertelement <vscale x 32 x i8> poison, i8 %b, i32 0
331 %vb = shufflevector <vscale x 32 x i8> %elt.head, <vscale x 32 x i8> poison, <vscale x 32 x i32> zeroinitializer
332 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
333 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
334 %v = call <vscale x 32 x i8> @llvm.vp.udiv.nxv32i8(<vscale x 32 x i8> %va, <vscale x 32 x i8> %vb, <vscale x 32 x i1> %m, i32 %evl)
335 ret <vscale x 32 x i8> %v
338 declare <vscale x 64 x i8> @llvm.vp.udiv.nxv64i8(<vscale x 64 x i8>, <vscale x 64 x i8>, <vscale x 64 x i1>, i32)
340 define <vscale x 64 x i8> @vdivu_vv_nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
341 ; CHECK-LABEL: vdivu_vv_nxv64i8:
343 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
344 ; CHECK-NEXT: vdivu.vv v8, v8, v16, v0.t
346 %v = call <vscale x 64 x i8> @llvm.vp.udiv.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)
347 ret <vscale x 64 x i8> %v
350 define <vscale x 64 x i8> @vdivu_vv_nxv64i8_unmasked(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, i32 zeroext %evl) {
351 ; CHECK-LABEL: vdivu_vv_nxv64i8_unmasked:
353 ; CHECK-NEXT: vsetvli zero, a0, e8, m8, ta, ma
354 ; CHECK-NEXT: vdivu.vv v8, v8, v16
356 %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
357 %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
358 %v = call <vscale x 64 x i8> @llvm.vp.udiv.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %b, <vscale x 64 x i1> %m, i32 %evl)
359 ret <vscale x 64 x i8> %v
362 define <vscale x 64 x i8> @vdivu_vx_nxv64i8(<vscale x 64 x i8> %va, i8 %b, <vscale x 64 x i1> %m, i32 zeroext %evl) {
363 ; CHECK-LABEL: vdivu_vx_nxv64i8:
365 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
366 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
368 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
369 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
370 %v = call <vscale x 64 x i8> @llvm.vp.udiv.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
371 ret <vscale x 64 x i8> %v
374 define <vscale x 64 x i8> @vdivu_vx_nxv64i8_unmasked(<vscale x 64 x i8> %va, i8 %b, i32 zeroext %evl) {
375 ; CHECK-LABEL: vdivu_vx_nxv64i8_unmasked:
377 ; CHECK-NEXT: vsetvli zero, a1, e8, m8, ta, ma
378 ; CHECK-NEXT: vdivu.vx v8, v8, a0
380 %elt.head = insertelement <vscale x 64 x i8> poison, i8 %b, i32 0
381 %vb = shufflevector <vscale x 64 x i8> %elt.head, <vscale x 64 x i8> poison, <vscale x 64 x i32> zeroinitializer
382 %head = insertelement <vscale x 64 x i1> poison, i1 true, i32 0
383 %m = shufflevector <vscale x 64 x i1> %head, <vscale x 64 x i1> poison, <vscale x 64 x i32> zeroinitializer
384 %v = call <vscale x 64 x i8> @llvm.vp.udiv.nxv64i8(<vscale x 64 x i8> %va, <vscale x 64 x i8> %vb, <vscale x 64 x i1> %m, i32 %evl)
385 ret <vscale x 64 x i8> %v
388 declare <vscale x 1 x i16> @llvm.vp.udiv.nxv1i16(<vscale x 1 x i16>, <vscale x 1 x i16>, <vscale x 1 x i1>, i32)
390 define <vscale x 1 x i16> @vdivu_vv_nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
391 ; CHECK-LABEL: vdivu_vv_nxv1i16:
393 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
394 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
396 %v = call <vscale x 1 x i16> @llvm.vp.udiv.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)
397 ret <vscale x 1 x i16> %v
400 define <vscale x 1 x i16> @vdivu_vv_nxv1i16_unmasked(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, i32 zeroext %evl) {
401 ; CHECK-LABEL: vdivu_vv_nxv1i16_unmasked:
403 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
404 ; CHECK-NEXT: vdivu.vv v8, v8, v9
406 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
407 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
408 %v = call <vscale x 1 x i16> @llvm.vp.udiv.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %b, <vscale x 1 x i1> %m, i32 %evl)
409 ret <vscale x 1 x i16> %v
412 define <vscale x 1 x i16> @vdivu_vx_nxv1i16(<vscale x 1 x i16> %va, i16 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
413 ; CHECK-LABEL: vdivu_vx_nxv1i16:
415 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
416 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
418 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
419 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
420 %v = call <vscale x 1 x i16> @llvm.vp.udiv.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
421 ret <vscale x 1 x i16> %v
424 define <vscale x 1 x i16> @vdivu_vx_nxv1i16_unmasked(<vscale x 1 x i16> %va, i16 %b, i32 zeroext %evl) {
425 ; CHECK-LABEL: vdivu_vx_nxv1i16_unmasked:
427 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
428 ; CHECK-NEXT: vdivu.vx v8, v8, a0
430 %elt.head = insertelement <vscale x 1 x i16> poison, i16 %b, i32 0
431 %vb = shufflevector <vscale x 1 x i16> %elt.head, <vscale x 1 x i16> poison, <vscale x 1 x i32> zeroinitializer
432 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
433 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
434 %v = call <vscale x 1 x i16> @llvm.vp.udiv.nxv1i16(<vscale x 1 x i16> %va, <vscale x 1 x i16> %vb, <vscale x 1 x i1> %m, i32 %evl)
435 ret <vscale x 1 x i16> %v
438 declare <vscale x 2 x i16> @llvm.vp.udiv.nxv2i16(<vscale x 2 x i16>, <vscale x 2 x i16>, <vscale x 2 x i1>, i32)
440 define <vscale x 2 x i16> @vdivu_vv_nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
441 ; CHECK-LABEL: vdivu_vv_nxv2i16:
443 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
444 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
446 %v = call <vscale x 2 x i16> @llvm.vp.udiv.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)
447 ret <vscale x 2 x i16> %v
450 define <vscale x 2 x i16> @vdivu_vv_nxv2i16_unmasked(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, i32 zeroext %evl) {
451 ; CHECK-LABEL: vdivu_vv_nxv2i16_unmasked:
453 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
454 ; CHECK-NEXT: vdivu.vv v8, v8, v9
456 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
457 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
458 %v = call <vscale x 2 x i16> @llvm.vp.udiv.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %b, <vscale x 2 x i1> %m, i32 %evl)
459 ret <vscale x 2 x i16> %v
462 define <vscale x 2 x i16> @vdivu_vx_nxv2i16(<vscale x 2 x i16> %va, i16 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
463 ; CHECK-LABEL: vdivu_vx_nxv2i16:
465 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
466 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
468 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
469 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
470 %v = call <vscale x 2 x i16> @llvm.vp.udiv.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
471 ret <vscale x 2 x i16> %v
474 define <vscale x 2 x i16> @vdivu_vx_nxv2i16_unmasked(<vscale x 2 x i16> %va, i16 %b, i32 zeroext %evl) {
475 ; CHECK-LABEL: vdivu_vx_nxv2i16_unmasked:
477 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
478 ; CHECK-NEXT: vdivu.vx v8, v8, a0
480 %elt.head = insertelement <vscale x 2 x i16> poison, i16 %b, i32 0
481 %vb = shufflevector <vscale x 2 x i16> %elt.head, <vscale x 2 x i16> poison, <vscale x 2 x i32> zeroinitializer
482 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
483 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
484 %v = call <vscale x 2 x i16> @llvm.vp.udiv.nxv2i16(<vscale x 2 x i16> %va, <vscale x 2 x i16> %vb, <vscale x 2 x i1> %m, i32 %evl)
485 ret <vscale x 2 x i16> %v
488 declare <vscale x 4 x i16> @llvm.vp.udiv.nxv4i16(<vscale x 4 x i16>, <vscale x 4 x i16>, <vscale x 4 x i1>, i32)
490 define <vscale x 4 x i16> @vdivu_vv_nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
491 ; CHECK-LABEL: vdivu_vv_nxv4i16:
493 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
494 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
496 %v = call <vscale x 4 x i16> @llvm.vp.udiv.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)
497 ret <vscale x 4 x i16> %v
500 define <vscale x 4 x i16> @vdivu_vv_nxv4i16_unmasked(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, i32 zeroext %evl) {
501 ; CHECK-LABEL: vdivu_vv_nxv4i16_unmasked:
503 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
504 ; CHECK-NEXT: vdivu.vv v8, v8, v9
506 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
507 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
508 %v = call <vscale x 4 x i16> @llvm.vp.udiv.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %b, <vscale x 4 x i1> %m, i32 %evl)
509 ret <vscale x 4 x i16> %v
512 define <vscale x 4 x i16> @vdivu_vx_nxv4i16(<vscale x 4 x i16> %va, i16 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
513 ; CHECK-LABEL: vdivu_vx_nxv4i16:
515 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
516 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
518 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
519 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
520 %v = call <vscale x 4 x i16> @llvm.vp.udiv.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
521 ret <vscale x 4 x i16> %v
524 define <vscale x 4 x i16> @vdivu_vx_nxv4i16_unmasked(<vscale x 4 x i16> %va, i16 %b, i32 zeroext %evl) {
525 ; CHECK-LABEL: vdivu_vx_nxv4i16_unmasked:
527 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
528 ; CHECK-NEXT: vdivu.vx v8, v8, a0
530 %elt.head = insertelement <vscale x 4 x i16> poison, i16 %b, i32 0
531 %vb = shufflevector <vscale x 4 x i16> %elt.head, <vscale x 4 x i16> poison, <vscale x 4 x i32> zeroinitializer
532 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
533 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
534 %v = call <vscale x 4 x i16> @llvm.vp.udiv.nxv4i16(<vscale x 4 x i16> %va, <vscale x 4 x i16> %vb, <vscale x 4 x i1> %m, i32 %evl)
535 ret <vscale x 4 x i16> %v
538 declare <vscale x 8 x i16> @llvm.vp.udiv.nxv8i16(<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i1>, i32)
540 define <vscale x 8 x i16> @vdivu_vv_nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
541 ; CHECK-LABEL: vdivu_vv_nxv8i16:
543 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
544 ; CHECK-NEXT: vdivu.vv v8, v8, v10, v0.t
546 %v = call <vscale x 8 x i16> @llvm.vp.udiv.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)
547 ret <vscale x 8 x i16> %v
550 define <vscale x 8 x i16> @vdivu_vv_nxv8i16_unmasked(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, i32 zeroext %evl) {
551 ; CHECK-LABEL: vdivu_vv_nxv8i16_unmasked:
553 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
554 ; CHECK-NEXT: vdivu.vv v8, v8, v10
556 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
557 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
558 %v = call <vscale x 8 x i16> @llvm.vp.udiv.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %b, <vscale x 8 x i1> %m, i32 %evl)
559 ret <vscale x 8 x i16> %v
562 define <vscale x 8 x i16> @vdivu_vx_nxv8i16(<vscale x 8 x i16> %va, i16 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
563 ; CHECK-LABEL: vdivu_vx_nxv8i16:
565 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
566 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
568 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
569 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
570 %v = call <vscale x 8 x i16> @llvm.vp.udiv.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
571 ret <vscale x 8 x i16> %v
574 define <vscale x 8 x i16> @vdivu_vx_nxv8i16_unmasked(<vscale x 8 x i16> %va, i16 %b, i32 zeroext %evl) {
575 ; CHECK-LABEL: vdivu_vx_nxv8i16_unmasked:
577 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
578 ; CHECK-NEXT: vdivu.vx v8, v8, a0
580 %elt.head = insertelement <vscale x 8 x i16> poison, i16 %b, i32 0
581 %vb = shufflevector <vscale x 8 x i16> %elt.head, <vscale x 8 x i16> poison, <vscale x 8 x i32> zeroinitializer
582 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
583 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
584 %v = call <vscale x 8 x i16> @llvm.vp.udiv.nxv8i16(<vscale x 8 x i16> %va, <vscale x 8 x i16> %vb, <vscale x 8 x i1> %m, i32 %evl)
585 ret <vscale x 8 x i16> %v
588 declare <vscale x 16 x i16> @llvm.vp.udiv.nxv16i16(<vscale x 16 x i16>, <vscale x 16 x i16>, <vscale x 16 x i1>, i32)
590 define <vscale x 16 x i16> @vdivu_vv_nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
591 ; CHECK-LABEL: vdivu_vv_nxv16i16:
593 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
594 ; CHECK-NEXT: vdivu.vv v8, v8, v12, v0.t
596 %v = call <vscale x 16 x i16> @llvm.vp.udiv.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)
597 ret <vscale x 16 x i16> %v
600 define <vscale x 16 x i16> @vdivu_vv_nxv16i16_unmasked(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, i32 zeroext %evl) {
601 ; CHECK-LABEL: vdivu_vv_nxv16i16_unmasked:
603 ; CHECK-NEXT: vsetvli zero, a0, e16, m4, ta, ma
604 ; CHECK-NEXT: vdivu.vv v8, v8, v12
606 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
607 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
608 %v = call <vscale x 16 x i16> @llvm.vp.udiv.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %b, <vscale x 16 x i1> %m, i32 %evl)
609 ret <vscale x 16 x i16> %v
612 define <vscale x 16 x i16> @vdivu_vx_nxv16i16(<vscale x 16 x i16> %va, i16 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
613 ; CHECK-LABEL: vdivu_vx_nxv16i16:
615 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
616 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
618 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
619 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
620 %v = call <vscale x 16 x i16> @llvm.vp.udiv.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
621 ret <vscale x 16 x i16> %v
624 define <vscale x 16 x i16> @vdivu_vx_nxv16i16_unmasked(<vscale x 16 x i16> %va, i16 %b, i32 zeroext %evl) {
625 ; CHECK-LABEL: vdivu_vx_nxv16i16_unmasked:
627 ; CHECK-NEXT: vsetvli zero, a1, e16, m4, ta, ma
628 ; CHECK-NEXT: vdivu.vx v8, v8, a0
630 %elt.head = insertelement <vscale x 16 x i16> poison, i16 %b, i32 0
631 %vb = shufflevector <vscale x 16 x i16> %elt.head, <vscale x 16 x i16> poison, <vscale x 16 x i32> zeroinitializer
632 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
633 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
634 %v = call <vscale x 16 x i16> @llvm.vp.udiv.nxv16i16(<vscale x 16 x i16> %va, <vscale x 16 x i16> %vb, <vscale x 16 x i1> %m, i32 %evl)
635 ret <vscale x 16 x i16> %v
638 declare <vscale x 32 x i16> @llvm.vp.udiv.nxv32i16(<vscale x 32 x i16>, <vscale x 32 x i16>, <vscale x 32 x i1>, i32)
640 define <vscale x 32 x i16> @vdivu_vv_nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
641 ; CHECK-LABEL: vdivu_vv_nxv32i16:
643 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
644 ; CHECK-NEXT: vdivu.vv v8, v8, v16, v0.t
646 %v = call <vscale x 32 x i16> @llvm.vp.udiv.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)
647 ret <vscale x 32 x i16> %v
650 define <vscale x 32 x i16> @vdivu_vv_nxv32i16_unmasked(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, i32 zeroext %evl) {
651 ; CHECK-LABEL: vdivu_vv_nxv32i16_unmasked:
653 ; CHECK-NEXT: vsetvli zero, a0, e16, m8, ta, ma
654 ; CHECK-NEXT: vdivu.vv v8, v8, v16
656 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
657 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
658 %v = call <vscale x 32 x i16> @llvm.vp.udiv.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %b, <vscale x 32 x i1> %m, i32 %evl)
659 ret <vscale x 32 x i16> %v
662 define <vscale x 32 x i16> @vdivu_vx_nxv32i16(<vscale x 32 x i16> %va, i16 %b, <vscale x 32 x i1> %m, i32 zeroext %evl) {
663 ; CHECK-LABEL: vdivu_vx_nxv32i16:
665 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
666 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
668 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
669 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
670 %v = call <vscale x 32 x i16> @llvm.vp.udiv.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
671 ret <vscale x 32 x i16> %v
674 define <vscale x 32 x i16> @vdivu_vx_nxv32i16_unmasked(<vscale x 32 x i16> %va, i16 %b, i32 zeroext %evl) {
675 ; CHECK-LABEL: vdivu_vx_nxv32i16_unmasked:
677 ; CHECK-NEXT: vsetvli zero, a1, e16, m8, ta, ma
678 ; CHECK-NEXT: vdivu.vx v8, v8, a0
680 %elt.head = insertelement <vscale x 32 x i16> poison, i16 %b, i32 0
681 %vb = shufflevector <vscale x 32 x i16> %elt.head, <vscale x 32 x i16> poison, <vscale x 32 x i32> zeroinitializer
682 %head = insertelement <vscale x 32 x i1> poison, i1 true, i32 0
683 %m = shufflevector <vscale x 32 x i1> %head, <vscale x 32 x i1> poison, <vscale x 32 x i32> zeroinitializer
684 %v = call <vscale x 32 x i16> @llvm.vp.udiv.nxv32i16(<vscale x 32 x i16> %va, <vscale x 32 x i16> %vb, <vscale x 32 x i1> %m, i32 %evl)
685 ret <vscale x 32 x i16> %v
688 declare <vscale x 1 x i32> @llvm.vp.udiv.nxv1i32(<vscale x 1 x i32>, <vscale x 1 x i32>, <vscale x 1 x i1>, i32)
690 define <vscale x 1 x i32> @vdivu_vv_nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
691 ; CHECK-LABEL: vdivu_vv_nxv1i32:
693 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
694 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
696 %v = call <vscale x 1 x i32> @llvm.vp.udiv.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)
697 ret <vscale x 1 x i32> %v
700 define <vscale x 1 x i32> @vdivu_vv_nxv1i32_unmasked(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, i32 zeroext %evl) {
701 ; CHECK-LABEL: vdivu_vv_nxv1i32_unmasked:
703 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
704 ; CHECK-NEXT: vdivu.vv v8, v8, v9
706 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
707 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
708 %v = call <vscale x 1 x i32> @llvm.vp.udiv.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %b, <vscale x 1 x i1> %m, i32 %evl)
709 ret <vscale x 1 x i32> %v
712 define <vscale x 1 x i32> @vdivu_vx_nxv1i32(<vscale x 1 x i32> %va, i32 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
713 ; CHECK-LABEL: vdivu_vx_nxv1i32:
715 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
716 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
718 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
719 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
720 %v = call <vscale x 1 x i32> @llvm.vp.udiv.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
721 ret <vscale x 1 x i32> %v
724 define <vscale x 1 x i32> @vdivu_vx_nxv1i32_unmasked(<vscale x 1 x i32> %va, i32 %b, i32 zeroext %evl) {
725 ; CHECK-LABEL: vdivu_vx_nxv1i32_unmasked:
727 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
728 ; CHECK-NEXT: vdivu.vx v8, v8, a0
730 %elt.head = insertelement <vscale x 1 x i32> poison, i32 %b, i32 0
731 %vb = shufflevector <vscale x 1 x i32> %elt.head, <vscale x 1 x i32> poison, <vscale x 1 x i32> zeroinitializer
732 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
733 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
734 %v = call <vscale x 1 x i32> @llvm.vp.udiv.nxv1i32(<vscale x 1 x i32> %va, <vscale x 1 x i32> %vb, <vscale x 1 x i1> %m, i32 %evl)
735 ret <vscale x 1 x i32> %v
738 declare <vscale x 2 x i32> @llvm.vp.udiv.nxv2i32(<vscale x 2 x i32>, <vscale x 2 x i32>, <vscale x 2 x i1>, i32)
740 define <vscale x 2 x i32> @vdivu_vv_nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
741 ; CHECK-LABEL: vdivu_vv_nxv2i32:
743 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
744 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
746 %v = call <vscale x 2 x i32> @llvm.vp.udiv.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)
747 ret <vscale x 2 x i32> %v
750 define <vscale x 2 x i32> @vdivu_vv_nxv2i32_unmasked(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, i32 zeroext %evl) {
751 ; CHECK-LABEL: vdivu_vv_nxv2i32_unmasked:
753 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
754 ; CHECK-NEXT: vdivu.vv v8, v8, v9
756 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
757 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
758 %v = call <vscale x 2 x i32> @llvm.vp.udiv.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %b, <vscale x 2 x i1> %m, i32 %evl)
759 ret <vscale x 2 x i32> %v
762 define <vscale x 2 x i32> @vdivu_vx_nxv2i32(<vscale x 2 x i32> %va, i32 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
763 ; CHECK-LABEL: vdivu_vx_nxv2i32:
765 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
766 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
768 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
769 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
770 %v = call <vscale x 2 x i32> @llvm.vp.udiv.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
771 ret <vscale x 2 x i32> %v
774 define <vscale x 2 x i32> @vdivu_vx_nxv2i32_unmasked(<vscale x 2 x i32> %va, i32 %b, i32 zeroext %evl) {
775 ; CHECK-LABEL: vdivu_vx_nxv2i32_unmasked:
777 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
778 ; CHECK-NEXT: vdivu.vx v8, v8, a0
780 %elt.head = insertelement <vscale x 2 x i32> poison, i32 %b, i32 0
781 %vb = shufflevector <vscale x 2 x i32> %elt.head, <vscale x 2 x i32> poison, <vscale x 2 x i32> zeroinitializer
782 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
783 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
784 %v = call <vscale x 2 x i32> @llvm.vp.udiv.nxv2i32(<vscale x 2 x i32> %va, <vscale x 2 x i32> %vb, <vscale x 2 x i1> %m, i32 %evl)
785 ret <vscale x 2 x i32> %v
788 declare <vscale x 4 x i32> @llvm.vp.udiv.nxv4i32(<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i1>, i32)
790 define <vscale x 4 x i32> @vdivu_vv_nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
791 ; CHECK-LABEL: vdivu_vv_nxv4i32:
793 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
794 ; CHECK-NEXT: vdivu.vv v8, v8, v10, v0.t
796 %v = call <vscale x 4 x i32> @llvm.vp.udiv.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)
797 ret <vscale x 4 x i32> %v
800 define <vscale x 4 x i32> @vdivu_vv_nxv4i32_unmasked(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, i32 zeroext %evl) {
801 ; CHECK-LABEL: vdivu_vv_nxv4i32_unmasked:
803 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
804 ; CHECK-NEXT: vdivu.vv v8, v8, v10
806 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
807 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
808 %v = call <vscale x 4 x i32> @llvm.vp.udiv.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %b, <vscale x 4 x i1> %m, i32 %evl)
809 ret <vscale x 4 x i32> %v
812 define <vscale x 4 x i32> @vdivu_vx_nxv4i32(<vscale x 4 x i32> %va, i32 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
813 ; CHECK-LABEL: vdivu_vx_nxv4i32:
815 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
816 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
818 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
819 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
820 %v = call <vscale x 4 x i32> @llvm.vp.udiv.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
821 ret <vscale x 4 x i32> %v
824 define <vscale x 4 x i32> @vdivu_vx_nxv4i32_unmasked(<vscale x 4 x i32> %va, i32 %b, i32 zeroext %evl) {
825 ; CHECK-LABEL: vdivu_vx_nxv4i32_unmasked:
827 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
828 ; CHECK-NEXT: vdivu.vx v8, v8, a0
830 %elt.head = insertelement <vscale x 4 x i32> poison, i32 %b, i32 0
831 %vb = shufflevector <vscale x 4 x i32> %elt.head, <vscale x 4 x i32> poison, <vscale x 4 x i32> zeroinitializer
832 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
833 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
834 %v = call <vscale x 4 x i32> @llvm.vp.udiv.nxv4i32(<vscale x 4 x i32> %va, <vscale x 4 x i32> %vb, <vscale x 4 x i1> %m, i32 %evl)
835 ret <vscale x 4 x i32> %v
838 declare <vscale x 8 x i32> @llvm.vp.udiv.nxv8i32(<vscale x 8 x i32>, <vscale x 8 x i32>, <vscale x 8 x i1>, i32)
840 define <vscale x 8 x i32> @vdivu_vv_nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
841 ; CHECK-LABEL: vdivu_vv_nxv8i32:
843 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
844 ; CHECK-NEXT: vdivu.vv v8, v8, v12, v0.t
846 %v = call <vscale x 8 x i32> @llvm.vp.udiv.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)
847 ret <vscale x 8 x i32> %v
850 define <vscale x 8 x i32> @vdivu_vv_nxv8i32_unmasked(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, i32 zeroext %evl) {
851 ; CHECK-LABEL: vdivu_vv_nxv8i32_unmasked:
853 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
854 ; CHECK-NEXT: vdivu.vv v8, v8, v12
856 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
857 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
858 %v = call <vscale x 8 x i32> @llvm.vp.udiv.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %b, <vscale x 8 x i1> %m, i32 %evl)
859 ret <vscale x 8 x i32> %v
862 define <vscale x 8 x i32> @vdivu_vx_nxv8i32(<vscale x 8 x i32> %va, i32 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
863 ; CHECK-LABEL: vdivu_vx_nxv8i32:
865 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
866 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
868 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
869 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
870 %v = call <vscale x 8 x i32> @llvm.vp.udiv.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
871 ret <vscale x 8 x i32> %v
874 define <vscale x 8 x i32> @vdivu_vx_nxv8i32_unmasked(<vscale x 8 x i32> %va, i32 %b, i32 zeroext %evl) {
875 ; CHECK-LABEL: vdivu_vx_nxv8i32_unmasked:
877 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
878 ; CHECK-NEXT: vdivu.vx v8, v8, a0
880 %elt.head = insertelement <vscale x 8 x i32> poison, i32 %b, i32 0
881 %vb = shufflevector <vscale x 8 x i32> %elt.head, <vscale x 8 x i32> poison, <vscale x 8 x i32> zeroinitializer
882 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
883 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
884 %v = call <vscale x 8 x i32> @llvm.vp.udiv.nxv8i32(<vscale x 8 x i32> %va, <vscale x 8 x i32> %vb, <vscale x 8 x i1> %m, i32 %evl)
885 ret <vscale x 8 x i32> %v
888 declare <vscale x 16 x i32> @llvm.vp.udiv.nxv16i32(<vscale x 16 x i32>, <vscale x 16 x i32>, <vscale x 16 x i1>, i32)
890 define <vscale x 16 x i32> @vdivu_vv_nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
891 ; CHECK-LABEL: vdivu_vv_nxv16i32:
893 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
894 ; CHECK-NEXT: vdivu.vv v8, v8, v16, v0.t
896 %v = call <vscale x 16 x i32> @llvm.vp.udiv.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)
897 ret <vscale x 16 x i32> %v
900 define <vscale x 16 x i32> @vdivu_vv_nxv16i32_unmasked(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, i32 zeroext %evl) {
901 ; CHECK-LABEL: vdivu_vv_nxv16i32_unmasked:
903 ; CHECK-NEXT: vsetvli zero, a0, e32, m8, ta, ma
904 ; CHECK-NEXT: vdivu.vv v8, v8, v16
906 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
907 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
908 %v = call <vscale x 16 x i32> @llvm.vp.udiv.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %b, <vscale x 16 x i1> %m, i32 %evl)
909 ret <vscale x 16 x i32> %v
912 define <vscale x 16 x i32> @vdivu_vx_nxv16i32(<vscale x 16 x i32> %va, i32 %b, <vscale x 16 x i1> %m, i32 zeroext %evl) {
913 ; CHECK-LABEL: vdivu_vx_nxv16i32:
915 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
916 ; CHECK-NEXT: vdivu.vx v8, v8, a0, v0.t
918 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
919 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
920 %v = call <vscale x 16 x i32> @llvm.vp.udiv.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
921 ret <vscale x 16 x i32> %v
924 define <vscale x 16 x i32> @vdivu_vx_nxv16i32_unmasked(<vscale x 16 x i32> %va, i32 %b, i32 zeroext %evl) {
925 ; CHECK-LABEL: vdivu_vx_nxv16i32_unmasked:
927 ; CHECK-NEXT: vsetvli zero, a1, e32, m8, ta, ma
928 ; CHECK-NEXT: vdivu.vx v8, v8, a0
930 %elt.head = insertelement <vscale x 16 x i32> poison, i32 %b, i32 0
931 %vb = shufflevector <vscale x 16 x i32> %elt.head, <vscale x 16 x i32> poison, <vscale x 16 x i32> zeroinitializer
932 %head = insertelement <vscale x 16 x i1> poison, i1 true, i32 0
933 %m = shufflevector <vscale x 16 x i1> %head, <vscale x 16 x i1> poison, <vscale x 16 x i32> zeroinitializer
934 %v = call <vscale x 16 x i32> @llvm.vp.udiv.nxv16i32(<vscale x 16 x i32> %va, <vscale x 16 x i32> %vb, <vscale x 16 x i1> %m, i32 %evl)
935 ret <vscale x 16 x i32> %v
938 declare <vscale x 1 x i64> @llvm.vp.udiv.nxv1i64(<vscale x 1 x i64>, <vscale x 1 x i64>, <vscale x 1 x i1>, i32)
940 define <vscale x 1 x i64> @vdivu_vv_nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
941 ; CHECK-LABEL: vdivu_vv_nxv1i64:
943 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
944 ; CHECK-NEXT: vdivu.vv v8, v8, v9, v0.t
946 %v = call <vscale x 1 x i64> @llvm.vp.udiv.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)
947 ret <vscale x 1 x i64> %v
950 define <vscale x 1 x i64> @vdivu_vv_nxv1i64_unmasked(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, i32 zeroext %evl) {
951 ; CHECK-LABEL: vdivu_vv_nxv1i64_unmasked:
953 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
954 ; CHECK-NEXT: vdivu.vv v8, v8, v9
956 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
957 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
958 %v = call <vscale x 1 x i64> @llvm.vp.udiv.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %b, <vscale x 1 x i1> %m, i32 %evl)
959 ret <vscale x 1 x i64> %v
962 define <vscale x 1 x i64> @vdivu_vx_nxv1i64(<vscale x 1 x i64> %va, i64 %b, <vscale x 1 x i1> %m, i32 zeroext %evl) {
963 ; RV32-LABEL: vdivu_vx_nxv1i64:
965 ; RV32-NEXT: addi sp, sp, -16
966 ; RV32-NEXT: .cfi_def_cfa_offset 16
967 ; RV32-NEXT: sw a1, 12(sp)
968 ; RV32-NEXT: sw a0, 8(sp)
969 ; RV32-NEXT: addi a0, sp, 8
970 ; RV32-NEXT: vsetvli a1, zero, e64, m1, ta, ma
971 ; RV32-NEXT: vlse64.v v9, (a0), zero
972 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
973 ; RV32-NEXT: vdivu.vv v8, v8, v9, v0.t
974 ; RV32-NEXT: addi sp, sp, 16
977 ; RV64-LABEL: vdivu_vx_nxv1i64:
979 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
980 ; RV64-NEXT: vdivu.vx v8, v8, a0, v0.t
982 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
983 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
984 %v = call <vscale x 1 x i64> @llvm.vp.udiv.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
985 ret <vscale x 1 x i64> %v
988 define <vscale x 1 x i64> @vdivu_vx_nxv1i64_unmasked(<vscale x 1 x i64> %va, i64 %b, i32 zeroext %evl) {
989 ; RV32-LABEL: vdivu_vx_nxv1i64_unmasked:
991 ; RV32-NEXT: addi sp, sp, -16
992 ; RV32-NEXT: .cfi_def_cfa_offset 16
993 ; RV32-NEXT: sw a1, 12(sp)
994 ; RV32-NEXT: sw a0, 8(sp)
995 ; RV32-NEXT: addi a0, sp, 8
996 ; RV32-NEXT: vsetvli a1, zero, e64, m1, ta, ma
997 ; RV32-NEXT: vlse64.v v9, (a0), zero
998 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
999 ; RV32-NEXT: vdivu.vv v8, v8, v9
1000 ; RV32-NEXT: addi sp, sp, 16
1003 ; RV64-LABEL: vdivu_vx_nxv1i64_unmasked:
1005 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
1006 ; RV64-NEXT: vdivu.vx v8, v8, a0
1008 %elt.head = insertelement <vscale x 1 x i64> poison, i64 %b, i32 0
1009 %vb = shufflevector <vscale x 1 x i64> %elt.head, <vscale x 1 x i64> poison, <vscale x 1 x i32> zeroinitializer
1010 %head = insertelement <vscale x 1 x i1> poison, i1 true, i32 0
1011 %m = shufflevector <vscale x 1 x i1> %head, <vscale x 1 x i1> poison, <vscale x 1 x i32> zeroinitializer
1012 %v = call <vscale x 1 x i64> @llvm.vp.udiv.nxv1i64(<vscale x 1 x i64> %va, <vscale x 1 x i64> %vb, <vscale x 1 x i1> %m, i32 %evl)
1013 ret <vscale x 1 x i64> %v
1016 declare <vscale x 2 x i64> @llvm.vp.udiv.nxv2i64(<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i1>, i32)
1018 define <vscale x 2 x i64> @vdivu_vv_nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1019 ; CHECK-LABEL: vdivu_vv_nxv2i64:
1021 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1022 ; CHECK-NEXT: vdivu.vv v8, v8, v10, v0.t
1024 %v = call <vscale x 2 x i64> @llvm.vp.udiv.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)
1025 ret <vscale x 2 x i64> %v
1028 define <vscale x 2 x i64> @vdivu_vv_nxv2i64_unmasked(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, i32 zeroext %evl) {
1029 ; CHECK-LABEL: vdivu_vv_nxv2i64_unmasked:
1031 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
1032 ; CHECK-NEXT: vdivu.vv v8, v8, v10
1034 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1035 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1036 %v = call <vscale x 2 x i64> @llvm.vp.udiv.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %b, <vscale x 2 x i1> %m, i32 %evl)
1037 ret <vscale x 2 x i64> %v
1040 define <vscale x 2 x i64> @vdivu_vx_nxv2i64(<vscale x 2 x i64> %va, i64 %b, <vscale x 2 x i1> %m, i32 zeroext %evl) {
1041 ; RV32-LABEL: vdivu_vx_nxv2i64:
1043 ; RV32-NEXT: addi sp, sp, -16
1044 ; RV32-NEXT: .cfi_def_cfa_offset 16
1045 ; RV32-NEXT: sw a1, 12(sp)
1046 ; RV32-NEXT: sw a0, 8(sp)
1047 ; RV32-NEXT: addi a0, sp, 8
1048 ; RV32-NEXT: vsetvli a1, zero, e64, m2, ta, ma
1049 ; RV32-NEXT: vlse64.v v10, (a0), zero
1050 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
1051 ; RV32-NEXT: vdivu.vv v8, v8, v10, v0.t
1052 ; RV32-NEXT: addi sp, sp, 16
1055 ; RV64-LABEL: vdivu_vx_nxv2i64:
1057 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1058 ; RV64-NEXT: vdivu.vx v8, v8, a0, v0.t
1060 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1061 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1062 %v = call <vscale x 2 x i64> @llvm.vp.udiv.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1063 ret <vscale x 2 x i64> %v
1066 define <vscale x 2 x i64> @vdivu_vx_nxv2i64_unmasked(<vscale x 2 x i64> %va, i64 %b, i32 zeroext %evl) {
1067 ; RV32-LABEL: vdivu_vx_nxv2i64_unmasked:
1069 ; RV32-NEXT: addi sp, sp, -16
1070 ; RV32-NEXT: .cfi_def_cfa_offset 16
1071 ; RV32-NEXT: sw a1, 12(sp)
1072 ; RV32-NEXT: sw a0, 8(sp)
1073 ; RV32-NEXT: addi a0, sp, 8
1074 ; RV32-NEXT: vsetvli a1, zero, e64, m2, ta, ma
1075 ; RV32-NEXT: vlse64.v v10, (a0), zero
1076 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
1077 ; RV32-NEXT: vdivu.vv v8, v8, v10
1078 ; RV32-NEXT: addi sp, sp, 16
1081 ; RV64-LABEL: vdivu_vx_nxv2i64_unmasked:
1083 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
1084 ; RV64-NEXT: vdivu.vx v8, v8, a0
1086 %elt.head = insertelement <vscale x 2 x i64> poison, i64 %b, i32 0
1087 %vb = shufflevector <vscale x 2 x i64> %elt.head, <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer
1088 %head = insertelement <vscale x 2 x i1> poison, i1 true, i32 0
1089 %m = shufflevector <vscale x 2 x i1> %head, <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer
1090 %v = call <vscale x 2 x i64> @llvm.vp.udiv.nxv2i64(<vscale x 2 x i64> %va, <vscale x 2 x i64> %vb, <vscale x 2 x i1> %m, i32 %evl)
1091 ret <vscale x 2 x i64> %v
1094 declare <vscale x 4 x i64> @llvm.vp.udiv.nxv4i64(<vscale x 4 x i64>, <vscale x 4 x i64>, <vscale x 4 x i1>, i32)
1096 define <vscale x 4 x i64> @vdivu_vv_nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1097 ; CHECK-LABEL: vdivu_vv_nxv4i64:
1099 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1100 ; CHECK-NEXT: vdivu.vv v8, v8, v12, v0.t
1102 %v = call <vscale x 4 x i64> @llvm.vp.udiv.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)
1103 ret <vscale x 4 x i64> %v
1106 define <vscale x 4 x i64> @vdivu_vv_nxv4i64_unmasked(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, i32 zeroext %evl) {
1107 ; CHECK-LABEL: vdivu_vv_nxv4i64_unmasked:
1109 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
1110 ; CHECK-NEXT: vdivu.vv v8, v8, v12
1112 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1113 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1114 %v = call <vscale x 4 x i64> @llvm.vp.udiv.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %b, <vscale x 4 x i1> %m, i32 %evl)
1115 ret <vscale x 4 x i64> %v
1118 define <vscale x 4 x i64> @vdivu_vx_nxv4i64(<vscale x 4 x i64> %va, i64 %b, <vscale x 4 x i1> %m, i32 zeroext %evl) {
1119 ; RV32-LABEL: vdivu_vx_nxv4i64:
1121 ; RV32-NEXT: addi sp, sp, -16
1122 ; RV32-NEXT: .cfi_def_cfa_offset 16
1123 ; RV32-NEXT: sw a1, 12(sp)
1124 ; RV32-NEXT: sw a0, 8(sp)
1125 ; RV32-NEXT: addi a0, sp, 8
1126 ; RV32-NEXT: vsetvli a1, zero, e64, m4, ta, ma
1127 ; RV32-NEXT: vlse64.v v12, (a0), zero
1128 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1129 ; RV32-NEXT: vdivu.vv v8, v8, v12, v0.t
1130 ; RV32-NEXT: addi sp, sp, 16
1133 ; RV64-LABEL: vdivu_vx_nxv4i64:
1135 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1136 ; RV64-NEXT: vdivu.vx v8, v8, a0, v0.t
1138 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1139 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1140 %v = call <vscale x 4 x i64> @llvm.vp.udiv.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1141 ret <vscale x 4 x i64> %v
1144 define <vscale x 4 x i64> @vdivu_vx_nxv4i64_unmasked(<vscale x 4 x i64> %va, i64 %b, i32 zeroext %evl) {
1145 ; RV32-LABEL: vdivu_vx_nxv4i64_unmasked:
1147 ; RV32-NEXT: addi sp, sp, -16
1148 ; RV32-NEXT: .cfi_def_cfa_offset 16
1149 ; RV32-NEXT: sw a1, 12(sp)
1150 ; RV32-NEXT: sw a0, 8(sp)
1151 ; RV32-NEXT: addi a0, sp, 8
1152 ; RV32-NEXT: vsetvli a1, zero, e64, m4, ta, ma
1153 ; RV32-NEXT: vlse64.v v12, (a0), zero
1154 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
1155 ; RV32-NEXT: vdivu.vv v8, v8, v12
1156 ; RV32-NEXT: addi sp, sp, 16
1159 ; RV64-LABEL: vdivu_vx_nxv4i64_unmasked:
1161 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
1162 ; RV64-NEXT: vdivu.vx v8, v8, a0
1164 %elt.head = insertelement <vscale x 4 x i64> poison, i64 %b, i32 0
1165 %vb = shufflevector <vscale x 4 x i64> %elt.head, <vscale x 4 x i64> poison, <vscale x 4 x i32> zeroinitializer
1166 %head = insertelement <vscale x 4 x i1> poison, i1 true, i32 0
1167 %m = shufflevector <vscale x 4 x i1> %head, <vscale x 4 x i1> poison, <vscale x 4 x i32> zeroinitializer
1168 %v = call <vscale x 4 x i64> @llvm.vp.udiv.nxv4i64(<vscale x 4 x i64> %va, <vscale x 4 x i64> %vb, <vscale x 4 x i1> %m, i32 %evl)
1169 ret <vscale x 4 x i64> %v
1172 declare <vscale x 8 x i64> @llvm.vp.udiv.nxv8i64(<vscale x 8 x i64>, <vscale x 8 x i64>, <vscale x 8 x i1>, i32)
1174 define <vscale x 8 x i64> @vdivu_vv_nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1175 ; CHECK-LABEL: vdivu_vv_nxv8i64:
1177 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1178 ; CHECK-NEXT: vdivu.vv v8, v8, v16, v0.t
1180 %v = call <vscale x 8 x i64> @llvm.vp.udiv.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)
1181 ret <vscale x 8 x i64> %v
1184 define <vscale x 8 x i64> @vdivu_vv_nxv8i64_unmasked(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, i32 zeroext %evl) {
1185 ; CHECK-LABEL: vdivu_vv_nxv8i64_unmasked:
1187 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
1188 ; CHECK-NEXT: vdivu.vv v8, v8, v16
1190 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1191 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1192 %v = call <vscale x 8 x i64> @llvm.vp.udiv.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %b, <vscale x 8 x i1> %m, i32 %evl)
1193 ret <vscale x 8 x i64> %v
1196 define <vscale x 8 x i64> @vdivu_vx_nxv8i64(<vscale x 8 x i64> %va, i64 %b, <vscale x 8 x i1> %m, i32 zeroext %evl) {
1197 ; RV32-LABEL: vdivu_vx_nxv8i64:
1199 ; RV32-NEXT: addi sp, sp, -16
1200 ; RV32-NEXT: .cfi_def_cfa_offset 16
1201 ; RV32-NEXT: sw a1, 12(sp)
1202 ; RV32-NEXT: sw a0, 8(sp)
1203 ; RV32-NEXT: addi a0, sp, 8
1204 ; RV32-NEXT: vsetvli a1, zero, e64, m8, ta, ma
1205 ; RV32-NEXT: vlse64.v v16, (a0), zero
1206 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1207 ; RV32-NEXT: vdivu.vv v8, v8, v16, v0.t
1208 ; RV32-NEXT: addi sp, sp, 16
1211 ; RV64-LABEL: vdivu_vx_nxv8i64:
1213 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1214 ; RV64-NEXT: vdivu.vx v8, v8, a0, v0.t
1216 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1217 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1218 %v = call <vscale x 8 x i64> @llvm.vp.udiv.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1219 ret <vscale x 8 x i64> %v
1222 define <vscale x 8 x i64> @vdivu_vx_nxv8i64_unmasked(<vscale x 8 x i64> %va, i64 %b, i32 zeroext %evl) {
1223 ; RV32-LABEL: vdivu_vx_nxv8i64_unmasked:
1225 ; RV32-NEXT: addi sp, sp, -16
1226 ; RV32-NEXT: .cfi_def_cfa_offset 16
1227 ; RV32-NEXT: sw a1, 12(sp)
1228 ; RV32-NEXT: sw a0, 8(sp)
1229 ; RV32-NEXT: addi a0, sp, 8
1230 ; RV32-NEXT: vsetvli a1, zero, e64, m8, ta, ma
1231 ; RV32-NEXT: vlse64.v v16, (a0), zero
1232 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
1233 ; RV32-NEXT: vdivu.vv v8, v8, v16
1234 ; RV32-NEXT: addi sp, sp, 16
1237 ; RV64-LABEL: vdivu_vx_nxv8i64_unmasked:
1239 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
1240 ; RV64-NEXT: vdivu.vx v8, v8, a0
1242 %elt.head = insertelement <vscale x 8 x i64> poison, i64 %b, i32 0
1243 %vb = shufflevector <vscale x 8 x i64> %elt.head, <vscale x 8 x i64> poison, <vscale x 8 x i32> zeroinitializer
1244 %head = insertelement <vscale x 8 x i1> poison, i1 true, i32 0
1245 %m = shufflevector <vscale x 8 x i1> %head, <vscale x 8 x i1> poison, <vscale x 8 x i32> zeroinitializer
1246 %v = call <vscale x 8 x i64> @llvm.vp.udiv.nxv8i64(<vscale x 8 x i64> %va, <vscale x 8 x i64> %vb, <vscale x 8 x i1> %m, i32 %evl)
1247 ret <vscale x 8 x i64> %v