@@ -453,6 +453,45 @@ define double @exp2_f64(double %a) nounwind {
453
453
ret double %1
454
454
}
455
455
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
+
456
495
declare double @llvm.log.f64 (double )
457
496
458
497
define double @log_f64 (double %a ) nounwind {
@@ -844,16 +883,16 @@ define double @floor_f64(double %a) nounwind {
844
883
;
845
884
; RV64IFD-LABEL: floor_f64:
846
885
; 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)
849
888
; RV64IFD-NEXT: fabs.d fa4, fa0
850
889
; RV64IFD-NEXT: flt.d a0, fa4, fa5
851
- ; RV64IFD-NEXT: beqz a0, .LBB17_2
890
+ ; RV64IFD-NEXT: beqz a0, .LBB18_2
852
891
; RV64IFD-NEXT: # %bb.1:
853
892
; RV64IFD-NEXT: fcvt.l.d a0, fa0, rdn
854
893
; RV64IFD-NEXT: fcvt.d.l fa5, a0, rdn
855
894
; RV64IFD-NEXT: fsgnj.d fa0, fa5, fa0
856
- ; RV64IFD-NEXT: .LBB17_2 :
895
+ ; RV64IFD-NEXT: .LBB18_2 :
857
896
; RV64IFD-NEXT: ret
858
897
;
859
898
; RV32IZFINXZDINX-LABEL: floor_f64:
@@ -871,12 +910,12 @@ define double @floor_f64(double %a) nounwind {
871
910
; RV64IZFINXZDINX-NEXT: slli a1, a1, 52
872
911
; RV64IZFINXZDINX-NEXT: fabs.d a2, a0
873
912
; RV64IZFINXZDINX-NEXT: flt.d a1, a2, a1
874
- ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB17_2
913
+ ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB18_2
875
914
; RV64IZFINXZDINX-NEXT: # %bb.1:
876
915
; RV64IZFINXZDINX-NEXT: fcvt.l.d a1, a0, rdn
877
916
; RV64IZFINXZDINX-NEXT: fcvt.d.l a1, a1, rdn
878
917
; RV64IZFINXZDINX-NEXT: fsgnj.d a0, a1, a0
879
- ; RV64IZFINXZDINX-NEXT: .LBB17_2 :
918
+ ; RV64IZFINXZDINX-NEXT: .LBB18_2 :
880
919
; RV64IZFINXZDINX-NEXT: ret
881
920
;
882
921
; RV32I-LABEL: floor_f64:
@@ -909,16 +948,16 @@ define double @ceil_f64(double %a) nounwind {
909
948
;
910
949
; RV64IFD-LABEL: ceil_f64:
911
950
; 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)
914
953
; RV64IFD-NEXT: fabs.d fa4, fa0
915
954
; RV64IFD-NEXT: flt.d a0, fa4, fa5
916
- ; RV64IFD-NEXT: beqz a0, .LBB18_2
955
+ ; RV64IFD-NEXT: beqz a0, .LBB19_2
917
956
; RV64IFD-NEXT: # %bb.1:
918
957
; RV64IFD-NEXT: fcvt.l.d a0, fa0, rup
919
958
; RV64IFD-NEXT: fcvt.d.l fa5, a0, rup
920
959
; RV64IFD-NEXT: fsgnj.d fa0, fa5, fa0
921
- ; RV64IFD-NEXT: .LBB18_2 :
960
+ ; RV64IFD-NEXT: .LBB19_2 :
922
961
; RV64IFD-NEXT: ret
923
962
;
924
963
; RV32IZFINXZDINX-LABEL: ceil_f64:
@@ -936,12 +975,12 @@ define double @ceil_f64(double %a) nounwind {
936
975
; RV64IZFINXZDINX-NEXT: slli a1, a1, 52
937
976
; RV64IZFINXZDINX-NEXT: fabs.d a2, a0
938
977
; RV64IZFINXZDINX-NEXT: flt.d a1, a2, a1
939
- ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB18_2
978
+ ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB19_2
940
979
; RV64IZFINXZDINX-NEXT: # %bb.1:
941
980
; RV64IZFINXZDINX-NEXT: fcvt.l.d a1, a0, rup
942
981
; RV64IZFINXZDINX-NEXT: fcvt.d.l a1, a1, rup
943
982
; RV64IZFINXZDINX-NEXT: fsgnj.d a0, a1, a0
944
- ; RV64IZFINXZDINX-NEXT: .LBB18_2 :
983
+ ; RV64IZFINXZDINX-NEXT: .LBB19_2 :
945
984
; RV64IZFINXZDINX-NEXT: ret
946
985
;
947
986
; RV32I-LABEL: ceil_f64:
@@ -974,16 +1013,16 @@ define double @trunc_f64(double %a) nounwind {
974
1013
;
975
1014
; RV64IFD-LABEL: trunc_f64:
976
1015
; 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)
979
1018
; RV64IFD-NEXT: fabs.d fa4, fa0
980
1019
; RV64IFD-NEXT: flt.d a0, fa4, fa5
981
- ; RV64IFD-NEXT: beqz a0, .LBB19_2
1020
+ ; RV64IFD-NEXT: beqz a0, .LBB20_2
982
1021
; RV64IFD-NEXT: # %bb.1:
983
1022
; RV64IFD-NEXT: fcvt.l.d a0, fa0, rtz
984
1023
; RV64IFD-NEXT: fcvt.d.l fa5, a0, rtz
985
1024
; RV64IFD-NEXT: fsgnj.d fa0, fa5, fa0
986
- ; RV64IFD-NEXT: .LBB19_2 :
1025
+ ; RV64IFD-NEXT: .LBB20_2 :
987
1026
; RV64IFD-NEXT: ret
988
1027
;
989
1028
; RV32IZFINXZDINX-LABEL: trunc_f64:
@@ -1001,12 +1040,12 @@ define double @trunc_f64(double %a) nounwind {
1001
1040
; RV64IZFINXZDINX-NEXT: slli a1, a1, 52
1002
1041
; RV64IZFINXZDINX-NEXT: fabs.d a2, a0
1003
1042
; RV64IZFINXZDINX-NEXT: flt.d a1, a2, a1
1004
- ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB19_2
1043
+ ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB20_2
1005
1044
; RV64IZFINXZDINX-NEXT: # %bb.1:
1006
1045
; RV64IZFINXZDINX-NEXT: fcvt.l.d a1, a0, rtz
1007
1046
; RV64IZFINXZDINX-NEXT: fcvt.d.l a1, a1, rtz
1008
1047
; RV64IZFINXZDINX-NEXT: fsgnj.d a0, a1, a0
1009
- ; RV64IZFINXZDINX-NEXT: .LBB19_2 :
1048
+ ; RV64IZFINXZDINX-NEXT: .LBB20_2 :
1010
1049
; RV64IZFINXZDINX-NEXT: ret
1011
1050
;
1012
1051
; RV32I-LABEL: trunc_f64:
@@ -1039,16 +1078,16 @@ define double @rint_f64(double %a) nounwind {
1039
1078
;
1040
1079
; RV64IFD-LABEL: rint_f64:
1041
1080
; 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)
1044
1083
; RV64IFD-NEXT: fabs.d fa4, fa0
1045
1084
; RV64IFD-NEXT: flt.d a0, fa4, fa5
1046
- ; RV64IFD-NEXT: beqz a0, .LBB20_2
1085
+ ; RV64IFD-NEXT: beqz a0, .LBB21_2
1047
1086
; RV64IFD-NEXT: # %bb.1:
1048
1087
; RV64IFD-NEXT: fcvt.l.d a0, fa0
1049
1088
; RV64IFD-NEXT: fcvt.d.l fa5, a0
1050
1089
; RV64IFD-NEXT: fsgnj.d fa0, fa5, fa0
1051
- ; RV64IFD-NEXT: .LBB20_2 :
1090
+ ; RV64IFD-NEXT: .LBB21_2 :
1052
1091
; RV64IFD-NEXT: ret
1053
1092
;
1054
1093
; RV32IZFINXZDINX-LABEL: rint_f64:
@@ -1066,12 +1105,12 @@ define double @rint_f64(double %a) nounwind {
1066
1105
; RV64IZFINXZDINX-NEXT: slli a1, a1, 52
1067
1106
; RV64IZFINXZDINX-NEXT: fabs.d a2, a0
1068
1107
; RV64IZFINXZDINX-NEXT: flt.d a1, a2, a1
1069
- ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB20_2
1108
+ ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB21_2
1070
1109
; RV64IZFINXZDINX-NEXT: # %bb.1:
1071
1110
; RV64IZFINXZDINX-NEXT: fcvt.l.d a1, a0
1072
1111
; RV64IZFINXZDINX-NEXT: fcvt.d.l a1, a1
1073
1112
; RV64IZFINXZDINX-NEXT: fsgnj.d a0, a1, a0
1074
- ; RV64IZFINXZDINX-NEXT: .LBB20_2 :
1113
+ ; RV64IZFINXZDINX-NEXT: .LBB21_2 :
1075
1114
; RV64IZFINXZDINX-NEXT: ret
1076
1115
;
1077
1116
; RV32I-LABEL: rint_f64:
@@ -1145,16 +1184,16 @@ define double @round_f64(double %a) nounwind {
1145
1184
;
1146
1185
; RV64IFD-LABEL: round_f64:
1147
1186
; 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)
1150
1189
; RV64IFD-NEXT: fabs.d fa4, fa0
1151
1190
; RV64IFD-NEXT: flt.d a0, fa4, fa5
1152
- ; RV64IFD-NEXT: beqz a0, .LBB22_2
1191
+ ; RV64IFD-NEXT: beqz a0, .LBB23_2
1153
1192
; RV64IFD-NEXT: # %bb.1:
1154
1193
; RV64IFD-NEXT: fcvt.l.d a0, fa0, rmm
1155
1194
; RV64IFD-NEXT: fcvt.d.l fa5, a0, rmm
1156
1195
; RV64IFD-NEXT: fsgnj.d fa0, fa5, fa0
1157
- ; RV64IFD-NEXT: .LBB22_2 :
1196
+ ; RV64IFD-NEXT: .LBB23_2 :
1158
1197
; RV64IFD-NEXT: ret
1159
1198
;
1160
1199
; RV32IZFINXZDINX-LABEL: round_f64:
@@ -1172,12 +1211,12 @@ define double @round_f64(double %a) nounwind {
1172
1211
; RV64IZFINXZDINX-NEXT: slli a1, a1, 52
1173
1212
; RV64IZFINXZDINX-NEXT: fabs.d a2, a0
1174
1213
; RV64IZFINXZDINX-NEXT: flt.d a1, a2, a1
1175
- ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB22_2
1214
+ ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB23_2
1176
1215
; RV64IZFINXZDINX-NEXT: # %bb.1:
1177
1216
; RV64IZFINXZDINX-NEXT: fcvt.l.d a1, a0, rmm
1178
1217
; RV64IZFINXZDINX-NEXT: fcvt.d.l a1, a1, rmm
1179
1218
; RV64IZFINXZDINX-NEXT: fsgnj.d a0, a1, a0
1180
- ; RV64IZFINXZDINX-NEXT: .LBB22_2 :
1219
+ ; RV64IZFINXZDINX-NEXT: .LBB23_2 :
1181
1220
; RV64IZFINXZDINX-NEXT: ret
1182
1221
;
1183
1222
; RV32I-LABEL: round_f64:
@@ -1210,16 +1249,16 @@ define double @roundeven_f64(double %a) nounwind {
1210
1249
;
1211
1250
; RV64IFD-LABEL: roundeven_f64:
1212
1251
; 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)
1215
1254
; RV64IFD-NEXT: fabs.d fa4, fa0
1216
1255
; RV64IFD-NEXT: flt.d a0, fa4, fa5
1217
- ; RV64IFD-NEXT: beqz a0, .LBB23_2
1256
+ ; RV64IFD-NEXT: beqz a0, .LBB24_2
1218
1257
; RV64IFD-NEXT: # %bb.1:
1219
1258
; RV64IFD-NEXT: fcvt.l.d a0, fa0, rne
1220
1259
; RV64IFD-NEXT: fcvt.d.l fa5, a0, rne
1221
1260
; RV64IFD-NEXT: fsgnj.d fa0, fa5, fa0
1222
- ; RV64IFD-NEXT: .LBB23_2 :
1261
+ ; RV64IFD-NEXT: .LBB24_2 :
1223
1262
; RV64IFD-NEXT: ret
1224
1263
;
1225
1264
; RV32IZFINXZDINX-LABEL: roundeven_f64:
@@ -1237,12 +1276,12 @@ define double @roundeven_f64(double %a) nounwind {
1237
1276
; RV64IZFINXZDINX-NEXT: slli a1, a1, 52
1238
1277
; RV64IZFINXZDINX-NEXT: fabs.d a2, a0
1239
1278
; RV64IZFINXZDINX-NEXT: flt.d a1, a2, a1
1240
- ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB23_2
1279
+ ; RV64IZFINXZDINX-NEXT: beqz a1, .LBB24_2
1241
1280
; RV64IZFINXZDINX-NEXT: # %bb.1:
1242
1281
; RV64IZFINXZDINX-NEXT: fcvt.l.d a1, a0, rne
1243
1282
; RV64IZFINXZDINX-NEXT: fcvt.d.l a1, a1, rne
1244
1283
; RV64IZFINXZDINX-NEXT: fsgnj.d a0, a1, a0
1245
- ; RV64IZFINXZDINX-NEXT: .LBB23_2 :
1284
+ ; RV64IZFINXZDINX-NEXT: .LBB24_2 :
1246
1285
; RV64IZFINXZDINX-NEXT: ret
1247
1286
;
1248
1287
; RV32I-LABEL: roundeven_f64:
@@ -1524,11 +1563,11 @@ define i1 @isnan_d_fpclass(double %x) {
1524
1563
; RV32I-NEXT: slli a1, a1, 1
1525
1564
; RV32I-NEXT: srli a1, a1, 1
1526
1565
; RV32I-NEXT: lui a2, 524032
1527
- ; RV32I-NEXT: beq a1, a2, .LBB29_2
1566
+ ; RV32I-NEXT: beq a1, a2, .LBB30_2
1528
1567
; RV32I-NEXT: # %bb.1:
1529
1568
; RV32I-NEXT: slt a0, a2, a1
1530
1569
; RV32I-NEXT: ret
1531
- ; RV32I-NEXT: .LBB29_2 :
1570
+ ; RV32I-NEXT: .LBB30_2 :
1532
1571
; RV32I-NEXT: snez a0, a0
1533
1572
; RV32I-NEXT: ret
1534
1573
;
0 commit comments