Lines Matching refs:RV64
3 …lc -mtriple=riscv64 -mattr=+v -verify-machineinstrs < %s | FileCheck %s --check-prefixes=CHECK,RV64
184 ; RV64-LABEL: ctpop_nxv1i16:
185 ; RV64: # %bb.0:
186 ; RV64-NEXT: vsetvli a0, zero, e16, mf4, ta, mu
187 ; RV64-NEXT: vsrl.vi v9, v8, 1
188 ; RV64-NEXT: lui a0, 5
189 ; RV64-NEXT: addiw a0, a0, 1365
190 ; RV64-NEXT: vand.vx v9, v9, a0
191 ; RV64-NEXT: vsub.vv v8, v8, v9
192 ; RV64-NEXT: lui a0, 3
193 ; RV64-NEXT: addiw a0, a0, 819
194 ; RV64-NEXT: vand.vx v9, v8, a0
195 ; RV64-NEXT: vsrl.vi v8, v8, 2
196 ; RV64-NEXT: vand.vx v8, v8, a0
197 ; RV64-NEXT: vadd.vv v8, v9, v8
198 ; RV64-NEXT: vsrl.vi v9, v8, 4
199 ; RV64-NEXT: vadd.vv v8, v8, v9
200 ; RV64-NEXT: lui a0, 1
201 ; RV64-NEXT: addiw a0, a0, -241
202 ; RV64-NEXT: vand.vx v8, v8, a0
203 ; RV64-NEXT: li a0, 257
204 ; RV64-NEXT: vmul.vx v8, v8, a0
205 ; RV64-NEXT: vsrl.vi v8, v8, 8
206 ; RV64-NEXT: ret
237 ; RV64-LABEL: ctpop_nxv2i16:
238 ; RV64: # %bb.0:
239 ; RV64-NEXT: vsetvli a0, zero, e16, mf2, ta, mu
240 ; RV64-NEXT: vsrl.vi v9, v8, 1
241 ; RV64-NEXT: lui a0, 5
242 ; RV64-NEXT: addiw a0, a0, 1365
243 ; RV64-NEXT: vand.vx v9, v9, a0
244 ; RV64-NEXT: vsub.vv v8, v8, v9
245 ; RV64-NEXT: lui a0, 3
246 ; RV64-NEXT: addiw a0, a0, 819
247 ; RV64-NEXT: vand.vx v9, v8, a0
248 ; RV64-NEXT: vsrl.vi v8, v8, 2
249 ; RV64-NEXT: vand.vx v8, v8, a0
250 ; RV64-NEXT: vadd.vv v8, v9, v8
251 ; RV64-NEXT: vsrl.vi v9, v8, 4
252 ; RV64-NEXT: vadd.vv v8, v8, v9
253 ; RV64-NEXT: lui a0, 1
254 ; RV64-NEXT: addiw a0, a0, -241
255 ; RV64-NEXT: vand.vx v8, v8, a0
256 ; RV64-NEXT: li a0, 257
257 ; RV64-NEXT: vmul.vx v8, v8, a0
258 ; RV64-NEXT: vsrl.vi v8, v8, 8
259 ; RV64-NEXT: ret
290 ; RV64-LABEL: ctpop_nxv4i16:
291 ; RV64: # %bb.0:
292 ; RV64-NEXT: vsetvli a0, zero, e16, m1, ta, mu
293 ; RV64-NEXT: vsrl.vi v9, v8, 1
294 ; RV64-NEXT: lui a0, 5
295 ; RV64-NEXT: addiw a0, a0, 1365
296 ; RV64-NEXT: vand.vx v9, v9, a0
297 ; RV64-NEXT: vsub.vv v8, v8, v9
298 ; RV64-NEXT: lui a0, 3
299 ; RV64-NEXT: addiw a0, a0, 819
300 ; RV64-NEXT: vand.vx v9, v8, a0
301 ; RV64-NEXT: vsrl.vi v8, v8, 2
302 ; RV64-NEXT: vand.vx v8, v8, a0
303 ; RV64-NEXT: vadd.vv v8, v9, v8
304 ; RV64-NEXT: vsrl.vi v9, v8, 4
305 ; RV64-NEXT: vadd.vv v8, v8, v9
306 ; RV64-NEXT: lui a0, 1
307 ; RV64-NEXT: addiw a0, a0, -241
308 ; RV64-NEXT: vand.vx v8, v8, a0
309 ; RV64-NEXT: li a0, 257
310 ; RV64-NEXT: vmul.vx v8, v8, a0
311 ; RV64-NEXT: vsrl.vi v8, v8, 8
312 ; RV64-NEXT: ret
343 ; RV64-LABEL: ctpop_nxv8i16:
344 ; RV64: # %bb.0:
345 ; RV64-NEXT: vsetvli a0, zero, e16, m2, ta, mu
346 ; RV64-NEXT: vsrl.vi v10, v8, 1
347 ; RV64-NEXT: lui a0, 5
348 ; RV64-NEXT: addiw a0, a0, 1365
349 ; RV64-NEXT: vand.vx v10, v10, a0
350 ; RV64-NEXT: vsub.vv v8, v8, v10
351 ; RV64-NEXT: lui a0, 3
352 ; RV64-NEXT: addiw a0, a0, 819
353 ; RV64-NEXT: vand.vx v10, v8, a0
354 ; RV64-NEXT: vsrl.vi v8, v8, 2
355 ; RV64-NEXT: vand.vx v8, v8, a0
356 ; RV64-NEXT: vadd.vv v8, v10, v8
357 ; RV64-NEXT: vsrl.vi v10, v8, 4
358 ; RV64-NEXT: vadd.vv v8, v8, v10
359 ; RV64-NEXT: lui a0, 1
360 ; RV64-NEXT: addiw a0, a0, -241
361 ; RV64-NEXT: vand.vx v8, v8, a0
362 ; RV64-NEXT: li a0, 257
363 ; RV64-NEXT: vmul.vx v8, v8, a0
364 ; RV64-NEXT: vsrl.vi v8, v8, 8
365 ; RV64-NEXT: ret
396 ; RV64-LABEL: ctpop_nxv16i16:
397 ; RV64: # %bb.0:
398 ; RV64-NEXT: vsetvli a0, zero, e16, m4, ta, mu
399 ; RV64-NEXT: vsrl.vi v12, v8, 1
400 ; RV64-NEXT: lui a0, 5
401 ; RV64-NEXT: addiw a0, a0, 1365
402 ; RV64-NEXT: vand.vx v12, v12, a0
403 ; RV64-NEXT: vsub.vv v8, v8, v12
404 ; RV64-NEXT: lui a0, 3
405 ; RV64-NEXT: addiw a0, a0, 819
406 ; RV64-NEXT: vand.vx v12, v8, a0
407 ; RV64-NEXT: vsrl.vi v8, v8, 2
408 ; RV64-NEXT: vand.vx v8, v8, a0
409 ; RV64-NEXT: vadd.vv v8, v12, v8
410 ; RV64-NEXT: vsrl.vi v12, v8, 4
411 ; RV64-NEXT: vadd.vv v8, v8, v12
412 ; RV64-NEXT: lui a0, 1
413 ; RV64-NEXT: addiw a0, a0, -241
414 ; RV64-NEXT: vand.vx v8, v8, a0
415 ; RV64-NEXT: li a0, 257
416 ; RV64-NEXT: vmul.vx v8, v8, a0
417 ; RV64-NEXT: vsrl.vi v8, v8, 8
418 ; RV64-NEXT: ret
449 ; RV64-LABEL: ctpop_nxv32i16:
450 ; RV64: # %bb.0:
451 ; RV64-NEXT: vsetvli a0, zero, e16, m8, ta, mu
452 ; RV64-NEXT: vsrl.vi v16, v8, 1
453 ; RV64-NEXT: lui a0, 5
454 ; RV64-NEXT: addiw a0, a0, 1365
455 ; RV64-NEXT: vand.vx v16, v16, a0
456 ; RV64-NEXT: vsub.vv v8, v8, v16
457 ; RV64-NEXT: lui a0, 3
458 ; RV64-NEXT: addiw a0, a0, 819
459 ; RV64-NEXT: vand.vx v16, v8, a0
460 ; RV64-NEXT: vsrl.vi v8, v8, 2
461 ; RV64-NEXT: vand.vx v8, v8, a0
462 ; RV64-NEXT: vadd.vv v8, v16, v8
463 ; RV64-NEXT: vsrl.vi v16, v8, 4
464 ; RV64-NEXT: vadd.vv v8, v8, v16
465 ; RV64-NEXT: lui a0, 1
466 ; RV64-NEXT: addiw a0, a0, -241
467 ; RV64-NEXT: vand.vx v8, v8, a0
468 ; RV64-NEXT: li a0, 257
469 ; RV64-NEXT: vmul.vx v8, v8, a0
470 ; RV64-NEXT: vsrl.vi v8, v8, 8
471 ; RV64-NEXT: ret
503 ; RV64-LABEL: ctpop_nxv1i32:
504 ; RV64: # %bb.0:
505 ; RV64-NEXT: vsetvli a0, zero, e32, mf2, ta, mu
506 ; RV64-NEXT: vsrl.vi v9, v8, 1
507 ; RV64-NEXT: lui a0, 349525
508 ; RV64-NEXT: addiw a0, a0, 1365
509 ; RV64-NEXT: vand.vx v9, v9, a0
510 ; RV64-NEXT: vsub.vv v8, v8, v9
511 ; RV64-NEXT: lui a0, 209715
512 ; RV64-NEXT: addiw a0, a0, 819
513 ; RV64-NEXT: vand.vx v9, v8, a0
514 ; RV64-NEXT: vsrl.vi v8, v8, 2
515 ; RV64-NEXT: vand.vx v8, v8, a0
516 ; RV64-NEXT: vadd.vv v8, v9, v8
517 ; RV64-NEXT: vsrl.vi v9, v8, 4
518 ; RV64-NEXT: vadd.vv v8, v8, v9
519 ; RV64-NEXT: lui a0, 61681
520 ; RV64-NEXT: addiw a0, a0, -241
521 ; RV64-NEXT: vand.vx v8, v8, a0
522 ; RV64-NEXT: lui a0, 4112
523 ; RV64-NEXT: addiw a0, a0, 257
524 ; RV64-NEXT: vmul.vx v8, v8, a0
525 ; RV64-NEXT: vsrl.vi v8, v8, 24
526 ; RV64-NEXT: ret
558 ; RV64-LABEL: ctpop_nxv2i32:
559 ; RV64: # %bb.0:
560 ; RV64-NEXT: vsetvli a0, zero, e32, m1, ta, mu
561 ; RV64-NEXT: vsrl.vi v9, v8, 1
562 ; RV64-NEXT: lui a0, 349525
563 ; RV64-NEXT: addiw a0, a0, 1365
564 ; RV64-NEXT: vand.vx v9, v9, a0
565 ; RV64-NEXT: vsub.vv v8, v8, v9
566 ; RV64-NEXT: lui a0, 209715
567 ; RV64-NEXT: addiw a0, a0, 819
568 ; RV64-NEXT: vand.vx v9, v8, a0
569 ; RV64-NEXT: vsrl.vi v8, v8, 2
570 ; RV64-NEXT: vand.vx v8, v8, a0
571 ; RV64-NEXT: vadd.vv v8, v9, v8
572 ; RV64-NEXT: vsrl.vi v9, v8, 4
573 ; RV64-NEXT: vadd.vv v8, v8, v9
574 ; RV64-NEXT: lui a0, 61681
575 ; RV64-NEXT: addiw a0, a0, -241
576 ; RV64-NEXT: vand.vx v8, v8, a0
577 ; RV64-NEXT: lui a0, 4112
578 ; RV64-NEXT: addiw a0, a0, 257
579 ; RV64-NEXT: vmul.vx v8, v8, a0
580 ; RV64-NEXT: vsrl.vi v8, v8, 24
581 ; RV64-NEXT: ret
613 ; RV64-LABEL: ctpop_nxv4i32:
614 ; RV64: # %bb.0:
615 ; RV64-NEXT: vsetvli a0, zero, e32, m2, ta, mu
616 ; RV64-NEXT: vsrl.vi v10, v8, 1
617 ; RV64-NEXT: lui a0, 349525
618 ; RV64-NEXT: addiw a0, a0, 1365
619 ; RV64-NEXT: vand.vx v10, v10, a0
620 ; RV64-NEXT: vsub.vv v8, v8, v10
621 ; RV64-NEXT: lui a0, 209715
622 ; RV64-NEXT: addiw a0, a0, 819
623 ; RV64-NEXT: vand.vx v10, v8, a0
624 ; RV64-NEXT: vsrl.vi v8, v8, 2
625 ; RV64-NEXT: vand.vx v8, v8, a0
626 ; RV64-NEXT: vadd.vv v8, v10, v8
627 ; RV64-NEXT: vsrl.vi v10, v8, 4
628 ; RV64-NEXT: vadd.vv v8, v8, v10
629 ; RV64-NEXT: lui a0, 61681
630 ; RV64-NEXT: addiw a0, a0, -241
631 ; RV64-NEXT: vand.vx v8, v8, a0
632 ; RV64-NEXT: lui a0, 4112
633 ; RV64-NEXT: addiw a0, a0, 257
634 ; RV64-NEXT: vmul.vx v8, v8, a0
635 ; RV64-NEXT: vsrl.vi v8, v8, 24
636 ; RV64-NEXT: ret
668 ; RV64-LABEL: ctpop_nxv8i32:
669 ; RV64: # %bb.0:
670 ; RV64-NEXT: vsetvli a0, zero, e32, m4, ta, mu
671 ; RV64-NEXT: vsrl.vi v12, v8, 1
672 ; RV64-NEXT: lui a0, 349525
673 ; RV64-NEXT: addiw a0, a0, 1365
674 ; RV64-NEXT: vand.vx v12, v12, a0
675 ; RV64-NEXT: vsub.vv v8, v8, v12
676 ; RV64-NEXT: lui a0, 209715
677 ; RV64-NEXT: addiw a0, a0, 819
678 ; RV64-NEXT: vand.vx v12, v8, a0
679 ; RV64-NEXT: vsrl.vi v8, v8, 2
680 ; RV64-NEXT: vand.vx v8, v8, a0
681 ; RV64-NEXT: vadd.vv v8, v12, v8
682 ; RV64-NEXT: vsrl.vi v12, v8, 4
683 ; RV64-NEXT: vadd.vv v8, v8, v12
684 ; RV64-NEXT: lui a0, 61681
685 ; RV64-NEXT: addiw a0, a0, -241
686 ; RV64-NEXT: vand.vx v8, v8, a0
687 ; RV64-NEXT: lui a0, 4112
688 ; RV64-NEXT: addiw a0, a0, 257
689 ; RV64-NEXT: vmul.vx v8, v8, a0
690 ; RV64-NEXT: vsrl.vi v8, v8, 24
691 ; RV64-NEXT: ret
723 ; RV64-LABEL: ctpop_nxv16i32:
724 ; RV64: # %bb.0:
725 ; RV64-NEXT: vsetvli a0, zero, e32, m8, ta, mu
726 ; RV64-NEXT: vsrl.vi v16, v8, 1
727 ; RV64-NEXT: lui a0, 349525
728 ; RV64-NEXT: addiw a0, a0, 1365
729 ; RV64-NEXT: vand.vx v16, v16, a0
730 ; RV64-NEXT: vsub.vv v8, v8, v16
731 ; RV64-NEXT: lui a0, 209715
732 ; RV64-NEXT: addiw a0, a0, 819
733 ; RV64-NEXT: vand.vx v16, v8, a0
734 ; RV64-NEXT: vsrl.vi v8, v8, 2
735 ; RV64-NEXT: vand.vx v8, v8, a0
736 ; RV64-NEXT: vadd.vv v8, v16, v8
737 ; RV64-NEXT: vsrl.vi v16, v8, 4
738 ; RV64-NEXT: vadd.vv v8, v8, v16
739 ; RV64-NEXT: lui a0, 61681
740 ; RV64-NEXT: addiw a0, a0, -241
741 ; RV64-NEXT: vand.vx v8, v8, a0
742 ; RV64-NEXT: lui a0, 4112
743 ; RV64-NEXT: addiw a0, a0, 257
744 ; RV64-NEXT: vmul.vx v8, v8, a0
745 ; RV64-NEXT: vsrl.vi v8, v8, 24
746 ; RV64-NEXT: ret
795 ; RV64-LABEL: ctpop_nxv1i64:
796 ; RV64: # %bb.0:
797 ; RV64-NEXT: vsetvli a0, zero, e64, m1, ta, mu
798 ; RV64-NEXT: lui a0, %hi(.LCPI18_0)
799 ; RV64-NEXT: ld a0, %lo(.LCPI18_0)(a0)
800 ; RV64-NEXT: lui a1, %hi(.LCPI18_1)
801 ; RV64-NEXT: ld a1, %lo(.LCPI18_1)(a1)
802 ; RV64-NEXT: vsrl.vi v9, v8, 1
803 ; RV64-NEXT: vand.vx v9, v9, a0
804 ; RV64-NEXT: vsub.vv v8, v8, v9
805 ; RV64-NEXT: vand.vx v9, v8, a1
806 ; RV64-NEXT: vsrl.vi v8, v8, 2
807 ; RV64-NEXT: vand.vx v8, v8, a1
808 ; RV64-NEXT: vadd.vv v8, v9, v8
809 ; RV64-NEXT: lui a0, %hi(.LCPI18_2)
810 ; RV64-NEXT: ld a0, %lo(.LCPI18_2)(a0)
811 ; RV64-NEXT: lui a1, %hi(.LCPI18_3)
812 ; RV64-NEXT: ld a1, %lo(.LCPI18_3)(a1)
813 ; RV64-NEXT: vsrl.vi v9, v8, 4
814 ; RV64-NEXT: vadd.vv v8, v8, v9
815 ; RV64-NEXT: vand.vx v8, v8, a0
816 ; RV64-NEXT: vmul.vx v8, v8, a1
817 ; RV64-NEXT: li a0, 56
818 ; RV64-NEXT: vsrl.vx v8, v8, a0
819 ; RV64-NEXT: ret
868 ; RV64-LABEL: ctpop_nxv2i64:
869 ; RV64: # %bb.0:
870 ; RV64-NEXT: vsetvli a0, zero, e64, m2, ta, mu
871 ; RV64-NEXT: lui a0, %hi(.LCPI19_0)
872 ; RV64-NEXT: ld a0, %lo(.LCPI19_0)(a0)
873 ; RV64-NEXT: lui a1, %hi(.LCPI19_1)
874 ; RV64-NEXT: ld a1, %lo(.LCPI19_1)(a1)
875 ; RV64-NEXT: vsrl.vi v10, v8, 1
876 ; RV64-NEXT: vand.vx v10, v10, a0
877 ; RV64-NEXT: vsub.vv v8, v8, v10
878 ; RV64-NEXT: vand.vx v10, v8, a1
879 ; RV64-NEXT: vsrl.vi v8, v8, 2
880 ; RV64-NEXT: vand.vx v8, v8, a1
881 ; RV64-NEXT: vadd.vv v8, v10, v8
882 ; RV64-NEXT: lui a0, %hi(.LCPI19_2)
883 ; RV64-NEXT: ld a0, %lo(.LCPI19_2)(a0)
884 ; RV64-NEXT: lui a1, %hi(.LCPI19_3)
885 ; RV64-NEXT: ld a1, %lo(.LCPI19_3)(a1)
886 ; RV64-NEXT: vsrl.vi v10, v8, 4
887 ; RV64-NEXT: vadd.vv v8, v8, v10
888 ; RV64-NEXT: vand.vx v8, v8, a0
889 ; RV64-NEXT: vmul.vx v8, v8, a1
890 ; RV64-NEXT: li a0, 56
891 ; RV64-NEXT: vsrl.vx v8, v8, a0
892 ; RV64-NEXT: ret
941 ; RV64-LABEL: ctpop_nxv4i64:
942 ; RV64: # %bb.0:
943 ; RV64-NEXT: vsetvli a0, zero, e64, m4, ta, mu
944 ; RV64-NEXT: lui a0, %hi(.LCPI20_0)
945 ; RV64-NEXT: ld a0, %lo(.LCPI20_0)(a0)
946 ; RV64-NEXT: lui a1, %hi(.LCPI20_1)
947 ; RV64-NEXT: ld a1, %lo(.LCPI20_1)(a1)
948 ; RV64-NEXT: vsrl.vi v12, v8, 1
949 ; RV64-NEXT: vand.vx v12, v12, a0
950 ; RV64-NEXT: vsub.vv v8, v8, v12
951 ; RV64-NEXT: vand.vx v12, v8, a1
952 ; RV64-NEXT: vsrl.vi v8, v8, 2
953 ; RV64-NEXT: vand.vx v8, v8, a1
954 ; RV64-NEXT: vadd.vv v8, v12, v8
955 ; RV64-NEXT: lui a0, %hi(.LCPI20_2)
956 ; RV64-NEXT: ld a0, %lo(.LCPI20_2)(a0)
957 ; RV64-NEXT: lui a1, %hi(.LCPI20_3)
958 ; RV64-NEXT: ld a1, %lo(.LCPI20_3)(a1)
959 ; RV64-NEXT: vsrl.vi v12, v8, 4
960 ; RV64-NEXT: vadd.vv v8, v8, v12
961 ; RV64-NEXT: vand.vx v8, v8, a0
962 ; RV64-NEXT: vmul.vx v8, v8, a1
963 ; RV64-NEXT: li a0, 56
964 ; RV64-NEXT: vsrl.vx v8, v8, a0
965 ; RV64-NEXT: ret
1014 ; RV64-LABEL: ctpop_nxv8i64:
1015 ; RV64: # %bb.0:
1016 ; RV64-NEXT: vsetvli a0, zero, e64, m8, ta, mu
1017 ; RV64-NEXT: lui a0, %hi(.LCPI21_0)
1018 ; RV64-NEXT: ld a0, %lo(.LCPI21_0)(a0)
1019 ; RV64-NEXT: lui a1, %hi(.LCPI21_1)
1020 ; RV64-NEXT: ld a1, %lo(.LCPI21_1)(a1)
1021 ; RV64-NEXT: vsrl.vi v16, v8, 1
1022 ; RV64-NEXT: vand.vx v16, v16, a0
1023 ; RV64-NEXT: vsub.vv v8, v8, v16
1024 ; RV64-NEXT: vand.vx v16, v8, a1
1025 ; RV64-NEXT: vsrl.vi v8, v8, 2
1026 ; RV64-NEXT: vand.vx v8, v8, a1
1027 ; RV64-NEXT: vadd.vv v8, v16, v8
1028 ; RV64-NEXT: lui a0, %hi(.LCPI21_2)
1029 ; RV64-NEXT: ld a0, %lo(.LCPI21_2)(a0)
1030 ; RV64-NEXT: lui a1, %hi(.LCPI21_3)
1031 ; RV64-NEXT: ld a1, %lo(.LCPI21_3)(a1)
1032 ; RV64-NEXT: vsrl.vi v16, v8, 4
1033 ; RV64-NEXT: vadd.vv v8, v8, v16
1034 ; RV64-NEXT: vand.vx v8, v8, a0
1035 ; RV64-NEXT: vmul.vx v8, v8, a1
1036 ; RV64-NEXT: li a0, 56
1037 ; RV64-NEXT: vsrl.vx v8, v8, a0
1038 ; RV64-NEXT: ret