1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 -mattr=+v -verify-machineinstrs < %s \
3 ; RUN: | FileCheck %s --check-prefixes=CHECK,RV32
4 ; RUN: llc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s \
5 ; RUN: | FileCheck %s --check-prefixes=CHECK,RV64
7 declare <8 x i7> @llvm.vp.urem.v8i7(<8 x i7>, <8 x i7>, <8 x i1>, i32)
9 define <8 x i7> @vremu_vv_v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 zeroext %evl) {
10 ; CHECK-LABEL: vremu_vv_v8i7:
12 ; CHECK-NEXT: li a1, 127
13 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
14 ; CHECK-NEXT: vand.vx v9, v9, a1, v0.t
15 ; CHECK-NEXT: vand.vx v8, v8, a1, v0.t
16 ; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t
18 %v = call <8 x i7> @llvm.vp.urem.v8i7(<8 x i7> %va, <8 x i7> %b, <8 x i1> %m, i32 %evl)
22 declare <2 x i8> @llvm.vp.urem.v2i8(<2 x i8>, <2 x i8>, <2 x i1>, i32)
24 define <2 x i8> @vremu_vv_v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 zeroext %evl) {
25 ; CHECK-LABEL: vremu_vv_v2i8:
27 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
28 ; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t
30 %v = call <2 x i8> @llvm.vp.urem.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> %m, i32 %evl)
34 define <2 x i8> @vremu_vv_v2i8_unmasked(<2 x i8> %va, <2 x i8> %b, i32 zeroext %evl) {
35 ; CHECK-LABEL: vremu_vv_v2i8_unmasked:
37 ; CHECK-NEXT: vsetvli zero, a0, e8, mf8, ta, ma
38 ; CHECK-NEXT: vremu.vv v8, v8, v9
40 %v = call <2 x i8> @llvm.vp.urem.v2i8(<2 x i8> %va, <2 x i8> %b, <2 x i1> splat (i1 true), i32 %evl)
44 define <2 x i8> @vremu_vx_v2i8(<2 x i8> %va, i8 %b, <2 x i1> %m, i32 zeroext %evl) {
45 ; CHECK-LABEL: vremu_vx_v2i8:
47 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
48 ; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t
50 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
51 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
52 %v = call <2 x i8> @llvm.vp.urem.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> %m, i32 %evl)
56 define <2 x i8> @vremu_vx_v2i8_unmasked(<2 x i8> %va, i8 %b, i32 zeroext %evl) {
57 ; CHECK-LABEL: vremu_vx_v2i8_unmasked:
59 ; CHECK-NEXT: vsetvli zero, a1, e8, mf8, ta, ma
60 ; CHECK-NEXT: vremu.vx v8, v8, a0
62 %elt.head = insertelement <2 x i8> poison, i8 %b, i32 0
63 %vb = shufflevector <2 x i8> %elt.head, <2 x i8> poison, <2 x i32> zeroinitializer
64 %v = call <2 x i8> @llvm.vp.urem.v2i8(<2 x i8> %va, <2 x i8> %vb, <2 x i1> splat (i1 true), i32 %evl)
68 declare <4 x i8> @llvm.vp.urem.v4i8(<4 x i8>, <4 x i8>, <4 x i1>, i32)
70 define <4 x i8> @vremu_vv_v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 zeroext %evl) {
71 ; CHECK-LABEL: vremu_vv_v4i8:
73 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
74 ; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t
76 %v = call <4 x i8> @llvm.vp.urem.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> %m, i32 %evl)
80 define <4 x i8> @vremu_vv_v4i8_unmasked(<4 x i8> %va, <4 x i8> %b, i32 zeroext %evl) {
81 ; CHECK-LABEL: vremu_vv_v4i8_unmasked:
83 ; CHECK-NEXT: vsetvli zero, a0, e8, mf4, ta, ma
84 ; CHECK-NEXT: vremu.vv v8, v8, v9
86 %v = call <4 x i8> @llvm.vp.urem.v4i8(<4 x i8> %va, <4 x i8> %b, <4 x i1> splat (i1 true), i32 %evl)
90 define <4 x i8> @vremu_vx_v4i8(<4 x i8> %va, i8 %b, <4 x i1> %m, i32 zeroext %evl) {
91 ; CHECK-LABEL: vremu_vx_v4i8:
93 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
94 ; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t
96 %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
97 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
98 %v = call <4 x i8> @llvm.vp.urem.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> %m, i32 %evl)
102 define <4 x i8> @vremu_vx_v4i8_unmasked(<4 x i8> %va, i8 %b, i32 zeroext %evl) {
103 ; CHECK-LABEL: vremu_vx_v4i8_unmasked:
105 ; CHECK-NEXT: vsetvli zero, a1, e8, mf4, ta, ma
106 ; CHECK-NEXT: vremu.vx v8, v8, a0
108 %elt.head = insertelement <4 x i8> poison, i8 %b, i32 0
109 %vb = shufflevector <4 x i8> %elt.head, <4 x i8> poison, <4 x i32> zeroinitializer
110 %v = call <4 x i8> @llvm.vp.urem.v4i8(<4 x i8> %va, <4 x i8> %vb, <4 x i1> splat (i1 true), i32 %evl)
114 declare <6 x i8> @llvm.vp.urem.v6i8(<6 x i8>, <6 x i8>, <6 x i1>, i32)
116 define <6 x i8> @vremu_vv_v6i8(<6 x i8> %va, <6 x i8> %b, <6 x i1> %m, i32 zeroext %evl) {
117 ; CHECK-LABEL: vremu_vv_v6i8:
119 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
120 ; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t
122 %v = call <6 x i8> @llvm.vp.urem.v6i8(<6 x i8> %va, <6 x i8> %b, <6 x i1> %m, i32 %evl)
126 declare <8 x i8> @llvm.vp.urem.v8i8(<8 x i8>, <8 x i8>, <8 x i1>, i32)
128 define <8 x i8> @vremu_vv_v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 zeroext %evl) {
129 ; CHECK-LABEL: vremu_vv_v8i8:
131 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
132 ; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t
134 %v = call <8 x i8> @llvm.vp.urem.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> %m, i32 %evl)
138 define <8 x i8> @vremu_vv_v8i8_unmasked(<8 x i8> %va, <8 x i8> %b, i32 zeroext %evl) {
139 ; CHECK-LABEL: vremu_vv_v8i8_unmasked:
141 ; CHECK-NEXT: vsetvli zero, a0, e8, mf2, ta, ma
142 ; CHECK-NEXT: vremu.vv v8, v8, v9
144 %v = call <8 x i8> @llvm.vp.urem.v8i8(<8 x i8> %va, <8 x i8> %b, <8 x i1> splat (i1 true), i32 %evl)
148 define <8 x i8> @vremu_vx_v8i8(<8 x i8> %va, i8 %b, <8 x i1> %m, i32 zeroext %evl) {
149 ; CHECK-LABEL: vremu_vx_v8i8:
151 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
152 ; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t
154 %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
155 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
156 %v = call <8 x i8> @llvm.vp.urem.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> %m, i32 %evl)
160 define <8 x i8> @vremu_vx_v8i8_unmasked(<8 x i8> %va, i8 %b, i32 zeroext %evl) {
161 ; CHECK-LABEL: vremu_vx_v8i8_unmasked:
163 ; CHECK-NEXT: vsetvli zero, a1, e8, mf2, ta, ma
164 ; CHECK-NEXT: vremu.vx v8, v8, a0
166 %elt.head = insertelement <8 x i8> poison, i8 %b, i32 0
167 %vb = shufflevector <8 x i8> %elt.head, <8 x i8> poison, <8 x i32> zeroinitializer
168 %v = call <8 x i8> @llvm.vp.urem.v8i8(<8 x i8> %va, <8 x i8> %vb, <8 x i1> splat (i1 true), i32 %evl)
172 declare <16 x i8> @llvm.vp.urem.v16i8(<16 x i8>, <16 x i8>, <16 x i1>, i32)
174 define <16 x i8> @vremu_vv_v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 zeroext %evl) {
175 ; CHECK-LABEL: vremu_vv_v16i8:
177 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
178 ; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t
180 %v = call <16 x i8> @llvm.vp.urem.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> %m, i32 %evl)
184 define <16 x i8> @vremu_vv_v16i8_unmasked(<16 x i8> %va, <16 x i8> %b, i32 zeroext %evl) {
185 ; CHECK-LABEL: vremu_vv_v16i8_unmasked:
187 ; CHECK-NEXT: vsetvli zero, a0, e8, m1, ta, ma
188 ; CHECK-NEXT: vremu.vv v8, v8, v9
190 %v = call <16 x i8> @llvm.vp.urem.v16i8(<16 x i8> %va, <16 x i8> %b, <16 x i1> splat (i1 true), i32 %evl)
194 define <16 x i8> @vremu_vx_v16i8(<16 x i8> %va, i8 %b, <16 x i1> %m, i32 zeroext %evl) {
195 ; CHECK-LABEL: vremu_vx_v16i8:
197 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
198 ; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t
200 %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
201 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
202 %v = call <16 x i8> @llvm.vp.urem.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> %m, i32 %evl)
206 define <16 x i8> @vremu_vx_v16i8_unmasked(<16 x i8> %va, i8 %b, i32 zeroext %evl) {
207 ; CHECK-LABEL: vremu_vx_v16i8_unmasked:
209 ; CHECK-NEXT: vsetvli zero, a1, e8, m1, ta, ma
210 ; CHECK-NEXT: vremu.vx v8, v8, a0
212 %elt.head = insertelement <16 x i8> poison, i8 %b, i32 0
213 %vb = shufflevector <16 x i8> %elt.head, <16 x i8> poison, <16 x i32> zeroinitializer
214 %v = call <16 x i8> @llvm.vp.urem.v16i8(<16 x i8> %va, <16 x i8> %vb, <16 x i1> splat (i1 true), i32 %evl)
218 declare <2 x i16> @llvm.vp.urem.v2i16(<2 x i16>, <2 x i16>, <2 x i1>, i32)
220 define <2 x i16> @vremu_vv_v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 zeroext %evl) {
221 ; CHECK-LABEL: vremu_vv_v2i16:
223 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
224 ; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t
226 %v = call <2 x i16> @llvm.vp.urem.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> %m, i32 %evl)
230 define <2 x i16> @vremu_vv_v2i16_unmasked(<2 x i16> %va, <2 x i16> %b, i32 zeroext %evl) {
231 ; CHECK-LABEL: vremu_vv_v2i16_unmasked:
233 ; CHECK-NEXT: vsetvli zero, a0, e16, mf4, ta, ma
234 ; CHECK-NEXT: vremu.vv v8, v8, v9
236 %v = call <2 x i16> @llvm.vp.urem.v2i16(<2 x i16> %va, <2 x i16> %b, <2 x i1> splat (i1 true), i32 %evl)
240 define <2 x i16> @vremu_vx_v2i16(<2 x i16> %va, i16 %b, <2 x i1> %m, i32 zeroext %evl) {
241 ; CHECK-LABEL: vremu_vx_v2i16:
243 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
244 ; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t
246 %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
247 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
248 %v = call <2 x i16> @llvm.vp.urem.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> %m, i32 %evl)
252 define <2 x i16> @vremu_vx_v2i16_unmasked(<2 x i16> %va, i16 %b, i32 zeroext %evl) {
253 ; CHECK-LABEL: vremu_vx_v2i16_unmasked:
255 ; CHECK-NEXT: vsetvli zero, a1, e16, mf4, ta, ma
256 ; CHECK-NEXT: vremu.vx v8, v8, a0
258 %elt.head = insertelement <2 x i16> poison, i16 %b, i32 0
259 %vb = shufflevector <2 x i16> %elt.head, <2 x i16> poison, <2 x i32> zeroinitializer
260 %v = call <2 x i16> @llvm.vp.urem.v2i16(<2 x i16> %va, <2 x i16> %vb, <2 x i1> splat (i1 true), i32 %evl)
264 declare <4 x i16> @llvm.vp.urem.v4i16(<4 x i16>, <4 x i16>, <4 x i1>, i32)
266 define <4 x i16> @vremu_vv_v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 zeroext %evl) {
267 ; CHECK-LABEL: vremu_vv_v4i16:
269 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
270 ; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t
272 %v = call <4 x i16> @llvm.vp.urem.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> %m, i32 %evl)
276 define <4 x i16> @vremu_vv_v4i16_unmasked(<4 x i16> %va, <4 x i16> %b, i32 zeroext %evl) {
277 ; CHECK-LABEL: vremu_vv_v4i16_unmasked:
279 ; CHECK-NEXT: vsetvli zero, a0, e16, mf2, ta, ma
280 ; CHECK-NEXT: vremu.vv v8, v8, v9
282 %v = call <4 x i16> @llvm.vp.urem.v4i16(<4 x i16> %va, <4 x i16> %b, <4 x i1> splat (i1 true), i32 %evl)
286 define <4 x i16> @vremu_vx_v4i16(<4 x i16> %va, i16 %b, <4 x i1> %m, i32 zeroext %evl) {
287 ; CHECK-LABEL: vremu_vx_v4i16:
289 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
290 ; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t
292 %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
293 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
294 %v = call <4 x i16> @llvm.vp.urem.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> %m, i32 %evl)
298 define <4 x i16> @vremu_vx_v4i16_unmasked(<4 x i16> %va, i16 %b, i32 zeroext %evl) {
299 ; CHECK-LABEL: vremu_vx_v4i16_unmasked:
301 ; CHECK-NEXT: vsetvli zero, a1, e16, mf2, ta, ma
302 ; CHECK-NEXT: vremu.vx v8, v8, a0
304 %elt.head = insertelement <4 x i16> poison, i16 %b, i32 0
305 %vb = shufflevector <4 x i16> %elt.head, <4 x i16> poison, <4 x i32> zeroinitializer
306 %v = call <4 x i16> @llvm.vp.urem.v4i16(<4 x i16> %va, <4 x i16> %vb, <4 x i1> splat (i1 true), i32 %evl)
310 declare <8 x i16> @llvm.vp.urem.v8i16(<8 x i16>, <8 x i16>, <8 x i1>, i32)
312 define <8 x i16> @vremu_vv_v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 zeroext %evl) {
313 ; CHECK-LABEL: vremu_vv_v8i16:
315 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
316 ; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t
318 %v = call <8 x i16> @llvm.vp.urem.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> %m, i32 %evl)
322 define <8 x i16> @vremu_vv_v8i16_unmasked(<8 x i16> %va, <8 x i16> %b, i32 zeroext %evl) {
323 ; CHECK-LABEL: vremu_vv_v8i16_unmasked:
325 ; CHECK-NEXT: vsetvli zero, a0, e16, m1, ta, ma
326 ; CHECK-NEXT: vremu.vv v8, v8, v9
328 %v = call <8 x i16> @llvm.vp.urem.v8i16(<8 x i16> %va, <8 x i16> %b, <8 x i1> splat (i1 true), i32 %evl)
332 define <8 x i16> @vremu_vx_v8i16(<8 x i16> %va, i16 %b, <8 x i1> %m, i32 zeroext %evl) {
333 ; CHECK-LABEL: vremu_vx_v8i16:
335 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
336 ; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t
338 %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
339 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
340 %v = call <8 x i16> @llvm.vp.urem.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> %m, i32 %evl)
344 define <8 x i16> @vremu_vx_v8i16_unmasked(<8 x i16> %va, i16 %b, i32 zeroext %evl) {
345 ; CHECK-LABEL: vremu_vx_v8i16_unmasked:
347 ; CHECK-NEXT: vsetvli zero, a1, e16, m1, ta, ma
348 ; CHECK-NEXT: vremu.vx v8, v8, a0
350 %elt.head = insertelement <8 x i16> poison, i16 %b, i32 0
351 %vb = shufflevector <8 x i16> %elt.head, <8 x i16> poison, <8 x i32> zeroinitializer
352 %v = call <8 x i16> @llvm.vp.urem.v8i16(<8 x i16> %va, <8 x i16> %vb, <8 x i1> splat (i1 true), i32 %evl)
356 declare <16 x i16> @llvm.vp.urem.v16i16(<16 x i16>, <16 x i16>, <16 x i1>, i32)
358 define <16 x i16> @vremu_vv_v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 zeroext %evl) {
359 ; CHECK-LABEL: vremu_vv_v16i16:
361 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
362 ; CHECK-NEXT: vremu.vv v8, v8, v10, v0.t
364 %v = call <16 x i16> @llvm.vp.urem.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> %m, i32 %evl)
368 define <16 x i16> @vremu_vv_v16i16_unmasked(<16 x i16> %va, <16 x i16> %b, i32 zeroext %evl) {
369 ; CHECK-LABEL: vremu_vv_v16i16_unmasked:
371 ; CHECK-NEXT: vsetvli zero, a0, e16, m2, ta, ma
372 ; CHECK-NEXT: vremu.vv v8, v8, v10
374 %v = call <16 x i16> @llvm.vp.urem.v16i16(<16 x i16> %va, <16 x i16> %b, <16 x i1> splat (i1 true), i32 %evl)
378 define <16 x i16> @vremu_vx_v16i16(<16 x i16> %va, i16 %b, <16 x i1> %m, i32 zeroext %evl) {
379 ; CHECK-LABEL: vremu_vx_v16i16:
381 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
382 ; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t
384 %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
385 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
386 %v = call <16 x i16> @llvm.vp.urem.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> %m, i32 %evl)
390 define <16 x i16> @vremu_vx_v16i16_unmasked(<16 x i16> %va, i16 %b, i32 zeroext %evl) {
391 ; CHECK-LABEL: vremu_vx_v16i16_unmasked:
393 ; CHECK-NEXT: vsetvli zero, a1, e16, m2, ta, ma
394 ; CHECK-NEXT: vremu.vx v8, v8, a0
396 %elt.head = insertelement <16 x i16> poison, i16 %b, i32 0
397 %vb = shufflevector <16 x i16> %elt.head, <16 x i16> poison, <16 x i32> zeroinitializer
398 %v = call <16 x i16> @llvm.vp.urem.v16i16(<16 x i16> %va, <16 x i16> %vb, <16 x i1> splat (i1 true), i32 %evl)
402 declare <2 x i32> @llvm.vp.urem.v2i32(<2 x i32>, <2 x i32>, <2 x i1>, i32)
404 define <2 x i32> @vremu_vv_v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 zeroext %evl) {
405 ; CHECK-LABEL: vremu_vv_v2i32:
407 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
408 ; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t
410 %v = call <2 x i32> @llvm.vp.urem.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> %m, i32 %evl)
414 define <2 x i32> @vremu_vv_v2i32_unmasked(<2 x i32> %va, <2 x i32> %b, i32 zeroext %evl) {
415 ; CHECK-LABEL: vremu_vv_v2i32_unmasked:
417 ; CHECK-NEXT: vsetvli zero, a0, e32, mf2, ta, ma
418 ; CHECK-NEXT: vremu.vv v8, v8, v9
420 %v = call <2 x i32> @llvm.vp.urem.v2i32(<2 x i32> %va, <2 x i32> %b, <2 x i1> splat (i1 true), i32 %evl)
424 define <2 x i32> @vremu_vx_v2i32(<2 x i32> %va, i32 %b, <2 x i1> %m, i32 zeroext %evl) {
425 ; CHECK-LABEL: vremu_vx_v2i32:
427 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
428 ; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t
430 %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
431 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
432 %v = call <2 x i32> @llvm.vp.urem.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> %m, i32 %evl)
436 define <2 x i32> @vremu_vx_v2i32_unmasked(<2 x i32> %va, i32 %b, i32 zeroext %evl) {
437 ; CHECK-LABEL: vremu_vx_v2i32_unmasked:
439 ; CHECK-NEXT: vsetvli zero, a1, e32, mf2, ta, ma
440 ; CHECK-NEXT: vremu.vx v8, v8, a0
442 %elt.head = insertelement <2 x i32> poison, i32 %b, i32 0
443 %vb = shufflevector <2 x i32> %elt.head, <2 x i32> poison, <2 x i32> zeroinitializer
444 %v = call <2 x i32> @llvm.vp.urem.v2i32(<2 x i32> %va, <2 x i32> %vb, <2 x i1> splat (i1 true), i32 %evl)
448 declare <4 x i32> @llvm.vp.urem.v4i32(<4 x i32>, <4 x i32>, <4 x i1>, i32)
450 define <4 x i32> @vremu_vv_v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 zeroext %evl) {
451 ; CHECK-LABEL: vremu_vv_v4i32:
453 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
454 ; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t
456 %v = call <4 x i32> @llvm.vp.urem.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> %m, i32 %evl)
460 define <4 x i32> @vremu_vv_v4i32_unmasked(<4 x i32> %va, <4 x i32> %b, i32 zeroext %evl) {
461 ; CHECK-LABEL: vremu_vv_v4i32_unmasked:
463 ; CHECK-NEXT: vsetvli zero, a0, e32, m1, ta, ma
464 ; CHECK-NEXT: vremu.vv v8, v8, v9
466 %v = call <4 x i32> @llvm.vp.urem.v4i32(<4 x i32> %va, <4 x i32> %b, <4 x i1> splat (i1 true), i32 %evl)
470 define <4 x i32> @vremu_vx_v4i32(<4 x i32> %va, i32 %b, <4 x i1> %m, i32 zeroext %evl) {
471 ; CHECK-LABEL: vremu_vx_v4i32:
473 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
474 ; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t
476 %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
477 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
478 %v = call <4 x i32> @llvm.vp.urem.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> %m, i32 %evl)
482 define <4 x i32> @vremu_vx_v4i32_unmasked(<4 x i32> %va, i32 %b, i32 zeroext %evl) {
483 ; CHECK-LABEL: vremu_vx_v4i32_unmasked:
485 ; CHECK-NEXT: vsetvli zero, a1, e32, m1, ta, ma
486 ; CHECK-NEXT: vremu.vx v8, v8, a0
488 %elt.head = insertelement <4 x i32> poison, i32 %b, i32 0
489 %vb = shufflevector <4 x i32> %elt.head, <4 x i32> poison, <4 x i32> zeroinitializer
490 %v = call <4 x i32> @llvm.vp.urem.v4i32(<4 x i32> %va, <4 x i32> %vb, <4 x i1> splat (i1 true), i32 %evl)
494 declare <8 x i32> @llvm.vp.urem.v8i32(<8 x i32>, <8 x i32>, <8 x i1>, i32)
496 define <8 x i32> @vremu_vv_v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 zeroext %evl) {
497 ; CHECK-LABEL: vremu_vv_v8i32:
499 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
500 ; CHECK-NEXT: vremu.vv v8, v8, v10, v0.t
502 %v = call <8 x i32> @llvm.vp.urem.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> %m, i32 %evl)
506 define <8 x i32> @vremu_vv_v8i32_unmasked(<8 x i32> %va, <8 x i32> %b, i32 zeroext %evl) {
507 ; CHECK-LABEL: vremu_vv_v8i32_unmasked:
509 ; CHECK-NEXT: vsetvli zero, a0, e32, m2, ta, ma
510 ; CHECK-NEXT: vremu.vv v8, v8, v10
512 %v = call <8 x i32> @llvm.vp.urem.v8i32(<8 x i32> %va, <8 x i32> %b, <8 x i1> splat (i1 true), i32 %evl)
516 define <8 x i32> @vremu_vx_v8i32(<8 x i32> %va, i32 %b, <8 x i1> %m, i32 zeroext %evl) {
517 ; CHECK-LABEL: vremu_vx_v8i32:
519 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
520 ; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t
522 %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
523 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
524 %v = call <8 x i32> @llvm.vp.urem.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> %m, i32 %evl)
528 define <8 x i32> @vremu_vx_v8i32_unmasked(<8 x i32> %va, i32 %b, i32 zeroext %evl) {
529 ; CHECK-LABEL: vremu_vx_v8i32_unmasked:
531 ; CHECK-NEXT: vsetvli zero, a1, e32, m2, ta, ma
532 ; CHECK-NEXT: vremu.vx v8, v8, a0
534 %elt.head = insertelement <8 x i32> poison, i32 %b, i32 0
535 %vb = shufflevector <8 x i32> %elt.head, <8 x i32> poison, <8 x i32> zeroinitializer
536 %v = call <8 x i32> @llvm.vp.urem.v8i32(<8 x i32> %va, <8 x i32> %vb, <8 x i1> splat (i1 true), i32 %evl)
540 declare <16 x i32> @llvm.vp.urem.v16i32(<16 x i32>, <16 x i32>, <16 x i1>, i32)
542 define <16 x i32> @vremu_vv_v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 zeroext %evl) {
543 ; CHECK-LABEL: vremu_vv_v16i32:
545 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
546 ; CHECK-NEXT: vremu.vv v8, v8, v12, v0.t
548 %v = call <16 x i32> @llvm.vp.urem.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> %m, i32 %evl)
552 define <16 x i32> @vremu_vv_v16i32_unmasked(<16 x i32> %va, <16 x i32> %b, i32 zeroext %evl) {
553 ; CHECK-LABEL: vremu_vv_v16i32_unmasked:
555 ; CHECK-NEXT: vsetvli zero, a0, e32, m4, ta, ma
556 ; CHECK-NEXT: vremu.vv v8, v8, v12
558 %v = call <16 x i32> @llvm.vp.urem.v16i32(<16 x i32> %va, <16 x i32> %b, <16 x i1> splat (i1 true), i32 %evl)
562 define <16 x i32> @vremu_vx_v16i32(<16 x i32> %va, i32 %b, <16 x i1> %m, i32 zeroext %evl) {
563 ; CHECK-LABEL: vremu_vx_v16i32:
565 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
566 ; CHECK-NEXT: vremu.vx v8, v8, a0, v0.t
568 %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
569 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
570 %v = call <16 x i32> @llvm.vp.urem.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> %m, i32 %evl)
574 define <16 x i32> @vremu_vx_v16i32_unmasked(<16 x i32> %va, i32 %b, i32 zeroext %evl) {
575 ; CHECK-LABEL: vremu_vx_v16i32_unmasked:
577 ; CHECK-NEXT: vsetvli zero, a1, e32, m4, ta, ma
578 ; CHECK-NEXT: vremu.vx v8, v8, a0
580 %elt.head = insertelement <16 x i32> poison, i32 %b, i32 0
581 %vb = shufflevector <16 x i32> %elt.head, <16 x i32> poison, <16 x i32> zeroinitializer
582 %v = call <16 x i32> @llvm.vp.urem.v16i32(<16 x i32> %va, <16 x i32> %vb, <16 x i1> splat (i1 true), i32 %evl)
586 declare <2 x i64> @llvm.vp.urem.v2i64(<2 x i64>, <2 x i64>, <2 x i1>, i32)
588 define <2 x i64> @vremu_vv_v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 zeroext %evl) {
589 ; CHECK-LABEL: vremu_vv_v2i64:
591 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
592 ; CHECK-NEXT: vremu.vv v8, v8, v9, v0.t
594 %v = call <2 x i64> @llvm.vp.urem.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> %m, i32 %evl)
598 define <2 x i64> @vremu_vv_v2i64_unmasked(<2 x i64> %va, <2 x i64> %b, i32 zeroext %evl) {
599 ; CHECK-LABEL: vremu_vv_v2i64_unmasked:
601 ; CHECK-NEXT: vsetvli zero, a0, e64, m1, ta, ma
602 ; CHECK-NEXT: vremu.vv v8, v8, v9
604 %v = call <2 x i64> @llvm.vp.urem.v2i64(<2 x i64> %va, <2 x i64> %b, <2 x i1> splat (i1 true), i32 %evl)
608 define <2 x i64> @vremu_vx_v2i64(<2 x i64> %va, i64 %b, <2 x i1> %m, i32 zeroext %evl) {
609 ; RV32-LABEL: vremu_vx_v2i64:
611 ; RV32-NEXT: addi sp, sp, -16
612 ; RV32-NEXT: .cfi_def_cfa_offset 16
613 ; RV32-NEXT: sw a1, 12(sp)
614 ; RV32-NEXT: sw a0, 8(sp)
615 ; RV32-NEXT: addi a0, sp, 8
616 ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
617 ; RV32-NEXT: vlse64.v v9, (a0), zero
618 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
619 ; RV32-NEXT: vremu.vv v8, v8, v9, v0.t
620 ; RV32-NEXT: addi sp, sp, 16
623 ; RV64-LABEL: vremu_vx_v2i64:
625 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
626 ; RV64-NEXT: vremu.vx v8, v8, a0, v0.t
628 %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
629 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
630 %v = call <2 x i64> @llvm.vp.urem.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> %m, i32 %evl)
634 define <2 x i64> @vremu_vx_v2i64_unmasked(<2 x i64> %va, i64 %b, i32 zeroext %evl) {
635 ; RV32-LABEL: vremu_vx_v2i64_unmasked:
637 ; RV32-NEXT: addi sp, sp, -16
638 ; RV32-NEXT: .cfi_def_cfa_offset 16
639 ; RV32-NEXT: sw a1, 12(sp)
640 ; RV32-NEXT: sw a0, 8(sp)
641 ; RV32-NEXT: addi a0, sp, 8
642 ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
643 ; RV32-NEXT: vlse64.v v9, (a0), zero
644 ; RV32-NEXT: vsetvli zero, a2, e64, m1, ta, ma
645 ; RV32-NEXT: vremu.vv v8, v8, v9
646 ; RV32-NEXT: addi sp, sp, 16
649 ; RV64-LABEL: vremu_vx_v2i64_unmasked:
651 ; RV64-NEXT: vsetvli zero, a1, e64, m1, ta, ma
652 ; RV64-NEXT: vremu.vx v8, v8, a0
654 %elt.head = insertelement <2 x i64> poison, i64 %b, i32 0
655 %vb = shufflevector <2 x i64> %elt.head, <2 x i64> poison, <2 x i32> zeroinitializer
656 %v = call <2 x i64> @llvm.vp.urem.v2i64(<2 x i64> %va, <2 x i64> %vb, <2 x i1> splat (i1 true), i32 %evl)
660 declare <4 x i64> @llvm.vp.urem.v4i64(<4 x i64>, <4 x i64>, <4 x i1>, i32)
662 define <4 x i64> @vremu_vv_v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 zeroext %evl) {
663 ; CHECK-LABEL: vremu_vv_v4i64:
665 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
666 ; CHECK-NEXT: vremu.vv v8, v8, v10, v0.t
668 %v = call <4 x i64> @llvm.vp.urem.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> %m, i32 %evl)
672 define <4 x i64> @vremu_vv_v4i64_unmasked(<4 x i64> %va, <4 x i64> %b, i32 zeroext %evl) {
673 ; CHECK-LABEL: vremu_vv_v4i64_unmasked:
675 ; CHECK-NEXT: vsetvli zero, a0, e64, m2, ta, ma
676 ; CHECK-NEXT: vremu.vv v8, v8, v10
678 %v = call <4 x i64> @llvm.vp.urem.v4i64(<4 x i64> %va, <4 x i64> %b, <4 x i1> splat (i1 true), i32 %evl)
682 define <4 x i64> @vremu_vx_v4i64(<4 x i64> %va, i64 %b, <4 x i1> %m, i32 zeroext %evl) {
683 ; RV32-LABEL: vremu_vx_v4i64:
685 ; RV32-NEXT: addi sp, sp, -16
686 ; RV32-NEXT: .cfi_def_cfa_offset 16
687 ; RV32-NEXT: sw a1, 12(sp)
688 ; RV32-NEXT: sw a0, 8(sp)
689 ; RV32-NEXT: addi a0, sp, 8
690 ; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
691 ; RV32-NEXT: vlse64.v v10, (a0), zero
692 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
693 ; RV32-NEXT: vremu.vv v8, v8, v10, v0.t
694 ; RV32-NEXT: addi sp, sp, 16
697 ; RV64-LABEL: vremu_vx_v4i64:
699 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
700 ; RV64-NEXT: vremu.vx v8, v8, a0, v0.t
702 %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
703 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
704 %v = call <4 x i64> @llvm.vp.urem.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> %m, i32 %evl)
708 define <4 x i64> @vremu_vx_v4i64_unmasked(<4 x i64> %va, i64 %b, i32 zeroext %evl) {
709 ; RV32-LABEL: vremu_vx_v4i64_unmasked:
711 ; RV32-NEXT: addi sp, sp, -16
712 ; RV32-NEXT: .cfi_def_cfa_offset 16
713 ; RV32-NEXT: sw a1, 12(sp)
714 ; RV32-NEXT: sw a0, 8(sp)
715 ; RV32-NEXT: addi a0, sp, 8
716 ; RV32-NEXT: vsetivli zero, 4, e64, m2, ta, ma
717 ; RV32-NEXT: vlse64.v v10, (a0), zero
718 ; RV32-NEXT: vsetvli zero, a2, e64, m2, ta, ma
719 ; RV32-NEXT: vremu.vv v8, v8, v10
720 ; RV32-NEXT: addi sp, sp, 16
723 ; RV64-LABEL: vremu_vx_v4i64_unmasked:
725 ; RV64-NEXT: vsetvli zero, a1, e64, m2, ta, ma
726 ; RV64-NEXT: vremu.vx v8, v8, a0
728 %elt.head = insertelement <4 x i64> poison, i64 %b, i32 0
729 %vb = shufflevector <4 x i64> %elt.head, <4 x i64> poison, <4 x i32> zeroinitializer
730 %v = call <4 x i64> @llvm.vp.urem.v4i64(<4 x i64> %va, <4 x i64> %vb, <4 x i1> splat (i1 true), i32 %evl)
734 declare <8 x i64> @llvm.vp.urem.v8i64(<8 x i64>, <8 x i64>, <8 x i1>, i32)
736 define <8 x i64> @vremu_vv_v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 zeroext %evl) {
737 ; CHECK-LABEL: vremu_vv_v8i64:
739 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
740 ; CHECK-NEXT: vremu.vv v8, v8, v12, v0.t
742 %v = call <8 x i64> @llvm.vp.urem.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> %m, i32 %evl)
746 define <8 x i64> @vremu_vv_v8i64_unmasked(<8 x i64> %va, <8 x i64> %b, i32 zeroext %evl) {
747 ; CHECK-LABEL: vremu_vv_v8i64_unmasked:
749 ; CHECK-NEXT: vsetvli zero, a0, e64, m4, ta, ma
750 ; CHECK-NEXT: vremu.vv v8, v8, v12
752 %v = call <8 x i64> @llvm.vp.urem.v8i64(<8 x i64> %va, <8 x i64> %b, <8 x i1> splat (i1 true), i32 %evl)
756 define <8 x i64> @vremu_vx_v8i64(<8 x i64> %va, i64 %b, <8 x i1> %m, i32 zeroext %evl) {
757 ; RV32-LABEL: vremu_vx_v8i64:
759 ; RV32-NEXT: addi sp, sp, -16
760 ; RV32-NEXT: .cfi_def_cfa_offset 16
761 ; RV32-NEXT: sw a1, 12(sp)
762 ; RV32-NEXT: sw a0, 8(sp)
763 ; RV32-NEXT: addi a0, sp, 8
764 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
765 ; RV32-NEXT: vlse64.v v12, (a0), zero
766 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
767 ; RV32-NEXT: vremu.vv v8, v8, v12, v0.t
768 ; RV32-NEXT: addi sp, sp, 16
771 ; RV64-LABEL: vremu_vx_v8i64:
773 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
774 ; RV64-NEXT: vremu.vx v8, v8, a0, v0.t
776 %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
777 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
778 %v = call <8 x i64> @llvm.vp.urem.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> %m, i32 %evl)
782 define <8 x i64> @vremu_vx_v8i64_unmasked(<8 x i64> %va, i64 %b, i32 zeroext %evl) {
783 ; RV32-LABEL: vremu_vx_v8i64_unmasked:
785 ; RV32-NEXT: addi sp, sp, -16
786 ; RV32-NEXT: .cfi_def_cfa_offset 16
787 ; RV32-NEXT: sw a1, 12(sp)
788 ; RV32-NEXT: sw a0, 8(sp)
789 ; RV32-NEXT: addi a0, sp, 8
790 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
791 ; RV32-NEXT: vlse64.v v12, (a0), zero
792 ; RV32-NEXT: vsetvli zero, a2, e64, m4, ta, ma
793 ; RV32-NEXT: vremu.vv v8, v8, v12
794 ; RV32-NEXT: addi sp, sp, 16
797 ; RV64-LABEL: vremu_vx_v8i64_unmasked:
799 ; RV64-NEXT: vsetvli zero, a1, e64, m4, ta, ma
800 ; RV64-NEXT: vremu.vx v8, v8, a0
802 %elt.head = insertelement <8 x i64> poison, i64 %b, i32 0
803 %vb = shufflevector <8 x i64> %elt.head, <8 x i64> poison, <8 x i32> zeroinitializer
804 %v = call <8 x i64> @llvm.vp.urem.v8i64(<8 x i64> %va, <8 x i64> %vb, <8 x i1> splat (i1 true), i32 %evl)
808 declare <16 x i64> @llvm.vp.urem.v16i64(<16 x i64>, <16 x i64>, <16 x i1>, i32)
810 define <16 x i64> @vremu_vv_v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 zeroext %evl) {
811 ; CHECK-LABEL: vremu_vv_v16i64:
813 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
814 ; CHECK-NEXT: vremu.vv v8, v8, v16, v0.t
816 %v = call <16 x i64> @llvm.vp.urem.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> %m, i32 %evl)
820 define <16 x i64> @vremu_vv_v16i64_unmasked(<16 x i64> %va, <16 x i64> %b, i32 zeroext %evl) {
821 ; CHECK-LABEL: vremu_vv_v16i64_unmasked:
823 ; CHECK-NEXT: vsetvli zero, a0, e64, m8, ta, ma
824 ; CHECK-NEXT: vremu.vv v8, v8, v16
826 %v = call <16 x i64> @llvm.vp.urem.v16i64(<16 x i64> %va, <16 x i64> %b, <16 x i1> splat (i1 true), i32 %evl)
830 define <16 x i64> @vremu_vx_v16i64(<16 x i64> %va, i64 %b, <16 x i1> %m, i32 zeroext %evl) {
831 ; RV32-LABEL: vremu_vx_v16i64:
833 ; RV32-NEXT: addi sp, sp, -16
834 ; RV32-NEXT: .cfi_def_cfa_offset 16
835 ; RV32-NEXT: sw a1, 12(sp)
836 ; RV32-NEXT: sw a0, 8(sp)
837 ; RV32-NEXT: addi a0, sp, 8
838 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
839 ; RV32-NEXT: vlse64.v v16, (a0), zero
840 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
841 ; RV32-NEXT: vremu.vv v8, v8, v16, v0.t
842 ; RV32-NEXT: addi sp, sp, 16
845 ; RV64-LABEL: vremu_vx_v16i64:
847 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
848 ; RV64-NEXT: vremu.vx v8, v8, a0, v0.t
850 %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
851 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
852 %v = call <16 x i64> @llvm.vp.urem.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> %m, i32 %evl)
856 define <16 x i64> @vremu_vx_v16i64_unmasked(<16 x i64> %va, i64 %b, i32 zeroext %evl) {
857 ; RV32-LABEL: vremu_vx_v16i64_unmasked:
859 ; RV32-NEXT: addi sp, sp, -16
860 ; RV32-NEXT: .cfi_def_cfa_offset 16
861 ; RV32-NEXT: sw a1, 12(sp)
862 ; RV32-NEXT: sw a0, 8(sp)
863 ; RV32-NEXT: addi a0, sp, 8
864 ; RV32-NEXT: vsetivli zero, 16, e64, m8, ta, ma
865 ; RV32-NEXT: vlse64.v v16, (a0), zero
866 ; RV32-NEXT: vsetvli zero, a2, e64, m8, ta, ma
867 ; RV32-NEXT: vremu.vv v8, v8, v16
868 ; RV32-NEXT: addi sp, sp, 16
871 ; RV64-LABEL: vremu_vx_v16i64_unmasked:
873 ; RV64-NEXT: vsetvli zero, a1, e64, m8, ta, ma
874 ; RV64-NEXT: vremu.vx v8, v8, a0
876 %elt.head = insertelement <16 x i64> poison, i64 %b, i32 0
877 %vb = shufflevector <16 x i64> %elt.head, <16 x i64> poison, <16 x i32> zeroinitializer
878 %v = call <16 x i64> @llvm.vp.urem.v16i64(<16 x i64> %va, <16 x i64> %vb, <16 x i1> splat (i1 true), i32 %evl)