Lines Matching refs:RV64
3 …lc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64
224 ; RV64-LABEL: bitreverse_nxv1i16:
225 ; RV64: # %bb.0:
226 ; RV64-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
227 ; RV64-NEXT: vsrl.vi v9, v8, 8
228 ; RV64-NEXT: vsll.vi v8, v8, 8
229 ; RV64-NEXT: vor.vv v8, v8, v9
230 ; RV64-NEXT: vsrl.vi v9, v8, 4
231 ; RV64-NEXT: lui a0, 1
232 ; RV64-NEXT: addiw a0, a0, -241
233 ; RV64-NEXT: vand.vx v9, v9, a0
234 ; RV64-NEXT: vand.vx v8, v8, a0
235 ; RV64-NEXT: vsll.vi v8, v8, 4
236 ; RV64-NEXT: vor.vv v8, v9, v8
237 ; RV64-NEXT: vsrl.vi v9, v8, 2
238 ; RV64-NEXT: lui a0, 3
239 ; RV64-NEXT: addiw a0, a0, 819
240 ; RV64-NEXT: vand.vx v9, v9, a0
241 ; RV64-NEXT: vand.vx v8, v8, a0
242 ; RV64-NEXT: vsll.vi v8, v8, 2
243 ; RV64-NEXT: vor.vv v8, v9, v8
244 ; RV64-NEXT: vsrl.vi v9, v8, 1
245 ; RV64-NEXT: lui a0, 5
246 ; RV64-NEXT: addiw a0, a0, 1365
247 ; RV64-NEXT: vand.vx v9, v9, a0
248 ; RV64-NEXT: vand.vx v8, v8, a0
249 ; RV64-NEXT: vadd.vv v8, v8, v8
250 ; RV64-NEXT: vor.vv v8, v9, v8
251 ; RV64-NEXT: ret
287 ; RV64-LABEL: bitreverse_nxv2i16:
288 ; RV64: # %bb.0:
289 ; RV64-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
290 ; RV64-NEXT: vsrl.vi v9, v8, 8
291 ; RV64-NEXT: vsll.vi v8, v8, 8
292 ; RV64-NEXT: vor.vv v8, v8, v9
293 ; RV64-NEXT: vsrl.vi v9, v8, 4
294 ; RV64-NEXT: lui a0, 1
295 ; RV64-NEXT: addiw a0, a0, -241
296 ; RV64-NEXT: vand.vx v9, v9, a0
297 ; RV64-NEXT: vand.vx v8, v8, a0
298 ; RV64-NEXT: vsll.vi v8, v8, 4
299 ; RV64-NEXT: vor.vv v8, v9, v8
300 ; RV64-NEXT: vsrl.vi v9, v8, 2
301 ; RV64-NEXT: lui a0, 3
302 ; RV64-NEXT: addiw a0, a0, 819
303 ; RV64-NEXT: vand.vx v9, v9, a0
304 ; RV64-NEXT: vand.vx v8, v8, a0
305 ; RV64-NEXT: vsll.vi v8, v8, 2
306 ; RV64-NEXT: vor.vv v8, v9, v8
307 ; RV64-NEXT: vsrl.vi v9, v8, 1
308 ; RV64-NEXT: lui a0, 5
309 ; RV64-NEXT: addiw a0, a0, 1365
310 ; RV64-NEXT: vand.vx v9, v9, a0
311 ; RV64-NEXT: vand.vx v8, v8, a0
312 ; RV64-NEXT: vadd.vv v8, v8, v8
313 ; RV64-NEXT: vor.vv v8, v9, v8
314 ; RV64-NEXT: ret
350 ; RV64-LABEL: bitreverse_nxv4i16:
351 ; RV64: # %bb.0:
352 ; RV64-NEXT: vsetvli a0, zero, e16, m1, ta, mu
353 ; RV64-NEXT: vsrl.vi v9, v8, 8
354 ; RV64-NEXT: vsll.vi v8, v8, 8
355 ; RV64-NEXT: vor.vv v8, v8, v9
356 ; RV64-NEXT: vsrl.vi v9, v8, 4
357 ; RV64-NEXT: lui a0, 1
358 ; RV64-NEXT: addiw a0, a0, -241
359 ; RV64-NEXT: vand.vx v9, v9, a0
360 ; RV64-NEXT: vand.vx v8, v8, a0
361 ; RV64-NEXT: vsll.vi v8, v8, 4
362 ; RV64-NEXT: vor.vv v8, v9, v8
363 ; RV64-NEXT: vsrl.vi v9, v8, 2
364 ; RV64-NEXT: lui a0, 3
365 ; RV64-NEXT: addiw a0, a0, 819
366 ; RV64-NEXT: vand.vx v9, v9, a0
367 ; RV64-NEXT: vand.vx v8, v8, a0
368 ; RV64-NEXT: vsll.vi v8, v8, 2
369 ; RV64-NEXT: vor.vv v8, v9, v8
370 ; RV64-NEXT: vsrl.vi v9, v8, 1
371 ; RV64-NEXT: lui a0, 5
372 ; RV64-NEXT: addiw a0, a0, 1365
373 ; RV64-NEXT: vand.vx v9, v9, a0
374 ; RV64-NEXT: vand.vx v8, v8, a0
375 ; RV64-NEXT: vadd.vv v8, v8, v8
376 ; RV64-NEXT: vor.vv v8, v9, v8
377 ; RV64-NEXT: ret
413 ; RV64-LABEL: bitreverse_nxv8i16:
414 ; RV64: # %bb.0:
415 ; RV64-NEXT: vsetvli a0, zero, e16, m2, ta, mu
416 ; RV64-NEXT: vsrl.vi v10, v8, 8
417 ; RV64-NEXT: vsll.vi v8, v8, 8
418 ; RV64-NEXT: vor.vv v8, v8, v10
419 ; RV64-NEXT: vsrl.vi v10, v8, 4
420 ; RV64-NEXT: lui a0, 1
421 ; RV64-NEXT: addiw a0, a0, -241
422 ; RV64-NEXT: vand.vx v10, v10, a0
423 ; RV64-NEXT: vand.vx v8, v8, a0
424 ; RV64-NEXT: vsll.vi v8, v8, 4
425 ; RV64-NEXT: vor.vv v8, v10, v8
426 ; RV64-NEXT: vsrl.vi v10, v8, 2
427 ; RV64-NEXT: lui a0, 3
428 ; RV64-NEXT: addiw a0, a0, 819
429 ; RV64-NEXT: vand.vx v10, v10, a0
430 ; RV64-NEXT: vand.vx v8, v8, a0
431 ; RV64-NEXT: vsll.vi v8, v8, 2
432 ; RV64-NEXT: vor.vv v8, v10, v8
433 ; RV64-NEXT: vsrl.vi v10, v8, 1
434 ; RV64-NEXT: lui a0, 5
435 ; RV64-NEXT: addiw a0, a0, 1365
436 ; RV64-NEXT: vand.vx v10, v10, a0
437 ; RV64-NEXT: vand.vx v8, v8, a0
438 ; RV64-NEXT: vadd.vv v8, v8, v8
439 ; RV64-NEXT: vor.vv v8, v10, v8
440 ; RV64-NEXT: ret
476 ; RV64-LABEL: bitreverse_nxv16i16:
477 ; RV64: # %bb.0:
478 ; RV64-NEXT: vsetvli a0, zero, e16, m4, ta, mu
479 ; RV64-NEXT: vsrl.vi v12, v8, 8
480 ; RV64-NEXT: vsll.vi v8, v8, 8
481 ; RV64-NEXT: vor.vv v8, v8, v12
482 ; RV64-NEXT: vsrl.vi v12, v8, 4
483 ; RV64-NEXT: lui a0, 1
484 ; RV64-NEXT: addiw a0, a0, -241
485 ; RV64-NEXT: vand.vx v12, v12, a0
486 ; RV64-NEXT: vand.vx v8, v8, a0
487 ; RV64-NEXT: vsll.vi v8, v8, 4
488 ; RV64-NEXT: vor.vv v8, v12, v8
489 ; RV64-NEXT: vsrl.vi v12, v8, 2
490 ; RV64-NEXT: lui a0, 3
491 ; RV64-NEXT: addiw a0, a0, 819
492 ; RV64-NEXT: vand.vx v12, v12, a0
493 ; RV64-NEXT: vand.vx v8, v8, a0
494 ; RV64-NEXT: vsll.vi v8, v8, 2
495 ; RV64-NEXT: vor.vv v8, v12, v8
496 ; RV64-NEXT: vsrl.vi v12, v8, 1
497 ; RV64-NEXT: lui a0, 5
498 ; RV64-NEXT: addiw a0, a0, 1365
499 ; RV64-NEXT: vand.vx v12, v12, a0
500 ; RV64-NEXT: vand.vx v8, v8, a0
501 ; RV64-NEXT: vadd.vv v8, v8, v8
502 ; RV64-NEXT: vor.vv v8, v12, v8
503 ; RV64-NEXT: ret
539 ; RV64-LABEL: bitreverse_nxv32i16:
540 ; RV64: # %bb.0:
541 ; RV64-NEXT: vsetvli a0, zero, e16, m8, ta, mu
542 ; RV64-NEXT: vsrl.vi v16, v8, 8
543 ; RV64-NEXT: vsll.vi v8, v8, 8
544 ; RV64-NEXT: vor.vv v8, v8, v16
545 ; RV64-NEXT: vsrl.vi v16, v8, 4
546 ; RV64-NEXT: lui a0, 1
547 ; RV64-NEXT: addiw a0, a0, -241
548 ; RV64-NEXT: vand.vx v16, v16, a0
549 ; RV64-NEXT: vand.vx v8, v8, a0
550 ; RV64-NEXT: vsll.vi v8, v8, 4
551 ; RV64-NEXT: vor.vv v8, v16, v8
552 ; RV64-NEXT: vsrl.vi v16, v8, 2
553 ; RV64-NEXT: lui a0, 3
554 ; RV64-NEXT: addiw a0, a0, 819
555 ; RV64-NEXT: vand.vx v16, v16, a0
556 ; RV64-NEXT: vand.vx v8, v8, a0
557 ; RV64-NEXT: vsll.vi v8, v8, 2
558 ; RV64-NEXT: vor.vv v8, v16, v8
559 ; RV64-NEXT: vsrl.vi v16, v8, 1
560 ; RV64-NEXT: lui a0, 5
561 ; RV64-NEXT: addiw a0, a0, 1365
562 ; RV64-NEXT: vand.vx v16, v16, a0
563 ; RV64-NEXT: vand.vx v8, v8, a0
564 ; RV64-NEXT: vadd.vv v8, v8, v8
565 ; RV64-NEXT: vor.vv v8, v16, v8
566 ; RV64-NEXT: ret
611 ; RV64-LABEL: bitreverse_nxv1i32:
612 ; RV64: # %bb.0:
613 ; RV64-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
614 ; RV64-NEXT: vsrl.vi v9, v8, 8
615 ; RV64-NEXT: lui a0, 16
616 ; RV64-NEXT: addiw a0, a0, -256
617 ; RV64-NEXT: vand.vx v9, v9, a0
618 ; RV64-NEXT: vsrl.vi v10, v8, 24
619 ; RV64-NEXT: vor.vv v9, v9, v10
620 ; RV64-NEXT: vsll.vi v10, v8, 8
621 ; RV64-NEXT: lui a0, 4080
622 ; RV64-NEXT: vand.vx v10, v10, a0
623 ; RV64-NEXT: vsll.vi v8, v8, 24
624 ; RV64-NEXT: vor.vv v8, v8, v10
625 ; RV64-NEXT: vor.vv v8, v8, v9
626 ; RV64-NEXT: vsrl.vi v9, v8, 4
627 ; RV64-NEXT: lui a0, 61681
628 ; RV64-NEXT: addiw a0, a0, -241
629 ; RV64-NEXT: vand.vx v9, v9, a0
630 ; RV64-NEXT: vand.vx v8, v8, a0
631 ; RV64-NEXT: vsll.vi v8, v8, 4
632 ; RV64-NEXT: vor.vv v8, v9, v8
633 ; RV64-NEXT: vsrl.vi v9, v8, 2
634 ; RV64-NEXT: lui a0, 209715
635 ; RV64-NEXT: addiw a0, a0, 819
636 ; RV64-NEXT: vand.vx v9, v9, a0
637 ; RV64-NEXT: vand.vx v8, v8, a0
638 ; RV64-NEXT: vsll.vi v8, v8, 2
639 ; RV64-NEXT: vor.vv v8, v9, v8
640 ; RV64-NEXT: vsrl.vi v9, v8, 1
641 ; RV64-NEXT: lui a0, 349525
642 ; RV64-NEXT: addiw a0, a0, 1365
643 ; RV64-NEXT: vand.vx v9, v9, a0
644 ; RV64-NEXT: vand.vx v8, v8, a0
645 ; RV64-NEXT: vadd.vv v8, v8, v8
646 ; RV64-NEXT: vor.vv v8, v9, v8
647 ; RV64-NEXT: ret
692 ; RV64-LABEL: bitreverse_nxv2i32:
693 ; RV64: # %bb.0:
694 ; RV64-NEXT: vsetvli a0, zero, e32, m1, ta, mu
695 ; RV64-NEXT: vsrl.vi v9, v8, 8
696 ; RV64-NEXT: lui a0, 16
697 ; RV64-NEXT: addiw a0, a0, -256
698 ; RV64-NEXT: vand.vx v9, v9, a0
699 ; RV64-NEXT: vsrl.vi v10, v8, 24
700 ; RV64-NEXT: vor.vv v9, v9, v10
701 ; RV64-NEXT: vsll.vi v10, v8, 8
702 ; RV64-NEXT: lui a0, 4080
703 ; RV64-NEXT: vand.vx v10, v10, a0
704 ; RV64-NEXT: vsll.vi v8, v8, 24
705 ; RV64-NEXT: vor.vv v8, v8, v10
706 ; RV64-NEXT: vor.vv v8, v8, v9
707 ; RV64-NEXT: vsrl.vi v9, v8, 4
708 ; RV64-NEXT: lui a0, 61681
709 ; RV64-NEXT: addiw a0, a0, -241
710 ; RV64-NEXT: vand.vx v9, v9, a0
711 ; RV64-NEXT: vand.vx v8, v8, a0
712 ; RV64-NEXT: vsll.vi v8, v8, 4
713 ; RV64-NEXT: vor.vv v8, v9, v8
714 ; RV64-NEXT: vsrl.vi v9, v8, 2
715 ; RV64-NEXT: lui a0, 209715
716 ; RV64-NEXT: addiw a0, a0, 819
717 ; RV64-NEXT: vand.vx v9, v9, a0
718 ; RV64-NEXT: vand.vx v8, v8, a0
719 ; RV64-NEXT: vsll.vi v8, v8, 2
720 ; RV64-NEXT: vor.vv v8, v9, v8
721 ; RV64-NEXT: vsrl.vi v9, v8, 1
722 ; RV64-NEXT: lui a0, 349525
723 ; RV64-NEXT: addiw a0, a0, 1365
724 ; RV64-NEXT: vand.vx v9, v9, a0
725 ; RV64-NEXT: vand.vx v8, v8, a0
726 ; RV64-NEXT: vadd.vv v8, v8, v8
727 ; RV64-NEXT: vor.vv v8, v9, v8
728 ; RV64-NEXT: ret
773 ; RV64-LABEL: bitreverse_nxv4i32:
774 ; RV64: # %bb.0:
775 ; RV64-NEXT: vsetvli a0, zero, e32, m2, ta, mu
776 ; RV64-NEXT: vsrl.vi v10, v8, 8
777 ; RV64-NEXT: lui a0, 16
778 ; RV64-NEXT: addiw a0, a0, -256
779 ; RV64-NEXT: vand.vx v10, v10, a0
780 ; RV64-NEXT: vsrl.vi v12, v8, 24
781 ; RV64-NEXT: vor.vv v10, v10, v12
782 ; RV64-NEXT: vsll.vi v12, v8, 8
783 ; RV64-NEXT: lui a0, 4080
784 ; RV64-NEXT: vand.vx v12, v12, a0
785 ; RV64-NEXT: vsll.vi v8, v8, 24
786 ; RV64-NEXT: vor.vv v8, v8, v12
787 ; RV64-NEXT: vor.vv v8, v8, v10
788 ; RV64-NEXT: vsrl.vi v10, v8, 4
789 ; RV64-NEXT: lui a0, 61681
790 ; RV64-NEXT: addiw a0, a0, -241
791 ; RV64-NEXT: vand.vx v10, v10, a0
792 ; RV64-NEXT: vand.vx v8, v8, a0
793 ; RV64-NEXT: vsll.vi v8, v8, 4
794 ; RV64-NEXT: vor.vv v8, v10, v8
795 ; RV64-NEXT: vsrl.vi v10, v8, 2
796 ; RV64-NEXT: lui a0, 209715
797 ; RV64-NEXT: addiw a0, a0, 819
798 ; RV64-NEXT: vand.vx v10, v10, a0
799 ; RV64-NEXT: vand.vx v8, v8, a0
800 ; RV64-NEXT: vsll.vi v8, v8, 2
801 ; RV64-NEXT: vor.vv v8, v10, v8
802 ; RV64-NEXT: vsrl.vi v10, v8, 1
803 ; RV64-NEXT: lui a0, 349525
804 ; RV64-NEXT: addiw a0, a0, 1365
805 ; RV64-NEXT: vand.vx v10, v10, a0
806 ; RV64-NEXT: vand.vx v8, v8, a0
807 ; RV64-NEXT: vadd.vv v8, v8, v8
808 ; RV64-NEXT: vor.vv v8, v10, v8
809 ; RV64-NEXT: ret
854 ; RV64-LABEL: bitreverse_nxv8i32:
855 ; RV64: # %bb.0:
856 ; RV64-NEXT: vsetvli a0, zero, e32, m4, ta, mu
857 ; RV64-NEXT: vsrl.vi v12, v8, 8
858 ; RV64-NEXT: lui a0, 16
859 ; RV64-NEXT: addiw a0, a0, -256
860 ; RV64-NEXT: vand.vx v12, v12, a0
861 ; RV64-NEXT: vsrl.vi v16, v8, 24
862 ; RV64-NEXT: vor.vv v12, v12, v16
863 ; RV64-NEXT: vsll.vi v16, v8, 8
864 ; RV64-NEXT: lui a0, 4080
865 ; RV64-NEXT: vand.vx v16, v16, a0
866 ; RV64-NEXT: vsll.vi v8, v8, 24
867 ; RV64-NEXT: vor.vv v8, v8, v16
868 ; RV64-NEXT: vor.vv v8, v8, v12
869 ; RV64-NEXT: vsrl.vi v12, v8, 4
870 ; RV64-NEXT: lui a0, 61681
871 ; RV64-NEXT: addiw a0, a0, -241
872 ; RV64-NEXT: vand.vx v12, v12, a0
873 ; RV64-NEXT: vand.vx v8, v8, a0
874 ; RV64-NEXT: vsll.vi v8, v8, 4
875 ; RV64-NEXT: vor.vv v8, v12, v8
876 ; RV64-NEXT: vsrl.vi v12, v8, 2
877 ; RV64-NEXT: lui a0, 209715
878 ; RV64-NEXT: addiw a0, a0, 819
879 ; RV64-NEXT: vand.vx v12, v12, a0
880 ; RV64-NEXT: vand.vx v8, v8, a0
881 ; RV64-NEXT: vsll.vi v8, v8, 2
882 ; RV64-NEXT: vor.vv v8, v12, v8
883 ; RV64-NEXT: vsrl.vi v12, v8, 1
884 ; RV64-NEXT: lui a0, 349525
885 ; RV64-NEXT: addiw a0, a0, 1365
886 ; RV64-NEXT: vand.vx v12, v12, a0
887 ; RV64-NEXT: vand.vx v8, v8, a0
888 ; RV64-NEXT: vadd.vv v8, v8, v8
889 ; RV64-NEXT: vor.vv v8, v12, v8
890 ; RV64-NEXT: ret
935 ; RV64-LABEL: bitreverse_nxv16i32:
936 ; RV64: # %bb.0:
937 ; RV64-NEXT: vsetvli a0, zero, e32, m8, ta, mu
938 ; RV64-NEXT: vsrl.vi v16, v8, 8
939 ; RV64-NEXT: lui a0, 16
940 ; RV64-NEXT: addiw a0, a0, -256
941 ; RV64-NEXT: vand.vx v16, v16, a0
942 ; RV64-NEXT: vsrl.vi v24, v8, 24
943 ; RV64-NEXT: vor.vv v16, v16, v24
944 ; RV64-NEXT: vsll.vi v24, v8, 8
945 ; RV64-NEXT: lui a0, 4080
946 ; RV64-NEXT: vand.vx v24, v24, a0
947 ; RV64-NEXT: vsll.vi v8, v8, 24
948 ; RV64-NEXT: vor.vv v8, v8, v24
949 ; RV64-NEXT: vor.vv v8, v8, v16
950 ; RV64-NEXT: vsrl.vi v16, v8, 4
951 ; RV64-NEXT: lui a0, 61681
952 ; RV64-NEXT: addiw a0, a0, -241
953 ; RV64-NEXT: vand.vx v16, v16, a0
954 ; RV64-NEXT: vand.vx v8, v8, a0
955 ; RV64-NEXT: vsll.vi v8, v8, 4
956 ; RV64-NEXT: vor.vv v8, v16, v8
957 ; RV64-NEXT: vsrl.vi v16, v8, 2
958 ; RV64-NEXT: lui a0, 209715
959 ; RV64-NEXT: addiw a0, a0, 819
960 ; RV64-NEXT: vand.vx v16, v16, a0
961 ; RV64-NEXT: vand.vx v8, v8, a0
962 ; RV64-NEXT: vsll.vi v8, v8, 2
963 ; RV64-NEXT: vor.vv v8, v16, v8
964 ; RV64-NEXT: vsrl.vi v16, v8, 1
965 ; RV64-NEXT: lui a0, 349525
966 ; RV64-NEXT: addiw a0, a0, 1365
967 ; RV64-NEXT: vand.vx v16, v16, a0
968 ; RV64-NEXT: vand.vx v8, v8, a0
969 ; RV64-NEXT: vadd.vv v8, v8, v8
970 ; RV64-NEXT: vor.vv v8, v16, v8
971 ; RV64-NEXT: ret
1055 ; RV64-LABEL: bitreverse_nxv1i64:
1056 ; RV64: # %bb.0:
1057 ; RV64-NEXT: li a0, 56
1058 ; RV64-NEXT: vsetvli a1, zero, e64, m1, ta, mu
1059 ; RV64-NEXT: vsrl.vx v9, v8, a0
1060 ; RV64-NEXT: li a1, 40
1061 ; RV64-NEXT: vsrl.vx v10, v8, a1
1062 ; RV64-NEXT: lui a2, 16
1063 ; RV64-NEXT: addiw a2, a2, -256
1064 ; RV64-NEXT: vand.vx v10, v10, a2
1065 ; RV64-NEXT: vor.vv v9, v10, v9
1066 ; RV64-NEXT: vsrl.vi v10, v8, 24
1067 ; RV64-NEXT: lui a2, 4080
1068 ; RV64-NEXT: vand.vx v10, v10, a2
1069 ; RV64-NEXT: vsrl.vi v11, v8, 8
1070 ; RV64-NEXT: li a2, 255
1071 ; RV64-NEXT: slli a3, a2, 24
1072 ; RV64-NEXT: vand.vx v11, v11, a3
1073 ; RV64-NEXT: vor.vv v10, v11, v10
1074 ; RV64-NEXT: vor.vv v9, v10, v9
1075 ; RV64-NEXT: vsll.vi v10, v8, 8
1076 ; RV64-NEXT: slli a3, a2, 32
1077 ; RV64-NEXT: vand.vx v10, v10, a3
1078 ; RV64-NEXT: vsll.vi v11, v8, 24
1079 ; RV64-NEXT: slli a3, a2, 40
1080 ; RV64-NEXT: vand.vx v11, v11, a3
1081 ; RV64-NEXT: vor.vv v10, v11, v10
1082 ; RV64-NEXT: vsll.vx v11, v8, a0
1083 ; RV64-NEXT: vsll.vx v8, v8, a1
1084 ; RV64-NEXT: slli a0, a2, 48
1085 ; RV64-NEXT: vand.vx v8, v8, a0
1086 ; RV64-NEXT: vor.vv v8, v11, v8
1087 ; RV64-NEXT: lui a0, %hi(.LCPI18_0)
1088 ; RV64-NEXT: ld a0, %lo(.LCPI18_0)(a0)
1089 ; RV64-NEXT: vor.vv v8, v8, v10
1090 ; RV64-NEXT: vor.vv v8, v8, v9
1091 ; RV64-NEXT: vsrl.vi v9, v8, 4
1092 ; RV64-NEXT: vand.vx v9, v9, a0
1093 ; RV64-NEXT: vand.vx v8, v8, a0
1094 ; RV64-NEXT: lui a0, %hi(.LCPI18_1)
1095 ; RV64-NEXT: ld a0, %lo(.LCPI18_1)(a0)
1096 ; RV64-NEXT: vsll.vi v8, v8, 4
1097 ; RV64-NEXT: vor.vv v8, v9, v8
1098 ; RV64-NEXT: vsrl.vi v9, v8, 2
1099 ; RV64-NEXT: vand.vx v9, v9, a0
1100 ; RV64-NEXT: vand.vx v8, v8, a0
1101 ; RV64-NEXT: lui a0, %hi(.LCPI18_2)
1102 ; RV64-NEXT: ld a0, %lo(.LCPI18_2)(a0)
1103 ; RV64-NEXT: vsll.vi v8, v8, 2
1104 ; RV64-NEXT: vor.vv v8, v9, v8
1105 ; RV64-NEXT: vsrl.vi v9, v8, 1
1106 ; RV64-NEXT: vand.vx v9, v9, a0
1107 ; RV64-NEXT: vand.vx v8, v8, a0
1108 ; RV64-NEXT: vadd.vv v8, v8, v8
1109 ; RV64-NEXT: vor.vv v8, v9, v8
1110 ; RV64-NEXT: ret
1194 ; RV64-LABEL: bitreverse_nxv2i64:
1195 ; RV64: # %bb.0:
1196 ; RV64-NEXT: li a0, 56
1197 ; RV64-NEXT: vsetvli a1, zero, e64, m2, ta, mu
1198 ; RV64-NEXT: vsrl.vx v10, v8, a0
1199 ; RV64-NEXT: li a1, 40
1200 ; RV64-NEXT: vsrl.vx v12, v8, a1
1201 ; RV64-NEXT: lui a2, 16
1202 ; RV64-NEXT: addiw a2, a2, -256
1203 ; RV64-NEXT: vand.vx v12, v12, a2
1204 ; RV64-NEXT: vor.vv v10, v12, v10
1205 ; RV64-NEXT: vsrl.vi v12, v8, 24
1206 ; RV64-NEXT: lui a2, 4080
1207 ; RV64-NEXT: vand.vx v12, v12, a2
1208 ; RV64-NEXT: vsrl.vi v14, v8, 8
1209 ; RV64-NEXT: li a2, 255
1210 ; RV64-NEXT: slli a3, a2, 24
1211 ; RV64-NEXT: vand.vx v14, v14, a3
1212 ; RV64-NEXT: vor.vv v12, v14, v12
1213 ; RV64-NEXT: vor.vv v10, v12, v10
1214 ; RV64-NEXT: vsll.vi v12, v8, 8
1215 ; RV64-NEXT: slli a3, a2, 32
1216 ; RV64-NEXT: vand.vx v12, v12, a3
1217 ; RV64-NEXT: vsll.vi v14, v8, 24
1218 ; RV64-NEXT: slli a3, a2, 40
1219 ; RV64-NEXT: vand.vx v14, v14, a3
1220 ; RV64-NEXT: vor.vv v12, v14, v12
1221 ; RV64-NEXT: vsll.vx v14, v8, a0
1222 ; RV64-NEXT: vsll.vx v8, v8, a1
1223 ; RV64-NEXT: slli a0, a2, 48
1224 ; RV64-NEXT: vand.vx v8, v8, a0
1225 ; RV64-NEXT: vor.vv v8, v14, v8
1226 ; RV64-NEXT: lui a0, %hi(.LCPI19_0)
1227 ; RV64-NEXT: ld a0, %lo(.LCPI19_0)(a0)
1228 ; RV64-NEXT: vor.vv v8, v8, v12
1229 ; RV64-NEXT: vor.vv v8, v8, v10
1230 ; RV64-NEXT: vsrl.vi v10, v8, 4
1231 ; RV64-NEXT: vand.vx v10, v10, a0
1232 ; RV64-NEXT: vand.vx v8, v8, a0
1233 ; RV64-NEXT: lui a0, %hi(.LCPI19_1)
1234 ; RV64-NEXT: ld a0, %lo(.LCPI19_1)(a0)
1235 ; RV64-NEXT: vsll.vi v8, v8, 4
1236 ; RV64-NEXT: vor.vv v8, v10, v8
1237 ; RV64-NEXT: vsrl.vi v10, v8, 2
1238 ; RV64-NEXT: vand.vx v10, v10, a0
1239 ; RV64-NEXT: vand.vx v8, v8, a0
1240 ; RV64-NEXT: lui a0, %hi(.LCPI19_2)
1241 ; RV64-NEXT: ld a0, %lo(.LCPI19_2)(a0)
1242 ; RV64-NEXT: vsll.vi v8, v8, 2
1243 ; RV64-NEXT: vor.vv v8, v10, v8
1244 ; RV64-NEXT: vsrl.vi v10, v8, 1
1245 ; RV64-NEXT: vand.vx v10, v10, a0
1246 ; RV64-NEXT: vand.vx v8, v8, a0
1247 ; RV64-NEXT: vadd.vv v8, v8, v8
1248 ; RV64-NEXT: vor.vv v8, v10, v8
1249 ; RV64-NEXT: ret
1333 ; RV64-LABEL: bitreverse_nxv4i64:
1334 ; RV64: # %bb.0:
1335 ; RV64-NEXT: li a0, 56
1336 ; RV64-NEXT: vsetvli a1, zero, e64, m4, ta, mu
1337 ; RV64-NEXT: vsrl.vx v12, v8, a0
1338 ; RV64-NEXT: li a1, 40
1339 ; RV64-NEXT: vsrl.vx v16, v8, a1
1340 ; RV64-NEXT: lui a2, 16
1341 ; RV64-NEXT: addiw a2, a2, -256
1342 ; RV64-NEXT: vand.vx v16, v16, a2
1343 ; RV64-NEXT: vor.vv v12, v16, v12
1344 ; RV64-NEXT: vsrl.vi v16, v8, 24
1345 ; RV64-NEXT: lui a2, 4080
1346 ; RV64-NEXT: vand.vx v16, v16, a2
1347 ; RV64-NEXT: vsrl.vi v20, v8, 8
1348 ; RV64-NEXT: li a2, 255
1349 ; RV64-NEXT: slli a3, a2, 24
1350 ; RV64-NEXT: vand.vx v20, v20, a3
1351 ; RV64-NEXT: vor.vv v16, v20, v16
1352 ; RV64-NEXT: vor.vv v12, v16, v12
1353 ; RV64-NEXT: vsll.vi v16, v8, 8
1354 ; RV64-NEXT: slli a3, a2, 32
1355 ; RV64-NEXT: vand.vx v16, v16, a3
1356 ; RV64-NEXT: vsll.vi v20, v8, 24
1357 ; RV64-NEXT: slli a3, a2, 40
1358 ; RV64-NEXT: vand.vx v20, v20, a3
1359 ; RV64-NEXT: vor.vv v16, v20, v16
1360 ; RV64-NEXT: vsll.vx v20, v8, a0
1361 ; RV64-NEXT: vsll.vx v8, v8, a1
1362 ; RV64-NEXT: slli a0, a2, 48
1363 ; RV64-NEXT: vand.vx v8, v8, a0
1364 ; RV64-NEXT: vor.vv v8, v20, v8
1365 ; RV64-NEXT: lui a0, %hi(.LCPI20_0)
1366 ; RV64-NEXT: ld a0, %lo(.LCPI20_0)(a0)
1367 ; RV64-NEXT: vor.vv v8, v8, v16
1368 ; RV64-NEXT: vor.vv v8, v8, v12
1369 ; RV64-NEXT: vsrl.vi v12, v8, 4
1370 ; RV64-NEXT: vand.vx v12, v12, a0
1371 ; RV64-NEXT: vand.vx v8, v8, a0
1372 ; RV64-NEXT: lui a0, %hi(.LCPI20_1)
1373 ; RV64-NEXT: ld a0, %lo(.LCPI20_1)(a0)
1374 ; RV64-NEXT: vsll.vi v8, v8, 4
1375 ; RV64-NEXT: vor.vv v8, v12, v8
1376 ; RV64-NEXT: vsrl.vi v12, v8, 2
1377 ; RV64-NEXT: vand.vx v12, v12, a0
1378 ; RV64-NEXT: vand.vx v8, v8, a0
1379 ; RV64-NEXT: lui a0, %hi(.LCPI20_2)
1380 ; RV64-NEXT: ld a0, %lo(.LCPI20_2)(a0)
1381 ; RV64-NEXT: vsll.vi v8, v8, 2
1382 ; RV64-NEXT: vor.vv v8, v12, v8
1383 ; RV64-NEXT: vsrl.vi v12, v8, 1
1384 ; RV64-NEXT: vand.vx v12, v12, a0
1385 ; RV64-NEXT: vand.vx v8, v8, a0
1386 ; RV64-NEXT: vadd.vv v8, v8, v8
1387 ; RV64-NEXT: vor.vv v8, v12, v8
1388 ; RV64-NEXT: ret
1502 ; RV64-LABEL: bitreverse_nxv8i64:
1503 ; RV64: # %bb.0:
1504 ; RV64-NEXT: li a0, 56
1505 ; RV64-NEXT: vsetvli a1, zero, e64, m8, ta, mu
1506 ; RV64-NEXT: vsrl.vx v16, v8, a0
1507 ; RV64-NEXT: li a1, 40
1508 ; RV64-NEXT: vsrl.vx v24, v8, a1
1509 ; RV64-NEXT: lui a2, 16
1510 ; RV64-NEXT: addiw a2, a2, -256
1511 ; RV64-NEXT: vand.vx v24, v24, a2
1512 ; RV64-NEXT: vor.vv v16, v24, v16
1513 ; RV64-NEXT: vsrl.vi v24, v8, 24
1514 ; RV64-NEXT: lui a2, 4080
1515 ; RV64-NEXT: vand.vx v24, v24, a2
1516 ; RV64-NEXT: vsrl.vi v0, v8, 8
1517 ; RV64-NEXT: li a2, 255
1518 ; RV64-NEXT: slli a3, a2, 24
1519 ; RV64-NEXT: vand.vx v0, v0, a3
1520 ; RV64-NEXT: vor.vv v24, v0, v24
1521 ; RV64-NEXT: vor.vv v16, v24, v16
1522 ; RV64-NEXT: vsll.vi v24, v8, 8
1523 ; RV64-NEXT: slli a3, a2, 32
1524 ; RV64-NEXT: vand.vx v24, v24, a3
1525 ; RV64-NEXT: vsll.vi v0, v8, 24
1526 ; RV64-NEXT: slli a3, a2, 40
1527 ; RV64-NEXT: vand.vx v0, v0, a3
1528 ; RV64-NEXT: vor.vv v24, v0, v24
1529 ; RV64-NEXT: vsll.vx v0, v8, a0
1530 ; RV64-NEXT: vsll.vx v8, v8, a1
1531 ; RV64-NEXT: slli a0, a2, 48
1532 ; RV64-NEXT: vand.vx v8, v8, a0
1533 ; RV64-NEXT: vor.vv v8, v0, v8
1534 ; RV64-NEXT: lui a0, %hi(.LCPI21_0)
1535 ; RV64-NEXT: ld a0, %lo(.LCPI21_0)(a0)
1536 ; RV64-NEXT: vor.vv v8, v8, v24
1537 ; RV64-NEXT: vor.vv v8, v8, v16
1538 ; RV64-NEXT: vsrl.vi v16, v8, 4
1539 ; RV64-NEXT: vand.vx v16, v16, a0
1540 ; RV64-NEXT: vand.vx v8, v8, a0
1541 ; RV64-NEXT: lui a0, %hi(.LCPI21_1)
1542 ; RV64-NEXT: ld a0, %lo(.LCPI21_1)(a0)
1543 ; RV64-NEXT: vsll.vi v8, v8, 4
1544 ; RV64-NEXT: vor.vv v8, v16, v8
1545 ; RV64-NEXT: vsrl.vi v16, v8, 2
1546 ; RV64-NEXT: vand.vx v16, v16, a0
1547 ; RV64-NEXT: vand.vx v8, v8, a0
1548 ; RV64-NEXT: lui a0, %hi(.LCPI21_2)
1549 ; RV64-NEXT: ld a0, %lo(.LCPI21_2)(a0)
1550 ; RV64-NEXT: vsll.vi v8, v8, 2
1551 ; RV64-NEXT: vor.vv v8, v16, v8
1552 ; RV64-NEXT: vsrl.vi v16, v8, 1
1553 ; RV64-NEXT: vand.vx v16, v16, a0
1554 ; RV64-NEXT: vand.vx v8, v8, a0
1555 ; RV64-NEXT: vadd.vv v8, v8, v8
1556 ; RV64-NEXT: vor.vv v8, v16, v8
1557 ; RV64-NEXT: ret