38 static floatx80 floatx80_rsf(
struct roundingData *roundData, floatx80 rFn, floatx80 rFm)
40 return floatx80_sub(roundData, rFm, rFn);
43 static floatx80 floatx80_rdv(
struct roundingData *roundData, floatx80 rFn, floatx80 rFm)
45 return floatx80_div(roundData, rFm, rFn);
48 static floatx80 (*
const dyadic_extended[16])(
struct roundingData*, floatx80 rFn, floatx80 rFm) = {
63 static floatx80 floatx80_mvf(
struct roundingData *roundData, floatx80 rFm)
68 static floatx80 floatx80_mnf(
struct roundingData *roundData, floatx80 rFm)
74 static floatx80 floatx80_abs(
struct roundingData *roundData, floatx80 rFm)
80 static floatx80 (*
const monadic_extended[16])(
struct roundingData*, floatx80 rFm) = {
84 [
RND_CODE >> 20] = floatx80_round_to_int,
85 [
URD_CODE >> 20] = floatx80_round_to_int,
94 unsigned int Fm, opc_mask_shift;
98 rFm = getExtendedConstant(Fm);
100 switch (fpa11->fType[Fm]) {
102 rFm = float32_to_floatx80(fpa11->fpreg[Fm].fSingle);
106 rFm = float64_to_floatx80(fpa11->fpreg[Fm].fDouble);
110 rFm = fpa11->fpreg[Fm].fExtended;
120 unsigned int Fn =
getFn(opcode);
123 switch (fpa11->fType[Fn]) {
125 rFn = float32_to_floatx80(fpa11->fpreg[Fn].fSingle);
129 rFn = float64_to_floatx80(fpa11->fpreg[Fn].fDouble);
133 rFn = fpa11->fpreg[Fn].fExtended;
140 if (dyadic_extended[opc_mask_shift]) {
141 rFd->fExtended = dyadic_extended[opc_mask_shift](roundData, rFn, rFm);
146 if (monadic_extended[opc_mask_shift]) {
147 rFd->fExtended = monadic_extended[opc_mask_shift](roundData, rFm);