Lines Matching full:8

5 define <8 x i8> @vaaddu_vv_v8i8_floor(<8 x i8> %x, <8 x i8> %y) {
9 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
12 %xzv = zext <8 x i8> %x to <8 x i16>
13 %yzv = zext <8 x i8> %y to <8 x i16>
14 %add = add nuw nsw <8 x i16> %xzv, %yzv
15 %div = lshr <8 x i16> %add, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
16 %ret = trunc <8 x i16> %div to <8 x i8>
17 ret <8 x i8> %ret
20 define <8 x i8> @vaaddu_vx_v8i8_floor(<8 x i8> %x, i8 %y) {
24 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
27 %xzv = zext <8 x i8> %x to <8 x i16>
28 %yhead = insertelement <8 x i8> poison, i8 %y, i32 0
29 %ysplat = shufflevector <8 x i8> %yhead, <8 x i8> poison, <8 x i32> zeroinitializer
30 %yzv = zext <8 x i8> %ysplat to <8 x i16>
31 %add = add nuw nsw <8 x i16> %xzv, %yzv
32 %div = lshr <8 x i16> %add, splat (i16 1)
33 %ret = trunc <8 x i16> %div to <8 x i8>
34 ret <8 x i8> %ret
38 define <8 x i8> @vaaddu_vv_v8i8_floor_sexti16(<8 x i8> %x, <8 x i8> %y) {
42 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
45 %xzv = sext <8 x i8> %x to <8 x i16>
46 %yzv = sext <8 x i8> %y to <8 x i16>
47 %add = add nuw nsw <8 x i16> %xzv, %yzv
48 %div = lshr <8 x i16> %add, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
49 %ret = trunc <8 x i16> %div to <8 x i8>
50 ret <8 x i8> %ret
53 define <8 x i8> @vaaddu_vv_v8i8_floor_zexti32(<8 x i8> %x, <8 x i8> %y) {
57 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
60 %xzv = zext <8 x i8> %x to <8 x i32>
61 %yzv = zext <8 x i8> %y to <8 x i32>
62 %add = add nuw nsw <8 x i32> %xzv, %yzv
63 %div = lshr <8 x i32> %add, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
64 %ret = trunc <8 x i32> %div to <8 x i8>
65 ret <8 x i8> %ret
68 define <8 x i8> @vaaddu_vv_v8i8_floor_lshr2(<8 x i8> %x, <8 x i8> %y) {
71 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
75 %xzv = zext <8 x i8> %x to <8 x i16>
76 %yzv = zext <8 x i8> %y to <8 x i16>
77 %add = add nuw nsw <8 x i16> %xzv, %yzv
78 %div = lshr <8 x i16> %add, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
79 %ret = trunc <8 x i16> %div to <8 x i8>
80 ret <8 x i8> %ret
83 define <8 x i16> @vaaddu_vv_v8i16_floor(<8 x i16> %x, <8 x i16> %y) {
87 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
90 %xzv = zext <8 x i16> %x to <8 x i32>
91 %yzv = zext <8 x i16> %y to <8 x i32>
92 %add = add nuw nsw <8 x i32> %xzv, %yzv
93 %div = lshr <8 x i32> %add, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
94 %ret = trunc <8 x i32> %div to <8 x i16>
95 ret <8 x i16> %ret
98 define <8 x i16> @vaaddu_vx_v8i16_floor(<8 x i16> %x, i16 %y) {
102 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
105 %xzv = zext <8 x i16> %x to <8 x i32>
106 %yhead = insertelement <8 x i16> poison, i16 %y, i16 0
107 %ysplat = shufflevector <8 x i16> %yhead, <8 x i16> poison, <8 x i32> zeroinitializer
108 %yzv = zext <8 x i16> %ysplat to <8 x i32>
109 %add = add nuw nsw <8 x i32> %xzv, %yzv
110 %div = lshr <8 x i32> %add, splat (i32 1)
111 %ret = trunc <8 x i32> %div to <8 x i16>
112 ret <8 x i16> %ret
115 define <8 x i32> @vaaddu_vv_v8i32_floor(<8 x i32> %x, <8 x i32> %y) {
119 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
122 %xzv = zext <8 x i32> %x to <8 x i64>
123 %yzv = zext <8 x i32> %y to <8 x i64>
124 %add = add nuw nsw <8 x i64> %xzv, %yzv
125 %div = lshr <8 x i64> %add, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>
126 %ret = trunc <8 x i64> %div to <8 x i32>
127 ret <8 x i32> %ret
130 define <8 x i32> @vaaddu_vx_v8i32_floor(<8 x i32> %x, i32 %y) {
134 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
137 %xzv = zext <8 x i32> %x to <8 x i64>
138 %yhead = insertelement <8 x i32> poison, i32 %y, i32 0
139 %ysplat = shufflevector <8 x i32> %yhead, <8 x i32> poison, <8 x i32> zeroinitializer
140 %yzv = zext <8 x i32> %ysplat to <8 x i64>
141 %add = add nuw nsw <8 x i64> %xzv, %yzv
142 %div = lshr <8 x i64> %add, splat (i64 1)
143 %ret = trunc <8 x i64> %div to <8 x i32>
144 ret <8 x i32> %ret
147 define <8 x i64> @vaaddu_vv_v8i64_floor(<8 x i64> %x, <8 x i64> %y) {
151 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
154 %xzv = zext <8 x i64> %x to <8 x i128>
155 %yzv = zext <8 x i64> %y to <8 x i128>
156 %add = add nuw nsw <8 x i128> %xzv, %yzv
157 %div = lshr <8 x i128> %add, <i128 1, i128 1, i128 1, i128 1, i128 1, i128 1, i128 1, i128 1>
158 %ret = trunc <8 x i128> %div to <8 x i64>
159 ret <8 x i64> %ret
162 define <8 x i1> @vaaddu_vv_v8i1_floor(<8 x i1> %x, <8 x i1> %y) {
165 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
175 %xzv = zext <8 x i1> %x to <8 x i8>
176 %yzv = zext <8 x i1> %y to <8 x i8>
177 %add = add nuw nsw <8 x i8> %xzv, %yzv
178 %div = lshr <8 x i8> %add, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
179 %ret = trunc <8 x i8> %div to <8 x i1>
180 ret <8 x i1> %ret
183 define <8 x i64> @vaaddu_vx_v8i64_floor(<8 x i64> %x, i64 %y) {
188 ; RV32-NEXT: sw a0, 8(sp)
190 ; RV32-NEXT: addi a0, sp, 8
191 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
202 ; RV64-NEXT: vsetivli zero, 8, e64, m4, ta, ma
205 %xzv = zext <8 x i64> %x to <8 x i128>
206 %yhead = insertelement <8 x i64> poison, i64 %y, i64 0
207 %ysplat = shufflevector <8 x i64> %yhead, <8 x i64> poison, <8 x i32> zeroinitializer
208 %yzv = zext <8 x i64> %ysplat to <8 x i128>
209 %add = add nuw nsw <8 x i128> %xzv, %yzv
210 %div = lshr <8 x i128> %add, splat (i128 1)
211 %ret = trunc <8 x i128> %div to <8 x i64>
212 ret <8 x i64> %ret
215 define <8 x i8> @vaaddu_vv_v8i8_ceil(<8 x i8> %x, <8 x i8> %y) {
219 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
222 %xzv = zext <8 x i8> %x to <8 x i16>
223 %yzv = zext <8 x i8> %y to <8 x i16>
224 %add = add nuw nsw <8 x i16> %xzv, %yzv
225 %add1 = add nuw nsw <8 x i16> %add, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
226 %div = lshr <8 x i16> %add1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
227 %ret = trunc <8 x i16> %div to <8 x i8>
228 ret <8 x i8> %ret
231 define <8 x i8> @vaaddu_vx_v8i8_ceil(<8 x i8> %x, i8 %y) {
235 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
238 %xzv = zext <8 x i8> %x to <8 x i16>
239 %yhead = insertelement <8 x i8> poison, i8 %y, i32 0
240 %ysplat = shufflevector <8 x i8> %yhead, <8 x i8> poison, <8 x i32> zeroinitializer
241 %yzv = zext <8 x i8> %ysplat to <8 x i16>
242 %add = add nuw nsw <8 x i16> %xzv, %yzv
243 %add1 = add nuw nsw <8 x i16> %add, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
244 %div = lshr <8 x i16> %add1, splat (i16 1)
245 %ret = trunc <8 x i16> %div to <8 x i8>
246 ret <8 x i8> %ret
249 define <8 x i8> @vaaddu_vv_v8i8_ceil_sexti16(<8 x i8> %x, <8 x i8> %y) {
253 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
256 %xzv = sext <8 x i8> %x to <8 x i16>
257 %yzv = sext <8 x i8> %y to <8 x i16>
258 %add = add nuw nsw <8 x i16> %xzv, %yzv
259 %add1 = add nuw nsw <8 x i16> %add, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
260 %div = lshr <8 x i16> %add1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
261 %ret = trunc <8 x i16> %div to <8 x i8>
262 ret <8 x i8> %ret
265 define <8 x i8> @vaaddu_vv_v8i8_ceil_zexti32(<8 x i8> %x, <8 x i8> %y) {
269 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
272 %xzv = zext <8 x i8> %x to <8 x i32>
273 %yzv = zext <8 x i8> %y to <8 x i32>
274 %add = add nuw nsw <8 x i32> %xzv, %yzv
275 %add1 = add nuw nsw <8 x i32> %add, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
276 %div = lshr <8 x i32> %add1, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
277 %ret = trunc <8 x i32> %div to <8 x i8>
278 ret <8 x i8> %ret
281 define <8 x i8> @vaaddu_vv_v8i8_ceil_lshr2(<8 x i8> %x, <8 x i8> %y) {
284 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
291 %xzv = zext <8 x i8> %x to <8 x i16>
292 %yzv = zext <8 x i8> %y to <8 x i16>
293 %add = add nuw nsw <8 x i16> %xzv, %yzv
294 %add1 = add nuw nsw <8 x i16> %add, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
295 %div = lshr <8 x i16> %add1, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
296 %ret = trunc <8 x i16> %div to <8 x i8>
297 ret <8 x i8> %ret
300 define <8 x i8> @vaaddu_vv_v8i8_ceil_add2(<8 x i8> %x, <8 x i8> %y) {
303 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
312 %xzv = zext <8 x i8> %x to <8 x i16>
313 %yzv = zext <8 x i8> %y to <8 x i16>
314 %add = add nuw nsw <8 x i16> %xzv, %yzv
315 %add1 = add nuw nsw <8 x i16> %add, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
316 %div = lshr <8 x i16> %add1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
317 %ret = trunc <8 x i16> %div to <8 x i8>
318 ret <8 x i8> %ret
321 define <8 x i16> @vaaddu_vv_v8i16_ceil(<8 x i16> %x, <8 x i16> %y) {
325 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
328 %xzv = zext <8 x i16> %x to <8 x i32>
329 %yzv = zext <8 x i16> %y to <8 x i32>
330 %add = add nuw nsw <8 x i32> %xzv, %yzv
331 %add1 = add nuw nsw <8 x i32> %add, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
332 %div = lshr <8 x i32> %add1, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
333 %ret = trunc <8 x i32> %div to <8 x i16>
334 ret <8 x i16> %ret
337 define <8 x i16> @vaaddu_vx_v8i16_ceil(<8 x i16> %x, i16 %y) {
341 ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
344 %xzv = zext <8 x i16> %x to <8 x i32>
345 %yhead = insertelement <8 x i16> poison, i16 %y, i16 0
346 %ysplat = shufflevector <8 x i16> %yhead, <8 x i16> poison, <8 x i32> zeroinitializer
347 %yzv = zext <8 x i16> %ysplat to <8 x i32>
348 %add = add nuw nsw <8 x i32> %xzv, %yzv
349 %add1 = add nuw nsw <8 x i32> %add, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
350 %div = lshr <8 x i32> %add1, splat (i32 1)
351 %ret = trunc <8 x i32> %div to <8 x i16>
352 ret <8 x i16> %ret
355 define <8 x i32> @vaaddu_vv_v8i32_ceil(<8 x i32> %x, <8 x i32> %y) {
359 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
362 %xzv = zext <8 x i32> %x to <8 x i64>
363 %yzv = zext <8 x i32> %y to <8 x i64>
364 %add = add nuw nsw <8 x i64> %xzv, %yzv
365 %add1 = add nuw nsw <8 x i64> %add, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>
366 %div = lshr <8 x i64> %add1, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>
367 %ret = trunc <8 x i64> %div to <8 x i32>
368 ret <8 x i32> %ret
371 define <8 x i32> @vaaddu_vx_v8i32_ceil(<8 x i32> %x, i32 %y) {
375 ; CHECK-NEXT: vsetivli zero, 8, e32, m2, ta, ma
378 %xzv = zext <8 x i32> %x to <8 x i64>
379 %yhead = insertelement <8 x i32> poison, i32 %y, i32 0
380 %ysplat = shufflevector <8 x i32> %yhead, <8 x i32> poison, <8 x i32> zeroinitializer
381 %yzv = zext <8 x i32> %ysplat to <8 x i64>
382 %add = add nuw nsw <8 x i64> %xzv, %yzv
383 %add1 = add nuw nsw <8 x i64> %add, <i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1, i64 1>
384 %div = lshr <8 x i64> %add1, splat (i64 1)
385 %ret = trunc <8 x i64> %div to <8 x i32>
386 ret <8 x i32> %ret
389 define <8 x i64> @vaaddu_vv_v8i64_ceil(<8 x i64> %x, <8 x i64> %y) {
393 ; CHECK-NEXT: vsetivli zero, 8, e64, m4, ta, ma
396 %xzv = zext <8 x i64> %x to <8 x i128>
397 %yzv = zext <8 x i64> %y to <8 x i128>
398 %add = add nuw nsw <8 x i128> %xzv, %yzv
399 %add1 = add nuw nsw <8 x i128> %add, <i128 1, i128 1, i128 1, i128 1, i128 1, i128 1, i128 1, i128 1>
400 %div = lshr <8 x i128> %add1, <i128 1, i128 1, i128 1, i128 1, i128 1, i128 1, i128 1, i128 1>
401 %ret = trunc <8 x i128> %div to <8 x i64>
402 ret <8 x i64> %ret
405 define <8 x i1> @vaaddu_vv_v8i1_ceil(<8 x i1> %x, <8 x i1> %y) {
408 ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
418 %xzv = zext <8 x i1> %x to <8 x i8>
419 %yzv = zext <8 x i1> %y to <8 x i8>
420 %add = add nuw nsw <8 x i8> %xzv, %yzv
421 %add1 = add nuw nsw <8 x i8> %add, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
422 %div = lshr <8 x i8> %add1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
423 %ret = trunc <8 x i8> %div to <8 x i1>
424 ret <8 x i1> %ret
427 define <8 x i64> @vaaddu_vx_v8i64_ceil(<8 x i64> %x, i64 %y) {
432 ; RV32-NEXT: sw a0, 8(sp)
434 ; RV32-NEXT: addi a0, sp, 8
435 ; RV32-NEXT: vsetivli zero, 8, e64, m4, ta, ma
446 ; RV64-NEXT: vsetivli zero, 8, e64, m4, ta, ma
449 %xzv = zext <8 x i64> %x to <8 x i128>
450 %yhead = insertelement <8 x i64> poison, i64 %y, i64 0
451 %ysplat = shufflevector <8 x i64> %yhead, <8 x i64> poison, <8 x i32> zeroinitializer
452 %yzv = zext <8 x i64> %ysplat to <8 x i128>
453 %add = add nuw nsw <8 x i128> %xzv, %yzv
454 %add1 = add nuw nsw <8 x i128> %add, <i128 1, i128 1, i128 1, i128 1, i128 1, i128 1, i128 1, i128 1>
455 %div = lshr <8 x i128> %add1, splat (i128 1)
456 %ret = trunc <8 x i128> %div to <8 x i64>
457 ret <8 x i64> %ret