Skip to content

Commit cba1d49

Browse files
committed
pre-commit tests
1 parent 5d136f9 commit cba1d49

File tree

1 file changed

+167
-4
lines changed

1 file changed

+167
-4
lines changed

llvm/test/CodeGen/RISCV/mul.ll

Lines changed: 167 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,37 @@ define i32 @mulhu_constant(i32 %a) nounwind {
464464
ret i32 %4
465465
}
466466

467+
define i32 @muli32_p10(i32 %a) nounwind {
468+
; RV32I-LABEL: muli32_p10:
469+
; RV32I: # %bb.0:
470+
; RV32I-NEXT: li a1, 10
471+
; RV32I-NEXT: tail __mulsi3
472+
;
473+
; RV32IM-LABEL: muli32_p10:
474+
; RV32IM: # %bb.0:
475+
; RV32IM-NEXT: li a1, 10
476+
; RV32IM-NEXT: mul a0, a0, a1
477+
; RV32IM-NEXT: ret
478+
;
479+
; RV64I-LABEL: muli32_p10:
480+
; RV64I: # %bb.0:
481+
; RV64I-NEXT: addi sp, sp, -16
482+
; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
483+
; RV64I-NEXT: li a1, 10
484+
; RV64I-NEXT: call __muldi3
485+
; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
486+
; RV64I-NEXT: addi sp, sp, 16
487+
; RV64I-NEXT: ret
488+
;
489+
; RV64IM-LABEL: muli32_p10:
490+
; RV64IM: # %bb.0:
491+
; RV64IM-NEXT: li a1, 10
492+
; RV64IM-NEXT: mulw a0, a0, a1
493+
; RV64IM-NEXT: ret
494+
%1 = mul i32 %a, 10
495+
ret i32 %1
496+
}
497+
467498
define i32 @muli32_p14(i32 %a) nounwind {
468499
; RV32I-LABEL: muli32_p14:
469500
; RV32I: # %bb.0:
@@ -494,6 +525,37 @@ define i32 @muli32_p14(i32 %a) nounwind {
494525
ret i32 %1
495526
}
496527

528+
define i32 @muli32_p20(i32 %a) nounwind {
529+
; RV32I-LABEL: muli32_p20:
530+
; RV32I: # %bb.0:
531+
; RV32I-NEXT: li a1, 20
532+
; RV32I-NEXT: tail __mulsi3
533+
;
534+
; RV32IM-LABEL: muli32_p20:
535+
; RV32IM: # %bb.0:
536+
; RV32IM-NEXT: li a1, 20
537+
; RV32IM-NEXT: mul a0, a0, a1
538+
; RV32IM-NEXT: ret
539+
;
540+
; RV64I-LABEL: muli32_p20:
541+
; RV64I: # %bb.0:
542+
; RV64I-NEXT: addi sp, sp, -16
543+
; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
544+
; RV64I-NEXT: li a1, 20
545+
; RV64I-NEXT: call __muldi3
546+
; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
547+
; RV64I-NEXT: addi sp, sp, 16
548+
; RV64I-NEXT: ret
549+
;
550+
; RV64IM-LABEL: muli32_p20:
551+
; RV64IM: # %bb.0:
552+
; RV64IM-NEXT: li a1, 20
553+
; RV64IM-NEXT: mulw a0, a0, a1
554+
; RV64IM-NEXT: ret
555+
%1 = mul i32 %a, 20
556+
ret i32 %1
557+
}
558+
497559
define i32 @muli32_p28(i32 %a) nounwind {
498560
; RV32I-LABEL: muli32_p28:
499561
; RV32I: # %bb.0:
@@ -672,6 +734,34 @@ define i32 @muli32_p65(i32 %a) nounwind {
672734
ret i32 %1
673735
}
674736

737+
define i32 @muli32_p66(i32 %a) nounwind {
738+
; RV32I-LABEL: muli32_p66:
739+
; RV32I: # %bb.0:
740+
; RV32I-NEXT: slli a1, a0, 6
741+
; RV32I-NEXT: add a0, a1, a0
742+
; RV32I-NEXT: ret
743+
;
744+
; RV32IM-LABEL: muli32_p66:
745+
; RV32IM: # %bb.0:
746+
; RV32IM-NEXT: slli a1, a0, 6
747+
; RV32IM-NEXT: add a0, a1, a0
748+
; RV32IM-NEXT: ret
749+
;
750+
; RV64I-LABEL: muli32_p66:
751+
; RV64I: # %bb.0:
752+
; RV64I-NEXT: slli a1, a0, 6
753+
; RV64I-NEXT: addw a0, a1, a0
754+
; RV64I-NEXT: ret
755+
;
756+
; RV64IM-LABEL: muli32_p66:
757+
; RV64IM: # %bb.0:
758+
; RV64IM-NEXT: slli a1, a0, 6
759+
; RV64IM-NEXT: addw a0, a1, a0
760+
; RV64IM-NEXT: ret
761+
%1 = mul i32 %a, 65
762+
ret i32 %1
763+
}
764+
675765
define i32 @muli32_p63(i32 %a) nounwind {
676766
; RV32I-LABEL: muli32_p63:
677767
; RV32I: # %bb.0:
@@ -778,7 +868,80 @@ define i64 @muli64_p63(i64 %a) nounwind {
778868
ret i64 %1
779869
}
780870

871+
define i64 @muli64_p60(i64 %a) nounwind {
872+
; RV32I-LABEL: muli64_p60:
873+
; RV32I: # %bb.0:
874+
; RV32I-NEXT: addi sp, sp, -16
875+
; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
876+
; RV32I-NEXT: li a2, 60
877+
; RV32I-NEXT: li a3, 0
878+
; RV32I-NEXT: call __muldi3
879+
; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
880+
; RV32I-NEXT: addi sp, sp, 16
881+
; RV32I-NEXT: ret
882+
;
883+
; RV32IM-LABEL: muli64_p60:
884+
; RV32IM: # %bb.0:
885+
; RV32IM-NEXT: li a2, 60
886+
; RV32IM-NEXT: slli a3, a1, 2
887+
; RV32IM-NEXT: slli a1, a1, 6
888+
; RV32IM-NEXT: sub a1, a1, a3
889+
; RV32IM-NEXT: slli a3, a0, 2
890+
; RV32IM-NEXT: mulhu a2, a0, a2
891+
; RV32IM-NEXT: slli a0, a0, 6
892+
; RV32IM-NEXT: add a1, a2, a1
893+
; RV32IM-NEXT: sub a0, a0, a3
894+
; RV32IM-NEXT: ret
895+
;
896+
; RV64I-LABEL: muli64_p60:
897+
; RV64I: # %bb.0:
898+
; RV64I-NEXT: li a1, 60
899+
; RV64I-NEXT: tail __muldi3
900+
;
901+
; RV64IM-LABEL: muli64_p60:
902+
; RV64IM: # %bb.0:
903+
; RV64IM-NEXT: slli a1, a0, 2
904+
; RV64IM-NEXT: slli a0, a0, 6
905+
; RV64IM-NEXT: sub a0, a0, a1
906+
; RV64IM-NEXT: ret
907+
%1 = mul i64 %a, 60
908+
ret i64 %1
909+
}
781910

911+
define i64 @muli64_p68(i64 %a) nounwind {
912+
; RV32I-LABEL: muli64_p68:
913+
; RV32I: # %bb.0:
914+
; RV32I-NEXT: addi sp, sp, -16
915+
; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
916+
; RV32I-NEXT: li a2, 68
917+
; RV32I-NEXT: li a3, 0
918+
; RV32I-NEXT: call __muldi3
919+
; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
920+
; RV32I-NEXT: addi sp, sp, 16
921+
; RV32I-NEXT: ret
922+
;
923+
; RV32IM-LABEL: muli64_p68:
924+
; RV32IM: # %bb.0:
925+
; RV32IM-NEXT: li a2, 68
926+
; RV32IM-NEXT: mul a1, a1, a2
927+
; RV32IM-NEXT: mulhu a3, a0, a2
928+
; RV32IM-NEXT: add a1, a3, a1
929+
; RV32IM-NEXT: mul a0, a0, a2
930+
; RV32IM-NEXT: ret
931+
;
932+
; RV64I-LABEL: muli64_p68:
933+
; RV64I: # %bb.0:
934+
; RV64I-NEXT: li a1, 68
935+
; RV64I-NEXT: tail __muldi3
936+
;
937+
; RV64IM-LABEL: muli64_p68:
938+
; RV64IM: # %bb.0:
939+
; RV64IM-NEXT: li a1, 68
940+
; RV64IM-NEXT: mul a0, a0, a1
941+
; RV64IM-NEXT: ret
942+
%1 = mul i64 %a, 68
943+
ret i64 %1
944+
}
782945

783946
define i32 @muli32_m63(i32 %a) nounwind {
784947
; RV32I-LABEL: muli32_m63:
@@ -1327,10 +1490,10 @@ define i128 @muli128_m3840(i128 %a) nounwind {
13271490
; RV32I-NEXT: sltu a7, a5, a4
13281491
; RV32I-NEXT: sub a6, a6, t2
13291492
; RV32I-NEXT: mv t1, a7
1330-
; RV32I-NEXT: beq t0, a3, .LBB36_2
1493+
; RV32I-NEXT: beq t0, a3, .LBB41_2
13311494
; RV32I-NEXT: # %bb.1:
13321495
; RV32I-NEXT: sltu t1, t0, a3
1333-
; RV32I-NEXT: .LBB36_2:
1496+
; RV32I-NEXT: .LBB41_2:
13341497
; RV32I-NEXT: sub a2, a2, a1
13351498
; RV32I-NEXT: sub a1, t0, a3
13361499
; RV32I-NEXT: sub a5, a5, a4
@@ -1441,10 +1604,10 @@ define i128 @muli128_m63(i128 %a) nounwind {
14411604
; RV32I-NEXT: sltu a7, a3, a6
14421605
; RV32I-NEXT: or t0, t0, a5
14431606
; RV32I-NEXT: mv a5, a7
1444-
; RV32I-NEXT: beq a4, t0, .LBB37_2
1607+
; RV32I-NEXT: beq a4, t0, .LBB42_2
14451608
; RV32I-NEXT: # %bb.1:
14461609
; RV32I-NEXT: sltu a5, a4, t0
1447-
; RV32I-NEXT: .LBB37_2:
1610+
; RV32I-NEXT: .LBB42_2:
14481611
; RV32I-NEXT: srli t1, a4, 26
14491612
; RV32I-NEXT: slli t2, a2, 6
14501613
; RV32I-NEXT: srli t3, a2, 26

0 commit comments

Comments
 (0)