/linux-6.1.9/arch/x86/math-emu/ |
D | fpu_trig.c | 34 static int trig_arg(FPU_REG *st0_ptr, int even) in trig_arg() argument 42 if (exponent(st0_ptr) >= 63) { in trig_arg() 50 setpositive(st0_ptr); in trig_arg() 51 tag = FPU_u_div(st0_ptr, &CONST_PI2, &tmp, PR_64_BITS | RC_CHOP | 0x3f, in trig_arg() 58 rem_kernel(significand(st0_ptr), in trig_arg() 61 q, exponent(st0_ptr) - exponent(&CONST_PI2)); in trig_arg() 77 if ((exponent(st0_ptr) <= exponent(&CONST_PI2extra) + 64) in trig_arg() 92 if (signnegative(st0_ptr)) { in trig_arg() 97 setpositive(st0_ptr); in trig_arg() 110 && (exponent(st0_ptr) <= exponent(&CONST_PI2extra) + 64)) in trig_arg() [all …]
|
D | fpu_etc.c | 20 static void fchs(FPU_REG *st0_ptr, u_char st0tag) in fchs() argument 23 signbyte(st0_ptr) ^= SIGN_NEG; in fchs() 29 static void fabs(FPU_REG *st0_ptr, u_char st0tag) in fabs() argument 32 setpositive(st0_ptr); in fabs() 38 static void ftst_(FPU_REG *st0_ptr, u_char st0tag) in ftst_() argument 45 if (getsign(st0_ptr) == SIGN_POS) in ftst_() 51 switch (FPU_Special(st0_ptr)) { in ftst_() 53 if (getsign(st0_ptr) == SIGN_POS) in ftst_() 60 if (getsign(st0_ptr) == SIGN_POS) in ftst_() 71 if (getsign(st0_ptr) == SIGN_POS) in ftst_() [all …]
|
D | poly_sin.c | 58 void poly_sine(FPU_REG *st0_ptr) in poly_sine() argument 66 exponent = exponent(st0_ptr); in poly_sine() 73 || ((exponent == -1) && (st0_ptr->sigh <= 0xe21240aa))) { in poly_sine() 76 argSqrd.msw = st0_ptr->sigh; in poly_sine() 77 argSqrd.midw = st0_ptr->sigl; in poly_sine() 79 mul64_Xsig(&argSqrd, &significand(st0_ptr)); in poly_sine() 97 mul64_Xsig(&accumulator, &significand(st0_ptr)); in poly_sine() 98 mul64_Xsig(&accumulator, &significand(st0_ptr)); in poly_sine() 99 mul64_Xsig(&accumulator, &significand(st0_ptr)); in poly_sine() 105 shr_Xsig(&accumulator, exponent(st0_ptr) - exponent); in poly_sine() [all …]
|
D | load_store.c | 71 FPU_REG *st0_ptr; in FPU_load_store() local 76 st0_ptr = NULL; /* Initialized just to stop compiler warnings. */ in FPU_load_store() 96 st0_ptr = &st(0); /* Some of these instructions pop after in FPU_load_store() 107 st0_ptr = &st(0); in FPU_load_store() 166 (st0_ptr, st0_tag, (long __user *)data_address)) in FPU_load_store() 176 (st0_ptr, st0_tag, (long long __user *)data_address)) in FPU_load_store() 186 (st0_ptr, st0_tag, (short __user *)data_address)) in FPU_load_store() 193 FPU_store_single(st0_ptr, st0_tag, in FPU_load_store() 198 FPU_store_int32(st0_ptr, st0_tag, (long __user *)data_address); in FPU_load_store() 202 FPU_store_double(st0_ptr, st0_tag, in FPU_load_store() [all …]
|
D | reg_ld_str.c | 214 FPU_REG *st0_ptr = &st(0); in FPU_load_int64() local 223 reg_copy(&CONST_Z, st0_ptr); in FPU_load_int64() 234 significand(st0_ptr) = s; in FPU_load_int64() 236 return normalize_no_excep(st0_ptr, 63, sign); in FPU_load_int64() 300 FPU_REG *st0_ptr = &st(0); in FPU_load_bcd() local 325 reg_copy(&CONST_Z, st0_ptr); in FPU_load_bcd() 326 addexponent(st0_ptr, sign); /* Set the sign. */ in FPU_load_bcd() 329 significand(st0_ptr) = l; in FPU_load_bcd() 330 return normalize_no_excep(st0_ptr, 63, sign); in FPU_load_bcd() 337 int FPU_store_extended(FPU_REG *st0_ptr, u_char st0_tag, in FPU_store_extended() argument [all …]
|
D | fpu_proto.h | 98 extern void poly_atan(FPU_REG * st0_ptr, u_char st0_tag, FPU_REG *st1_ptr, 101 extern void poly_l2(FPU_REG *st0_ptr, FPU_REG *st1_ptr, u_char st1_sign); 105 extern void poly_sine(FPU_REG *st0_ptr); 106 extern void poly_cos(FPU_REG *st0_ptr); 108 extern void poly_tan(FPU_REG *st0_ptr); 134 extern int FPU_store_extended(FPU_REG *st0_ptr, u_char st0_tag, 136 extern int FPU_store_double(FPU_REG *st0_ptr, u_char st0_tag, 138 extern int FPU_store_single(FPU_REG *st0_ptr, u_char st0_tag, 140 extern int FPU_store_int64(FPU_REG *st0_ptr, u_char st0_tag, 142 extern int FPU_store_int32(FPU_REG *st0_ptr, u_char st0_tag, long __user *d); [all …]
|
D | poly_atan.c | 52 void poly_atan(FPU_REG *st0_ptr, u_char st0_tag, in poly_atan() argument 61 sign1 = getsign(st0_ptr); in poly_atan() 64 exponent = exponent(st0_ptr); in poly_atan() 67 FPU_to_exp16(st0_ptr, st0_ptr); in poly_atan() 68 exponent = exponent16(st0_ptr); in poly_atan() 79 ((st0_ptr->sigh < st1_ptr->sigh) || in poly_atan() 80 ((st0_ptr->sigh == st1_ptr->sigh) && in poly_atan() 81 (st0_ptr->sigl < st1_ptr->sigl))))) { in poly_atan() 84 XSIG_LL(Numer) = significand(st0_ptr); in poly_atan() 91 XSIG_LL(Denom) = significand(st0_ptr); in poly_atan()
|
D | poly_tan.c | 51 void poly_tan(FPU_REG *st0_ptr) in poly_tan() argument 59 exponent = exponent(st0_ptr); in poly_tan() 62 if (signnegative(st0_ptr)) { /* Can't hack a number < 0.0 */ in poly_tan() 70 || ((exponent == -1) && (st0_ptr->sigh > 0xc90fdaa2))) { in poly_tan() 74 XSIG_LL(accum) = significand(st0_ptr); in poly_tan() 86 significand(st0_ptr) = 0x8a51e04daabda360LL; in poly_tan() 87 setexponent16(st0_ptr, in poly_tan() 98 XSIG_LL(accum) = XSIG_LL(argSignif) = significand(st0_ptr); in poly_tan() 210 significand(st0_ptr) = XSIG_LL(accum); in poly_tan() 211 setexponent16(st0_ptr, exponent + EXTENDED_Ebias); /* Result is positive. */ in poly_tan()
|
D | reg_compare.c | 28 FPU_REG *st0_ptr; in compare() local 32 st0_ptr = &st(0); in compare() 34 st0_sign = getsign(st0_ptr); in compare() 39 st0_tag = FPU_Special(st0_ptr); in compare() 95 (st0_ptr->sigh & 0xc0000000) == 0x80000000; in compare() 96 unsupported = !((exponent(st0_ptr) == EXP_OVER) in compare() 97 && (st0_ptr-> in compare() 123 FPU_to_exp16(st0_ptr, &x); in compare() 125 st0_ptr = &x; in compare() 127 exp0 = exponent16(st0_ptr); in compare() [all …]
|
D | reg_divide.c | 31 FPU_REG const *a, *b, *st0_ptr, *st_ptr; in FPU_div() local 43 st0_ptr = b; in FPU_div() 55 st0_ptr = a; in FPU_div() 134 st0_ptr); in FPU_div() 140 tag = FPU_Special(st0_ptr); in FPU_div() 141 return real_2op_NaN(st0_ptr, tag, rm, in FPU_div() 142 (flags & REV) ? st0_ptr : &st(rm)); in FPU_div() 149 (flags & REV) ? st0_ptr : &st(rm)); in FPU_div()
|
D | poly_l2.c | 27 void poly_l2(FPU_REG *st0_ptr, FPU_REG *st1_ptr, u_char st1_sign) in poly_l2() argument 35 exponent = exponent16(st0_ptr); in poly_l2() 38 if (st0_ptr->sigh > (unsigned)0xb504f334) { in poly_l2() 40 significand(&x) = -significand(st0_ptr); in poly_l2() 46 x.sigh = st0_ptr->sigh - 0x80000000; in poly_l2() 47 x.sigl = st0_ptr->sigl; in poly_l2() 107 FPU_REG * st0_ptr, FPU_REG * st1_ptr, FPU_REG * dest) in poly_l2p1() argument 113 if (exponent16(st0_ptr) < 0) { in poly_l2p1() 114 log2_kernel(st0_ptr, sign0, &accumulator, &exponent); in poly_l2p1()
|
D | fpu_aux.c | 135 FPU_REG *st0_ptr = &st(0), *sti_ptr = &st(i); in fxch_i() local 157 FPU_copy_to_regi(st0_ptr, st0_tag, i); in fxch_i() 164 reg_copy(st0_ptr, &t); in fxch_i() 165 reg_copy(sti_ptr, st0_ptr); in fxch_i() 177 FPU_REG *st0_ptr = &st(0); in fcmovCC() local 189 reg_copy(sti_ptr, st0_ptr); in fcmovCC()
|
D | fpu_entry.c | 108 FPU_REG *st0_ptr; in math_emulate() local 266 st0_ptr = &st(0); in math_emulate() 317 if (((st0_tag == TAG_Special) && isNaN(st0_ptr)) in math_emulate() 351 st0_ptr); in math_emulate() 384 setsign(st0_ptr, in math_emulate() 473 st0_ptr = &st(0); in math_emulate()
|
D | fpu_emu.h | 126 typedef void (*FUNC_ST0) (FPU_REG *st0_ptr, u_char st0_tag);
|