Lines Matching full:a
4 * The code in this source file is derived from release 2a of the SoftFloat
9 * the SoftFloat-2a license
14 * taken to be licensed under the Softfloat-2a license unless specifically
21 Arithmetic Package, Release 2a.
27 of this code was written as part of a project to build a fixed-point vector
67 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
102 * exception flags is not trivial: reading the host's flags register with a
106 * We address these challenges by leveraging the host FPU for a subset of the
109 * Guo, Yu-Chuan, et al. "Translating the ARM Neon and VFP instructions in a
123 * denormal/inf/NaN; (2) when operands are not guaranteed to lead to a 0 result
127 static inline void name(soft_t *a, float_status *s) \
129 if (unlikely(soft_t ## _is_denormal(*a))) { \
130 *a = soft_t ## _set_sign(soft_t ## _zero, \
131 soft_t ## _is_neg(*a)); \
141 static inline void name(soft_t *a, float_status *s) \ in GEN_INPUT_FLUSH__NOCHECK()
146 soft_t ## _input_flush__nocheck(a, s); \ in GEN_INPUT_FLUSH__NOCHECK()
154 static inline void name(soft_t *a, soft_t *b, float_status *s) \
159 soft_t ## _input_flush__nocheck(a, s); \
168 static inline void name(soft_t *a, soft_t *b, soft_t *c, float_status *s) \
173 soft_t ## _input_flush__nocheck(a, s); \
206 * On x86_64/aarch64, using the former over the latter can yield a ~6% speedup.
261 typedef bool (*f32_check_fn)(union_float32 a, union_float32 b);
262 typedef bool (*f64_check_fn)(union_float64 a, union_float64 b);
264 typedef float32 (*soft_f32_op2_fn)(float32 a, float32 b, float_status *s);
265 typedef float64 (*soft_f64_op2_fn)(float64 a, float64 b, float_status *s);
266 typedef float (*hard_f32_op2_fn)(float a, float b);
267 typedef double (*hard_f64_op2_fn)(double a, double b);
270 static inline bool f32_is_zon2(union_float32 a, union_float32 b) in f32_is_zon2() argument
274 * Not using a temp variable for consecutive fpclassify calls ends up in f32_is_zon2()
277 return (fpclassify(a.h) == FP_NORMAL || fpclassify(a.h) == FP_ZERO) && in f32_is_zon2()
280 return float32_is_zero_or_normal(a.s) && in f32_is_zon2()
284 static inline bool f64_is_zon2(union_float64 a, union_float64 b) in f64_is_zon2() argument
287 return (fpclassify(a.h) == FP_NORMAL || fpclassify(a.h) == FP_ZERO) && in f64_is_zon2()
290 return float64_is_zero_or_normal(a.s) && in f64_is_zon2()
296 bool f32_is_zon3(union_float32 a, union_float32 b, union_float32 c) in f32_is_zon3() argument
299 return (fpclassify(a.h) == FP_NORMAL || fpclassify(a.h) == FP_ZERO) && in f32_is_zon3()
303 return float32_is_zero_or_normal(a.s) && in f32_is_zon3()
309 bool f64_is_zon3(union_float64 a, union_float64 b, union_float64 c) in f64_is_zon3() argument
312 return (fpclassify(a.h) == FP_NORMAL || fpclassify(a.h) == FP_ZERO) && in f64_is_zon3()
316 return float64_is_zero_or_normal(a.s) && in f64_is_zon3()
321 static inline bool f32_is_inf(union_float32 a) in f32_is_inf() argument
324 return isinf(a.h); in f32_is_inf()
326 return float32_is_infinity(a.s); in f32_is_inf()
329 static inline bool f64_is_inf(union_float64 a) in f64_is_inf() argument
332 return isinf(a.h); in f64_is_inf()
334 return float64_is_infinity(a.s); in f64_is_inf()
400 * Classify a floating point number. Everything above float_class_qnan
401 * is a NaN so cls >= float_class_qnan is any NaN.
411 float_class_denormal, /* input was a non-squashed denormal */
478 * Structure holding all of the decomposed parts of a float.
482 * so that truncation from a larger format to a smaller format
525 /* Structure holding all of the relevant parameters for a format.
603 /* Unpack a float to parts, but do not canonicalize. */
661 /* Pack a float from parts, but do not canonicalize. */
728 static void parts64_return_nan(FloatParts64 *a, float_status *s);
729 static void parts128_return_nan(FloatParts128 *a, float_status *s);
733 static FloatParts64 *parts64_pick_nan(FloatParts64 *a, FloatParts64 *b,
735 static FloatParts128 *parts128_pick_nan(FloatParts128 *a, FloatParts128 *b,
738 #define parts_pick_nan(A, B, S) PARTS_GENERIC_64_128(pick_nan, A)(A, B, S) argument
740 static FloatParts64 *parts64_pick_nan_muladd(FloatParts64 *a, FloatParts64 *b,
743 static FloatParts128 *parts128_pick_nan_muladd(FloatParts128 *a,
749 #define parts_pick_nan_muladd(A, B, C, S, ABM, ABCM) \ argument
750 PARTS_GENERIC_64_128(pick_nan_muladd, A)(A, B, C, S, ABM, ABCM)
757 #define parts_canonicalize(A, S, F) \ argument
758 PARTS_GENERIC_64_128(canonicalize, A)(A, S, F)
765 #define parts_uncanon_normal(A, S, F) \ argument
766 PARTS_GENERIC_64_128(uncanon_normal, A)(A, S, F)
773 #define parts_uncanon(A, S, F) \ argument
774 PARTS_GENERIC_64_128(uncanon, A)(A, S, F)
776 static void parts64_add_normal(FloatParts64 *a, FloatParts64 *b);
777 static void parts128_add_normal(FloatParts128 *a, FloatParts128 *b);
778 static void parts256_add_normal(FloatParts256 *a, FloatParts256 *b);
780 #define parts_add_normal(A, B) \ argument
781 PARTS_GENERIC_64_128_256(add_normal, A)(A, B)
783 static bool parts64_sub_normal(FloatParts64 *a, FloatParts64 *b);
784 static bool parts128_sub_normal(FloatParts128 *a, FloatParts128 *b);
785 static bool parts256_sub_normal(FloatParts256 *a, FloatParts256 *b);
787 #define parts_sub_normal(A, B) \ argument
788 PARTS_GENERIC_64_128_256(sub_normal, A)(A, B)
790 static FloatParts64 *parts64_addsub(FloatParts64 *a, FloatParts64 *b,
792 static FloatParts128 *parts128_addsub(FloatParts128 *a, FloatParts128 *b,
795 #define parts_addsub(A, B, S, Z) \ argument
796 PARTS_GENERIC_64_128(addsub, A)(A, B, S, Z)
798 static FloatParts64 *parts64_mul(FloatParts64 *a, FloatParts64 *b,
800 static FloatParts128 *parts128_mul(FloatParts128 *a, FloatParts128 *b,
803 #define parts_mul(A, B, S) \ argument
804 PARTS_GENERIC_64_128(mul, A)(A, B, S)
806 static FloatParts64 *parts64_muladd_scalbn(FloatParts64 *a, FloatParts64 *b,
809 static FloatParts128 *parts128_muladd_scalbn(FloatParts128 *a, FloatParts128 *b,
813 #define parts_muladd_scalbn(A, B, C, Z, Y, S) \ argument
814 PARTS_GENERIC_64_128(muladd_scalbn, A)(A, B, C, Z, Y, S)
816 static FloatParts64 *parts64_div(FloatParts64 *a, FloatParts64 *b,
818 static FloatParts128 *parts128_div(FloatParts128 *a, FloatParts128 *b,
821 #define parts_div(A, B, S) \ argument
822 PARTS_GENERIC_64_128(div, A)(A, B, S)
824 static FloatParts64 *parts64_modrem(FloatParts64 *a, FloatParts64 *b,
826 static FloatParts128 *parts128_modrem(FloatParts128 *a, FloatParts128 *b,
829 #define parts_modrem(A, B, Q, S) \ argument
830 PARTS_GENERIC_64_128(modrem, A)(A, B, Q, S)
832 static void parts64_sqrt(FloatParts64 *a, float_status *s, const FloatFmt *f);
833 static void parts128_sqrt(FloatParts128 *a, float_status *s, const FloatFmt *f);
835 #define parts_sqrt(A, S, F) \ argument
836 PARTS_GENERIC_64_128(sqrt, A)(A, S, F)
838 static bool parts64_round_to_int_normal(FloatParts64 *a, FloatRoundMode rm,
840 static bool parts128_round_to_int_normal(FloatParts128 *a, FloatRoundMode r,
843 #define parts_round_to_int_normal(A, R, C, F) \ argument
844 PARTS_GENERIC_64_128(round_to_int_normal, A)(A, R, C, F)
846 static void parts64_round_to_int(FloatParts64 *a, FloatRoundMode rm,
849 static void parts128_round_to_int(FloatParts128 *a, FloatRoundMode r,
853 #define parts_round_to_int(A, R, C, S, F) \ argument
854 PARTS_GENERIC_64_128(round_to_int, A)(A, R, C, S, F)
886 static void parts64_sint_to_float(FloatParts64 *p, int64_t a,
888 static void parts128_sint_to_float(FloatParts128 *p, int64_t a,
897 static void parts64_uint_to_float(FloatParts64 *p, uint64_t a,
899 static void parts128_uint_to_float(FloatParts128 *p, uint64_t a,
905 static FloatParts64 *parts64_minmax(FloatParts64 *a, FloatParts64 *b,
907 static FloatParts128 *parts128_minmax(FloatParts128 *a, FloatParts128 *b,
910 #define parts_minmax(A, B, S, F) \ argument
911 PARTS_GENERIC_64_128(minmax, A)(A, B, S, F)
913 static FloatRelation parts64_compare(FloatParts64 *a, FloatParts64 *b,
915 static FloatRelation parts128_compare(FloatParts128 *a, FloatParts128 *b,
918 #define parts_compare(A, B, S, Q) \ argument
919 PARTS_GENERIC_64_128(compare, A)(A, B, S, Q)
921 static void parts64_scalbn(FloatParts64 *a, int n, float_status *s);
922 static void parts128_scalbn(FloatParts128 *a, int n, float_status *s);
924 #define parts_scalbn(A, N, S) \ argument
925 PARTS_GENERIC_64_128(scalbn, A)(A, N, S)
927 static void parts64_log2(FloatParts64 *a, float_status *s, const FloatFmt *f);
928 static void parts128_log2(FloatParts128 *a, float_status *s, const FloatFmt *f);
930 #define parts_log2(A, S, F) \ argument
931 PARTS_GENERIC_64_128(log2, A)(A, S, F)
946 static bool frac64_add(FloatParts64 *r, FloatParts64 *a, FloatParts64 *b) in frac64_add() argument
948 return uadd64_overflow(a->frac, b->frac, &r->frac); in frac64_add()
951 static bool frac128_add(FloatParts128 *r, FloatParts128 *a, FloatParts128 *b) in frac128_add() argument
954 r->frac_lo = uadd64_carry(a->frac_lo, b->frac_lo, &c); in frac128_add()
955 r->frac_hi = uadd64_carry(a->frac_hi, b->frac_hi, &c); in frac128_add()
959 static bool frac256_add(FloatParts256 *r, FloatParts256 *a, FloatParts256 *b) in frac256_add() argument
962 r->frac_lo = uadd64_carry(a->frac_lo, b->frac_lo, &c); in frac256_add()
963 r->frac_lm = uadd64_carry(a->frac_lm, b->frac_lm, &c); in frac256_add()
964 r->frac_hm = uadd64_carry(a->frac_hm, b->frac_hm, &c); in frac256_add()
965 r->frac_hi = uadd64_carry(a->frac_hi, b->frac_hi, &c); in frac256_add()
969 #define frac_add(R, A, B) FRAC_GENERIC_64_128_256(add, R)(R, A, B) argument
971 static bool frac64_addi(FloatParts64 *r, FloatParts64 *a, uint64_t c) in frac64_addi() argument
973 return uadd64_overflow(a->frac, c, &r->frac); in frac64_addi()
976 static bool frac128_addi(FloatParts128 *r, FloatParts128 *a, uint64_t c) in frac128_addi() argument
978 c = uadd64_overflow(a->frac_lo, c, &r->frac_lo); in frac128_addi()
979 return uadd64_overflow(a->frac_hi, c, &r->frac_hi); in frac128_addi()
982 #define frac_addi(R, A, C) FRAC_GENERIC_64_128(addi, R)(R, A, C) argument
984 static void frac64_allones(FloatParts64 *a) in frac64_allones() argument
986 a->frac = -1; in frac64_allones()
989 static void frac128_allones(FloatParts128 *a) in frac128_allones() argument
991 a->frac_hi = a->frac_lo = -1; in frac128_allones()
994 #define frac_allones(A) FRAC_GENERIC_64_128(allones, A)(A) argument
996 static FloatRelation frac64_cmp(FloatParts64 *a, FloatParts64 *b) in frac64_cmp() argument
998 return (a->frac == b->frac ? float_relation_equal in frac64_cmp()
999 : a->frac < b->frac ? float_relation_less in frac64_cmp()
1003 static FloatRelation frac128_cmp(FloatParts128 *a, FloatParts128 *b) in frac128_cmp() argument
1005 uint64_t ta = a->frac_hi, tb = b->frac_hi; in frac128_cmp()
1007 ta = a->frac_lo, tb = b->frac_lo; in frac128_cmp()
1015 #define frac_cmp(A, B) FRAC_GENERIC_64_128(cmp, A)(A, B) argument
1017 static void frac64_clear(FloatParts64 *a) in frac64_clear() argument
1019 a->frac = 0; in frac64_clear()
1022 static void frac128_clear(FloatParts128 *a) in frac128_clear() argument
1024 a->frac_hi = a->frac_lo = 0; in frac128_clear()
1027 #define frac_clear(A) FRAC_GENERIC_64_128(clear, A)(A) argument
1029 static bool frac64_div(FloatParts64 *a, FloatParts64 *b) in frac64_div() argument
1035 * We want a 2*N / N-bit division to produce exactly an N-bit in frac64_div()
1037 * do not have to renormalize afterward. If A.frac < B.frac, in frac64_div()
1038 * then division would produce an (N-1)-bit result; shift A left in frac64_div()
1045 ret = a->frac < b->frac; in frac64_div()
1047 n0 = a->frac; in frac64_div()
1050 n0 = a->frac >> 1; in frac64_div()
1051 n1 = a->frac << 63; in frac64_div()
1055 /* Set lsb if there is a remainder, to set inexact. */ in frac64_div()
1056 a->frac = q | (r != 0); in frac64_div()
1061 static bool frac128_div(FloatParts128 *a, FloatParts128 *b) in frac128_div() argument
1067 a0 = a->frac_hi, a1 = a->frac_lo; in frac128_div()
1091 /* Repeat using the remainder, producing a second word of quotient. */ in frac128_div()
1103 a->frac_hi = q0; in frac128_div()
1104 a->frac_lo = q1; in frac128_div()
1108 #define frac_div(A, B) FRAC_GENERIC_64_128(div, A)(A, B) argument
1110 static bool frac64_eqz(FloatParts64 *a) in frac64_eqz() argument
1112 return a->frac == 0; in frac64_eqz()
1115 static bool frac128_eqz(FloatParts128 *a) in frac128_eqz() argument
1117 return (a->frac_hi | a->frac_lo) == 0; in frac128_eqz()
1120 #define frac_eqz(A) FRAC_GENERIC_64_128(eqz, A)(A) argument
1122 static void frac64_mulw(FloatParts128 *r, FloatParts64 *a, FloatParts64 *b) in frac64_mulw() argument
1124 mulu64(&r->frac_lo, &r->frac_hi, a->frac, b->frac); in frac64_mulw()
1127 static void frac128_mulw(FloatParts256 *r, FloatParts128 *a, FloatParts128 *b) in frac128_mulw() argument
1129 mul128To256(a->frac_hi, a->frac_lo, b->frac_hi, b->frac_lo, in frac128_mulw()
1133 #define frac_mulw(R, A, B) FRAC_GENERIC_64_128(mulw, A)(R, A, B) argument
1135 static void frac64_neg(FloatParts64 *a) in frac64_neg() argument
1137 a->frac = -a->frac; in frac64_neg()
1140 static void frac128_neg(FloatParts128 *a) in frac128_neg() argument
1143 a->frac_lo = usub64_borrow(0, a->frac_lo, &c); in frac128_neg()
1144 a->frac_hi = usub64_borrow(0, a->frac_hi, &c); in frac128_neg()
1147 static void frac256_neg(FloatParts256 *a) in frac256_neg() argument
1150 a->frac_lo = usub64_borrow(0, a->frac_lo, &c); in frac256_neg()
1151 a->frac_lm = usub64_borrow(0, a->frac_lm, &c); in frac256_neg()
1152 a->frac_hm = usub64_borrow(0, a->frac_hm, &c); in frac256_neg()
1153 a->frac_hi = usub64_borrow(0, a->frac_hi, &c); in frac256_neg()
1156 #define frac_neg(A) FRAC_GENERIC_64_128_256(neg, A)(A) argument
1158 static int frac64_normalize(FloatParts64 *a) in frac64_normalize() argument
1160 if (a->frac) { in frac64_normalize()
1161 int shift = clz64(a->frac); in frac64_normalize()
1162 a->frac <<= shift; in frac64_normalize()
1168 static int frac128_normalize(FloatParts128 *a) in frac128_normalize() argument
1170 if (a->frac_hi) { in frac128_normalize()
1171 int shl = clz64(a->frac_hi); in frac128_normalize()
1172 a->frac_hi = shl_double(a->frac_hi, a->frac_lo, shl); in frac128_normalize()
1173 a->frac_lo <<= shl; in frac128_normalize()
1175 } else if (a->frac_lo) { in frac128_normalize()
1176 int shl = clz64(a->frac_lo); in frac128_normalize()
1177 a->frac_hi = a->frac_lo << shl; in frac128_normalize()
1178 a->frac_lo = 0; in frac128_normalize()
1184 static int frac256_normalize(FloatParts256 *a) in frac256_normalize() argument
1186 uint64_t a0 = a->frac_hi, a1 = a->frac_hm; in frac256_normalize()
1187 uint64_t a2 = a->frac_lm, a3 = a->frac_lo; in frac256_normalize()
1224 a->frac_hi = a0; in frac256_normalize()
1225 a->frac_hm = a1; in frac256_normalize()
1226 a->frac_lm = a2; in frac256_normalize()
1227 a->frac_lo = a3; in frac256_normalize()
1231 #define frac_normalize(A) FRAC_GENERIC_64_128_256(normalize, A)(A) argument
1233 static void frac64_modrem(FloatParts64 *a, FloatParts64 *b, uint64_t *mod_quot) in frac64_modrem() argument
1236 int exp_diff = a->exp - b->exp; in frac64_modrem()
1239 a0 = a->frac; in frac64_modrem()
1295 a->sign = !a->sign; in frac64_modrem()
1308 a->cls = float_class_zero; in frac64_modrem()
1312 a->exp = b->exp + exp_diff - shift; in frac64_modrem()
1313 a->frac = a0 | (a1 != 0); in frac64_modrem()
1316 static void frac128_modrem(FloatParts128 *a, FloatParts128 *b, in frac128_modrem() argument
1320 int exp_diff = a->exp - b->exp; in frac128_modrem()
1323 a0 = a->frac_hi; in frac128_modrem()
1324 a1 = a->frac_lo; in frac128_modrem()
1384 a->sign = !a->sign; in frac128_modrem()
1402 a->cls = float_class_zero; in frac128_modrem()
1406 a->exp = b->exp + exp_diff - shift; in frac128_modrem()
1407 a->frac_hi = a0; in frac128_modrem()
1408 a->frac_lo = a1 | (a2 != 0); in frac128_modrem()
1411 #define frac_modrem(A, B, Q) FRAC_GENERIC_64_128(modrem, A)(A, B, Q) argument
1413 static void frac64_shl(FloatParts64 *a, int c) in frac64_shl() argument
1415 a->frac <<= c; in frac64_shl()
1418 static void frac128_shl(FloatParts128 *a, int c) in frac128_shl() argument
1420 uint64_t a0 = a->frac_hi, a1 = a->frac_lo; in frac128_shl()
1432 a->frac_hi = a0; in frac128_shl()
1433 a->frac_lo = a1; in frac128_shl()
1436 #define frac_shl(A, C) FRAC_GENERIC_64_128(shl, A)(A, C) argument
1438 static void frac64_shr(FloatParts64 *a, int c) in frac64_shr() argument
1440 a->frac >>= c; in frac64_shr()
1443 static void frac128_shr(FloatParts128 *a, int c) in frac128_shr() argument
1445 uint64_t a0 = a->frac_hi, a1 = a->frac_lo; in frac128_shr()
1457 a->frac_hi = a0; in frac128_shr()
1458 a->frac_lo = a1; in frac128_shr()
1461 #define frac_shr(A, C) FRAC_GENERIC_64_128(shr, A)(A, C) argument
1463 static void frac64_shrjam(FloatParts64 *a, int c) in frac64_shrjam() argument
1465 uint64_t a0 = a->frac; in frac64_shrjam()
1473 a->frac = a0; in frac64_shrjam()
1477 static void frac128_shrjam(FloatParts128 *a, int c) in frac128_shrjam() argument
1479 uint64_t a0 = a->frac_hi, a1 = a->frac_lo; in frac128_shrjam()
1505 a->frac_lo = a1 | (sticky != 0); in frac128_shrjam()
1506 a->frac_hi = a0; in frac128_shrjam()
1509 static void frac256_shrjam(FloatParts256 *a, int c) in frac256_shrjam() argument
1511 uint64_t a0 = a->frac_hi, a1 = a->frac_hm; in frac256_shrjam()
1512 uint64_t a2 = a->frac_lm, a3 = a->frac_lo; in frac256_shrjam()
1545 a->frac_lo = a3 | (sticky != 0); in frac256_shrjam()
1546 a->frac_lm = a2; in frac256_shrjam()
1547 a->frac_hm = a1; in frac256_shrjam()
1548 a->frac_hi = a0; in frac256_shrjam()
1551 #define frac_shrjam(A, C) FRAC_GENERIC_64_128_256(shrjam, A)(A, C) argument
1553 static bool frac64_sub(FloatParts64 *r, FloatParts64 *a, FloatParts64 *b) in frac64_sub() argument
1555 return usub64_overflow(a->frac, b->frac, &r->frac); in frac64_sub()
1558 static bool frac128_sub(FloatParts128 *r, FloatParts128 *a, FloatParts128 *b) in frac128_sub() argument
1561 r->frac_lo = usub64_borrow(a->frac_lo, b->frac_lo, &c); in frac128_sub()
1562 r->frac_hi = usub64_borrow(a->frac_hi, b->frac_hi, &c); in frac128_sub()
1566 static bool frac256_sub(FloatParts256 *r, FloatParts256 *a, FloatParts256 *b) in frac256_sub() argument
1569 r->frac_lo = usub64_borrow(a->frac_lo, b->frac_lo, &c); in frac256_sub()
1570 r->frac_lm = usub64_borrow(a->frac_lm, b->frac_lm, &c); in frac256_sub()
1571 r->frac_hm = usub64_borrow(a->frac_hm, b->frac_hm, &c); in frac256_sub()
1572 r->frac_hi = usub64_borrow(a->frac_hi, b->frac_hi, &c); in frac256_sub()
1576 #define frac_sub(R, A, B) FRAC_GENERIC_64_128_256(sub, R)(R, A, B) argument
1578 static void frac64_truncjam(FloatParts64 *r, FloatParts128 *a) in frac64_truncjam() argument
1580 r->frac = a->frac_hi | (a->frac_lo != 0); in frac64_truncjam()
1583 static void frac128_truncjam(FloatParts128 *r, FloatParts256 *a) in frac128_truncjam() argument
1585 r->frac_hi = a->frac_hi; in frac128_truncjam()
1586 r->frac_lo = a->frac_hm | ((a->frac_lm | a->frac_lo) != 0); in frac128_truncjam()
1589 #define frac_truncjam(R, A) FRAC_GENERIC_64_128(truncjam, R)(R, A) argument
1591 static void frac64_widen(FloatParts128 *r, FloatParts64 *a) in frac64_widen() argument
1593 r->frac_hi = a->frac; in frac64_widen()
1597 static void frac128_widen(FloatParts256 *r, FloatParts128 *a) in frac128_widen() argument
1599 r->frac_hi = a->frac_hi; in frac128_widen()
1600 r->frac_hm = a->frac_lo; in frac128_widen()
1605 #define frac_widen(A, B) FRAC_GENERIC_64_128(widen, B)(A, B) argument
1662 * Pack/unpack routines with a specific FloatFmt.
1886 float16_addsub(float16 a, float16 b, float_status *status, bool subtract) in float16_addsub() argument
1890 float16_unpack_canonical(&pa, a, status); in float16_addsub()
1897 float16 float16_add(float16 a, float16 b, float_status *status) in float16_add() argument
1899 return float16_addsub(a, b, status, false); in float16_add()
1902 float16 float16_sub(float16 a, float16 b, float_status *status) in float16_sub() argument
1904 return float16_addsub(a, b, status, true); in float16_sub()
1908 soft_f32_addsub(float32 a, float32 b, float_status *status, bool subtract) in soft_f32_addsub() argument
1912 float32_unpack_canonical(&pa, a, status); in soft_f32_addsub()
1919 static float32 soft_f32_add(float32 a, float32 b, float_status *status) in soft_f32_add() argument
1921 return soft_f32_addsub(a, b, status, false); in soft_f32_add()
1924 static float32 soft_f32_sub(float32 a, float32 b, float_status *status) in soft_f32_sub() argument
1926 return soft_f32_addsub(a, b, status, true); in soft_f32_sub()
1930 soft_f64_addsub(float64 a, float64 b, float_status *status, bool subtract) in soft_f64_addsub() argument
1934 float64_unpack_canonical(&pa, a, status); in soft_f64_addsub()
1941 static float64 soft_f64_add(float64 a, float64 b, float_status *status) in soft_f64_add() argument
1943 return soft_f64_addsub(a, b, status, false); in soft_f64_add()
1946 static float64 soft_f64_sub(float64 a, float64 b, float_status *status) in soft_f64_sub() argument
1948 return soft_f64_addsub(a, b, status, true); in soft_f64_sub()
1951 static float hard_f32_add(float a, float b) in hard_f32_add() argument
1953 return a + b; in hard_f32_add()
1956 static float hard_f32_sub(float a, float b) in hard_f32_sub() argument
1958 return a - b; in hard_f32_sub()
1961 static double hard_f64_add(double a, double b) in hard_f64_add() argument
1963 return a + b; in hard_f64_add()
1966 static double hard_f64_sub(double a, double b) in hard_f64_sub() argument
1968 return a - b; in hard_f64_sub()
1971 static bool f32_addsubmul_post(union_float32 a, union_float32 b) in f32_addsubmul_post() argument
1974 return !(fpclassify(a.h) == FP_ZERO && fpclassify(b.h) == FP_ZERO); in f32_addsubmul_post()
1976 return !(float32_is_zero(a.s) && float32_is_zero(b.s)); in f32_addsubmul_post()
1979 static bool f64_addsubmul_post(union_float64 a, union_float64 b) in f64_addsubmul_post() argument
1982 return !(fpclassify(a.h) == FP_ZERO && fpclassify(b.h) == FP_ZERO); in f64_addsubmul_post()
1984 return !(float64_is_zero(a.s) && float64_is_zero(b.s)); in f64_addsubmul_post()
1988 static float32 float32_addsub(float32 a, float32 b, float_status *s, in float32_addsub() argument
1991 return float32_gen2(a, b, s, hard, soft, in float32_addsub()
1995 static float64 float64_addsub(float64 a, float64 b, float_status *s, in float64_addsub() argument
1998 return float64_gen2(a, b, s, hard, soft, in float64_addsub()
2003 float32_add(float32 a, float32 b, float_status *s) in float32_add() argument
2005 return float32_addsub(a, b, s, hard_f32_add, soft_f32_add); in float32_add()
2009 float32_sub(float32 a, float32 b, float_status *s) in float32_sub() argument
2011 return float32_addsub(a, b, s, hard_f32_sub, soft_f32_sub); in float32_sub()
2015 float64_add(float64 a, float64 b, float_status *s) in float64_add() argument
2017 return float64_addsub(a, b, s, hard_f64_add, soft_f64_add); in float64_add()
2021 float64_sub(float64 a, float64 b, float_status *s) in float64_sub() argument
2023 return float64_addsub(a, b, s, hard_f64_sub, soft_f64_sub); in float64_sub()
2026 static float64 float64r32_addsub(float64 a, float64 b, float_status *status, in float64r32_addsub() argument
2031 float64_unpack_canonical(&pa, a, status); in float64r32_addsub()
2038 float64 float64r32_add(float64 a, float64 b, float_status *status) in float64r32_add() argument
2040 return float64r32_addsub(a, b, status, false); in float64r32_add()
2043 float64 float64r32_sub(float64 a, float64 b, float_status *status) in float64r32_sub() argument
2045 return float64r32_addsub(a, b, status, true); in float64r32_sub()
2049 bfloat16_addsub(bfloat16 a, bfloat16 b, float_status *status, bool subtract) in bfloat16_addsub() argument
2053 bfloat16_unpack_canonical(&pa, a, status); in bfloat16_addsub()
2060 bfloat16 bfloat16_add(bfloat16 a, bfloat16 b, float_status *status) in bfloat16_add() argument
2062 return bfloat16_addsub(a, b, status, false); in bfloat16_add()
2065 bfloat16 bfloat16_sub(bfloat16 a, bfloat16 b, float_status *status) in bfloat16_sub() argument
2067 return bfloat16_addsub(a, b, status, true); in bfloat16_sub()
2071 float128_addsub(float128 a, float128 b, float_status *status, bool subtract) in float128_addsub() argument
2075 float128_unpack_canonical(&pa, a, status); in float128_addsub()
2082 float128 float128_add(float128 a, float128 b, float_status *status) in float128_add() argument
2084 return float128_addsub(a, b, status, false); in float128_add()
2087 float128 float128_sub(float128 a, float128 b, float_status *status) in float128_sub() argument
2089 return float128_addsub(a, b, status, true); in float128_sub()
2093 floatx80_addsub(floatx80 a, floatx80 b, float_status *status, bool subtract) in floatx80_addsub() argument
2097 if (!floatx80_unpack_canonical(&pa, a, status) || in floatx80_addsub()
2106 floatx80 floatx80_add(floatx80 a, floatx80 b, float_status *status) in floatx80_add() argument
2108 return floatx80_addsub(a, b, status, false); in floatx80_add()
2111 floatx80 floatx80_sub(floatx80 a, floatx80 b, float_status *status) in floatx80_sub() argument
2113 return floatx80_addsub(a, b, status, true); in floatx80_sub()
2120 float16 QEMU_FLATTEN float16_mul(float16 a, float16 b, float_status *status) in float16_mul() argument
2124 float16_unpack_canonical(&pa, a, status); in float16_mul()
2132 soft_f32_mul(float32 a, float32 b, float_status *status) in soft_f32_mul() argument
2136 float32_unpack_canonical(&pa, a, status); in soft_f32_mul()
2144 soft_f64_mul(float64 a, float64 b, float_status *status) in soft_f64_mul() argument
2148 float64_unpack_canonical(&pa, a, status); in soft_f64_mul()
2155 static float hard_f32_mul(float a, float b) in hard_f32_mul() argument
2157 return a * b; in hard_f32_mul()
2160 static double hard_f64_mul(double a, double b) in hard_f64_mul() argument
2162 return a * b; in hard_f64_mul()
2166 float32_mul(float32 a, float32 b, float_status *s) in float32_mul() argument
2168 return float32_gen2(a, b, s, hard_f32_mul, soft_f32_mul, in float32_mul()
2173 float64_mul(float64 a, float64 b, float_status *s) in float64_mul() argument
2175 return float64_gen2(a, b, s, hard_f64_mul, soft_f64_mul, in float64_mul()
2179 float64 float64r32_mul(float64 a, float64 b, float_status *status) in float64r32_mul() argument
2183 float64_unpack_canonical(&pa, a, status); in float64r32_mul()
2191 bfloat16_mul(bfloat16 a, bfloat16 b, float_status *status) in bfloat16_mul() argument
2195 bfloat16_unpack_canonical(&pa, a, status); in bfloat16_mul()
2203 float128_mul(float128 a, float128 b, float_status *status) in float128_mul() argument
2207 float128_unpack_canonical(&pa, a, status); in float128_mul()
2215 floatx80_mul(floatx80 a, floatx80 b, float_status *status) in floatx80_mul() argument
2219 if (!floatx80_unpack_canonical(&pa, a, status) || in floatx80_mul()
2233 float16_muladd_scalbn(float16 a, float16 b, float16 c, in float16_muladd_scalbn() argument
2238 float16_unpack_canonical(&pa, a, status); in float16_muladd_scalbn()
2246 float16 float16_muladd(float16 a, float16 b, float16 c, in float16_muladd() argument
2249 return float16_muladd_scalbn(a, b, c, 0, flags, status); in float16_muladd()
2253 float32_muladd_scalbn(float32 a, float32 b, float32 c, in float32_muladd_scalbn() argument
2258 float32_unpack_canonical(&pa, a, status); in float32_muladd_scalbn()
2267 float64_muladd_scalbn(float64 a, float64 b, float64 c, in float64_muladd_scalbn() argument
2272 float64_unpack_canonical(&pa, a, status); in float64_muladd_scalbn()
2308 * When (a || b) == 0, there's no need to check for under/over flow, in float32_muladd()
2376 * When (a || b) == 0, there's no need to check for under/over flow, in float64_muladd()
2421 float64 float64r32_muladd(float64 a, float64 b, float64 c, in float64r32_muladd() argument
2426 float64_unpack_canonical(&pa, a, status); in float64r32_muladd()
2434 bfloat16 QEMU_FLATTEN bfloat16_muladd(bfloat16 a, bfloat16 b, bfloat16 c, in bfloat16_muladd() argument
2439 bfloat16_unpack_canonical(&pa, a, status); in bfloat16_muladd()
2447 float128 QEMU_FLATTEN float128_muladd(float128 a, float128 b, float128 c, in float128_muladd() argument
2452 float128_unpack_canonical(&pa, a, status); in float128_muladd()
2464 float16 float16_div(float16 a, float16 b, float_status *status) in float16_div() argument
2468 float16_unpack_canonical(&pa, a, status); in float16_div()
2476 soft_f32_div(float32 a, float32 b, float_status *status) in soft_f32_div() argument
2480 float32_unpack_canonical(&pa, a, status); in soft_f32_div()
2488 soft_f64_div(float64 a, float64 b, float_status *status) in soft_f64_div() argument
2492 float64_unpack_canonical(&pa, a, status); in soft_f64_div()
2499 static float hard_f32_div(float a, float b) in hard_f32_div() argument
2501 return a / b; in hard_f32_div()
2504 static double hard_f64_div(double a, double b) in hard_f64_div() argument
2506 return a / b; in hard_f64_div()
2509 static bool f32_div_pre(union_float32 a, union_float32 b) in f32_div_pre() argument
2512 return (fpclassify(a.h) == FP_NORMAL || fpclassify(a.h) == FP_ZERO) && in f32_div_pre()
2515 return float32_is_zero_or_normal(a.s) && float32_is_normal(b.s); in f32_div_pre()
2518 static bool f64_div_pre(union_float64 a, union_float64 b) in f64_div_pre() argument
2521 return (fpclassify(a.h) == FP_NORMAL || fpclassify(a.h) == FP_ZERO) && in f64_div_pre()
2524 return float64_is_zero_or_normal(a.s) && float64_is_normal(b.s); in f64_div_pre()
2527 static bool f32_div_post(union_float32 a, union_float32 b) in f32_div_post() argument
2530 return fpclassify(a.h) != FP_ZERO; in f32_div_post()
2532 return !float32_is_zero(a.s); in f32_div_post()
2535 static bool f64_div_post(union_float64 a, union_float64 b) in f64_div_post() argument
2538 return fpclassify(a.h) != FP_ZERO; in f64_div_post()
2540 return !float64_is_zero(a.s); in f64_div_post()
2544 float32_div(float32 a, float32 b, float_status *s) in float32_div() argument
2546 return float32_gen2(a, b, s, hard_f32_div, soft_f32_div, in float32_div()
2551 float64_div(float64 a, float64 b, float_status *s) in float64_div() argument
2553 return float64_gen2(a, b, s, hard_f64_div, soft_f64_div, in float64_div()
2557 float64 float64r32_div(float64 a, float64 b, float_status *status) in float64r32_div() argument
2561 float64_unpack_canonical(&pa, a, status); in float64r32_div()
2569 bfloat16_div(bfloat16 a, bfloat16 b, float_status *status) in bfloat16_div() argument
2573 bfloat16_unpack_canonical(&pa, a, status); in bfloat16_div()
2581 float128_div(float128 a, float128 b, float_status *status) in float128_div() argument
2585 float128_unpack_canonical(&pa, a, status); in float128_div()
2592 floatx80 floatx80_div(floatx80 a, floatx80 b, float_status *status) in floatx80_div() argument
2596 if (!floatx80_unpack_canonical(&pa, a, status) || in floatx80_div()
2609 float32 float32_rem(float32 a, float32 b, float_status *status) in float32_rem() argument
2613 float32_unpack_canonical(&pa, a, status); in float32_rem()
2620 float64 float64_rem(float64 a, float64 b, float_status *status) in float64_rem() argument
2624 float64_unpack_canonical(&pa, a, status); in float64_rem()
2631 float128 float128_rem(float128 a, float128 b, float_status *status) in float128_rem() argument
2635 float128_unpack_canonical(&pa, a, status); in float128_rem()
2644 * `a' with respect to the corresponding value `b'.
2651 floatx80 floatx80_modrem(floatx80 a, floatx80 b, bool mod, in floatx80_modrem() argument
2657 if (!floatx80_unpack_canonical(&pa, a, status) || in floatx80_modrem()
2666 floatx80 floatx80_rem(floatx80 a, floatx80 b, float_status *status) in floatx80_rem() argument
2669 return floatx80_modrem(a, b, false, "ient, status); in floatx80_rem()
2672 floatx80 floatx80_mod(floatx80 a, floatx80 b, float_status *status) in floatx80_mod() argument
2675 return floatx80_modrem(a, b, true, "ient, status); in floatx80_mod()
2689 static void parts_float_to_ahp(FloatParts64 *a, float_status *s) in parts_float_to_ahp() argument
2691 switch (a->cls) { in parts_float_to_ahp()
2698 * and return a zero with the sign of the input NaN. in parts_float_to_ahp()
2701 a->cls = float_class_zero; in parts_float_to_ahp()
2710 a->cls = float_class_normal; in parts_float_to_ahp()
2711 a->exp = float16_params_ahp.exp_max; in parts_float_to_ahp()
2712 a->frac = MAKE_64BIT_MASK(float16_params_ahp.frac_shift, in parts_float_to_ahp()
2728 static void parts64_float_to_float(FloatParts64 *a, float_status *s) in parts64_float_to_float() argument
2730 if (is_nan(a->cls)) { in parts64_float_to_float()
2731 parts_return_nan(a, s); in parts64_float_to_float()
2733 if (a->cls == float_class_denormal) { in parts64_float_to_float()
2738 static void parts128_float_to_float(FloatParts128 *a, float_status *s) in parts128_float_to_float() argument
2740 if (is_nan(a->cls)) { in parts128_float_to_float()
2741 parts_return_nan(a, s); in parts128_float_to_float()
2743 if (a->cls == float_class_denormal) { in parts128_float_to_float()
2751 static void parts_float_to_float_narrow(FloatParts64 *a, FloatParts128 *b, in parts_float_to_float_narrow() argument
2754 a->cls = b->cls; in parts_float_to_float_narrow()
2755 a->sign = b->sign; in parts_float_to_float_narrow()
2756 a->exp = b->exp; in parts_float_to_float_narrow()
2758 switch (a->cls) { in parts_float_to_float_narrow()
2763 frac_truncjam(a, b); in parts_float_to_float_narrow()
2768 a->frac = b->frac_hi; in parts_float_to_float_narrow()
2769 parts_return_nan(a, s); in parts_float_to_float_narrow()
2776 static void parts_float_to_float_widen(FloatParts128 *a, FloatParts64 *b, in parts_float_to_float_widen() argument
2779 a->cls = b->cls; in parts_float_to_float_widen()
2780 a->sign = b->sign; in parts_float_to_float_widen()
2781 a->exp = b->exp; in parts_float_to_float_widen()
2782 frac_widen(a, b); in parts_float_to_float_widen()
2784 if (is_nan(a->cls)) { in parts_float_to_float_widen()
2785 parts_return_nan(a, s); in parts_float_to_float_widen()
2787 if (a->cls == float_class_denormal) { in parts_float_to_float_widen()
2792 float32 float16_to_float32(float16 a, bool ieee, float_status *s) in float16_to_float32() argument
2797 float16a_unpack_canonical(&p, a, s, fmt16); in float16_to_float32()
2802 float64 float16_to_float64(float16 a, bool ieee, float_status *s) in float16_to_float64() argument
2807 float16a_unpack_canonical(&p, a, s, fmt16); in float16_to_float64()
2812 float16 float32_to_float16(float32 a, bool ieee, float_status *s) in float32_to_float16() argument
2817 float32_unpack_canonical(&p, a, s); in float32_to_float16()
2829 soft_float32_to_float64(float32 a, float_status *s) in soft_float32_to_float64() argument
2833 float32_unpack_canonical(&p, a, s); in soft_float32_to_float64()
2838 float64 float32_to_float64(float32 a, float_status *s) in float32_to_float64() argument
2840 if (likely(float32_is_normal(a))) { in float32_to_float64()
2844 uf.s = a; in float32_to_float64()
2847 } else if (float32_is_zero(a)) { in float32_to_float64()
2848 return float64_set_sign(float64_zero, float32_is_neg(a)); in float32_to_float64()
2850 return soft_float32_to_float64(a, s); in float32_to_float64()
2854 float16 float64_to_float16(float64 a, bool ieee, float_status *s) in float64_to_float16() argument
2859 float64_unpack_canonical(&p, a, s); in float64_to_float16()
2870 float32 float64_to_float32(float64 a, float_status *s) in float64_to_float32() argument
2874 float64_unpack_canonical(&p, a, s); in float64_to_float32()
2879 float32 bfloat16_to_float32(bfloat16 a, float_status *s) in bfloat16_to_float32() argument
2883 bfloat16_unpack_canonical(&p, a, s); in bfloat16_to_float32()
2888 float64 bfloat16_to_float64(bfloat16 a, float_status *s) in bfloat16_to_float64() argument
2892 bfloat16_unpack_canonical(&p, a, s); in bfloat16_to_float64()
2897 bfloat16 float32_to_bfloat16(float32 a, float_status *s) in float32_to_bfloat16() argument
2901 float32_unpack_canonical(&p, a, s); in float32_to_bfloat16()
2906 bfloat16 float64_to_bfloat16(float64 a, float_status *s) in float64_to_bfloat16() argument
2910 float64_unpack_canonical(&p, a, s); in float64_to_bfloat16()
2915 float32 float128_to_float32(float128 a, float_status *s) in float128_to_float32() argument
2920 float128_unpack_canonical(&p128, a, s); in float128_to_float32()
2925 float64 float128_to_float64(float128 a, float_status *s) in float128_to_float64() argument
2930 float128_unpack_canonical(&p128, a, s); in float128_to_float64()
2935 float128 float32_to_float128(float32 a, float_status *s) in float32_to_float128() argument
2940 float32_unpack_canonical(&p64, a, s); in float32_to_float128()
2945 float128 float64_to_float128(float64 a, float_status *s) in float64_to_float128() argument
2950 float64_unpack_canonical(&p64, a, s); in float64_to_float128()
2955 float32 floatx80_to_float32(floatx80 a, float_status *s) in floatx80_to_float32() argument
2960 if (floatx80_unpack_canonical(&p128, a, s)) { in floatx80_to_float32()
2968 float64 floatx80_to_float64(floatx80 a, float_status *s) in floatx80_to_float64() argument
2973 if (floatx80_unpack_canonical(&p128, a, s)) { in floatx80_to_float64()
2981 float128 floatx80_to_float128(floatx80 a, float_status *s) in floatx80_to_float128() argument
2985 if (floatx80_unpack_canonical(&p, a, s)) { in floatx80_to_float128()
2993 floatx80 float32_to_floatx80(float32 a, float_status *s) in float32_to_floatx80() argument
2998 float32_unpack_canonical(&p64, a, s); in float32_to_floatx80()
3003 floatx80 float64_to_floatx80(float64 a, float_status *s) in float64_to_floatx80() argument
3008 float64_unpack_canonical(&p64, a, s); in float64_to_floatx80()
3013 floatx80 float128_to_floatx80(float128 a, float_status *s) in float128_to_floatx80() argument
3017 float128_unpack_canonical(&p, a, s); in float128_to_floatx80()
3026 float16 float16_round_to_int(float16 a, float_status *s) in float16_round_to_int() argument
3030 float16_unpack_canonical(&p, a, s); in float16_round_to_int()
3035 float32 float32_round_to_int(float32 a, float_status *s) in float32_round_to_int() argument
3039 float32_unpack_canonical(&p, a, s); in float32_round_to_int()
3044 float64 float64_round_to_int(float64 a, float_status *s) in float64_round_to_int() argument
3048 float64_unpack_canonical(&p, a, s); in float64_round_to_int()
3053 bfloat16 bfloat16_round_to_int(bfloat16 a, float_status *s) in bfloat16_round_to_int() argument
3057 bfloat16_unpack_canonical(&p, a, s); in bfloat16_round_to_int()
3062 float128 float128_round_to_int(float128 a, float_status *s) in float128_round_to_int() argument
3066 float128_unpack_canonical(&p, a, s); in float128_round_to_int()
3071 floatx80 floatx80_round_to_int(floatx80 a, float_status *status) in floatx80_round_to_int() argument
3075 if (!floatx80_unpack_canonical(&p, a, status)) { in floatx80_round_to_int()
3088 int8_t float16_to_int8_scalbn(float16 a, FloatRoundMode rmode, int scale, in float16_to_int8_scalbn() argument
3093 float16_unpack_canonical(&p, a, s); in float16_to_int8_scalbn()
3097 int16_t float16_to_int16_scalbn(float16 a, FloatRoundMode rmode, int scale, in float16_to_int16_scalbn() argument
3102 float16_unpack_canonical(&p, a, s); in float16_to_int16_scalbn()
3106 int32_t float16_to_int32_scalbn(float16 a, FloatRoundMode rmode, int scale, in float16_to_int32_scalbn() argument
3111 float16_unpack_canonical(&p, a, s); in float16_to_int32_scalbn()
3115 int64_t float16_to_int64_scalbn(float16 a, FloatRoundMode rmode, int scale, in float16_to_int64_scalbn() argument
3120 float16_unpack_canonical(&p, a, s); in float16_to_int64_scalbn()
3124 int16_t float32_to_int16_scalbn(float32 a, FloatRoundMode rmode, int scale, in float32_to_int16_scalbn() argument
3129 float32_unpack_canonical(&p, a, s); in float32_to_int16_scalbn()
3133 int32_t float32_to_int32_scalbn(float32 a, FloatRoundMode rmode, int scale, in float32_to_int32_scalbn() argument
3138 float32_unpack_canonical(&p, a, s); in float32_to_int32_scalbn()
3142 int64_t float32_to_int64_scalbn(float32 a, FloatRoundMode rmode, int scale, in float32_to_int64_scalbn() argument
3147 float32_unpack_canonical(&p, a, s); in float32_to_int64_scalbn()
3151 int16_t float64_to_int16_scalbn(float64 a, FloatRoundMode rmode, int scale, in float64_to_int16_scalbn() argument
3156 float64_unpack_canonical(&p, a, s); in float64_to_int16_scalbn()
3160 int32_t float64_to_int32_scalbn(float64 a, FloatRoundMode rmode, int scale, in float64_to_int32_scalbn() argument
3165 float64_unpack_canonical(&p, a, s); in float64_to_int32_scalbn()
3169 int64_t float64_to_int64_scalbn(float64 a, FloatRoundMode rmode, int scale, in float64_to_int64_scalbn() argument
3174 float64_unpack_canonical(&p, a, s); in float64_to_int64_scalbn()
3178 int8_t bfloat16_to_int8_scalbn(bfloat16 a, FloatRoundMode rmode, int scale, in bfloat16_to_int8_scalbn() argument
3183 bfloat16_unpack_canonical(&p, a, s); in bfloat16_to_int8_scalbn()
3187 int16_t bfloat16_to_int16_scalbn(bfloat16 a, FloatRoundMode rmode, int scale, in bfloat16_to_int16_scalbn() argument
3192 bfloat16_unpack_canonical(&p, a, s); in bfloat16_to_int16_scalbn()
3196 int32_t bfloat16_to_int32_scalbn(bfloat16 a, FloatRoundMode rmode, int scale, in bfloat16_to_int32_scalbn() argument
3201 bfloat16_unpack_canonical(&p, a, s); in bfloat16_to_int32_scalbn()
3205 int64_t bfloat16_to_int64_scalbn(bfloat16 a, FloatRoundMode rmode, int scale, in bfloat16_to_int64_scalbn() argument
3210 bfloat16_unpack_canonical(&p, a, s); in bfloat16_to_int64_scalbn()
3214 static int32_t float128_to_int32_scalbn(float128 a, FloatRoundMode rmode, in float128_to_int32_scalbn() argument
3219 float128_unpack_canonical(&p, a, s); in float128_to_int32_scalbn()
3223 static int64_t float128_to_int64_scalbn(float128 a, FloatRoundMode rmode, in float128_to_int64_scalbn() argument
3228 float128_unpack_canonical(&p, a, s); in float128_to_int64_scalbn()
3232 static Int128 float128_to_int128_scalbn(float128 a, FloatRoundMode rmode, in float128_to_int128_scalbn() argument
3239 float128_unpack_canonical(&p, a, s); in float128_to_int128_scalbn()
3287 static int32_t floatx80_to_int32_scalbn(floatx80 a, FloatRoundMode rmode, in floatx80_to_int32_scalbn() argument
3292 if (!floatx80_unpack_canonical(&p, a, s)) { in floatx80_to_int32_scalbn()
3298 static int64_t floatx80_to_int64_scalbn(floatx80 a, FloatRoundMode rmode, in floatx80_to_int64_scalbn() argument
3303 if (!floatx80_unpack_canonical(&p, a, s)) { in floatx80_to_int64_scalbn()
3309 int8_t float16_to_int8(float16 a, float_status *s) in float16_to_int8() argument
3311 return float16_to_int8_scalbn(a, s->float_rounding_mode, 0, s); in float16_to_int8()
3314 int16_t float16_to_int16(float16 a, float_status *s) in float16_to_int16() argument
3316 return float16_to_int16_scalbn(a, s->float_rounding_mode, 0, s); in float16_to_int16()
3319 int32_t float16_to_int32(float16 a, float_status *s) in float16_to_int32() argument
3321 return float16_to_int32_scalbn(a, s->float_rounding_mode, 0, s); in float16_to_int32()
3324 int64_t float16_to_int64(float16 a, float_status *s) in float16_to_int64() argument
3326 return float16_to_int64_scalbn(a, s->float_rounding_mode, 0, s); in float16_to_int64()
3329 int16_t float32_to_int16(float32 a, float_status *s) in float32_to_int16() argument
3331 return float32_to_int16_scalbn(a, s->float_rounding_mode, 0, s); in float32_to_int16()
3334 int32_t float32_to_int32(float32 a, float_status *s) in float32_to_int32() argument
3336 return float32_to_int32_scalbn(a, s->float_rounding_mode, 0, s); in float32_to_int32()
3339 int64_t float32_to_int64(float32 a, float_status *s) in float32_to_int64() argument
3341 return float32_to_int64_scalbn(a, s->float_rounding_mode, 0, s); in float32_to_int64()
3344 int16_t float64_to_int16(float64 a, float_status *s) in float64_to_int16() argument
3346 return float64_to_int16_scalbn(a, s->float_rounding_mode, 0, s); in float64_to_int16()
3349 int32_t float64_to_int32(float64 a, float_status *s) in float64_to_int32() argument
3351 return float64_to_int32_scalbn(a, s->float_rounding_mode, 0, s); in float64_to_int32()
3354 int64_t float64_to_int64(float64 a, float_status *s) in float64_to_int64() argument
3356 return float64_to_int64_scalbn(a, s->float_rounding_mode, 0, s); in float64_to_int64()
3359 int32_t float128_to_int32(float128 a, float_status *s) in float128_to_int32() argument
3361 return float128_to_int32_scalbn(a, s->float_rounding_mode, 0, s); in float128_to_int32()
3364 int64_t float128_to_int64(float128 a, float_status *s) in float128_to_int64() argument
3366 return float128_to_int64_scalbn(a, s->float_rounding_mode, 0, s); in float128_to_int64()
3369 Int128 float128_to_int128(float128 a, float_status *s) in float128_to_int128() argument
3371 return float128_to_int128_scalbn(a, s->float_rounding_mode, 0, s); in float128_to_int128()
3374 int32_t floatx80_to_int32(floatx80 a, float_status *s) in floatx80_to_int32() argument
3376 return floatx80_to_int32_scalbn(a, s->float_rounding_mode, 0, s); in floatx80_to_int32()
3379 int64_t floatx80_to_int64(floatx80 a, float_status *s) in floatx80_to_int64() argument
3381 return floatx80_to_int64_scalbn(a, s->float_rounding_mode, 0, s); in floatx80_to_int64()
3384 int16_t float16_to_int16_round_to_zero(float16 a, float_status *s) in float16_to_int16_round_to_zero() argument
3386 return float16_to_int16_scalbn(a, float_round_to_zero, 0, s); in float16_to_int16_round_to_zero()
3389 int32_t float16_to_int32_round_to_zero(float16 a, float_status *s) in float16_to_int32_round_to_zero() argument
3391 return float16_to_int32_scalbn(a, float_round_to_zero, 0, s); in float16_to_int32_round_to_zero()
3394 int64_t float16_to_int64_round_to_zero(float16 a, float_status *s) in float16_to_int64_round_to_zero() argument
3396 return float16_to_int64_scalbn(a, float_round_to_zero, 0, s); in float16_to_int64_round_to_zero()
3399 int16_t float32_to_int16_round_to_zero(float32 a, float_status *s) in float32_to_int16_round_to_zero() argument
3401 return float32_to_int16_scalbn(a, float_round_to_zero, 0, s); in float32_to_int16_round_to_zero()
3404 int32_t float32_to_int32_round_to_zero(float32 a, float_status *s) in float32_to_int32_round_to_zero() argument
3406 return float32_to_int32_scalbn(a, float_round_to_zero, 0, s); in float32_to_int32_round_to_zero()
3409 int64_t float32_to_int64_round_to_zero(float32 a, float_status *s) in float32_to_int64_round_to_zero() argument
3411 return float32_to_int64_scalbn(a, float_round_to_zero, 0, s); in float32_to_int64_round_to_zero()
3414 int16_t float64_to_int16_round_to_zero(float64 a, float_status *s) in float64_to_int16_round_to_zero() argument
3416 return float64_to_int16_scalbn(a, float_round_to_zero, 0, s); in float64_to_int16_round_to_zero()
3419 int32_t float64_to_int32_round_to_zero(float64 a, float_status *s) in float64_to_int32_round_to_zero() argument
3421 return float64_to_int32_scalbn(a, float_round_to_zero, 0, s); in float64_to_int32_round_to_zero()
3424 int64_t float64_to_int64_round_to_zero(float64 a, float_status *s) in float64_to_int64_round_to_zero() argument
3426 return float64_to_int64_scalbn(a, float_round_to_zero, 0, s); in float64_to_int64_round_to_zero()
3429 int32_t float128_to_int32_round_to_zero(float128 a, float_status *s) in float128_to_int32_round_to_zero() argument
3431 return float128_to_int32_scalbn(a, float_round_to_zero, 0, s); in float128_to_int32_round_to_zero()
3434 int64_t float128_to_int64_round_to_zero(float128 a, float_status *s) in float128_to_int64_round_to_zero() argument
3436 return float128_to_int64_scalbn(a, float_round_to_zero, 0, s); in float128_to_int64_round_to_zero()
3439 Int128 float128_to_int128_round_to_zero(float128 a, float_status *s) in float128_to_int128_round_to_zero() argument
3441 return float128_to_int128_scalbn(a, float_round_to_zero, 0, s); in float128_to_int128_round_to_zero()
3444 int32_t floatx80_to_int32_round_to_zero(floatx80 a, float_status *s) in floatx80_to_int32_round_to_zero() argument
3446 return floatx80_to_int32_scalbn(a, float_round_to_zero, 0, s); in floatx80_to_int32_round_to_zero()
3449 int64_t floatx80_to_int64_round_to_zero(floatx80 a, float_status *s) in floatx80_to_int64_round_to_zero() argument
3451 return floatx80_to_int64_scalbn(a, float_round_to_zero, 0, s); in floatx80_to_int64_round_to_zero()
3454 int8_t bfloat16_to_int8(bfloat16 a, float_status *s) in bfloat16_to_int8() argument
3456 return bfloat16_to_int8_scalbn(a, s->float_rounding_mode, 0, s); in bfloat16_to_int8()
3459 int16_t bfloat16_to_int16(bfloat16 a, float_status *s) in bfloat16_to_int16() argument
3461 return bfloat16_to_int16_scalbn(a, s->float_rounding_mode, 0, s); in bfloat16_to_int16()
3464 int32_t bfloat16_to_int32(bfloat16 a, float_status *s) in bfloat16_to_int32() argument
3466 return bfloat16_to_int32_scalbn(a, s->float_rounding_mode, 0, s); in bfloat16_to_int32()
3469 int64_t bfloat16_to_int64(bfloat16 a, float_status *s) in bfloat16_to_int64() argument
3471 return bfloat16_to_int64_scalbn(a, s->float_rounding_mode, 0, s); in bfloat16_to_int64()
3474 int8_t bfloat16_to_int8_round_to_zero(bfloat16 a, float_status *s) in bfloat16_to_int8_round_to_zero() argument
3476 return bfloat16_to_int8_scalbn(a, float_round_to_zero, 0, s); in bfloat16_to_int8_round_to_zero()
3479 int16_t bfloat16_to_int16_round_to_zero(bfloat16 a, float_status *s) in bfloat16_to_int16_round_to_zero() argument
3481 return bfloat16_to_int16_scalbn(a, float_round_to_zero, 0, s); in bfloat16_to_int16_round_to_zero()
3484 int32_t bfloat16_to_int32_round_to_zero(bfloat16 a, float_status *s) in bfloat16_to_int32_round_to_zero() argument
3486 return bfloat16_to_int32_scalbn(a, float_round_to_zero, 0, s); in bfloat16_to_int32_round_to_zero()
3489 int64_t bfloat16_to_int64_round_to_zero(bfloat16 a, float_status *s) in bfloat16_to_int64_round_to_zero() argument
3491 return bfloat16_to_int64_scalbn(a, float_round_to_zero, 0, s); in bfloat16_to_int64_round_to_zero()
3494 int32_t float64_to_int32_modulo(float64 a, FloatRoundMode rmode, in float64_to_int32_modulo() argument
3499 float64_unpack_canonical(&p, a, s); in float64_to_int32_modulo()
3503 int64_t float64_to_int64_modulo(float64 a, FloatRoundMode rmode, in float64_to_int64_modulo() argument
3508 float64_unpack_canonical(&p, a, s); in float64_to_int64_modulo()
3516 uint8_t float16_to_uint8_scalbn(float16 a, FloatRoundMode rmode, int scale, in float16_to_uint8_scalbn() argument
3521 float16_unpack_canonical(&p, a, s); in float16_to_uint8_scalbn()
3525 uint16_t float16_to_uint16_scalbn(float16 a, FloatRoundMode rmode, int scale, in float16_to_uint16_scalbn() argument
3530 float16_unpack_canonical(&p, a, s); in float16_to_uint16_scalbn()
3534 uint32_t float16_to_uint32_scalbn(float16 a, FloatRoundMode rmode, int scale, in float16_to_uint32_scalbn() argument
3539 float16_unpack_canonical(&p, a, s); in float16_to_uint32_scalbn()
3543 uint64_t float16_to_uint64_scalbn(float16 a, FloatRoundMode rmode, int scale, in float16_to_uint64_scalbn() argument
3548 float16_unpack_canonical(&p, a, s); in float16_to_uint64_scalbn()
3552 uint16_t float32_to_uint16_scalbn(float32 a, FloatRoundMode rmode, int scale, in float32_to_uint16_scalbn() argument
3557 float32_unpack_canonical(&p, a, s); in float32_to_uint16_scalbn()
3561 uint32_t float32_to_uint32_scalbn(float32 a, FloatRoundMode rmode, int scale, in float32_to_uint32_scalbn() argument
3566 float32_unpack_canonical(&p, a, s); in float32_to_uint32_scalbn()
3570 uint64_t float32_to_uint64_scalbn(float32 a, FloatRoundMode rmode, int scale, in float32_to_uint64_scalbn() argument
3575 float32_unpack_canonical(&p, a, s); in float32_to_uint64_scalbn()
3579 uint16_t float64_to_uint16_scalbn(float64 a, FloatRoundMode rmode, int scale, in float64_to_uint16_scalbn() argument
3584 float64_unpack_canonical(&p, a, s); in float64_to_uint16_scalbn()
3588 uint32_t float64_to_uint32_scalbn(float64 a, FloatRoundMode rmode, int scale, in float64_to_uint32_scalbn() argument
3593 float64_unpack_canonical(&p, a, s); in float64_to_uint32_scalbn()
3597 uint64_t float64_to_uint64_scalbn(float64 a, FloatRoundMode rmode, int scale, in float64_to_uint64_scalbn() argument
3602 float64_unpack_canonical(&p, a, s); in float64_to_uint64_scalbn()
3606 uint8_t bfloat16_to_uint8_scalbn(bfloat16 a, FloatRoundMode rmode, in bfloat16_to_uint8_scalbn() argument
3611 bfloat16_unpack_canonical(&p, a, s); in bfloat16_to_uint8_scalbn()
3615 uint16_t bfloat16_to_uint16_scalbn(bfloat16 a, FloatRoundMode rmode, in bfloat16_to_uint16_scalbn() argument
3620 bfloat16_unpack_canonical(&p, a, s); in bfloat16_to_uint16_scalbn()
3624 uint32_t bfloat16_to_uint32_scalbn(bfloat16 a, FloatRoundMode rmode, in bfloat16_to_uint32_scalbn() argument
3629 bfloat16_unpack_canonical(&p, a, s); in bfloat16_to_uint32_scalbn()
3633 uint64_t bfloat16_to_uint64_scalbn(bfloat16 a, FloatRoundMode rmode, in bfloat16_to_uint64_scalbn() argument
3638 bfloat16_unpack_canonical(&p, a, s); in bfloat16_to_uint64_scalbn()
3642 static uint32_t float128_to_uint32_scalbn(float128 a, FloatRoundMode rmode, in float128_to_uint32_scalbn() argument
3647 float128_unpack_canonical(&p, a, s); in float128_to_uint32_scalbn()
3651 static uint64_t float128_to_uint64_scalbn(float128 a, FloatRoundMode rmode, in float128_to_uint64_scalbn() argument
3656 float128_unpack_canonical(&p, a, s); in float128_to_uint64_scalbn()
3660 static Int128 float128_to_uint128_scalbn(float128 a, FloatRoundMode rmode, in float128_to_uint128_scalbn() argument
3667 float128_unpack_canonical(&p, a, s); in float128_to_uint128_scalbn()
3716 uint8_t float16_to_uint8(float16 a, float_status *s) in float16_to_uint8() argument
3718 return float16_to_uint8_scalbn(a, s->float_rounding_mode, 0, s); in float16_to_uint8()
3721 uint16_t float16_to_uint16(float16 a, float_status *s) in float16_to_uint16() argument
3723 return float16_to_uint16_scalbn(a, s->float_rounding_mode, 0, s); in float16_to_uint16()
3726 uint32_t float16_to_uint32(float16 a, float_status *s) in float16_to_uint32() argument
3728 return float16_to_uint32_scalbn(a, s->float_rounding_mode, 0, s); in float16_to_uint32()
3731 uint64_t float16_to_uint64(float16 a, float_status *s) in float16_to_uint64() argument
3733 return float16_to_uint64_scalbn(a, s->float_rounding_mode, 0, s); in float16_to_uint64()
3736 uint16_t float32_to_uint16(float32 a, float_status *s) in float32_to_uint16() argument
3738 return float32_to_uint16_scalbn(a, s->float_rounding_mode, 0, s); in float32_to_uint16()
3741 uint32_t float32_to_uint32(float32 a, float_status *s) in float32_to_uint32() argument
3743 return float32_to_uint32_scalbn(a, s->float_rounding_mode, 0, s); in float32_to_uint32()
3746 uint64_t float32_to_uint64(float32 a, float_status *s) in float32_to_uint64() argument
3748 return float32_to_uint64_scalbn(a, s->float_rounding_mode, 0, s); in float32_to_uint64()
3751 uint16_t float64_to_uint16(float64 a, float_status *s) in float64_to_uint16() argument
3753 return float64_to_uint16_scalbn(a, s->float_rounding_mode, 0, s); in float64_to_uint16()
3756 uint32_t float64_to_uint32(float64 a, float_status *s) in float64_to_uint32() argument
3758 return float64_to_uint32_scalbn(a, s->float_rounding_mode, 0, s); in float64_to_uint32()
3761 uint64_t float64_to_uint64(float64 a, float_status *s) in float64_to_uint64() argument
3763 return float64_to_uint64_scalbn(a, s->float_rounding_mode, 0, s); in float64_to_uint64()
3766 uint32_t float128_to_uint32(float128 a, float_status *s) in float128_to_uint32() argument
3768 return float128_to_uint32_scalbn(a, s->float_rounding_mode, 0, s); in float128_to_uint32()
3771 uint64_t float128_to_uint64(float128 a, float_status *s) in float128_to_uint64() argument
3773 return float128_to_uint64_scalbn(a, s->float_rounding_mode, 0, s); in float128_to_uint64()
3776 Int128 float128_to_uint128(float128 a, float_status *s) in float128_to_uint128() argument
3778 return float128_to_uint128_scalbn(a, s->float_rounding_mode, 0, s); in float128_to_uint128()
3781 uint16_t float16_to_uint16_round_to_zero(float16 a, float_status *s) in float16_to_uint16_round_to_zero() argument
3783 return float16_to_uint16_scalbn(a, float_round_to_zero, 0, s); in float16_to_uint16_round_to_zero()
3786 uint32_t float16_to_uint32_round_to_zero(float16 a, float_status *s) in float16_to_uint32_round_to_zero() argument
3788 return float16_to_uint32_scalbn(a, float_round_to_zero, 0, s); in float16_to_uint32_round_to_zero()
3791 uint64_t float16_to_uint64_round_to_zero(float16 a, float_status *s) in float16_to_uint64_round_to_zero() argument
3793 return float16_to_uint64_scalbn(a, float_round_to_zero, 0, s); in float16_to_uint64_round_to_zero()
3796 uint16_t float32_to_uint16_round_to_zero(float32 a, float_status *s) in float32_to_uint16_round_to_zero() argument
3798 return float32_to_uint16_scalbn(a, float_round_to_zero, 0, s); in float32_to_uint16_round_to_zero()
3801 uint32_t float32_to_uint32_round_to_zero(float32 a, float_status *s) in float32_to_uint32_round_to_zero() argument
3803 return float32_to_uint32_scalbn(a, float_round_to_zero, 0, s); in float32_to_uint32_round_to_zero()
3806 uint64_t float32_to_uint64_round_to_zero(float32 a, float_status *s) in float32_to_uint64_round_to_zero() argument
3808 return float32_to_uint64_scalbn(a, float_round_to_zero, 0, s); in float32_to_uint64_round_to_zero()
3811 uint16_t float64_to_uint16_round_to_zero(float64 a, float_status *s) in float64_to_uint16_round_to_zero() argument
3813 return float64_to_uint16_scalbn(a, float_round_to_zero, 0, s); in float64_to_uint16_round_to_zero()
3816 uint32_t float64_to_uint32_round_to_zero(float64 a, float_status *s) in float64_to_uint32_round_to_zero() argument
3818 return float64_to_uint32_scalbn(a, float_round_to_zero, 0, s); in float64_to_uint32_round_to_zero()
3821 uint64_t float64_to_uint64_round_to_zero(float64 a, float_status *s) in float64_to_uint64_round_to_zero() argument
3823 return float64_to_uint64_scalbn(a, float_round_to_zero, 0, s); in float64_to_uint64_round_to_zero()
3826 uint32_t float128_to_uint32_round_to_zero(float128 a, float_status *s) in float128_to_uint32_round_to_zero() argument
3828 return float128_to_uint32_scalbn(a, float_round_to_zero, 0, s); in float128_to_uint32_round_to_zero()
3831 uint64_t float128_to_uint64_round_to_zero(float128 a, float_status *s) in float128_to_uint64_round_to_zero() argument
3833 return float128_to_uint64_scalbn(a, float_round_to_zero, 0, s); in float128_to_uint64_round_to_zero()
3836 Int128 float128_to_uint128_round_to_zero(float128 a, float_status *s) in float128_to_uint128_round_to_zero() argument
3838 return float128_to_uint128_scalbn(a, float_round_to_zero, 0, s); in float128_to_uint128_round_to_zero()
3841 uint8_t bfloat16_to_uint8(bfloat16 a, float_status *s) in bfloat16_to_uint8() argument
3843 return bfloat16_to_uint8_scalbn(a, s->float_rounding_mode, 0, s); in bfloat16_to_uint8()
3846 uint16_t bfloat16_to_uint16(bfloat16 a, float_status *s) in bfloat16_to_uint16() argument
3848 return bfloat16_to_uint16_scalbn(a, s->float_rounding_mode, 0, s); in bfloat16_to_uint16()
3851 uint32_t bfloat16_to_uint32(bfloat16 a, float_status *s) in bfloat16_to_uint32() argument
3853 return bfloat16_to_uint32_scalbn(a, s->float_rounding_mode, 0, s); in bfloat16_to_uint32()
3856 uint64_t bfloat16_to_uint64(bfloat16 a, float_status *s) in bfloat16_to_uint64() argument
3858 return bfloat16_to_uint64_scalbn(a, s->float_rounding_mode, 0, s); in bfloat16_to_uint64()
3861 uint8_t bfloat16_to_uint8_round_to_zero(bfloat16 a, float_status *s) in bfloat16_to_uint8_round_to_zero() argument
3863 return bfloat16_to_uint8_scalbn(a, float_round_to_zero, 0, s); in bfloat16_to_uint8_round_to_zero()
3866 uint16_t bfloat16_to_uint16_round_to_zero(bfloat16 a, float_status *s) in bfloat16_to_uint16_round_to_zero() argument
3868 return bfloat16_to_uint16_scalbn(a, float_round_to_zero, 0, s); in bfloat16_to_uint16_round_to_zero()
3871 uint32_t bfloat16_to_uint32_round_to_zero(bfloat16 a, float_status *s) in bfloat16_to_uint32_round_to_zero() argument
3873 return bfloat16_to_uint32_scalbn(a, float_round_to_zero, 0, s); in bfloat16_to_uint32_round_to_zero()
3876 uint64_t bfloat16_to_uint64_round_to_zero(bfloat16 a, float_status *s) in bfloat16_to_uint64_round_to_zero() argument
3878 return bfloat16_to_uint64_scalbn(a, float_round_to_zero, 0, s); in bfloat16_to_uint64_round_to_zero()
3885 float16 int64_to_float16_scalbn(int64_t a, int scale, float_status *status) in int64_to_float16_scalbn() argument
3889 parts_sint_to_float(&p, a, scale, status); in int64_to_float16_scalbn()
3893 float16 int32_to_float16_scalbn(int32_t a, int scale, float_status *status) in int32_to_float16_scalbn() argument
3895 return int64_to_float16_scalbn(a, scale, status); in int32_to_float16_scalbn()
3898 float16 int16_to_float16_scalbn(int16_t a, int scale, float_status *status) in int16_to_float16_scalbn() argument
3900 return int64_to_float16_scalbn(a, scale, status); in int16_to_float16_scalbn()
3903 float16 int64_to_float16(int64_t a, float_status *status) in int64_to_float16() argument
3905 return int64_to_float16_scalbn(a, 0, status); in int64_to_float16()
3908 float16 int32_to_float16(int32_t a, float_status *status) in int32_to_float16() argument
3910 return int64_to_float16_scalbn(a, 0, status); in int32_to_float16()
3913 float16 int16_to_float16(int16_t a, float_status *status) in int16_to_float16() argument
3915 return int64_to_float16_scalbn(a, 0, status); in int16_to_float16()
3918 float16 int8_to_float16(int8_t a, float_status *status) in int8_to_float16() argument
3920 return int64_to_float16_scalbn(a, 0, status); in int8_to_float16()
3923 float32 int64_to_float32_scalbn(int64_t a, int scale, float_status *status) in int64_to_float32_scalbn() argument
3930 ur.h = a; in int64_to_float32_scalbn()
3934 parts64_sint_to_float(&p, a, scale, status); in int64_to_float32_scalbn()
3938 float32 int32_to_float32_scalbn(int32_t a, int scale, float_status *status) in int32_to_float32_scalbn() argument
3940 return int64_to_float32_scalbn(a, scale, status); in int32_to_float32_scalbn()
3943 float32 int16_to_float32_scalbn(int16_t a, int scale, float_status *status) in int16_to_float32_scalbn() argument
3945 return int64_to_float32_scalbn(a, scale, status); in int16_to_float32_scalbn()
3948 float32 int64_to_float32(int64_t a, float_status *status) in int64_to_float32() argument
3950 return int64_to_float32_scalbn(a, 0, status); in int64_to_float32()
3953 float32 int32_to_float32(int32_t a, float_status *status) in int32_to_float32() argument
3955 return int64_to_float32_scalbn(a, 0, status); in int32_to_float32()
3958 float32 int16_to_float32(int16_t a, float_status *status) in int16_to_float32() argument
3960 return int64_to_float32_scalbn(a, 0, status); in int16_to_float32()
3963 float64 int64_to_float64_scalbn(int64_t a, int scale, float_status *status) in int64_to_float64_scalbn() argument
3970 ur.h = a; in int64_to_float64_scalbn()
3974 parts_sint_to_float(&p, a, scale, status); in int64_to_float64_scalbn()
3978 float64 int32_to_float64_scalbn(int32_t a, int scale, float_status *status) in int32_to_float64_scalbn() argument
3980 return int64_to_float64_scalbn(a, scale, status); in int32_to_float64_scalbn()
3983 float64 int16_to_float64_scalbn(int16_t a, int scale, float_status *status) in int16_to_float64_scalbn() argument
3985 return int64_to_float64_scalbn(a, scale, status); in int16_to_float64_scalbn()
3988 float64 int64_to_float64(int64_t a, float_status *status) in int64_to_float64() argument
3990 return int64_to_float64_scalbn(a, 0, status); in int64_to_float64()
3993 float64 int32_to_float64(int32_t a, float_status *status) in int32_to_float64() argument
3995 return int64_to_float64_scalbn(a, 0, status); in int32_to_float64()
3998 float64 int16_to_float64(int16_t a, float_status *status) in int16_to_float64() argument
4000 return int64_to_float64_scalbn(a, 0, status); in int16_to_float64()
4003 bfloat16 int64_to_bfloat16_scalbn(int64_t a, int scale, float_status *status) in int64_to_bfloat16_scalbn() argument
4007 parts_sint_to_float(&p, a, scale, status); in int64_to_bfloat16_scalbn()
4011 bfloat16 int32_to_bfloat16_scalbn(int32_t a, int scale, float_status *status) in int32_to_bfloat16_scalbn() argument
4013 return int64_to_bfloat16_scalbn(a, scale, status); in int32_to_bfloat16_scalbn()
4016 bfloat16 int16_to_bfloat16_scalbn(int16_t a, int scale, float_status *status) in int16_to_bfloat16_scalbn() argument
4018 return int64_to_bfloat16_scalbn(a, scale, status); in int16_to_bfloat16_scalbn()
4021 bfloat16 int8_to_bfloat16_scalbn(int8_t a, int scale, float_status *status) in int8_to_bfloat16_scalbn() argument
4023 return int64_to_bfloat16_scalbn(a, scale, status); in int8_to_bfloat16_scalbn()
4026 bfloat16 int64_to_bfloat16(int64_t a, float_status *status) in int64_to_bfloat16() argument
4028 return int64_to_bfloat16_scalbn(a, 0, status); in int64_to_bfloat16()
4031 bfloat16 int32_to_bfloat16(int32_t a, float_status *status) in int32_to_bfloat16() argument
4033 return int64_to_bfloat16_scalbn(a, 0, status); in int32_to_bfloat16()
4036 bfloat16 int16_to_bfloat16(int16_t a, float_status *status) in int16_to_bfloat16() argument
4038 return int64_to_bfloat16_scalbn(a, 0, status); in int16_to_bfloat16()
4041 bfloat16 int8_to_bfloat16(int8_t a, float_status *status) in int8_to_bfloat16() argument
4043 return int64_to_bfloat16_scalbn(a, 0, status); in int8_to_bfloat16()
4046 float128 int128_to_float128(Int128 a, float_status *status) in int128_to_float128() argument
4051 if (int128_nz(a)) { in int128_to_float128()
4053 if (!int128_nonneg(a)) { in int128_to_float128()
4055 a = int128_neg(a); in int128_to_float128()
4058 shift = clz64(int128_gethi(a)); in int128_to_float128()
4060 shift += clz64(int128_getlo(a)); in int128_to_float128()
4064 a = int128_lshift(a, shift); in int128_to_float128()
4066 p.frac_hi = int128_gethi(a); in int128_to_float128()
4067 p.frac_lo = int128_getlo(a); in int128_to_float128()
4075 float128 int64_to_float128(int64_t a, float_status *status) in int64_to_float128() argument
4079 parts_sint_to_float(&p, a, 0, status); in int64_to_float128()
4083 float128 int32_to_float128(int32_t a, float_status *status) in int32_to_float128() argument
4085 return int64_to_float128(a, status); in int32_to_float128()
4088 floatx80 int64_to_floatx80(int64_t a, float_status *status) in int64_to_floatx80() argument
4092 parts_sint_to_float(&p, a, 0, status); in int64_to_floatx80()
4096 floatx80 int32_to_floatx80(int32_t a, float_status *status) in int32_to_floatx80() argument
4098 return int64_to_floatx80(a, status); in int32_to_floatx80()
4105 float16 uint64_to_float16_scalbn(uint64_t a, int scale, float_status *status) in uint64_to_float16_scalbn() argument
4109 parts_uint_to_float(&p, a, scale, status); in uint64_to_float16_scalbn()
4113 float16 uint32_to_float16_scalbn(uint32_t a, int scale, float_status *status) in uint32_to_float16_scalbn() argument
4115 return uint64_to_float16_scalbn(a, scale, status); in uint32_to_float16_scalbn()
4118 float16 uint16_to_float16_scalbn(uint16_t a, int scale, float_status *status) in uint16_to_float16_scalbn() argument
4120 return uint64_to_float16_scalbn(a, scale, status); in uint16_to_float16_scalbn()
4123 float16 uint64_to_float16(uint64_t a, float_status *status) in uint64_to_float16() argument
4125 return uint64_to_float16_scalbn(a, 0, status); in uint64_to_float16()
4128 float16 uint32_to_float16(uint32_t a, float_status *status) in uint32_to_float16() argument
4130 return uint64_to_float16_scalbn(a, 0, status); in uint32_to_float16()
4133 float16 uint16_to_float16(uint16_t a, float_status *status) in uint16_to_float16() argument
4135 return uint64_to_float16_scalbn(a, 0, status); in uint16_to_float16()
4138 float16 uint8_to_float16(uint8_t a, float_status *status) in uint8_to_float16() argument
4140 return uint64_to_float16_scalbn(a, 0, status); in uint8_to_float16()
4143 float32 uint64_to_float32_scalbn(uint64_t a, int scale, float_status *status) in uint64_to_float32_scalbn() argument
4150 ur.h = a; in uint64_to_float32_scalbn()
4154 parts_uint_to_float(&p, a, scale, status); in uint64_to_float32_scalbn()
4158 float32 uint32_to_float32_scalbn(uint32_t a, int scale, float_status *status) in uint32_to_float32_scalbn() argument
4160 return uint64_to_float32_scalbn(a, scale, status); in uint32_to_float32_scalbn()
4163 float32 uint16_to_float32_scalbn(uint16_t a, int scale, float_status *status) in uint16_to_float32_scalbn() argument
4165 return uint64_to_float32_scalbn(a, scale, status); in uint16_to_float32_scalbn()
4168 float32 uint64_to_float32(uint64_t a, float_status *status) in uint64_to_float32() argument
4170 return uint64_to_float32_scalbn(a, 0, status); in uint64_to_float32()
4173 float32 uint32_to_float32(uint32_t a, float_status *status) in uint32_to_float32() argument
4175 return uint64_to_float32_scalbn(a, 0, status); in uint32_to_float32()
4178 float32 uint16_to_float32(uint16_t a, float_status *status) in uint16_to_float32() argument
4180 return uint64_to_float32_scalbn(a, 0, status); in uint16_to_float32()
4183 float64 uint64_to_float64_scalbn(uint64_t a, int scale, float_status *status) in uint64_to_float64_scalbn() argument
4190 ur.h = a; in uint64_to_float64_scalbn()
4194 parts_uint_to_float(&p, a, scale, status); in uint64_to_float64_scalbn()
4198 float64 uint32_to_float64_scalbn(uint32_t a, int scale, float_status *status) in uint32_to_float64_scalbn() argument
4200 return uint64_to_float64_scalbn(a, scale, status); in uint32_to_float64_scalbn()
4203 float64 uint16_to_float64_scalbn(uint16_t a, int scale, float_status *status) in uint16_to_float64_scalbn() argument
4205 return uint64_to_float64_scalbn(a, scale, status); in uint16_to_float64_scalbn()
4208 float64 uint64_to_float64(uint64_t a, float_status *status) in uint64_to_float64() argument
4210 return uint64_to_float64_scalbn(a, 0, status); in uint64_to_float64()
4213 float64 uint32_to_float64(uint32_t a, float_status *status) in uint32_to_float64() argument
4215 return uint64_to_float64_scalbn(a, 0, status); in uint32_to_float64()
4218 float64 uint16_to_float64(uint16_t a, float_status *status) in uint16_to_float64() argument
4220 return uint64_to_float64_scalbn(a, 0, status); in uint16_to_float64()
4223 bfloat16 uint64_to_bfloat16_scalbn(uint64_t a, int scale, float_status *status) in uint64_to_bfloat16_scalbn() argument
4227 parts_uint_to_float(&p, a, scale, status); in uint64_to_bfloat16_scalbn()
4231 bfloat16 uint32_to_bfloat16_scalbn(uint32_t a, int scale, float_status *status) in uint32_to_bfloat16_scalbn() argument
4233 return uint64_to_bfloat16_scalbn(a, scale, status); in uint32_to_bfloat16_scalbn()
4236 bfloat16 uint16_to_bfloat16_scalbn(uint16_t a, int scale, float_status *status) in uint16_to_bfloat16_scalbn() argument
4238 return uint64_to_bfloat16_scalbn(a, scale, status); in uint16_to_bfloat16_scalbn()
4241 bfloat16 uint8_to_bfloat16_scalbn(uint8_t a, int scale, float_status *status) in uint8_to_bfloat16_scalbn() argument
4243 return uint64_to_bfloat16_scalbn(a, scale, status); in uint8_to_bfloat16_scalbn()
4246 bfloat16 uint64_to_bfloat16(uint64_t a, float_status *status) in uint64_to_bfloat16() argument
4248 return uint64_to_bfloat16_scalbn(a, 0, status); in uint64_to_bfloat16()
4251 bfloat16 uint32_to_bfloat16(uint32_t a, float_status *status) in uint32_to_bfloat16() argument
4253 return uint64_to_bfloat16_scalbn(a, 0, status); in uint32_to_bfloat16()
4256 bfloat16 uint16_to_bfloat16(uint16_t a, float_status *status) in uint16_to_bfloat16() argument
4258 return uint64_to_bfloat16_scalbn(a, 0, status); in uint16_to_bfloat16()
4261 bfloat16 uint8_to_bfloat16(uint8_t a, float_status *status) in uint8_to_bfloat16() argument
4263 return uint64_to_bfloat16_scalbn(a, 0, status); in uint8_to_bfloat16()
4266 float128 uint64_to_float128(uint64_t a, float_status *status) in uint64_to_float128() argument
4270 parts_uint_to_float(&p, a, 0, status); in uint64_to_float128()
4274 float128 uint128_to_float128(Int128 a, float_status *status) in uint128_to_float128() argument
4279 if (int128_nz(a)) { in uint128_to_float128()
4282 shift = clz64(int128_gethi(a)); in uint128_to_float128()
4284 shift += clz64(int128_getlo(a)); in uint128_to_float128()
4288 a = int128_lshift(a, shift); in uint128_to_float128()
4290 p.frac_hi = int128_gethi(a); in uint128_to_float128()
4291 p.frac_lo = int128_getlo(a); in uint128_to_float128()
4303 static float16 float16_minmax(float16 a, float16 b, float_status *s, int flags) in float16_minmax() argument
4307 float16_unpack_canonical(&pa, a, s); in float16_minmax()
4314 static bfloat16 bfloat16_minmax(bfloat16 a, bfloat16 b, in bfloat16_minmax() argument
4319 bfloat16_unpack_canonical(&pa, a, s); in bfloat16_minmax()
4326 static float32 float32_minmax(float32 a, float32 b, float_status *s, int flags) in float32_minmax() argument
4330 float32_unpack_canonical(&pa, a, s); in float32_minmax()
4337 static float64 float64_minmax(float64 a, float64 b, float_status *s, int flags) in float64_minmax() argument
4341 float64_unpack_canonical(&pa, a, s); in float64_minmax()
4348 static float128 float128_minmax(float128 a, float128 b, in float128_minmax() argument
4353 float128_unpack_canonical(&pa, a, s); in float128_minmax()
4361 type type##_##name(type a, type b, float_status *s) \
4362 { return type##_minmax(a, b, s, flags); }
4388 float16_do_compare(float16 a, float16 b, float_status *s, bool is_quiet) in MINMAX_2()
4392 float16_unpack_canonical(&pa, a, s); in MINMAX_2()
4397 FloatRelation float16_compare(float16 a, float16 b, float_status *s) in float16_compare() argument
4399 return float16_do_compare(a, b, s, false); in float16_compare()
4402 FloatRelation float16_compare_quiet(float16 a, float16 b, float_status *s) in float16_compare_quiet() argument
4404 return float16_do_compare(a, b, s, true); in float16_compare_quiet()
4408 float32_do_compare(float32 a, float32 b, float_status *s, bool is_quiet) in float32_do_compare() argument
4412 float32_unpack_canonical(&pa, a, s); in float32_do_compare()
4451 FloatRelation float32_compare(float32 a, float32 b, float_status *s) in float32_compare() argument
4453 return float32_hs_compare(a, b, s, false); in float32_compare()
4456 FloatRelation float32_compare_quiet(float32 a, float32 b, float_status *s) in float32_compare_quiet() argument
4458 return float32_hs_compare(a, b, s, true); in float32_compare_quiet()
4462 float64_do_compare(float64 a, float64 b, float_status *s, bool is_quiet) in float64_do_compare() argument
4466 float64_unpack_canonical(&pa, a, s); in float64_do_compare()
4505 FloatRelation float64_compare(float64 a, float64 b, float_status *s) in float64_compare() argument
4507 return float64_hs_compare(a, b, s, false); in float64_compare()
4510 FloatRelation float64_compare_quiet(float64 a, float64 b, float_status *s) in float64_compare_quiet() argument
4512 return float64_hs_compare(a, b, s, true); in float64_compare_quiet()
4516 bfloat16_do_compare(bfloat16 a, bfloat16 b, float_status *s, bool is_quiet) in bfloat16_do_compare() argument
4520 bfloat16_unpack_canonical(&pa, a, s); in bfloat16_do_compare()
4525 FloatRelation bfloat16_compare(bfloat16 a, bfloat16 b, float_status *s) in bfloat16_compare() argument
4527 return bfloat16_do_compare(a, b, s, false); in bfloat16_compare()
4530 FloatRelation bfloat16_compare_quiet(bfloat16 a, bfloat16 b, float_status *s) in bfloat16_compare_quiet() argument
4532 return bfloat16_do_compare(a, b, s, true); in bfloat16_compare_quiet()
4536 float128_do_compare(float128 a, float128 b, float_status *s, bool is_quiet) in float128_do_compare() argument
4540 float128_unpack_canonical(&pa, a, s); in float128_do_compare()
4545 FloatRelation float128_compare(float128 a, float128 b, float_status *s) in float128_compare() argument
4547 return float128_do_compare(a, b, s, false); in float128_compare()
4550 FloatRelation float128_compare_quiet(float128 a, float128 b, float_status *s) in float128_compare_quiet() argument
4552 return float128_do_compare(a, b, s, true); in float128_compare_quiet()
4556 floatx80_do_compare(floatx80 a, floatx80 b, float_status *s, bool is_quiet) in floatx80_do_compare() argument
4560 if (!floatx80_unpack_canonical(&pa, a, s) || in floatx80_do_compare()
4567 FloatRelation floatx80_compare(floatx80 a, floatx80 b, float_status *s) in floatx80_compare() argument
4569 return floatx80_do_compare(a, b, s, false); in floatx80_compare()
4572 FloatRelation floatx80_compare_quiet(floatx80 a, floatx80 b, float_status *s) in floatx80_compare_quiet() argument
4574 return floatx80_do_compare(a, b, s, true); in floatx80_compare_quiet()
4581 float16 float16_scalbn(float16 a, int n, float_status *status) in float16_scalbn() argument
4585 float16_unpack_canonical(&p, a, status); in float16_scalbn()
4590 float32 float32_scalbn(float32 a, int n, float_status *status) in float32_scalbn() argument
4594 float32_unpack_canonical(&p, a, status); in float32_scalbn()
4599 float64 float64_scalbn(float64 a, int n, float_status *status) in float64_scalbn() argument
4603 float64_unpack_canonical(&p, a, status); in float64_scalbn()
4608 bfloat16 bfloat16_scalbn(bfloat16 a, int n, float_status *status) in bfloat16_scalbn() argument
4612 bfloat16_unpack_canonical(&p, a, status); in bfloat16_scalbn()
4617 float128 float128_scalbn(float128 a, int n, float_status *status) in float128_scalbn() argument
4621 float128_unpack_canonical(&p, a, status); in float128_scalbn()
4626 floatx80 floatx80_scalbn(floatx80 a, int n, float_status *status) in floatx80_scalbn() argument
4630 if (!floatx80_unpack_canonical(&p, a, status)) { in floatx80_scalbn()
4641 float16 QEMU_FLATTEN float16_sqrt(float16 a, float_status *status) in float16_sqrt() argument
4645 float16_unpack_canonical(&p, a, status); in float16_sqrt()
4651 soft_f32_sqrt(float32 a, float_status *status) in soft_f32_sqrt() argument
4655 float32_unpack_canonical(&p, a, status); in soft_f32_sqrt()
4661 soft_f64_sqrt(float64 a, float_status *status) in soft_f64_sqrt() argument
4665 float64_unpack_canonical(&p, a, status); in soft_f64_sqrt()
4724 float64 float64r32_sqrt(float64 a, float_status *status) in float64r32_sqrt() argument
4728 float64_unpack_canonical(&p, a, status); in float64r32_sqrt()
4733 bfloat16 QEMU_FLATTEN bfloat16_sqrt(bfloat16 a, float_status *status) in bfloat16_sqrt() argument
4737 bfloat16_unpack_canonical(&p, a, status); in bfloat16_sqrt()
4742 float128 QEMU_FLATTEN float128_sqrt(float128 a, float_status *status) in float128_sqrt() argument
4746 float128_unpack_canonical(&p, a, status); in float128_sqrt()
4751 floatx80 floatx80_sqrt(floatx80 a, float_status *s) in floatx80_sqrt() argument
4755 if (!floatx80_unpack_canonical(&p, a, s)) { in floatx80_sqrt()
4765 float32 float32_log2(float32 a, float_status *status) in float32_log2() argument
4769 float32_unpack_canonical(&p, a, status); in float32_log2()
4774 float64 float64_log2(float64 a, float_status *status) in float64_log2() argument
4778 float64_unpack_canonical(&p, a, status); in float64_log2()
4784 | The pattern for a default generated NaN.
4833 | Returns a quiet NaN from a signalling NaN for the floating point value `a'.
4836 float16 float16_silence_nan(float16 a, float_status *status) in float16_silence_nan() argument
4840 float16_unpack_raw(&p, a); in float16_silence_nan()
4847 float32 float32_silence_nan(float32 a, float_status *status) in float32_silence_nan() argument
4851 float32_unpack_raw(&p, a); in float32_silence_nan()
4858 float64 float64_silence_nan(float64 a, float_status *status) in float64_silence_nan() argument
4862 float64_unpack_raw(&p, a); in float64_silence_nan()
4869 bfloat16 bfloat16_silence_nan(bfloat16 a, float_status *status) in bfloat16_silence_nan() argument
4873 bfloat16_unpack_raw(&p, a); in bfloat16_silence_nan()
4880 float128 float128_silence_nan(float128 a, float_status *status) in float128_silence_nan() argument
4884 float128_unpack_raw(&p, a); in float128_silence_nan()
4892 | If `a' is denormal and we are in flush-to-zero mode then set the
4906 float16 float16_squash_input_denormal(float16 a, float_status *status) in float16_squash_input_denormal() argument
4911 float16_unpack_raw(&p, a); in float16_squash_input_denormal()
4916 return a; in float16_squash_input_denormal()
4919 float32 float32_squash_input_denormal(float32 a, float_status *status) in float32_squash_input_denormal() argument
4924 float32_unpack_raw(&p, a); in float32_squash_input_denormal()
4929 return a; in float32_squash_input_denormal()
4932 float64 float64_squash_input_denormal(float64 a, float_status *status) in float64_squash_input_denormal() argument
4937 float64_unpack_raw(&p, a); in float64_squash_input_denormal()
4942 return a; in float64_squash_input_denormal()
4945 bfloat16 bfloat16_squash_input_denormal(bfloat16 a, float_status *status) in bfloat16_squash_input_denormal() argument
4950 bfloat16_unpack_raw(&p, a); in bfloat16_squash_input_denormal()
4955 return a; in bfloat16_squash_input_denormal()
4976 | Takes two extended double-precision floating-point values `a' and `b', one
4977 | of which is a NaN, and returns the appropriate NaN result. If either `a' or
4978 | `b' is a signaling NaN, the invalid exception is raised.
4981 floatx80 propagateFloatx80NaN(floatx80 a, floatx80 b, float_status *status) in propagateFloatx80NaN() argument
4985 if (!floatx80_unpack_canonical(&pa, a, status) || in propagateFloatx80NaN()
5004 | a subnormal number, and the underflow and inexact exceptions are raised if
5005 | the abstract input cannot be represented exactly as a subnormal extended
5013 | returned is a subnormal number, and it must not require rounding. The
5237 | `a'. The operation is performed according to the IEC/IEEE Standard for
5272 float32 float32_exp2(float32 a, float_status *status) in float32_exp2() argument
5277 float32_unpack_canonical(&xp, a, status); in float32_exp2()
5287 return xp.sign ? float32_zero : a; in float32_exp2()
5313 | Rounds the extended double-precision floating-point value `a'
5320 floatx80 floatx80_round(floatx80 a, float_status *status) in floatx80_round() argument
5324 if (!floatx80_unpack_canonical(&p, a, status)) { in floatx80_round()