fpu: Constify frac{64,128,256}_* inputs
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Richard Henderson committed
Apr 26, 2026 at 10:22 UTC
7b53f85f8c30fc7763e0909b094c3899ae9608c6
1 file changed
+31
-22
fpu/softfloat.c
+31
-22
@@ -774,12 +774,14 @@ static float128 QEMU_FLATTEN float128_pack_raw(const FloatParts128 *p)
774
* Helper functions for softfloat-parts.c.inc, per-size operations.
775
*/
776
777
-static bool frac64_add(FloatParts64 *r, FloatParts64 *a, FloatParts64 *b)
777
+static bool frac64_add(FloatParts64 *r,
778
+ const FloatParts64 *a, const FloatParts64 *b)
779
{
780
return uadd64_overflow(a->frac, b->frac, &r->frac);
781
}
782
782
-static bool frac128_add(FloatParts128 *r, FloatParts128 *a, FloatParts128 *b)
783
+static bool frac128_add(FloatParts128 *r,
784
+ const FloatParts128 *a, const FloatParts128 *b)
785
{
786
bool c = 0;
787
r->frac_lo = uadd64_carry(a->frac_lo, b->frac_lo, &c);
@@ -787,7 +789,8 @@ static bool frac128_add(FloatParts128 *r, FloatParts128 *a, FloatParts128 *b)
789
return c;
790
}
791
790
-static bool frac256_add(FloatParts256 *r, FloatParts256 *a, FloatParts256 *b)
792
+static bool frac256_add(FloatParts256 *r,
793
+ const FloatParts256 *a, const FloatParts256 *b)
794
{
795
bool c = 0;
796
r->frac_lo = uadd64_carry(a->frac_lo, b->frac_lo, &c);
@@ -797,12 +800,12 @@ static bool frac256_add(FloatParts256 *r, FloatParts256 *a, FloatParts256 *b)
800
return c;
801
}
802
800
-static bool frac64_addi(FloatParts64 *r, FloatParts64 *a, uint64_t c)
803
+static bool frac64_addi(FloatParts64 *r, const FloatParts64 *a, uint64_t c)
804
{
805
return uadd64_overflow(a->frac, c, &r->frac);
806
}
807
805
-static bool frac128_addi(FloatParts128 *r, FloatParts128 *a, uint64_t c)
808
+static bool frac128_addi(FloatParts128 *r, const FloatParts128 *a, uint64_t c)
809
{
810
c = uadd64_overflow(a->frac_lo, c, &r->frac_lo);
811
return uadd64_overflow(a->frac_hi, c, &r->frac_hi);
@@ -818,14 +821,14 @@ static void frac128_allones(FloatParts128 *a)
821
a->frac_hi = a->frac_lo = -1;
822
}
823
821
-static FloatRelation frac64_cmp(FloatParts64 *a, FloatParts64 *b)
824
+static FloatRelation frac64_cmp(const FloatParts64 *a, const FloatParts64 *b)
825
{
826
return (a->frac == b->frac ? float_relation_equal
827
: a->frac < b->frac ? float_relation_less
828
: float_relation_greater);
829
}
830
828
-static FloatRelation frac128_cmp(FloatParts128 *a, FloatParts128 *b)
831
+static FloatRelation frac128_cmp(const FloatParts128 *a, const FloatParts128 *b)
832
{
833
uint64_t ta = a->frac_hi, tb = b->frac_hi;
834
if (ta == tb) {
@@ -847,7 +850,7 @@ static void frac128_clear(FloatParts128 *a)
850
a->frac_hi = a->frac_lo = 0;
851
}
852
850
-static bool frac64_div(FloatParts64 *a, FloatParts64 *b)
853
+static bool frac64_div(FloatParts64 *a, const FloatParts64 *b)
854
{
855
uint64_t n1, n0, r, q;
856
bool ret;
@@ -879,7 +882,7 @@ static bool frac64_div(FloatParts64 *a, FloatParts64 *b)
882
return ret;
883
}
884
882
-static bool frac128_div(FloatParts128 *a, FloatParts128 *b)
885
+static bool frac128_div(FloatParts128 *a, const FloatParts128 *b)
886
{
887
uint64_t q0, q1, a0, a1, b0, b1;
888
uint64_t r0, r1, r2, r3, t0, t1, t2, t3;
@@ -926,22 +929,24 @@ static bool frac128_div(FloatParts128 *a, FloatParts128 *b)
929
return ret;
930
}
931
929
-static bool frac64_eqz(FloatParts64 *a)
932
+static bool frac64_eqz(const FloatParts64 *a)
933
{
934
return a->frac == 0;
935
}
936
934
-static bool frac128_eqz(FloatParts128 *a)
937
+static bool frac128_eqz(const FloatParts128 *a)
938
{
939
return (a->frac_hi | a->frac_lo) == 0;
940
}
941
939
-static void frac64_mulw(FloatParts128 *r, FloatParts64 *a, FloatParts64 *b)
942
+static void frac64_mulw(FloatParts128 *r,
943
+ const FloatParts64 *a, const FloatParts64 *b)
944
{
945
mulu64(&r->frac_lo, &r->frac_hi, a->frac, b->frac);
946
}
947
944
-static void frac128_mulw(FloatParts256 *r, FloatParts128 *a, FloatParts128 *b)
948
+static void frac128_mulw(FloatParts256 *r,
949
+ const FloatParts128 *a, const FloatParts128 *b)
950
{
951
mul128To256(a->frac_hi, a->frac_lo, b->frac_hi, b->frac_lo,
952
&r->frac_hi, &r->frac_hm, &r->frac_lm, &r->frac_lo);
@@ -1041,7 +1046,8 @@ static int frac256_normalize(FloatParts256 *a)
1046
return ret;
1047
}
1048
1044
-static void frac64_modrem(FloatParts64 *a, FloatParts64 *b, uint64_t *mod_quot)
1049
+static void frac64_modrem(FloatParts64 *a, const FloatParts64 *b,
1050
+ uint64_t *mod_quot)
1051
{
1052
uint64_t a0, a1, b0, t0, t1, q, quot;
1053
int exp_diff = a->exp - b->exp;
@@ -1124,7 +1130,7 @@ static void frac64_modrem(FloatParts64 *a, FloatParts64 *b, uint64_t *mod_quot)
1130
a->frac = a0 | (a1 != 0);
1131
}
1132
1127
-static void frac128_modrem(FloatParts128 *a, FloatParts128 *b,
1133
+static void frac128_modrem(FloatParts128 *a, const FloatParts128 *b,
1134
uint64_t *mod_quot)
1135
{
1136
uint64_t a0, a1, a2, b0, b1, t0, t1, t2, q, quot;
@@ -1353,12 +1359,14 @@ static void frac256_shrjam(FloatParts256 *a, int c)
1359
a->frac_hi = a0;
1360
}
1361
1356
-static bool frac64_sub(FloatParts64 *r, FloatParts64 *a, FloatParts64 *b)
1362
+static bool frac64_sub(FloatParts64 *r,
1363
+ const FloatParts64 *a, const FloatParts64 *b)
1364
{
1365
return usub64_overflow(a->frac, b->frac, &r->frac);
1366
}
1367
1361
-static bool frac128_sub(FloatParts128 *r, FloatParts128 *a, FloatParts128 *b)
1368
+static bool frac128_sub(FloatParts128 *r,
1369
+ const FloatParts128 *a, const FloatParts128 *b)
1370
{
1371
bool c = 0;
1372
r->frac_lo = usub64_borrow(a->frac_lo, b->frac_lo, &c);
@@ -1366,7 +1374,8 @@ static bool frac128_sub(FloatParts128 *r, FloatParts128 *a, FloatParts128 *b)
1374
return c;
1375
}
1376
1369
-static bool frac256_sub(FloatParts256 *r, FloatParts256 *a, FloatParts256 *b)
1377
+static bool frac256_sub(FloatParts256 *r,
1378
+ const FloatParts256 *a, const FloatParts256 *b)
1379
{
1380
bool c = 0;
1381
r->frac_lo = usub64_borrow(a->frac_lo, b->frac_lo, &c);
@@ -1376,24 +1385,24 @@ static bool frac256_sub(FloatParts256 *r, FloatParts256 *a, FloatParts256 *b)
1385
return c;
1386
}
1387
1379
-static void frac64_truncjam(FloatParts64 *r, FloatParts128 *a)
1388
+static void frac64_truncjam(FloatParts64 *r, const FloatParts128 *a)
1389
{
1390
r->frac = a->frac_hi | (a->frac_lo != 0);
1391
}
1392
1384
-static void frac128_truncjam(FloatParts128 *r, FloatParts256 *a)
1393
+static void frac128_truncjam(FloatParts128 *r, const FloatParts256 *a)
1394
{
1395
r->frac_hi = a->frac_hi;
1396
r->frac_lo = a->frac_hm | ((a->frac_lm | a->frac_lo) != 0);
1397
}
1398
1390
-static void frac64_widen(FloatParts128 *r, FloatParts64 *a)
1399
+static void frac64_widen(FloatParts128 *r, const FloatParts64 *a)
1400
{
1401
r->frac_hi = a->frac;
1402
r->frac_lo = 0;
1403
}
1404
1396
-static void frac128_widen(FloatParts256 *r, FloatParts128 *a)
1405
+static void frac128_widen(FloatParts256 *r, const FloatParts128 *a)
1406
{
1407
r->frac_hi = a->frac_hi;
1408
r->frac_hm = a->frac_lo;