@@ -513,46 +513,24 @@ define i64 @test_cttz_i64(i64 %a) nounwind {
513
513
; RV64I-NEXT: addi a1, a0, -1
514
514
; RV64I-NEXT: not a0, a0
515
515
; RV64I-NEXT: and a0, a0, a1
516
- ; RV64I-NEXT: srli a1, a0, 1
517
- ; RV64I-NEXT: lui a2, 21845
518
- ; RV64I-NEXT: addiw a2, a2, 1365
519
- ; RV64I-NEXT: slli a2, a2, 12
520
- ; RV64I-NEXT: addi a2, a2, 1365
521
- ; RV64I-NEXT: slli a2, a2, 12
522
- ; RV64I-NEXT: addi a2, a2, 1365
523
- ; RV64I-NEXT: slli a2, a2, 12
524
- ; RV64I-NEXT: addi a2, a2, 1365
525
- ; RV64I-NEXT: and a1, a1, a2
516
+ ; RV64I-NEXT: lui a1, %hi(.LCPI7_0)
517
+ ; RV64I-NEXT: ld a1, %lo(.LCPI7_0)(a1)
518
+ ; RV64I-NEXT: lui a2, %hi(.LCPI7_1)
519
+ ; RV64I-NEXT: ld a2, %lo(.LCPI7_1)(a2)
520
+ ; RV64I-NEXT: srli a3, a0, 1
521
+ ; RV64I-NEXT: and a1, a3, a1
526
522
; RV64I-NEXT: sub a0, a0, a1
527
- ; RV64I-NEXT: lui a1, 13107
528
- ; RV64I-NEXT: addiw a1, a1, 819
529
- ; RV64I-NEXT: slli a1, a1, 12
530
- ; RV64I-NEXT: addi a1, a1, 819
531
- ; RV64I-NEXT: slli a1, a1, 12
532
- ; RV64I-NEXT: addi a1, a1, 819
533
- ; RV64I-NEXT: slli a1, a1, 12
534
- ; RV64I-NEXT: addi a1, a1, 819
535
- ; RV64I-NEXT: and a2, a0, a1
523
+ ; RV64I-NEXT: and a1, a0, a2
536
524
; RV64I-NEXT: srli a0, a0, 2
537
- ; RV64I-NEXT: and a0, a0, a1
538
- ; RV64I-NEXT: add a0, a2, a0
525
+ ; RV64I-NEXT: and a0, a0, a2
526
+ ; RV64I-NEXT: lui a2, %hi(.LCPI7_2)
527
+ ; RV64I-NEXT: ld a2, %lo(.LCPI7_2)(a2)
528
+ ; RV64I-NEXT: add a0, a1, a0
539
529
; RV64I-NEXT: srli a1, a0, 4
540
530
; RV64I-NEXT: add a0, a0, a1
541
- ; RV64I-NEXT: lui a1, 3855
542
- ; RV64I-NEXT: addiw a1, a1, 241
543
- ; RV64I-NEXT: slli a1, a1, 12
544
- ; RV64I-NEXT: addi a1, a1, -241
545
- ; RV64I-NEXT: slli a1, a1, 12
546
- ; RV64I-NEXT: addi a1, a1, 241
547
- ; RV64I-NEXT: slli a1, a1, 12
548
- ; RV64I-NEXT: addi a1, a1, -241
549
- ; RV64I-NEXT: and a0, a0, a1
550
- ; RV64I-NEXT: lui a1, 4112
551
- ; RV64I-NEXT: addiw a1, a1, 257
552
- ; RV64I-NEXT: slli a1, a1, 16
553
- ; RV64I-NEXT: addi a1, a1, 257
554
- ; RV64I-NEXT: slli a1, a1, 16
555
- ; RV64I-NEXT: addi a1, a1, 257
531
+ ; RV64I-NEXT: and a0, a0, a2
532
+ ; RV64I-NEXT: lui a1, %hi(.LCPI7_3)
533
+ ; RV64I-NEXT: ld a1, %lo(.LCPI7_3)(a1)
556
534
; RV64I-NEXT: call __muldi3@plt
557
535
; RV64I-NEXT: srli a0, a0, 56
558
536
; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
@@ -811,46 +789,24 @@ define i64 @test_cttz_i64_zero_undef(i64 %a) nounwind {
811
789
; RV64I-NEXT: addi a1, a0, -1
812
790
; RV64I-NEXT: not a0, a0
813
791
; RV64I-NEXT: and a0, a0, a1
814
- ; RV64I-NEXT: srli a1, a0, 1
815
- ; RV64I-NEXT: lui a2, 21845
816
- ; RV64I-NEXT: addiw a2, a2, 1365
817
- ; RV64I-NEXT: slli a2, a2, 12
818
- ; RV64I-NEXT: addi a2, a2, 1365
819
- ; RV64I-NEXT: slli a2, a2, 12
820
- ; RV64I-NEXT: addi a2, a2, 1365
821
- ; RV64I-NEXT: slli a2, a2, 12
822
- ; RV64I-NEXT: addi a2, a2, 1365
823
- ; RV64I-NEXT: and a1, a1, a2
792
+ ; RV64I-NEXT: lui a1, %hi(.LCPI11_0)
793
+ ; RV64I-NEXT: ld a1, %lo(.LCPI11_0)(a1)
794
+ ; RV64I-NEXT: lui a2, %hi(.LCPI11_1)
795
+ ; RV64I-NEXT: ld a2, %lo(.LCPI11_1)(a2)
796
+ ; RV64I-NEXT: srli a3, a0, 1
797
+ ; RV64I-NEXT: and a1, a3, a1
824
798
; RV64I-NEXT: sub a0, a0, a1
825
- ; RV64I-NEXT: lui a1, 13107
826
- ; RV64I-NEXT: addiw a1, a1, 819
827
- ; RV64I-NEXT: slli a1, a1, 12
828
- ; RV64I-NEXT: addi a1, a1, 819
829
- ; RV64I-NEXT: slli a1, a1, 12
830
- ; RV64I-NEXT: addi a1, a1, 819
831
- ; RV64I-NEXT: slli a1, a1, 12
832
- ; RV64I-NEXT: addi a1, a1, 819
833
- ; RV64I-NEXT: and a2, a0, a1
799
+ ; RV64I-NEXT: and a1, a0, a2
834
800
; RV64I-NEXT: srli a0, a0, 2
835
- ; RV64I-NEXT: and a0, a0, a1
836
- ; RV64I-NEXT: add a0, a2, a0
801
+ ; RV64I-NEXT: and a0, a0, a2
802
+ ; RV64I-NEXT: lui a2, %hi(.LCPI11_2)
803
+ ; RV64I-NEXT: ld a2, %lo(.LCPI11_2)(a2)
804
+ ; RV64I-NEXT: add a0, a1, a0
837
805
; RV64I-NEXT: srli a1, a0, 4
838
806
; RV64I-NEXT: add a0, a0, a1
839
- ; RV64I-NEXT: lui a1, 3855
840
- ; RV64I-NEXT: addiw a1, a1, 241
841
- ; RV64I-NEXT: slli a1, a1, 12
842
- ; RV64I-NEXT: addi a1, a1, -241
843
- ; RV64I-NEXT: slli a1, a1, 12
844
- ; RV64I-NEXT: addi a1, a1, 241
845
- ; RV64I-NEXT: slli a1, a1, 12
846
- ; RV64I-NEXT: addi a1, a1, -241
847
- ; RV64I-NEXT: and a0, a0, a1
848
- ; RV64I-NEXT: lui a1, 4112
849
- ; RV64I-NEXT: addiw a1, a1, 257
850
- ; RV64I-NEXT: slli a1, a1, 16
851
- ; RV64I-NEXT: addi a1, a1, 257
852
- ; RV64I-NEXT: slli a1, a1, 16
853
- ; RV64I-NEXT: addi a1, a1, 257
807
+ ; RV64I-NEXT: and a0, a0, a2
808
+ ; RV64I-NEXT: lui a1, %hi(.LCPI11_3)
809
+ ; RV64I-NEXT: ld a1, %lo(.LCPI11_3)(a1)
854
810
; RV64I-NEXT: call __muldi3@plt
855
811
; RV64I-NEXT: srli a0, a0, 56
856
812
; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
@@ -982,46 +938,24 @@ define i64 @test_ctpop_i64(i64 %a) nounwind {
982
938
; RV64I: # %bb.0:
983
939
; RV64I-NEXT: addi sp, sp, -16
984
940
; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
985
- ; RV64I-NEXT: srli a1, a0, 1
986
- ; RV64I-NEXT: lui a2, 21845
987
- ; RV64I-NEXT: addiw a2, a2, 1365
988
- ; RV64I-NEXT: slli a2, a2, 12
989
- ; RV64I-NEXT: addi a2, a2, 1365
990
- ; RV64I-NEXT: slli a2, a2, 12
991
- ; RV64I-NEXT: addi a2, a2, 1365
992
- ; RV64I-NEXT: slli a2, a2, 12
993
- ; RV64I-NEXT: addi a2, a2, 1365
994
- ; RV64I-NEXT: and a1, a1, a2
941
+ ; RV64I-NEXT: lui a1, %hi(.LCPI13_0)
942
+ ; RV64I-NEXT: ld a1, %lo(.LCPI13_0)(a1)
943
+ ; RV64I-NEXT: lui a2, %hi(.LCPI13_1)
944
+ ; RV64I-NEXT: ld a2, %lo(.LCPI13_1)(a2)
945
+ ; RV64I-NEXT: srli a3, a0, 1
946
+ ; RV64I-NEXT: and a1, a3, a1
995
947
; RV64I-NEXT: sub a0, a0, a1
996
- ; RV64I-NEXT: lui a1, 13107
997
- ; RV64I-NEXT: addiw a1, a1, 819
998
- ; RV64I-NEXT: slli a1, a1, 12
999
- ; RV64I-NEXT: addi a1, a1, 819
1000
- ; RV64I-NEXT: slli a1, a1, 12
1001
- ; RV64I-NEXT: addi a1, a1, 819
1002
- ; RV64I-NEXT: slli a1, a1, 12
1003
- ; RV64I-NEXT: addi a1, a1, 819
1004
- ; RV64I-NEXT: and a2, a0, a1
948
+ ; RV64I-NEXT: and a1, a0, a2
1005
949
; RV64I-NEXT: srli a0, a0, 2
1006
- ; RV64I-NEXT: and a0, a0, a1
1007
- ; RV64I-NEXT: add a0, a2, a0
950
+ ; RV64I-NEXT: and a0, a0, a2
951
+ ; RV64I-NEXT: lui a2, %hi(.LCPI13_2)
952
+ ; RV64I-NEXT: ld a2, %lo(.LCPI13_2)(a2)
953
+ ; RV64I-NEXT: add a0, a1, a0
1008
954
; RV64I-NEXT: srli a1, a0, 4
1009
955
; RV64I-NEXT: add a0, a0, a1
1010
- ; RV64I-NEXT: lui a1, 3855
1011
- ; RV64I-NEXT: addiw a1, a1, 241
1012
- ; RV64I-NEXT: slli a1, a1, 12
1013
- ; RV64I-NEXT: addi a1, a1, -241
1014
- ; RV64I-NEXT: slli a1, a1, 12
1015
- ; RV64I-NEXT: addi a1, a1, 241
1016
- ; RV64I-NEXT: slli a1, a1, 12
1017
- ; RV64I-NEXT: addi a1, a1, -241
1018
- ; RV64I-NEXT: and a0, a0, a1
1019
- ; RV64I-NEXT: lui a1, 4112
1020
- ; RV64I-NEXT: addiw a1, a1, 257
1021
- ; RV64I-NEXT: slli a1, a1, 16
1022
- ; RV64I-NEXT: addi a1, a1, 257
1023
- ; RV64I-NEXT: slli a1, a1, 16
1024
- ; RV64I-NEXT: addi a1, a1, 257
956
+ ; RV64I-NEXT: and a0, a0, a2
957
+ ; RV64I-NEXT: lui a1, %hi(.LCPI13_3)
958
+ ; RV64I-NEXT: ld a1, %lo(.LCPI13_3)(a1)
1025
959
; RV64I-NEXT: call __muldi3@plt
1026
960
; RV64I-NEXT: srli a0, a0, 56
1027
961
; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
0 commit comments