x87_timings: new timings for fpu/iu concurrency
This commit is contained in:
@@ -1369,6 +1369,7 @@ cpu_set(void)
|
||||
case FPU_487SX:
|
||||
default:
|
||||
x87_timings = x87_timings_486;
|
||||
x87_concurrency = x87_concurrency_486;
|
||||
}
|
||||
|
||||
if (is386) {
|
||||
|
@@ -8,6 +8,7 @@
|
||||
#include "x87_timings.h"
|
||||
|
||||
x87_timings_t x87_timings;
|
||||
x87_timings_t x87_concurrency;
|
||||
|
||||
const x87_timings_t x87_timings_8087 =
|
||||
{
|
||||
@@ -313,3 +314,157 @@ const x87_timings_t x87_timings_486 =
|
||||
.fyl2x = (196 + 329) / 2,
|
||||
.fyl2xp1 = (171 + 326) / 2
|
||||
};
|
||||
|
||||
/* this should be used for FPUs with no concurrency.
|
||||
some pre-486DX Cyrix FPUs reportedly are like this. */
|
||||
const x87_timings_t x87_concurrency_none =
|
||||
{
|
||||
.f2xm1 = 0,
|
||||
.fabs = 0,
|
||||
.fadd = 0,
|
||||
.fadd_32 = 0,
|
||||
.fadd_64 = 0,
|
||||
.fbld = 0,
|
||||
.fbstp = 0,
|
||||
.fchs = 0,
|
||||
.fclex = 0,
|
||||
.fcom = 0,
|
||||
.fcom_32 = 0,
|
||||
.fcom_64 = 0,
|
||||
.fcos = 0,
|
||||
.fincdecstp = 0,
|
||||
.fdisi_eni = 0,
|
||||
.fdiv = 0,
|
||||
.fdiv_32 = 0,
|
||||
.fdiv_64 = 0,
|
||||
.ffree = 0,
|
||||
.fadd_i16 = 0,
|
||||
.fadd_i32 = 0,
|
||||
.fcom_i16 = 0,
|
||||
.fcom_i32 = 0,
|
||||
.fdiv_i16 = 0,
|
||||
.fdiv_i32 = 0,
|
||||
.fild_16 = 0,
|
||||
.fild_32 = 0,
|
||||
.fild_64 = 0,
|
||||
.fmul_i16 = 0,
|
||||
.fmul_i32 = 0,
|
||||
.finit = 0,
|
||||
.fist_16 = 0,
|
||||
.fist_32 = 0,
|
||||
.fist_64 = 0,
|
||||
.fld = 0,
|
||||
.fld_32 = 0,
|
||||
.fld_64 = 0,
|
||||
.fld_80 = 0,
|
||||
.fld_z1 = 0,
|
||||
.fld_const = 0,
|
||||
.fldcw = 0,
|
||||
.fldenv = 0,
|
||||
.fmul = 0,
|
||||
.fmul_32 = 0,
|
||||
.fmul_64 = 0,
|
||||
.fnop = 0,
|
||||
.fpatan = 0,
|
||||
.fprem = 0,
|
||||
.fprem1 = 0,
|
||||
.fptan = 0,
|
||||
.frndint = 0,
|
||||
.frstor = 0,
|
||||
.fsave = 0,
|
||||
.fscale = 0,
|
||||
.fsetpm = 0,
|
||||
.fsin_cos = 0,
|
||||
.fsincos = 0,
|
||||
.fsqrt = 0,
|
||||
.fst = 0,
|
||||
.fst_32 = 0,
|
||||
.fst_64 = 0,
|
||||
.fst_80 = 0,
|
||||
.fstcw_sw = 0,
|
||||
.fstenv = 0,
|
||||
.ftst = 0,
|
||||
.fucom = 0,
|
||||
.fwait = 0,
|
||||
.fxam = 0,
|
||||
.fxch = 0,
|
||||
.fxtract = 0,
|
||||
.fyl2x = 0,
|
||||
.fyl2xp1 = 0,
|
||||
};
|
||||
|
||||
const x87_timings_t x87_concurrency_486 =
|
||||
{
|
||||
.f2xm1 = 2,
|
||||
.fabs = 0,
|
||||
.fadd = 7,
|
||||
.fadd_32 = 7,
|
||||
.fadd_64 = 7,
|
||||
.fbld = 8,
|
||||
.fbstp = 0,
|
||||
.fchs = 0,
|
||||
.fclex = 0,
|
||||
.fcom = 1,
|
||||
.fcom_32 = 1,
|
||||
.fcom_64 = 1,
|
||||
.fcos = 2,
|
||||
.fincdecstp = 0,
|
||||
.fdisi_eni = 0,
|
||||
.fdiv = 70,
|
||||
.fdiv_32 = 70,
|
||||
.fdiv_64 = 70,
|
||||
.ffree = 0,
|
||||
.fadd_i16 = 7,
|
||||
.fadd_i32 = 7,
|
||||
.fcom_i16 = 1,
|
||||
.fcom_i32 = 1,
|
||||
.fdiv_i16 = 70,
|
||||
.fdiv_i32 = 70,
|
||||
.fild_16 = 4,
|
||||
.fild_32 = 4,
|
||||
.fild_64 = 8,
|
||||
.fmul_i16 = 8,
|
||||
.fmul_i32 = 8,
|
||||
.finit = 0,
|
||||
.fist_16 = 0,
|
||||
.fist_32 = 0,
|
||||
.fist_64 = 0,
|
||||
.fld = 0,
|
||||
.fld_32 = 0,
|
||||
.fld_64 = 0,
|
||||
.fld_80 = 0,
|
||||
.fld_z1 = 0,
|
||||
.fld_const = 2,
|
||||
.fldcw = 0,
|
||||
.fldenv = 0,
|
||||
.fmul = 13,
|
||||
.fmul_32 = 8,
|
||||
.fmul_64 = 11,
|
||||
.fnop = 0,
|
||||
.fpatan = 5,
|
||||
.fprem = 2,
|
||||
.fprem1 = 6,
|
||||
.fptan = 70,
|
||||
.frndint = 0,
|
||||
.frstor = 0,
|
||||
.fsave = 0,
|
||||
.fscale = 2,
|
||||
.fsetpm = 0,
|
||||
.fsin_cos = 2,
|
||||
.fsincos = 2,
|
||||
.fsqrt = 70,
|
||||
.fst = 0,
|
||||
.fst_32 = 0,
|
||||
.fst_64 = 0,
|
||||
.fst_80 = 0,
|
||||
.fstcw_sw = 0,
|
||||
.fstenv = 0,
|
||||
.ftst = 1,
|
||||
.fucom = 1,
|
||||
.fwait = 0,
|
||||
.fxam = 0,
|
||||
.fxch = 0,
|
||||
.fxtract = 4,
|
||||
.fyl2x = 13,
|
||||
.fyl2xp1 = 13,
|
||||
};
|
@@ -53,4 +53,7 @@ extern const x87_timings_t x87_timings_287;
|
||||
extern const x87_timings_t x87_timings_387;
|
||||
extern const x87_timings_t x87_timings_486;
|
||||
|
||||
extern x87_timings_t x87_timings;
|
||||
extern const x87_timings_t x87_concurrency_486;
|
||||
|
||||
extern x87_timings_t x87_timings;
|
||||
extern x87_timings_t x87_concurrency;
|
Reference in New Issue
Block a user