@@ -494,6 +494,37 @@ define i32 @muli32_p14(i32 %a) nounwind {
494494 ret i32 %1
495495}
496496
497+ define i32 @muli32_p18 (i32 %a ) nounwind {
498+ ; RV32I-LABEL: muli32_p18:
499+ ; RV32I: # %bb.0:
500+ ; RV32I-NEXT: li a1, 18
501+ ; RV32I-NEXT: tail __mulsi3
502+ ;
503+ ; RV32IM-LABEL: muli32_p18:
504+ ; RV32IM: # %bb.0:
505+ ; RV32IM-NEXT: li a1, 18
506+ ; RV32IM-NEXT: mul a0, a0, a1
507+ ; RV32IM-NEXT: ret
508+ ;
509+ ; RV64I-LABEL: muli32_p18:
510+ ; RV64I: # %bb.0:
511+ ; RV64I-NEXT: addi sp, sp, -16
512+ ; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
513+ ; RV64I-NEXT: li a1, 18
514+ ; RV64I-NEXT: call __muldi3
515+ ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
516+ ; RV64I-NEXT: addi sp, sp, 16
517+ ; RV64I-NEXT: ret
518+ ;
519+ ; RV64IM-LABEL: muli32_p18:
520+ ; RV64IM: # %bb.0:
521+ ; RV64IM-NEXT: li a1, 18
522+ ; RV64IM-NEXT: mulw a0, a0, a1
523+ ; RV64IM-NEXT: ret
524+ %1 = mul i32 %a , 18
525+ ret i32 %1
526+ }
527+
497528define i32 @muli32_p28 (i32 %a ) nounwind {
498529; RV32I-LABEL: muli32_p28:
499530; RV32I: # %bb.0:
@@ -554,6 +585,68 @@ define i32 @muli32_p30(i32 %a) nounwind {
554585 ret i32 %1
555586}
556587
588+ define i32 @muli32_p34 (i32 %a ) nounwind {
589+ ; RV32I-LABEL: muli32_p34:
590+ ; RV32I: # %bb.0:
591+ ; RV32I-NEXT: li a1, 34
592+ ; RV32I-NEXT: tail __mulsi3
593+ ;
594+ ; RV32IM-LABEL: muli32_p34:
595+ ; RV32IM: # %bb.0:
596+ ; RV32IM-NEXT: li a1, 34
597+ ; RV32IM-NEXT: mul a0, a0, a1
598+ ; RV32IM-NEXT: ret
599+ ;
600+ ; RV64I-LABEL: muli32_p34:
601+ ; RV64I: # %bb.0:
602+ ; RV64I-NEXT: addi sp, sp, -16
603+ ; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
604+ ; RV64I-NEXT: li a1, 34
605+ ; RV64I-NEXT: call __muldi3
606+ ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
607+ ; RV64I-NEXT: addi sp, sp, 16
608+ ; RV64I-NEXT: ret
609+ ;
610+ ; RV64IM-LABEL: muli32_p34:
611+ ; RV64IM: # %bb.0:
612+ ; RV64IM-NEXT: li a1, 34
613+ ; RV64IM-NEXT: mulw a0, a0, a1
614+ ; RV64IM-NEXT: ret
615+ %1 = mul i32 %a , 34
616+ ret i32 %1
617+ }
618+
619+ define i32 @muli32_p36 (i32 %a ) nounwind {
620+ ; RV32I-LABEL: muli32_p36:
621+ ; RV32I: # %bb.0:
622+ ; RV32I-NEXT: li a1, 36
623+ ; RV32I-NEXT: tail __mulsi3
624+ ;
625+ ; RV32IM-LABEL: muli32_p36:
626+ ; RV32IM: # %bb.0:
627+ ; RV32IM-NEXT: li a1, 36
628+ ; RV32IM-NEXT: mul a0, a0, a1
629+ ; RV32IM-NEXT: ret
630+ ;
631+ ; RV64I-LABEL: muli32_p36:
632+ ; RV64I: # %bb.0:
633+ ; RV64I-NEXT: addi sp, sp, -16
634+ ; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
635+ ; RV64I-NEXT: li a1, 36
636+ ; RV64I-NEXT: call __muldi3
637+ ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
638+ ; RV64I-NEXT: addi sp, sp, 16
639+ ; RV64I-NEXT: ret
640+ ;
641+ ; RV64IM-LABEL: muli32_p36:
642+ ; RV64IM: # %bb.0:
643+ ; RV64IM-NEXT: li a1, 36
644+ ; RV64IM-NEXT: mulw a0, a0, a1
645+ ; RV64IM-NEXT: ret
646+ %1 = mul i32 %a , 36
647+ ret i32 %1
648+ }
649+
557650define i32 @muli32_p56 (i32 %a ) nounwind {
558651; RV32I-LABEL: muli32_p56:
559652; RV32I: # %bb.0:
@@ -778,7 +871,40 @@ define i64 @muli64_p63(i64 %a) nounwind {
778871 ret i64 %1
779872}
780873
781-
874+ define i64 @muli64_p72 (i64 %a ) nounwind {
875+ ; RV32I-LABEL: muli64_p72:
876+ ; RV32I: # %bb.0:
877+ ; RV32I-NEXT: addi sp, sp, -16
878+ ; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
879+ ; RV32I-NEXT: li a2, 72
880+ ; RV32I-NEXT: li a3, 0
881+ ; RV32I-NEXT: call __muldi3
882+ ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
883+ ; RV32I-NEXT: addi sp, sp, 16
884+ ; RV32I-NEXT: ret
885+ ;
886+ ; RV32IM-LABEL: muli64_p72:
887+ ; RV32IM: # %bb.0:
888+ ; RV32IM-NEXT: li a2, 72
889+ ; RV32IM-NEXT: mul a1, a1, a2
890+ ; RV32IM-NEXT: mulhu a3, a0, a2
891+ ; RV32IM-NEXT: add a1, a3, a1
892+ ; RV32IM-NEXT: mul a0, a0, a2
893+ ; RV32IM-NEXT: ret
894+ ;
895+ ; RV64I-LABEL: muli64_p72:
896+ ; RV64I: # %bb.0:
897+ ; RV64I-NEXT: li a1, 72
898+ ; RV64I-NEXT: tail __muldi3
899+ ;
900+ ; RV64IM-LABEL: muli64_p72:
901+ ; RV64IM: # %bb.0:
902+ ; RV64IM-NEXT: li a1, 72
903+ ; RV64IM-NEXT: mul a0, a0, a1
904+ ; RV64IM-NEXT: ret
905+ %1 = mul i64 %a , 72
906+ ret i64 %1
907+ }
782908
783909define i32 @muli32_m63 (i32 %a ) nounwind {
784910; RV32I-LABEL: muli32_m63:
@@ -1327,10 +1453,10 @@ define i128 @muli128_m3840(i128 %a) nounwind {
13271453; RV32I-NEXT: sltu a7, a5, a4
13281454; RV32I-NEXT: sub a6, a6, t2
13291455; RV32I-NEXT: mv t1, a7
1330- ; RV32I-NEXT: beq t0, a3, .LBB36_2
1456+ ; RV32I-NEXT: beq t0, a3, .LBB40_2
13311457; RV32I-NEXT: # %bb.1:
13321458; RV32I-NEXT: sltu t1, t0, a3
1333- ; RV32I-NEXT: .LBB36_2 :
1459+ ; RV32I-NEXT: .LBB40_2 :
13341460; RV32I-NEXT: sub a2, a2, a1
13351461; RV32I-NEXT: sub a1, t0, a3
13361462; RV32I-NEXT: sub a5, a5, a4
@@ -1441,10 +1567,10 @@ define i128 @muli128_m63(i128 %a) nounwind {
14411567; RV32I-NEXT: sltu a7, a3, a6
14421568; RV32I-NEXT: or t0, t0, a5
14431569; RV32I-NEXT: mv a5, a7
1444- ; RV32I-NEXT: beq a4, t0, .LBB37_2
1570+ ; RV32I-NEXT: beq a4, t0, .LBB41_2
14451571; RV32I-NEXT: # %bb.1:
14461572; RV32I-NEXT: sltu a5, a4, t0
1447- ; RV32I-NEXT: .LBB37_2 :
1573+ ; RV32I-NEXT: .LBB41_2 :
14481574; RV32I-NEXT: srli t1, a4, 26
14491575; RV32I-NEXT: slli t2, a2, 6
14501576; RV32I-NEXT: srli t3, a2, 26
0 commit comments