Lines Matching refs:RV64

3 …gth-vector-lmul-max=2 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=RV64,LMULMAX2-RV64
5 …gth-vector-lmul-max=1 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=RV64,LMULMAX1-RV64
39 ; RV64-LABEL: bitreverse_v8i16:
40 ; RV64: # %bb.0:
41 ; RV64-NEXT: vsetivli zero, 8, e16, m1, ta, mu
42 ; RV64-NEXT: vle16.v v8, (a0)
43 ; RV64-NEXT: vsrl.vi v9, v8, 8
44 ; RV64-NEXT: vsll.vi v8, v8, 8
45 ; RV64-NEXT: vor.vv v8, v8, v9
46 ; RV64-NEXT: vsrl.vi v9, v8, 4
47 ; RV64-NEXT: lui a1, 1
48 ; RV64-NEXT: addiw a1, a1, -241
49 ; RV64-NEXT: vand.vx v9, v9, a1
50 ; RV64-NEXT: vand.vx v8, v8, a1
51 ; RV64-NEXT: vsll.vi v8, v8, 4
52 ; RV64-NEXT: vor.vv v8, v9, v8
53 ; RV64-NEXT: vsrl.vi v9, v8, 2
54 ; RV64-NEXT: lui a1, 3
55 ; RV64-NEXT: addiw a1, a1, 819
56 ; RV64-NEXT: vand.vx v9, v9, a1
57 ; RV64-NEXT: vand.vx v8, v8, a1
58 ; RV64-NEXT: vsll.vi v8, v8, 2
59 ; RV64-NEXT: vor.vv v8, v9, v8
60 ; RV64-NEXT: vsrl.vi v9, v8, 1
61 ; RV64-NEXT: lui a1, 5
62 ; RV64-NEXT: addiw a1, a1, 1365
63 ; RV64-NEXT: vand.vx v9, v9, a1
64 ; RV64-NEXT: vand.vx v8, v8, a1
65 ; RV64-NEXT: vadd.vv v8, v8, v8
66 ; RV64-NEXT: vor.vv v8, v9, v8
67 ; RV64-NEXT: vse16.v v8, (a0)
68 ; RV64-NEXT: ret
118 ; RV64-LABEL: bitreverse_v4i32:
119 ; RV64: # %bb.0:
120 ; RV64-NEXT: vsetivli zero, 4, e32, m1, ta, mu
121 ; RV64-NEXT: vle32.v v8, (a0)
122 ; RV64-NEXT: vsrl.vi v9, v8, 8
123 ; RV64-NEXT: lui a1, 16
124 ; RV64-NEXT: addiw a1, a1, -256
125 ; RV64-NEXT: vand.vx v9, v9, a1
126 ; RV64-NEXT: vsrl.vi v10, v8, 24
127 ; RV64-NEXT: vor.vv v9, v9, v10
128 ; RV64-NEXT: vsll.vi v10, v8, 8
129 ; RV64-NEXT: lui a1, 4080
130 ; RV64-NEXT: vand.vx v10, v10, a1
131 ; RV64-NEXT: vsll.vi v8, v8, 24
132 ; RV64-NEXT: vor.vv v8, v8, v10
133 ; RV64-NEXT: vor.vv v8, v8, v9
134 ; RV64-NEXT: vsrl.vi v9, v8, 4
135 ; RV64-NEXT: lui a1, 61681
136 ; RV64-NEXT: addiw a1, a1, -241
137 ; RV64-NEXT: vand.vx v9, v9, a1
138 ; RV64-NEXT: vand.vx v8, v8, a1
139 ; RV64-NEXT: vsll.vi v8, v8, 4
140 ; RV64-NEXT: vor.vv v8, v9, v8
141 ; RV64-NEXT: vsrl.vi v9, v8, 2
142 ; RV64-NEXT: lui a1, 209715
143 ; RV64-NEXT: addiw a1, a1, 819
144 ; RV64-NEXT: vand.vx v9, v9, a1
145 ; RV64-NEXT: vand.vx v8, v8, a1
146 ; RV64-NEXT: vsll.vi v8, v8, 2
147 ; RV64-NEXT: vor.vv v8, v9, v8
148 ; RV64-NEXT: vsrl.vi v9, v8, 1
149 ; RV64-NEXT: lui a1, 349525
150 ; RV64-NEXT: addiw a1, a1, 1365
151 ; RV64-NEXT: vand.vx v9, v9, a1
152 ; RV64-NEXT: vand.vx v8, v8, a1
153 ; RV64-NEXT: vadd.vv v8, v8, v8
154 ; RV64-NEXT: vor.vv v8, v9, v8
155 ; RV64-NEXT: vse32.v v8, (a0)
156 ; RV64-NEXT: ret
249 ; RV64-LABEL: bitreverse_v2i64:
250 ; RV64: # %bb.0:
251 ; RV64-NEXT: vsetivli zero, 2, e64, m1, ta, mu
252 ; RV64-NEXT: vle64.v v8, (a0)
253 ; RV64-NEXT: li a1, 56
254 ; RV64-NEXT: vsrl.vx v9, v8, a1
255 ; RV64-NEXT: li a2, 40
256 ; RV64-NEXT: vsrl.vx v10, v8, a2
257 ; RV64-NEXT: lui a3, 16
258 ; RV64-NEXT: addiw a3, a3, -256
259 ; RV64-NEXT: vand.vx v10, v10, a3
260 ; RV64-NEXT: vor.vv v9, v10, v9
261 ; RV64-NEXT: vsrl.vi v10, v8, 24
262 ; RV64-NEXT: lui a3, 4080
263 ; RV64-NEXT: vand.vx v10, v10, a3
264 ; RV64-NEXT: vsrl.vi v11, v8, 8
265 ; RV64-NEXT: li a3, 255
266 ; RV64-NEXT: slli a4, a3, 24
267 ; RV64-NEXT: vand.vx v11, v11, a4
268 ; RV64-NEXT: vor.vv v10, v11, v10
269 ; RV64-NEXT: vor.vv v9, v10, v9
270 ; RV64-NEXT: vsll.vi v10, v8, 8
271 ; RV64-NEXT: slli a4, a3, 32
272 ; RV64-NEXT: vand.vx v10, v10, a4
273 ; RV64-NEXT: vsll.vi v11, v8, 24
274 ; RV64-NEXT: slli a4, a3, 40
275 ; RV64-NEXT: vand.vx v11, v11, a4
276 ; RV64-NEXT: vor.vv v10, v11, v10
277 ; RV64-NEXT: vsll.vx v11, v8, a1
278 ; RV64-NEXT: vsll.vx v8, v8, a2
279 ; RV64-NEXT: slli a1, a3, 48
280 ; RV64-NEXT: vand.vx v8, v8, a1
281 ; RV64-NEXT: vor.vv v8, v11, v8
282 ; RV64-NEXT: lui a1, %hi(.LCPI2_0)
283 ; RV64-NEXT: ld a1, %lo(.LCPI2_0)(a1)
284 ; RV64-NEXT: vor.vv v8, v8, v10
285 ; RV64-NEXT: vor.vv v8, v8, v9
286 ; RV64-NEXT: vsrl.vi v9, v8, 4
287 ; RV64-NEXT: vand.vx v9, v9, a1
288 ; RV64-NEXT: vand.vx v8, v8, a1
289 ; RV64-NEXT: lui a1, %hi(.LCPI2_1)
290 ; RV64-NEXT: ld a1, %lo(.LCPI2_1)(a1)
291 ; RV64-NEXT: vsll.vi v8, v8, 4
292 ; RV64-NEXT: vor.vv v8, v9, v8
293 ; RV64-NEXT: vsrl.vi v9, v8, 2
294 ; RV64-NEXT: vand.vx v9, v9, a1
295 ; RV64-NEXT: vand.vx v8, v8, a1
296 ; RV64-NEXT: lui a1, %hi(.LCPI2_2)
297 ; RV64-NEXT: ld a1, %lo(.LCPI2_2)(a1)
298 ; RV64-NEXT: vsll.vi v8, v8, 2
299 ; RV64-NEXT: vor.vv v8, v9, v8
300 ; RV64-NEXT: vsrl.vi v9, v8, 1
301 ; RV64-NEXT: vand.vx v9, v9, a1
302 ; RV64-NEXT: vand.vx v8, v8, a1
303 ; RV64-NEXT: vadd.vv v8, v8, v8
304 ; RV64-NEXT: vor.vv v8, v9, v8
305 ; RV64-NEXT: vse64.v v8, (a0)
306 ; RV64-NEXT: ret
347 ; LMULMAX2-RV64-LABEL: bitreverse_v16i16:
348 ; LMULMAX2-RV64: # %bb.0:
349 ; LMULMAX2-RV64-NEXT: vsetivli zero, 16, e16, m2, ta, mu
350 ; LMULMAX2-RV64-NEXT: vle16.v v8, (a0)
351 ; LMULMAX2-RV64-NEXT: vsrl.vi v10, v8, 8
352 ; LMULMAX2-RV64-NEXT: vsll.vi v8, v8, 8
353 ; LMULMAX2-RV64-NEXT: vor.vv v8, v8, v10
354 ; LMULMAX2-RV64-NEXT: vsrl.vi v10, v8, 4
355 ; LMULMAX2-RV64-NEXT: lui a1, 1
356 ; LMULMAX2-RV64-NEXT: addiw a1, a1, -241
357 ; LMULMAX2-RV64-NEXT: vand.vx v10, v10, a1
358 ; LMULMAX2-RV64-NEXT: vand.vx v8, v8, a1
359 ; LMULMAX2-RV64-NEXT: vsll.vi v8, v8, 4
360 ; LMULMAX2-RV64-NEXT: vor.vv v8, v10, v8
361 ; LMULMAX2-RV64-NEXT: vsrl.vi v10, v8, 2
362 ; LMULMAX2-RV64-NEXT: lui a1, 3
363 ; LMULMAX2-RV64-NEXT: addiw a1, a1, 819
364 ; LMULMAX2-RV64-NEXT: vand.vx v10, v10, a1
365 ; LMULMAX2-RV64-NEXT: vand.vx v8, v8, a1
366 ; LMULMAX2-RV64-NEXT: vsll.vi v8, v8, 2
367 ; LMULMAX2-RV64-NEXT: vor.vv v8, v10, v8
368 ; LMULMAX2-RV64-NEXT: vsrl.vi v10, v8, 1
369 ; LMULMAX2-RV64-NEXT: lui a1, 5
370 ; LMULMAX2-RV64-NEXT: addiw a1, a1, 1365
371 ; LMULMAX2-RV64-NEXT: vand.vx v10, v10, a1
372 ; LMULMAX2-RV64-NEXT: vand.vx v8, v8, a1
373 ; LMULMAX2-RV64-NEXT: vadd.vv v8, v8, v8
374 ; LMULMAX2-RV64-NEXT: vor.vv v8, v10, v8
375 ; LMULMAX2-RV64-NEXT: vse16.v v8, (a0)
376 ; LMULMAX2-RV64-NEXT: ret
430 ; LMULMAX1-RV64-LABEL: bitreverse_v16i16:
431 ; LMULMAX1-RV64: # %bb.0:
432 ; LMULMAX1-RV64-NEXT: vsetivli zero, 8, e16, m1, ta, mu
433 ; LMULMAX1-RV64-NEXT: addi a1, a0, 16
434 ; LMULMAX1-RV64-NEXT: vle16.v v8, (a1)
435 ; LMULMAX1-RV64-NEXT: vle16.v v9, (a0)
436 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v8, 8
437 ; LMULMAX1-RV64-NEXT: vsll.vi v8, v8, 8
438 ; LMULMAX1-RV64-NEXT: vor.vv v8, v8, v10
439 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v8, 4
440 ; LMULMAX1-RV64-NEXT: lui a2, 1
441 ; LMULMAX1-RV64-NEXT: addiw a2, a2, -241
442 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a2
443 ; LMULMAX1-RV64-NEXT: vand.vx v8, v8, a2
444 ; LMULMAX1-RV64-NEXT: vsll.vi v8, v8, 4
445 ; LMULMAX1-RV64-NEXT: vor.vv v8, v10, v8
446 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v8, 2
447 ; LMULMAX1-RV64-NEXT: lui a3, 3
448 ; LMULMAX1-RV64-NEXT: addiw a3, a3, 819
449 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a3
450 ; LMULMAX1-RV64-NEXT: vand.vx v8, v8, a3
451 ; LMULMAX1-RV64-NEXT: vsll.vi v8, v8, 2
452 ; LMULMAX1-RV64-NEXT: vor.vv v8, v10, v8
453 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v8, 1
454 ; LMULMAX1-RV64-NEXT: lui a4, 5
455 ; LMULMAX1-RV64-NEXT: addiw a4, a4, 1365
456 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a4
457 ; LMULMAX1-RV64-NEXT: vand.vx v8, v8, a4
458 ; LMULMAX1-RV64-NEXT: vadd.vv v8, v8, v8
459 ; LMULMAX1-RV64-NEXT: vor.vv v8, v10, v8
460 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v9, 8
461 ; LMULMAX1-RV64-NEXT: vsll.vi v9, v9, 8
462 ; LMULMAX1-RV64-NEXT: vor.vv v9, v9, v10
463 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v9, 4
464 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a2
465 ; LMULMAX1-RV64-NEXT: vand.vx v9, v9, a2
466 ; LMULMAX1-RV64-NEXT: vsll.vi v9, v9, 4
467 ; LMULMAX1-RV64-NEXT: vor.vv v9, v10, v9
468 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v9, 2
469 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a3
470 ; LMULMAX1-RV64-NEXT: vand.vx v9, v9, a3
471 ; LMULMAX1-RV64-NEXT: vsll.vi v9, v9, 2
472 ; LMULMAX1-RV64-NEXT: vor.vv v9, v10, v9
473 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v9, 1
474 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a4
475 ; LMULMAX1-RV64-NEXT: vand.vx v9, v9, a4
476 ; LMULMAX1-RV64-NEXT: vadd.vv v9, v9, v9
477 ; LMULMAX1-RV64-NEXT: vor.vv v9, v10, v9
478 ; LMULMAX1-RV64-NEXT: vse16.v v9, (a0)
479 ; LMULMAX1-RV64-NEXT: vse16.v v8, (a1)
480 ; LMULMAX1-RV64-NEXT: ret
530 ; LMULMAX2-RV64-LABEL: bitreverse_v8i32:
531 ; LMULMAX2-RV64: # %bb.0:
532 ; LMULMAX2-RV64-NEXT: vsetivli zero, 8, e32, m2, ta, mu
533 ; LMULMAX2-RV64-NEXT: vle32.v v8, (a0)
534 ; LMULMAX2-RV64-NEXT: vsrl.vi v10, v8, 8
535 ; LMULMAX2-RV64-NEXT: lui a1, 16
536 ; LMULMAX2-RV64-NEXT: addiw a1, a1, -256
537 ; LMULMAX2-RV64-NEXT: vand.vx v10, v10, a1
538 ; LMULMAX2-RV64-NEXT: vsrl.vi v12, v8, 24
539 ; LMULMAX2-RV64-NEXT: vor.vv v10, v10, v12
540 ; LMULMAX2-RV64-NEXT: vsll.vi v12, v8, 8
541 ; LMULMAX2-RV64-NEXT: lui a1, 4080
542 ; LMULMAX2-RV64-NEXT: vand.vx v12, v12, a1
543 ; LMULMAX2-RV64-NEXT: vsll.vi v8, v8, 24
544 ; LMULMAX2-RV64-NEXT: vor.vv v8, v8, v12
545 ; LMULMAX2-RV64-NEXT: vor.vv v8, v8, v10
546 ; LMULMAX2-RV64-NEXT: vsrl.vi v10, v8, 4
547 ; LMULMAX2-RV64-NEXT: lui a1, 61681
548 ; LMULMAX2-RV64-NEXT: addiw a1, a1, -241
549 ; LMULMAX2-RV64-NEXT: vand.vx v10, v10, a1
550 ; LMULMAX2-RV64-NEXT: vand.vx v8, v8, a1
551 ; LMULMAX2-RV64-NEXT: vsll.vi v8, v8, 4
552 ; LMULMAX2-RV64-NEXT: vor.vv v8, v10, v8
553 ; LMULMAX2-RV64-NEXT: vsrl.vi v10, v8, 2
554 ; LMULMAX2-RV64-NEXT: lui a1, 209715
555 ; LMULMAX2-RV64-NEXT: addiw a1, a1, 819
556 ; LMULMAX2-RV64-NEXT: vand.vx v10, v10, a1
557 ; LMULMAX2-RV64-NEXT: vand.vx v8, v8, a1
558 ; LMULMAX2-RV64-NEXT: vsll.vi v8, v8, 2
559 ; LMULMAX2-RV64-NEXT: vor.vv v8, v10, v8
560 ; LMULMAX2-RV64-NEXT: vsrl.vi v10, v8, 1
561 ; LMULMAX2-RV64-NEXT: lui a1, 349525
562 ; LMULMAX2-RV64-NEXT: addiw a1, a1, 1365
563 ; LMULMAX2-RV64-NEXT: vand.vx v10, v10, a1
564 ; LMULMAX2-RV64-NEXT: vand.vx v8, v8, a1
565 ; LMULMAX2-RV64-NEXT: vadd.vv v8, v8, v8
566 ; LMULMAX2-RV64-NEXT: vor.vv v8, v10, v8
567 ; LMULMAX2-RV64-NEXT: vse32.v v8, (a0)
568 ; LMULMAX2-RV64-NEXT: ret
637 ; LMULMAX1-RV64-LABEL: bitreverse_v8i32:
638 ; LMULMAX1-RV64: # %bb.0:
639 ; LMULMAX1-RV64-NEXT: vsetivli zero, 4, e32, m1, ta, mu
640 ; LMULMAX1-RV64-NEXT: addi a1, a0, 16
641 ; LMULMAX1-RV64-NEXT: vle32.v v8, (a1)
642 ; LMULMAX1-RV64-NEXT: vle32.v v9, (a0)
643 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v8, 8
644 ; LMULMAX1-RV64-NEXT: lui a2, 16
645 ; LMULMAX1-RV64-NEXT: addiw a2, a2, -256
646 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a2
647 ; LMULMAX1-RV64-NEXT: vsrl.vi v11, v8, 24
648 ; LMULMAX1-RV64-NEXT: vor.vv v10, v10, v11
649 ; LMULMAX1-RV64-NEXT: vsll.vi v11, v8, 8
650 ; LMULMAX1-RV64-NEXT: lui a3, 4080
651 ; LMULMAX1-RV64-NEXT: vand.vx v11, v11, a3
652 ; LMULMAX1-RV64-NEXT: vsll.vi v8, v8, 24
653 ; LMULMAX1-RV64-NEXT: vor.vv v8, v8, v11
654 ; LMULMAX1-RV64-NEXT: vor.vv v8, v8, v10
655 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v8, 4
656 ; LMULMAX1-RV64-NEXT: lui a4, 61681
657 ; LMULMAX1-RV64-NEXT: addiw a4, a4, -241
658 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a4
659 ; LMULMAX1-RV64-NEXT: vand.vx v8, v8, a4
660 ; LMULMAX1-RV64-NEXT: vsll.vi v8, v8, 4
661 ; LMULMAX1-RV64-NEXT: vor.vv v8, v10, v8
662 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v8, 2
663 ; LMULMAX1-RV64-NEXT: lui a5, 209715
664 ; LMULMAX1-RV64-NEXT: addiw a5, a5, 819
665 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a5
666 ; LMULMAX1-RV64-NEXT: vand.vx v8, v8, a5
667 ; LMULMAX1-RV64-NEXT: vsll.vi v8, v8, 2
668 ; LMULMAX1-RV64-NEXT: vor.vv v8, v10, v8
669 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v8, 1
670 ; LMULMAX1-RV64-NEXT: lui a6, 349525
671 ; LMULMAX1-RV64-NEXT: addiw a6, a6, 1365
672 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a6
673 ; LMULMAX1-RV64-NEXT: vand.vx v8, v8, a6
674 ; LMULMAX1-RV64-NEXT: vadd.vv v8, v8, v8
675 ; LMULMAX1-RV64-NEXT: vor.vv v8, v10, v8
676 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v9, 8
677 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a2
678 ; LMULMAX1-RV64-NEXT: vsrl.vi v11, v9, 24
679 ; LMULMAX1-RV64-NEXT: vor.vv v10, v10, v11
680 ; LMULMAX1-RV64-NEXT: vsll.vi v11, v9, 8
681 ; LMULMAX1-RV64-NEXT: vand.vx v11, v11, a3
682 ; LMULMAX1-RV64-NEXT: vsll.vi v9, v9, 24
683 ; LMULMAX1-RV64-NEXT: vor.vv v9, v9, v11
684 ; LMULMAX1-RV64-NEXT: vor.vv v9, v9, v10
685 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v9, 4
686 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a4
687 ; LMULMAX1-RV64-NEXT: vand.vx v9, v9, a4
688 ; LMULMAX1-RV64-NEXT: vsll.vi v9, v9, 4
689 ; LMULMAX1-RV64-NEXT: vor.vv v9, v10, v9
690 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v9, 2
691 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a5
692 ; LMULMAX1-RV64-NEXT: vand.vx v9, v9, a5
693 ; LMULMAX1-RV64-NEXT: vsll.vi v9, v9, 2
694 ; LMULMAX1-RV64-NEXT: vor.vv v9, v10, v9
695 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v9, 1
696 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, a6
697 ; LMULMAX1-RV64-NEXT: vand.vx v9, v9, a6
698 ; LMULMAX1-RV64-NEXT: vadd.vv v9, v9, v9
699 ; LMULMAX1-RV64-NEXT: vor.vv v9, v10, v9
700 ; LMULMAX1-RV64-NEXT: vse32.v v9, (a0)
701 ; LMULMAX1-RV64-NEXT: vse32.v v8, (a1)
702 ; LMULMAX1-RV64-NEXT: ret
795 ; LMULMAX2-RV64-LABEL: bitreverse_v4i64:
796 ; LMULMAX2-RV64: # %bb.0:
797 ; LMULMAX2-RV64-NEXT: vsetivli zero, 4, e64, m2, ta, mu
798 ; LMULMAX2-RV64-NEXT: vle64.v v8, (a0)
799 ; LMULMAX2-RV64-NEXT: li a1, 56
800 ; LMULMAX2-RV64-NEXT: vsrl.vx v10, v8, a1
801 ; LMULMAX2-RV64-NEXT: li a2, 40
802 ; LMULMAX2-RV64-NEXT: vsrl.vx v12, v8, a2
803 ; LMULMAX2-RV64-NEXT: lui a3, 16
804 ; LMULMAX2-RV64-NEXT: addiw a3, a3, -256
805 ; LMULMAX2-RV64-NEXT: vand.vx v12, v12, a3
806 ; LMULMAX2-RV64-NEXT: vor.vv v10, v12, v10
807 ; LMULMAX2-RV64-NEXT: vsrl.vi v12, v8, 24
808 ; LMULMAX2-RV64-NEXT: lui a3, 4080
809 ; LMULMAX2-RV64-NEXT: vand.vx v12, v12, a3
810 ; LMULMAX2-RV64-NEXT: vsrl.vi v14, v8, 8
811 ; LMULMAX2-RV64-NEXT: li a3, 255
812 ; LMULMAX2-RV64-NEXT: slli a4, a3, 24
813 ; LMULMAX2-RV64-NEXT: vand.vx v14, v14, a4
814 ; LMULMAX2-RV64-NEXT: vor.vv v12, v14, v12
815 ; LMULMAX2-RV64-NEXT: vor.vv v10, v12, v10
816 ; LMULMAX2-RV64-NEXT: vsll.vi v12, v8, 8
817 ; LMULMAX2-RV64-NEXT: slli a4, a3, 32
818 ; LMULMAX2-RV64-NEXT: vand.vx v12, v12, a4
819 ; LMULMAX2-RV64-NEXT: vsll.vi v14, v8, 24
820 ; LMULMAX2-RV64-NEXT: slli a4, a3, 40
821 ; LMULMAX2-RV64-NEXT: vand.vx v14, v14, a4
822 ; LMULMAX2-RV64-NEXT: vor.vv v12, v14, v12
823 ; LMULMAX2-RV64-NEXT: vsll.vx v14, v8, a1
824 ; LMULMAX2-RV64-NEXT: vsll.vx v8, v8, a2
825 ; LMULMAX2-RV64-NEXT: slli a1, a3, 48
826 ; LMULMAX2-RV64-NEXT: vand.vx v8, v8, a1
827 ; LMULMAX2-RV64-NEXT: vor.vv v8, v14, v8
828 ; LMULMAX2-RV64-NEXT: lui a1, %hi(.LCPI5_0)
829 ; LMULMAX2-RV64-NEXT: ld a1, %lo(.LCPI5_0)(a1)
830 ; LMULMAX2-RV64-NEXT: vor.vv v8, v8, v12
831 ; LMULMAX2-RV64-NEXT: vor.vv v8, v8, v10
832 ; LMULMAX2-RV64-NEXT: vsrl.vi v10, v8, 4
833 ; LMULMAX2-RV64-NEXT: vand.vx v10, v10, a1
834 ; LMULMAX2-RV64-NEXT: vand.vx v8, v8, a1
835 ; LMULMAX2-RV64-NEXT: lui a1, %hi(.LCPI5_1)
836 ; LMULMAX2-RV64-NEXT: ld a1, %lo(.LCPI5_1)(a1)
837 ; LMULMAX2-RV64-NEXT: vsll.vi v8, v8, 4
838 ; LMULMAX2-RV64-NEXT: vor.vv v8, v10, v8
839 ; LMULMAX2-RV64-NEXT: vsrl.vi v10, v8, 2
840 ; LMULMAX2-RV64-NEXT: vand.vx v10, v10, a1
841 ; LMULMAX2-RV64-NEXT: vand.vx v8, v8, a1
842 ; LMULMAX2-RV64-NEXT: lui a1, %hi(.LCPI5_2)
843 ; LMULMAX2-RV64-NEXT: ld a1, %lo(.LCPI5_2)(a1)
844 ; LMULMAX2-RV64-NEXT: vsll.vi v8, v8, 2
845 ; LMULMAX2-RV64-NEXT: vor.vv v8, v10, v8
846 ; LMULMAX2-RV64-NEXT: vsrl.vi v10, v8, 1
847 ; LMULMAX2-RV64-NEXT: vand.vx v10, v10, a1
848 ; LMULMAX2-RV64-NEXT: vand.vx v8, v8, a1
849 ; LMULMAX2-RV64-NEXT: vadd.vv v8, v8, v8
850 ; LMULMAX2-RV64-NEXT: vor.vv v8, v10, v8
851 ; LMULMAX2-RV64-NEXT: vse64.v v8, (a0)
852 ; LMULMAX2-RV64-NEXT: ret
976 ; LMULMAX1-RV64-LABEL: bitreverse_v4i64:
977 ; LMULMAX1-RV64: # %bb.0:
978 ; LMULMAX1-RV64-NEXT: vsetivli zero, 2, e64, m1, ta, mu
979 ; LMULMAX1-RV64-NEXT: addi a1, a0, 16
980 ; LMULMAX1-RV64-NEXT: vle64.v v9, (a1)
981 ; LMULMAX1-RV64-NEXT: vle64.v v8, (a0)
982 ; LMULMAX1-RV64-NEXT: li a2, 56
983 ; LMULMAX1-RV64-NEXT: vsrl.vx v10, v9, a2
984 ; LMULMAX1-RV64-NEXT: li a3, 40
985 ; LMULMAX1-RV64-NEXT: vsrl.vx v11, v9, a3
986 ; LMULMAX1-RV64-NEXT: lui a4, 16
987 ; LMULMAX1-RV64-NEXT: addiw a4, a4, -256
988 ; LMULMAX1-RV64-NEXT: vand.vx v11, v11, a4
989 ; LMULMAX1-RV64-NEXT: vor.vv v10, v11, v10
990 ; LMULMAX1-RV64-NEXT: vsrl.vi v11, v9, 24
991 ; LMULMAX1-RV64-NEXT: lui a5, 4080
992 ; LMULMAX1-RV64-NEXT: vand.vx v11, v11, a5
993 ; LMULMAX1-RV64-NEXT: vsrl.vi v12, v9, 8
994 ; LMULMAX1-RV64-NEXT: li a6, 255
995 ; LMULMAX1-RV64-NEXT: slli a7, a6, 24
996 ; LMULMAX1-RV64-NEXT: vand.vx v12, v12, a7
997 ; LMULMAX1-RV64-NEXT: vor.vv v11, v12, v11
998 ; LMULMAX1-RV64-NEXT: vor.vv v10, v11, v10
999 ; LMULMAX1-RV64-NEXT: vsll.vi v11, v9, 8
1000 ; LMULMAX1-RV64-NEXT: slli t0, a6, 32
1001 ; LMULMAX1-RV64-NEXT: vand.vx v11, v11, t0
1002 ; LMULMAX1-RV64-NEXT: vsll.vi v12, v9, 24
1003 ; LMULMAX1-RV64-NEXT: slli t1, a6, 40
1004 ; LMULMAX1-RV64-NEXT: vand.vx v12, v12, t1
1005 ; LMULMAX1-RV64-NEXT: vor.vv v11, v12, v11
1006 ; LMULMAX1-RV64-NEXT: vsll.vx v12, v9, a2
1007 ; LMULMAX1-RV64-NEXT: vsll.vx v9, v9, a3
1008 ; LMULMAX1-RV64-NEXT: slli a6, a6, 48
1009 ; LMULMAX1-RV64-NEXT: vand.vx v9, v9, a6
1010 ; LMULMAX1-RV64-NEXT: vor.vv v9, v12, v9
1011 ; LMULMAX1-RV64-NEXT: lui t2, %hi(.LCPI5_0)
1012 ; LMULMAX1-RV64-NEXT: ld t2, %lo(.LCPI5_0)(t2)
1013 ; LMULMAX1-RV64-NEXT: vor.vv v9, v9, v11
1014 ; LMULMAX1-RV64-NEXT: vor.vv v9, v9, v10
1015 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v9, 4
1016 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, t2
1017 ; LMULMAX1-RV64-NEXT: vand.vx v9, v9, t2
1018 ; LMULMAX1-RV64-NEXT: lui t3, %hi(.LCPI5_1)
1019 ; LMULMAX1-RV64-NEXT: ld t3, %lo(.LCPI5_1)(t3)
1020 ; LMULMAX1-RV64-NEXT: vsll.vi v9, v9, 4
1021 ; LMULMAX1-RV64-NEXT: vor.vv v9, v10, v9
1022 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v9, 2
1023 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, t3
1024 ; LMULMAX1-RV64-NEXT: vand.vx v9, v9, t3
1025 ; LMULMAX1-RV64-NEXT: lui t4, %hi(.LCPI5_2)
1026 ; LMULMAX1-RV64-NEXT: ld t4, %lo(.LCPI5_2)(t4)
1027 ; LMULMAX1-RV64-NEXT: vsll.vi v9, v9, 2
1028 ; LMULMAX1-RV64-NEXT: vor.vv v9, v10, v9
1029 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v9, 1
1030 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, t4
1031 ; LMULMAX1-RV64-NEXT: vand.vx v9, v9, t4
1032 ; LMULMAX1-RV64-NEXT: vadd.vv v9, v9, v9
1033 ; LMULMAX1-RV64-NEXT: vor.vv v9, v10, v9
1034 ; LMULMAX1-RV64-NEXT: vsrl.vx v10, v8, a2
1035 ; LMULMAX1-RV64-NEXT: vsrl.vx v11, v8, a3
1036 ; LMULMAX1-RV64-NEXT: vand.vx v11, v11, a4
1037 ; LMULMAX1-RV64-NEXT: vor.vv v10, v11, v10
1038 ; LMULMAX1-RV64-NEXT: vsrl.vi v11, v8, 24
1039 ; LMULMAX1-RV64-NEXT: vand.vx v11, v11, a5
1040 ; LMULMAX1-RV64-NEXT: vsrl.vi v12, v8, 8
1041 ; LMULMAX1-RV64-NEXT: vand.vx v12, v12, a7
1042 ; LMULMAX1-RV64-NEXT: vor.vv v11, v12, v11
1043 ; LMULMAX1-RV64-NEXT: vor.vv v10, v11, v10
1044 ; LMULMAX1-RV64-NEXT: vsll.vi v11, v8, 8
1045 ; LMULMAX1-RV64-NEXT: vand.vx v11, v11, t0
1046 ; LMULMAX1-RV64-NEXT: vsll.vi v12, v8, 24
1047 ; LMULMAX1-RV64-NEXT: vand.vx v12, v12, t1
1048 ; LMULMAX1-RV64-NEXT: vor.vv v11, v12, v11
1049 ; LMULMAX1-RV64-NEXT: vsll.vx v12, v8, a2
1050 ; LMULMAX1-RV64-NEXT: vsll.vx v8, v8, a3
1051 ; LMULMAX1-RV64-NEXT: vand.vx v8, v8, a6
1052 ; LMULMAX1-RV64-NEXT: vor.vv v8, v12, v8
1053 ; LMULMAX1-RV64-NEXT: vor.vv v8, v8, v11
1054 ; LMULMAX1-RV64-NEXT: vor.vv v8, v8, v10
1055 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v8, 4
1056 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, t2
1057 ; LMULMAX1-RV64-NEXT: vand.vx v8, v8, t2
1058 ; LMULMAX1-RV64-NEXT: vsll.vi v8, v8, 4
1059 ; LMULMAX1-RV64-NEXT: vor.vv v8, v10, v8
1060 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v8, 2
1061 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, t3
1062 ; LMULMAX1-RV64-NEXT: vand.vx v8, v8, t3
1063 ; LMULMAX1-RV64-NEXT: vsll.vi v8, v8, 2
1064 ; LMULMAX1-RV64-NEXT: vor.vv v8, v10, v8
1065 ; LMULMAX1-RV64-NEXT: vsrl.vi v10, v8, 1
1066 ; LMULMAX1-RV64-NEXT: vand.vx v10, v10, t4
1067 ; LMULMAX1-RV64-NEXT: vand.vx v8, v8, t4
1068 ; LMULMAX1-RV64-NEXT: vadd.vv v8, v8, v8
1069 ; LMULMAX1-RV64-NEXT: vor.vv v8, v10, v8
1070 ; LMULMAX1-RV64-NEXT: vse64.v v8, (a0)
1071 ; LMULMAX1-RV64-NEXT: vse64.v v9, (a1)
1072 ; LMULMAX1-RV64-NEXT: ret