@@ -453,6 +453,45 @@ define double @exp2_f64(double %a) nounwind {
453453 ret double %1
454454}
455455
456+ define double @exp10_f64 (double %a ) nounwind {
457+ ; CHECKIFD-LABEL: exp10_f64:
458+ ; CHECKIFD: # %bb.0:
459+ ; CHECKIFD-NEXT: tail exp10
460+ ;
461+ ; RV32IZFINXZDINX-LABEL: exp10_f64:
462+ ; RV32IZFINXZDINX: # %bb.0:
463+ ; RV32IZFINXZDINX-NEXT: addi sp, sp, -16
464+ ; RV32IZFINXZDINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
465+ ; RV32IZFINXZDINX-NEXT: call exp10
466+ ; RV32IZFINXZDINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
467+ ; RV32IZFINXZDINX-NEXT: addi sp, sp, 16
468+ ; RV32IZFINXZDINX-NEXT: ret
469+ ;
470+ ; RV64IZFINXZDINX-LABEL: exp10_f64:
471+ ; RV64IZFINXZDINX: # %bb.0:
472+ ; RV64IZFINXZDINX-NEXT: tail exp10
473+ ;
474+ ; RV32I-LABEL: exp10_f64:
475+ ; RV32I: # %bb.0:
476+ ; RV32I-NEXT: addi sp, sp, -16
477+ ; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
478+ ; RV32I-NEXT: call exp10
479+ ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
480+ ; RV32I-NEXT: addi sp, sp, 16
481+ ; RV32I-NEXT: ret
482+ ;
483+ ; RV64I-LABEL: exp10_f64:
484+ ; RV64I: # %bb.0:
485+ ; RV64I-NEXT: addi sp, sp, -16
486+ ; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
487+ ; RV64I-NEXT: call exp10
488+ ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
489+ ; RV64I-NEXT: addi sp, sp, 16
490+ ; RV64I-NEXT: ret
491+ %1 = call double @llvm.exp10.f64 (double %a )
492+ ret double %1
493+ }
494+
456495declare double @llvm.log.f64 (double )
457496
458497define double @log_f64 (double %a ) nounwind {
@@ -844,16 +883,16 @@ define double @floor_f64(double %a) nounwind {
844883;
845884; RV64IFD-LABEL: floor_f64:
846885; RV64IFD: # %bb.0:
847- ; RV64IFD-NEXT: lui a0, %hi(.LCPI17_0 )
848- ; RV64IFD-NEXT: fld fa5, %lo(.LCPI17_0 )(a0)
886+ ; RV64IFD-NEXT: lui a0, %hi(.LCPI18_0 )
887+ ; RV64IFD-NEXT: fld fa5, %lo(.LCPI18_0 )(a0)
849888; RV64IFD-NEXT: fabs.d fa4, fa0
850889; RV64IFD-NEXT: flt.d a0, fa4, fa5
851- ; RV64IFD-NEXT: beqz a0, .LBB17_2
890+ ; RV64IFD-NEXT: beqz a0, .LBB18_2
852891; RV64IFD-NEXT: # %bb.1:
853892; RV64IFD-NEXT: fcvt.l.d a0, fa0, rdn
854893; RV64IFD-NEXT: fcvt.d.l fa5, a0, rdn
855894; RV64IFD-NEXT: fsgnj.d fa0, fa5, fa0
856- ; RV64IFD-NEXT: .LBB17_2 :
895+ ; RV64IFD-NEXT: .LBB18_2 :
857896; RV64IFD-NEXT: ret
858897;
859898; RV32IZFINXZDINX-LABEL: floor_f64:
@@ -871,12 +910,12 @@ define double @floor_f64(double %a) nounwind {
871910; RV64IZFINXZDINX-NEXT: slli a1, a1, 52
872911; RV64IZFINXZDINX-NEXT: fabs.d a2, a0
873912; RV64IZFINXZDINX-NEXT: flt.d a1, a2, a1
874- ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB17_2
913+ ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB18_2
875914; RV64IZFINXZDINX-NEXT: # %bb.1:
876915; RV64IZFINXZDINX-NEXT: fcvt.l.d a1, a0, rdn
877916; RV64IZFINXZDINX-NEXT: fcvt.d.l a1, a1, rdn
878917; RV64IZFINXZDINX-NEXT: fsgnj.d a0, a1, a0
879- ; RV64IZFINXZDINX-NEXT: .LBB17_2 :
918+ ; RV64IZFINXZDINX-NEXT: .LBB18_2 :
880919; RV64IZFINXZDINX-NEXT: ret
881920;
882921; RV32I-LABEL: floor_f64:
@@ -909,16 +948,16 @@ define double @ceil_f64(double %a) nounwind {
909948;
910949; RV64IFD-LABEL: ceil_f64:
911950; RV64IFD: # %bb.0:
912- ; RV64IFD-NEXT: lui a0, %hi(.LCPI18_0 )
913- ; RV64IFD-NEXT: fld fa5, %lo(.LCPI18_0 )(a0)
951+ ; RV64IFD-NEXT: lui a0, %hi(.LCPI19_0 )
952+ ; RV64IFD-NEXT: fld fa5, %lo(.LCPI19_0 )(a0)
914953; RV64IFD-NEXT: fabs.d fa4, fa0
915954; RV64IFD-NEXT: flt.d a0, fa4, fa5
916- ; RV64IFD-NEXT: beqz a0, .LBB18_2
955+ ; RV64IFD-NEXT: beqz a0, .LBB19_2
917956; RV64IFD-NEXT: # %bb.1:
918957; RV64IFD-NEXT: fcvt.l.d a0, fa0, rup
919958; RV64IFD-NEXT: fcvt.d.l fa5, a0, rup
920959; RV64IFD-NEXT: fsgnj.d fa0, fa5, fa0
921- ; RV64IFD-NEXT: .LBB18_2 :
960+ ; RV64IFD-NEXT: .LBB19_2 :
922961; RV64IFD-NEXT: ret
923962;
924963; RV32IZFINXZDINX-LABEL: ceil_f64:
@@ -936,12 +975,12 @@ define double @ceil_f64(double %a) nounwind {
936975; RV64IZFINXZDINX-NEXT: slli a1, a1, 52
937976; RV64IZFINXZDINX-NEXT: fabs.d a2, a0
938977; RV64IZFINXZDINX-NEXT: flt.d a1, a2, a1
939- ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB18_2
978+ ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB19_2
940979; RV64IZFINXZDINX-NEXT: # %bb.1:
941980; RV64IZFINXZDINX-NEXT: fcvt.l.d a1, a0, rup
942981; RV64IZFINXZDINX-NEXT: fcvt.d.l a1, a1, rup
943982; RV64IZFINXZDINX-NEXT: fsgnj.d a0, a1, a0
944- ; RV64IZFINXZDINX-NEXT: .LBB18_2 :
983+ ; RV64IZFINXZDINX-NEXT: .LBB19_2 :
945984; RV64IZFINXZDINX-NEXT: ret
946985;
947986; RV32I-LABEL: ceil_f64:
@@ -974,16 +1013,16 @@ define double @trunc_f64(double %a) nounwind {
9741013;
9751014; RV64IFD-LABEL: trunc_f64:
9761015; RV64IFD: # %bb.0:
977- ; RV64IFD-NEXT: lui a0, %hi(.LCPI19_0 )
978- ; RV64IFD-NEXT: fld fa5, %lo(.LCPI19_0 )(a0)
1016+ ; RV64IFD-NEXT: lui a0, %hi(.LCPI20_0 )
1017+ ; RV64IFD-NEXT: fld fa5, %lo(.LCPI20_0 )(a0)
9791018; RV64IFD-NEXT: fabs.d fa4, fa0
9801019; RV64IFD-NEXT: flt.d a0, fa4, fa5
981- ; RV64IFD-NEXT: beqz a0, .LBB19_2
1020+ ; RV64IFD-NEXT: beqz a0, .LBB20_2
9821021; RV64IFD-NEXT: # %bb.1:
9831022; RV64IFD-NEXT: fcvt.l.d a0, fa0, rtz
9841023; RV64IFD-NEXT: fcvt.d.l fa5, a0, rtz
9851024; RV64IFD-NEXT: fsgnj.d fa0, fa5, fa0
986- ; RV64IFD-NEXT: .LBB19_2 :
1025+ ; RV64IFD-NEXT: .LBB20_2 :
9871026; RV64IFD-NEXT: ret
9881027;
9891028; RV32IZFINXZDINX-LABEL: trunc_f64:
@@ -1001,12 +1040,12 @@ define double @trunc_f64(double %a) nounwind {
10011040; RV64IZFINXZDINX-NEXT: slli a1, a1, 52
10021041; RV64IZFINXZDINX-NEXT: fabs.d a2, a0
10031042; RV64IZFINXZDINX-NEXT: flt.d a1, a2, a1
1004- ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB19_2
1043+ ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB20_2
10051044; RV64IZFINXZDINX-NEXT: # %bb.1:
10061045; RV64IZFINXZDINX-NEXT: fcvt.l.d a1, a0, rtz
10071046; RV64IZFINXZDINX-NEXT: fcvt.d.l a1, a1, rtz
10081047; RV64IZFINXZDINX-NEXT: fsgnj.d a0, a1, a0
1009- ; RV64IZFINXZDINX-NEXT: .LBB19_2 :
1048+ ; RV64IZFINXZDINX-NEXT: .LBB20_2 :
10101049; RV64IZFINXZDINX-NEXT: ret
10111050;
10121051; RV32I-LABEL: trunc_f64:
@@ -1039,16 +1078,16 @@ define double @rint_f64(double %a) nounwind {
10391078;
10401079; RV64IFD-LABEL: rint_f64:
10411080; RV64IFD: # %bb.0:
1042- ; RV64IFD-NEXT: lui a0, %hi(.LCPI20_0 )
1043- ; RV64IFD-NEXT: fld fa5, %lo(.LCPI20_0 )(a0)
1081+ ; RV64IFD-NEXT: lui a0, %hi(.LCPI21_0 )
1082+ ; RV64IFD-NEXT: fld fa5, %lo(.LCPI21_0 )(a0)
10441083; RV64IFD-NEXT: fabs.d fa4, fa0
10451084; RV64IFD-NEXT: flt.d a0, fa4, fa5
1046- ; RV64IFD-NEXT: beqz a0, .LBB20_2
1085+ ; RV64IFD-NEXT: beqz a0, .LBB21_2
10471086; RV64IFD-NEXT: # %bb.1:
10481087; RV64IFD-NEXT: fcvt.l.d a0, fa0
10491088; RV64IFD-NEXT: fcvt.d.l fa5, a0
10501089; RV64IFD-NEXT: fsgnj.d fa0, fa5, fa0
1051- ; RV64IFD-NEXT: .LBB20_2 :
1090+ ; RV64IFD-NEXT: .LBB21_2 :
10521091; RV64IFD-NEXT: ret
10531092;
10541093; RV32IZFINXZDINX-LABEL: rint_f64:
@@ -1066,12 +1105,12 @@ define double @rint_f64(double %a) nounwind {
10661105; RV64IZFINXZDINX-NEXT: slli a1, a1, 52
10671106; RV64IZFINXZDINX-NEXT: fabs.d a2, a0
10681107; RV64IZFINXZDINX-NEXT: flt.d a1, a2, a1
1069- ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB20_2
1108+ ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB21_2
10701109; RV64IZFINXZDINX-NEXT: # %bb.1:
10711110; RV64IZFINXZDINX-NEXT: fcvt.l.d a1, a0
10721111; RV64IZFINXZDINX-NEXT: fcvt.d.l a1, a1
10731112; RV64IZFINXZDINX-NEXT: fsgnj.d a0, a1, a0
1074- ; RV64IZFINXZDINX-NEXT: .LBB20_2 :
1113+ ; RV64IZFINXZDINX-NEXT: .LBB21_2 :
10751114; RV64IZFINXZDINX-NEXT: ret
10761115;
10771116; RV32I-LABEL: rint_f64:
@@ -1145,16 +1184,16 @@ define double @round_f64(double %a) nounwind {
11451184;
11461185; RV64IFD-LABEL: round_f64:
11471186; RV64IFD: # %bb.0:
1148- ; RV64IFD-NEXT: lui a0, %hi(.LCPI22_0 )
1149- ; RV64IFD-NEXT: fld fa5, %lo(.LCPI22_0 )(a0)
1187+ ; RV64IFD-NEXT: lui a0, %hi(.LCPI23_0 )
1188+ ; RV64IFD-NEXT: fld fa5, %lo(.LCPI23_0 )(a0)
11501189; RV64IFD-NEXT: fabs.d fa4, fa0
11511190; RV64IFD-NEXT: flt.d a0, fa4, fa5
1152- ; RV64IFD-NEXT: beqz a0, .LBB22_2
1191+ ; RV64IFD-NEXT: beqz a0, .LBB23_2
11531192; RV64IFD-NEXT: # %bb.1:
11541193; RV64IFD-NEXT: fcvt.l.d a0, fa0, rmm
11551194; RV64IFD-NEXT: fcvt.d.l fa5, a0, rmm
11561195; RV64IFD-NEXT: fsgnj.d fa0, fa5, fa0
1157- ; RV64IFD-NEXT: .LBB22_2 :
1196+ ; RV64IFD-NEXT: .LBB23_2 :
11581197; RV64IFD-NEXT: ret
11591198;
11601199; RV32IZFINXZDINX-LABEL: round_f64:
@@ -1172,12 +1211,12 @@ define double @round_f64(double %a) nounwind {
11721211; RV64IZFINXZDINX-NEXT: slli a1, a1, 52
11731212; RV64IZFINXZDINX-NEXT: fabs.d a2, a0
11741213; RV64IZFINXZDINX-NEXT: flt.d a1, a2, a1
1175- ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB22_2
1214+ ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB23_2
11761215; RV64IZFINXZDINX-NEXT: # %bb.1:
11771216; RV64IZFINXZDINX-NEXT: fcvt.l.d a1, a0, rmm
11781217; RV64IZFINXZDINX-NEXT: fcvt.d.l a1, a1, rmm
11791218; RV64IZFINXZDINX-NEXT: fsgnj.d a0, a1, a0
1180- ; RV64IZFINXZDINX-NEXT: .LBB22_2 :
1219+ ; RV64IZFINXZDINX-NEXT: .LBB23_2 :
11811220; RV64IZFINXZDINX-NEXT: ret
11821221;
11831222; RV32I-LABEL: round_f64:
@@ -1210,16 +1249,16 @@ define double @roundeven_f64(double %a) nounwind {
12101249;
12111250; RV64IFD-LABEL: roundeven_f64:
12121251; RV64IFD: # %bb.0:
1213- ; RV64IFD-NEXT: lui a0, %hi(.LCPI23_0 )
1214- ; RV64IFD-NEXT: fld fa5, %lo(.LCPI23_0 )(a0)
1252+ ; RV64IFD-NEXT: lui a0, %hi(.LCPI24_0 )
1253+ ; RV64IFD-NEXT: fld fa5, %lo(.LCPI24_0 )(a0)
12151254; RV64IFD-NEXT: fabs.d fa4, fa0
12161255; RV64IFD-NEXT: flt.d a0, fa4, fa5
1217- ; RV64IFD-NEXT: beqz a0, .LBB23_2
1256+ ; RV64IFD-NEXT: beqz a0, .LBB24_2
12181257; RV64IFD-NEXT: # %bb.1:
12191258; RV64IFD-NEXT: fcvt.l.d a0, fa0, rne
12201259; RV64IFD-NEXT: fcvt.d.l fa5, a0, rne
12211260; RV64IFD-NEXT: fsgnj.d fa0, fa5, fa0
1222- ; RV64IFD-NEXT: .LBB23_2 :
1261+ ; RV64IFD-NEXT: .LBB24_2 :
12231262; RV64IFD-NEXT: ret
12241263;
12251264; RV32IZFINXZDINX-LABEL: roundeven_f64:
@@ -1237,12 +1276,12 @@ define double @roundeven_f64(double %a) nounwind {
12371276; RV64IZFINXZDINX-NEXT: slli a1, a1, 52
12381277; RV64IZFINXZDINX-NEXT: fabs.d a2, a0
12391278; RV64IZFINXZDINX-NEXT: flt.d a1, a2, a1
1240- ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB23_2
1279+ ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB24_2
12411280; RV64IZFINXZDINX-NEXT: # %bb.1:
12421281; RV64IZFINXZDINX-NEXT: fcvt.l.d a1, a0, rne
12431282; RV64IZFINXZDINX-NEXT: fcvt.d.l a1, a1, rne
12441283; RV64IZFINXZDINX-NEXT: fsgnj.d a0, a1, a0
1245- ; RV64IZFINXZDINX-NEXT: .LBB23_2 :
1284+ ; RV64IZFINXZDINX-NEXT: .LBB24_2 :
12461285; RV64IZFINXZDINX-NEXT: ret
12471286;
12481287; RV32I-LABEL: roundeven_f64:
@@ -1524,11 +1563,11 @@ define i1 @isnan_d_fpclass(double %x) {
15241563; RV32I-NEXT: slli a1, a1, 1
15251564; RV32I-NEXT: srli a1, a1, 1
15261565; RV32I-NEXT: lui a2, 524032
1527- ; RV32I-NEXT: beq a1, a2, .LBB29_2
1566+ ; RV32I-NEXT: beq a1, a2, .LBB30_2
15281567; RV32I-NEXT: # %bb.1:
15291568; RV32I-NEXT: slt a0, a2, a1
15301569; RV32I-NEXT: ret
1531- ; RV32I-NEXT: .LBB29_2 :
1570+ ; RV32I-NEXT: .LBB30_2 :
15321571; RV32I-NEXT: snez a0, a0
15331572; RV32I-NEXT: ret
15341573;
0 commit comments