x87_timings: new timings for fpu/iu concurrency
This commit is contained in:
@@ -1369,6 +1369,7 @@ cpu_set(void)
|
|||||||
case FPU_487SX:
|
case FPU_487SX:
|
||||||
default:
|
default:
|
||||||
x87_timings = x87_timings_486;
|
x87_timings = x87_timings_486;
|
||||||
|
x87_concurrency = x87_concurrency_486;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is386) {
|
if (is386) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "x87_timings.h"
|
#include "x87_timings.h"
|
||||||
|
|
||||||
x87_timings_t x87_timings;
|
x87_timings_t x87_timings;
|
||||||
|
x87_timings_t x87_concurrency;
|
||||||
|
|
||||||
const x87_timings_t x87_timings_8087 =
|
const x87_timings_t x87_timings_8087 =
|
||||||
{
|
{
|
||||||
@@ -313,3 +314,157 @@ const x87_timings_t x87_timings_486 =
|
|||||||
.fyl2x = (196 + 329) / 2,
|
.fyl2x = (196 + 329) / 2,
|
||||||
.fyl2xp1 = (171 + 326) / 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_387;
|
||||||
extern const x87_timings_t x87_timings_486;
|
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