cleanup code
This commit is contained in:
parent
62d8ce18d3
commit
73cc6a485d
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fpu_arith.cc,v 1.20 2009-05-19 08:09:15 sshwarts Exp $
|
||||
// $Id: fpu_arith.cc,v 1.21 2009-05-28 19:25:33 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2003 Stanislav Shwartsman
|
||||
@ -170,7 +170,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FADD_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -182,7 +182,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FADD_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_add(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FADD_ST0_STj: required FPU, configure --enable-fpu"));
|
||||
@ -201,7 +201,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FADD_STi_ST0(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(i->rm(), pop_stack);
|
||||
FPU_stack_underflow(i->rm(), pop_stack);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -213,7 +213,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FADD_STi_ST0(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_add(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_WRITE_FPU_REG(result, i->rm());
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
@ -236,7 +236,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FADD_SINGLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -247,7 +247,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FADD_SINGLE_REAL(bxInstruction_c *i)
|
||||
if (! FPU_handle_NaN(a, load_reg, result, status))
|
||||
result = floatx80_add(a, float32_to_floatx80(load_reg, status), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FADD_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
||||
@ -267,7 +267,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FADD_DOUBLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -278,7 +278,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FADD_DOUBLE_REAL(bxInstruction_c *i)
|
||||
if (! FPU_handle_NaN(a, load_reg, result, status))
|
||||
result = floatx80_add(a, float64_to_floatx80(load_reg, status), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FADD_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
||||
@ -298,7 +298,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIADD_WORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -310,7 +310,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIADD_WORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_add(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FIADD_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
||||
@ -330,7 +330,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIADD_DWORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -342,7 +342,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIADD_DWORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_add(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FIADD_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
||||
@ -359,7 +359,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FMUL_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -371,7 +371,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FMUL_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_mul(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FMUL_ST0_STj: required FPU, configure --enable-fpu"));
|
||||
@ -390,7 +390,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FMUL_STi_ST0(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(i->rm(), pop_stack);
|
||||
FPU_stack_underflow(i->rm(), pop_stack);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -402,7 +402,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FMUL_STi_ST0(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_mul(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_WRITE_FPU_REG(result, i->rm());
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
@ -425,7 +425,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FMUL_SINGLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -436,7 +436,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FMUL_SINGLE_REAL(bxInstruction_c *i)
|
||||
if (! FPU_handle_NaN(a, load_reg, result, status))
|
||||
result = floatx80_mul(a, float32_to_floatx80(load_reg, status), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FMUL_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
||||
@ -456,7 +456,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FMUL_DOUBLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -467,7 +467,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FMUL_DOUBLE_REAL(bxInstruction_c *i)
|
||||
if (! FPU_handle_NaN(a, load_reg, result, status))
|
||||
result = floatx80_mul(a, float64_to_floatx80(load_reg, status), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FMUL_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
||||
@ -487,7 +487,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIMUL_WORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -499,7 +499,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIMUL_WORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_mul(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FIMUL_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
||||
@ -519,7 +519,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIMUL_DWORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -531,7 +531,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIMUL_DWORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_mul(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FIMUL_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
||||
@ -548,7 +548,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUB_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -560,7 +560,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUB_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_sub(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FSUB_ST0_STj: required FPU, configure --enable-fpu"));
|
||||
@ -577,7 +577,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUBR_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -589,7 +589,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUBR_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_sub(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FSUBR_ST0_STj: required FPU, configure --enable-fpu"));
|
||||
@ -608,7 +608,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUB_STi_ST0(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(i->rm(), pop_stack);
|
||||
FPU_stack_underflow(i->rm(), pop_stack);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -620,7 +620,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUB_STi_ST0(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_sub(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_WRITE_FPU_REG(result, i->rm());
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
@ -642,7 +642,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUBR_STi_ST0(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(i->rm(), pop_stack);
|
||||
FPU_stack_underflow(i->rm(), pop_stack);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -654,7 +654,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUBR_STi_ST0(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_sub(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_WRITE_FPU_REG(result, i->rm());
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
@ -677,7 +677,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUB_SINGLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -688,7 +688,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUB_SINGLE_REAL(bxInstruction_c *i)
|
||||
if (! FPU_handle_NaN(a, load_reg, result, status))
|
||||
result = floatx80_sub(a, float32_to_floatx80(load_reg, status), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FSUB_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
||||
@ -708,7 +708,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUBR_SINGLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -719,7 +719,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUBR_SINGLE_REAL(bxInstruction_c *i)
|
||||
if (! FPU_handle_NaN(b, load_reg, result, status))
|
||||
result = floatx80_sub(float32_to_floatx80(load_reg, status), b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FSUBR_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
||||
@ -739,7 +739,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUB_DOUBLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -750,7 +750,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUB_DOUBLE_REAL(bxInstruction_c *i)
|
||||
if (! FPU_handle_NaN(a, load_reg, result, status))
|
||||
result = floatx80_sub(a, float64_to_floatx80(load_reg, status), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FSUB_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
||||
@ -770,7 +770,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUBR_DOUBLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -782,7 +782,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSUBR_DOUBLE_REAL(bxInstruction_c *i)
|
||||
if (! FPU_handle_NaN(b, load_reg, result, status))
|
||||
result = floatx80_sub(float64_to_floatx80(load_reg, status), b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FSUBR_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
||||
@ -802,7 +802,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISUB_WORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -814,7 +814,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISUB_WORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_sub(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FISUB_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
||||
@ -834,7 +834,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISUBR_WORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -846,7 +846,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISUBR_WORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_sub(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FISUBR_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
||||
@ -866,7 +866,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISUB_DWORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -879,7 +879,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISUB_DWORD_INTEGER(bxInstruction_c *i)
|
||||
floatx80 result = floatx80_sub(BX_READ_FPU_REG(0),
|
||||
int32_to_floatx80(load_reg), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FISUB_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
||||
@ -899,7 +899,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISUBR_DWORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -911,7 +911,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISUBR_DWORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_sub(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FISUBR_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
||||
@ -928,7 +928,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIV_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -940,7 +940,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIV_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_div(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FDIV_ST0_STj: required FPU, configure --enable-fpu"));
|
||||
@ -957,7 +957,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIVR_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -969,7 +969,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIVR_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_div(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FDIVR_ST0_STj: required FPU, configure --enable-fpu"));
|
||||
@ -988,7 +988,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIV_STi_ST0(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(i->rm(), pop_stack);
|
||||
FPU_stack_underflow(i->rm(), pop_stack);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1000,7 +1000,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIV_STi_ST0(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_div(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_WRITE_FPU_REG(result, i->rm());
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
@ -1022,7 +1022,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIVR_STi_ST0(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(i->rm(), pop_stack);
|
||||
FPU_stack_underflow(i->rm(), pop_stack);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1034,7 +1034,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIVR_STi_ST0(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_div(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_WRITE_FPU_REG(result, i->rm());
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
@ -1057,7 +1057,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIV_SINGLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1068,7 +1068,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIV_SINGLE_REAL(bxInstruction_c *i)
|
||||
if (! FPU_handle_NaN(a, load_reg, result, status))
|
||||
result = floatx80_div(a, float32_to_floatx80(load_reg, status), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FDIV_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
||||
@ -1088,7 +1088,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIVR_SINGLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1099,7 +1099,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIVR_SINGLE_REAL(bxInstruction_c *i)
|
||||
if (! FPU_handle_NaN(b, load_reg, result, status))
|
||||
result = floatx80_div(float32_to_floatx80(load_reg, status), b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FDIVR_SINGLE_REAL: required FPU, configure --enable-fpu"));
|
||||
@ -1119,7 +1119,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIV_DOUBLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1130,7 +1130,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIV_DOUBLE_REAL(bxInstruction_c *i)
|
||||
if (! FPU_handle_NaN(a, load_reg, result, status))
|
||||
result = floatx80_div(a, float64_to_floatx80(load_reg, status), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FDIV_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
||||
@ -1150,7 +1150,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIVR_DOUBLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1161,7 +1161,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FDIVR_DOUBLE_REAL(bxInstruction_c *i)
|
||||
if (! FPU_handle_NaN(b, load_reg, result, status))
|
||||
result = floatx80_div(float64_to_floatx80(load_reg, status), b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FDIVR_DOUBLE_REAL: required FPU, configure --enable-fpu"));
|
||||
@ -1181,7 +1181,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIDIV_WORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1193,7 +1193,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIDIV_WORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_div(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FIDIV_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
||||
@ -1213,7 +1213,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIDIVR_WORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1225,7 +1225,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIDIVR_WORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_div(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FIDIVR_WORD_INTEGER: required FPU, configure --enable-fpu"));
|
||||
@ -1245,7 +1245,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIDIV_DWORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1257,7 +1257,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIDIV_DWORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_div(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FIDIV_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
||||
@ -1277,7 +1277,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIDIVR_DWORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1289,7 +1289,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIDIVR_DWORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_div(a, b, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FIDIVR_DWORD_INTEGER: required FPU, configure --enable-fpu"));
|
||||
@ -1305,7 +1305,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSQRT(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1314,7 +1314,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSQRT(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_sqrt(BX_READ_FPU_REG(0), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FSQRT: required FPU, configure --enable-fpu"));
|
||||
@ -1331,7 +1331,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FRNDINT(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1340,7 +1340,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FRNDINT(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_round_to_int(BX_READ_FPU_REG(0), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FRNDINT: required FPU, configure --enable-fpu"));
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fpu_compare.cc,v 1.25 2009-05-28 16:31:08 sshwarts Exp $
|
||||
// $Id: fpu_compare.cc,v 1.26 2009-05-28 19:25:33 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2003 Stanislav Shwartsman
|
||||
@ -92,7 +92,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCOM_STi(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
setcc(FPU_SW_C0|FPU_SW_C2|FPU_SW_C3);
|
||||
|
||||
if(BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -109,7 +109,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCOM_STi(bxInstruction_c *i)
|
||||
int rc = floatx80_compare(BX_READ_FPU_REG(0), BX_READ_FPU_REG(i->rm()), status);
|
||||
setcc(status_word_flags_fpu_compare(rc));
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
}
|
||||
@ -130,7 +130,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCOMI_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
setEFlagsOSZAPC(EFlagsZFMask | EFlagsPFMask | EFlagsCFMask);
|
||||
|
||||
if(BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -147,7 +147,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCOMI_ST0_STj(bxInstruction_c *i)
|
||||
int rc = floatx80_compare(BX_READ_FPU_REG(0), BX_READ_FPU_REG(i->rm()), status);
|
||||
BX_CPU_THIS_PTR write_eflags_fpu_compare(rc);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
}
|
||||
@ -169,7 +169,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FUCOMI_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
setEFlagsOSZAPC(EFlagsZFMask | EFlagsPFMask | EFlagsCFMask);
|
||||
|
||||
if(BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -186,7 +186,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FUCOMI_ST0_STj(bxInstruction_c *i)
|
||||
int rc = floatx80_compare_quiet(BX_READ_FPU_REG(0), BX_READ_FPU_REG(i->rm()), status);
|
||||
BX_CPU_THIS_PTR write_eflags_fpu_compare(rc);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
}
|
||||
@ -206,7 +206,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FUCOM_STi(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
setcc(FPU_SW_C0|FPU_SW_C2|FPU_SW_C3);
|
||||
|
||||
if(BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -223,7 +223,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FUCOM_STi(bxInstruction_c *i)
|
||||
int rc = floatx80_compare_quiet(BX_READ_FPU_REG(0), BX_READ_FPU_REG(i->rm()), status);
|
||||
setcc(status_word_flags_fpu_compare(rc));
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
}
|
||||
@ -248,7 +248,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCOM_SINGLE_REAL(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
setcc(FPU_SW_C0|FPU_SW_C2|FPU_SW_C3);
|
||||
|
||||
if(BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -273,7 +273,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCOM_SINGLE_REAL(bxInstruction_c *i)
|
||||
}
|
||||
setcc(status_word_flags_fpu_compare(rc));
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
}
|
||||
@ -298,7 +298,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCOM_DOUBLE_REAL(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
setcc(FPU_SW_C0|FPU_SW_C2|FPU_SW_C3);
|
||||
|
||||
if(BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -323,7 +323,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCOM_DOUBLE_REAL(bxInstruction_c *i)
|
||||
}
|
||||
setcc(status_word_flags_fpu_compare(rc));
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
}
|
||||
@ -348,7 +348,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FICOM_WORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
setcc(FPU_SW_C0|FPU_SW_C2|FPU_SW_C3);
|
||||
|
||||
if(BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -366,7 +366,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FICOM_WORD_INTEGER(bxInstruction_c *i)
|
||||
int32_to_floatx80((Bit32s)(load_reg)), status);
|
||||
setcc(status_word_flags_fpu_compare(rc));
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
}
|
||||
@ -391,7 +391,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FICOM_DWORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
setcc(FPU_SW_C0|FPU_SW_C2|FPU_SW_C3);
|
||||
|
||||
if(BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -408,7 +408,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FICOM_DWORD_INTEGER(bxInstruction_c *i)
|
||||
int rc = floatx80_compare(BX_READ_FPU_REG(0), int32_to_floatx80(load_reg), status);
|
||||
setcc(status_word_flags_fpu_compare(rc));
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
if (pop_stack)
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
}
|
||||
@ -428,7 +428,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCOMPP(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
setcc(FPU_SW_C0|FPU_SW_C2|FPU_SW_C3);
|
||||
|
||||
if(BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -445,7 +445,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCOMPP(bxInstruction_c *i)
|
||||
int rc = floatx80_compare(BX_READ_FPU_REG(0), BX_READ_FPU_REG(1), status);
|
||||
setcc(status_word_flags_fpu_compare(rc));
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
}
|
||||
@ -463,7 +463,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FUCOMPP(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
setcc(FPU_SW_C0|FPU_SW_C2|FPU_SW_C3);
|
||||
|
||||
if(BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -480,7 +480,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FUCOMPP(bxInstruction_c *i)
|
||||
int rc = floatx80_compare_quiet(BX_READ_FPU_REG(0), BX_READ_FPU_REG(1), status);
|
||||
setcc(status_word_flags_fpu_compare(rc));
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
}
|
||||
@ -497,7 +497,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCMOV_ST0_STj(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(i->rm()))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -535,7 +535,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FTST(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
setcc(FPU_SW_C0|FPU_SW_C2|FPU_SW_C3);
|
||||
}
|
||||
else {
|
||||
@ -546,7 +546,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FTST(bxInstruction_c *i)
|
||||
|
||||
int rc = floatx80_compare(BX_READ_FPU_REG(0), Const_Z, status);
|
||||
setcc(status_word_flags_fpu_compare(rc));
|
||||
BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags);
|
||||
FPU_exception(status.float_exception_flags);
|
||||
}
|
||||
#else
|
||||
BX_INFO(("FTST: required FPU, configure --enable-fpu"));
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fpu_const.cc,v 1.17 2009-04-27 14:00:55 sshwarts Exp $
|
||||
// $Id: fpu_const.cc,v 1.18 2009-05-28 19:25:33 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2003 Stanislav Shwartsman
|
||||
@ -62,7 +62,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLDL2T(bxInstruction_c *i)
|
||||
|
||||
if (! IS_TAG_EMPTY(-1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
}
|
||||
else {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
@ -83,7 +83,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLDL2E(bxInstruction_c *i)
|
||||
|
||||
if (! IS_TAG_EMPTY(-1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
}
|
||||
else {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
@ -104,7 +104,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLDPI(bxInstruction_c *i)
|
||||
|
||||
if (! IS_TAG_EMPTY(-1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
}
|
||||
else {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
@ -125,7 +125,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLDLG2(bxInstruction_c *i)
|
||||
|
||||
if (! IS_TAG_EMPTY(-1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
}
|
||||
else {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
@ -146,7 +146,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLDLN2(bxInstruction_c *i)
|
||||
|
||||
if (! IS_TAG_EMPTY(-1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
}
|
||||
else {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
@ -167,7 +167,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLD1(bxInstruction_c *i)
|
||||
|
||||
if (! IS_TAG_EMPTY(-1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
}
|
||||
else {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
@ -188,7 +188,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLDZ(bxInstruction_c *i)
|
||||
|
||||
if (! IS_TAG_EMPTY(-1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
}
|
||||
else {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fpu_load_store.cc,v 1.35 2009-05-21 14:33:06 sshwarts Exp $
|
||||
// $Id: fpu_load_store.cc,v 1.36 2009-05-28 19:25:33 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2003 Stanislav Shwartsman
|
||||
@ -42,7 +42,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLD_STi(bxInstruction_c *i)
|
||||
|
||||
if (! IS_TAG_EMPTY(-1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -79,7 +79,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLD_SINGLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (! IS_TAG_EMPTY(-1)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -89,7 +89,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLD_SINGLE_REAL(bxInstruction_c *i)
|
||||
// convert to floatx80 format
|
||||
floatx80 result = float32_to_floatx80(load_reg, status);
|
||||
|
||||
unsigned unmasked = BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags);
|
||||
unsigned unmasked = FPU_exception(status.float_exception_flags);
|
||||
if (! (unmasked & FPU_CW_Invalid)) {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
@ -112,7 +112,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLD_DOUBLE_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (! IS_TAG_EMPTY(-1)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -122,7 +122,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLD_DOUBLE_REAL(bxInstruction_c *i)
|
||||
// convert to floatx80 format
|
||||
floatx80 result = float64_to_floatx80(load_reg, status);
|
||||
|
||||
unsigned unmasked = BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags);
|
||||
unsigned unmasked = FPU_exception(status.float_exception_flags);
|
||||
if (! (unmasked & FPU_CW_Invalid)) {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
@ -148,7 +148,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FLD_EXTENDED_REAL(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (! IS_TAG_EMPTY(-1)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
}
|
||||
else {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
@ -173,7 +173,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FILD_WORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (! IS_TAG_EMPTY(-1)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
}
|
||||
else {
|
||||
floatx80 result = int32_to_floatx80((Bit32s) load_reg);
|
||||
@ -199,7 +199,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FILD_DWORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (! IS_TAG_EMPTY(-1)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
}
|
||||
else {
|
||||
floatx80 result = int32_to_floatx80(load_reg);
|
||||
@ -225,7 +225,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FILD_QWORD_INTEGER(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (! IS_TAG_EMPTY(-1)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
}
|
||||
else {
|
||||
floatx80 result = int64_to_floatx80(load_reg);
|
||||
@ -253,7 +253,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FBLD_PACKED_BCD(bxInstruction_c *i)
|
||||
|
||||
if (! IS_TAG_EMPTY(-1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_overflow();
|
||||
FPU_stack_overflow();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -296,7 +296,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FST_STi(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(i->rm(), pop_stack);
|
||||
FPU_stack_underflow(i->rm(), pop_stack);
|
||||
}
|
||||
else {
|
||||
floatx80 st0_reg = BX_READ_FPU_REG(0);
|
||||
@ -327,7 +327,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FST_SINGLE_REAL(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
|
||||
if (! BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
return;
|
||||
@ -339,7 +339,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FST_SINGLE_REAL(bxInstruction_c *i)
|
||||
|
||||
save_reg = floatx80_to_float32(BX_READ_FPU_REG(0), status);
|
||||
|
||||
if (BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags, 1))
|
||||
if (FPU_exception(status.float_exception_flags, 1))
|
||||
return;
|
||||
}
|
||||
|
||||
@ -369,7 +369,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FST_DOUBLE_REAL(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
|
||||
if (! BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
return;
|
||||
@ -381,7 +381,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FST_DOUBLE_REAL(bxInstruction_c *i)
|
||||
|
||||
save_reg = floatx80_to_float64(BX_READ_FPU_REG(0), status);
|
||||
|
||||
if (BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags, 1))
|
||||
if (FPU_exception(status.float_exception_flags, 1))
|
||||
return;
|
||||
}
|
||||
|
||||
@ -410,7 +410,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSTP_EXTENDED_REAL(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
|
||||
if (! BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
return;
|
||||
@ -446,7 +446,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIST_WORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
|
||||
if (! BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
return;
|
||||
@ -458,7 +458,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIST_WORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
save_reg = floatx80_to_int16(BX_READ_FPU_REG(0), status);
|
||||
|
||||
if (BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags, 1))
|
||||
if (FPU_exception(status.float_exception_flags, 1))
|
||||
return;
|
||||
}
|
||||
|
||||
@ -488,7 +488,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIST_DWORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
|
||||
if (! BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
return;
|
||||
@ -500,7 +500,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FIST_DWORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
save_reg = floatx80_to_int32(BX_READ_FPU_REG(0), status);
|
||||
|
||||
if (BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags, 1))
|
||||
if (FPU_exception(status.float_exception_flags, 1))
|
||||
return;
|
||||
}
|
||||
|
||||
@ -528,7 +528,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISTP_QWORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
|
||||
if (! BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
return;
|
||||
@ -540,7 +540,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISTP_QWORD_INTEGER(bxInstruction_c *i)
|
||||
|
||||
save_reg = floatx80_to_int64(BX_READ_FPU_REG(0), status);
|
||||
|
||||
if (BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags, 1))
|
||||
if (FPU_exception(status.float_exception_flags, 1))
|
||||
return;
|
||||
}
|
||||
|
||||
@ -572,7 +572,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FBSTP_PACKED_BCD(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
|
||||
if (! BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
return;
|
||||
@ -610,7 +610,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FBSTP_PACKED_BCD(bxInstruction_c *i)
|
||||
}
|
||||
|
||||
/* check for fpu arithmetic exceptions */
|
||||
if (BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags, 1))
|
||||
if (FPU_exception(status.float_exception_flags, 1))
|
||||
return;
|
||||
}
|
||||
|
||||
@ -640,7 +640,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISTTP16(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
|
||||
if (! BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
return;
|
||||
@ -652,7 +652,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISTTP16(bxInstruction_c *i)
|
||||
|
||||
save_reg = floatx80_to_int16_round_to_zero(BX_READ_FPU_REG(0), status);
|
||||
|
||||
if (BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags, 1))
|
||||
if (FPU_exception(status.float_exception_flags, 1))
|
||||
return;
|
||||
}
|
||||
|
||||
@ -680,7 +680,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISTTP32(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
|
||||
if (! BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
return;
|
||||
@ -692,7 +692,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISTTP32(bxInstruction_c *i)
|
||||
|
||||
save_reg = floatx80_to_int32_round_to_zero(BX_READ_FPU_REG(0), status);
|
||||
|
||||
if (BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags, 1))
|
||||
if (FPU_exception(status.float_exception_flags, 1))
|
||||
return;
|
||||
}
|
||||
|
||||
@ -720,7 +720,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISTTP64(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
|
||||
if (! BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
return;
|
||||
@ -732,7 +732,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FISTTP64(bxInstruction_c *i)
|
||||
|
||||
save_reg = floatx80_to_int64_round_to_zero(BX_READ_FPU_REG(0), status);
|
||||
|
||||
if (BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags, 1))
|
||||
if (FPU_exception(status.float_exception_flags, 1))
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fpu_misc.cc,v 1.18 2009-04-27 14:00:55 sshwarts Exp $
|
||||
// $Id: fpu_misc.cc,v 1.19 2009-05-28 19:25:33 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2003 Stanislav Shwartsman
|
||||
@ -47,7 +47,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FXCH_STi(bxInstruction_c *i)
|
||||
|
||||
if (st0_tag == FPU_Tag_Empty || sti_tag == FPU_Tag_Empty)
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
|
||||
if(BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
{
|
||||
@ -76,7 +76,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCHS(bxInstruction_c *i)
|
||||
BX_CPU_THIS_PTR FPU_update_last_instruction(i);
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
}
|
||||
else {
|
||||
clear_C1();
|
||||
@ -96,7 +96,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FABS(bxInstruction_c *i)
|
||||
BX_CPU_THIS_PTR FPU_update_last_instruction(i);
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
}
|
||||
else {
|
||||
clear_C1();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: fpu_trans.cc,v 1.23 2009-05-21 18:24:00 sshwarts Exp $
|
||||
// $Id: fpu_trans.cc,v 1.24 2009-05-28 19:25:33 sshwarts Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2003 Stanislav Shwartsman
|
||||
@ -43,7 +43,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::F2XM1(bxInstruction_c *i)
|
||||
clear_C1();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -52,7 +52,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::F2XM1(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = f2xm1(BX_READ_FPU_REG(0), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("F2XM1: required FPU, configure --enable-fpu"));
|
||||
@ -70,7 +70,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FYL2X(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0, 1);
|
||||
FPU_stack_underflow(0, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -79,7 +79,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FYL2X(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = fyl2x(BX_READ_FPU_REG(0), BX_READ_FPU_REG(1), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
}
|
||||
@ -101,9 +101,9 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FPTAN(bxInstruction_c *i)
|
||||
if (IS_TAG_EMPTY(0) || ! IS_TAG_EMPTY(-1))
|
||||
{
|
||||
if(IS_TAG_EMPTY(0))
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
else
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Overflow);
|
||||
FPU_exception(FPU_EX_Stack_Overflow);
|
||||
|
||||
/* The masked response */
|
||||
if (BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -130,7 +130,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FPTAN(bxInstruction_c *i)
|
||||
|
||||
if (floatx80_is_nan(y))
|
||||
{
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
{
|
||||
BX_WRITE_FPU_REG(y, 0);
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
@ -140,7 +140,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FPTAN(bxInstruction_c *i)
|
||||
return;
|
||||
}
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_WRITE_FPU_REG(y, 0);
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
BX_WRITE_FPU_REG(Const_1, 0);
|
||||
@ -161,7 +161,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FPATAN(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0, 1);
|
||||
FPU_stack_underflow(0, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -170,7 +170,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FPATAN(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = fpatan(BX_READ_FPU_REG(0), BX_READ_FPU_REG(1), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
}
|
||||
@ -191,9 +191,9 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FXTRACT(bxInstruction_c *i)
|
||||
if (IS_TAG_EMPTY(0) || ! IS_TAG_EMPTY(-1))
|
||||
{
|
||||
if(IS_TAG_EMPTY(0))
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
else
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Overflow);
|
||||
FPU_exception(FPU_EX_Stack_Overflow);
|
||||
|
||||
/* The masked response */
|
||||
if (BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -212,7 +212,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FXTRACT(bxInstruction_c *i)
|
||||
floatx80 a = BX_READ_FPU_REG(0);
|
||||
floatx80 b = floatx80_extract(a, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_WRITE_FPU_REG(b, 0); // exponent
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
BX_WRITE_FPU_REG(a, 0); // fraction
|
||||
@ -234,7 +234,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FPREM1(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -248,7 +248,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FPREM1(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_ieee754_remainder(a, b, quotient, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
int cc = 0;
|
||||
if (quotient == (Bit64u) -1) cc = FPU_SW_C2;
|
||||
else {
|
||||
@ -276,7 +276,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FPREM(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -290,7 +290,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FPREM(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_remainder(a, b, quotient, status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
int cc = 0;
|
||||
if (quotient == (Bit64u) -1) cc = FPU_SW_C2;
|
||||
else {
|
||||
@ -318,7 +318,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FYL2XP1(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0, 1);
|
||||
FPU_stack_underflow(0, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -327,7 +327,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FYL2XP1(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = fyl2xp1(BX_READ_FPU_REG(0), BX_READ_FPU_REG(1), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_CPU_THIS_PTR the_i387.FPU_pop();
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
}
|
||||
@ -349,9 +349,9 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSINCOS(bxInstruction_c *i)
|
||||
if (IS_TAG_EMPTY(0) || ! IS_TAG_EMPTY(-1))
|
||||
{
|
||||
if(IS_TAG_EMPTY(0))
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Underflow);
|
||||
FPU_exception(FPU_EX_Stack_Underflow);
|
||||
else
|
||||
BX_CPU_THIS_PTR FPU_exception(FPU_EX_Stack_Overflow);
|
||||
FPU_exception(FPU_EX_Stack_Overflow);
|
||||
|
||||
/* The masked response */
|
||||
if (BX_CPU_THIS_PTR the_i387.is_IA_masked())
|
||||
@ -375,7 +375,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSINCOS(bxInstruction_c *i)
|
||||
return;
|
||||
}
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags)) {
|
||||
if (! FPU_exception(status.float_exception_flags)) {
|
||||
BX_WRITE_FPU_REG(sin_y, 0);
|
||||
BX_CPU_THIS_PTR the_i387.FPU_push();
|
||||
BX_WRITE_FPU_REG(cos_y, 0);
|
||||
@ -396,7 +396,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSCALE(bxInstruction_c *i)
|
||||
|
||||
if (IS_TAG_EMPTY(0) || IS_TAG_EMPTY(1))
|
||||
{
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -405,7 +405,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSCALE(bxInstruction_c *i)
|
||||
|
||||
floatx80 result = floatx80_scale(BX_READ_FPU_REG(0), BX_READ_FPU_REG(1), status);
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(result, 0);
|
||||
#else
|
||||
BX_INFO(("FSCALE: required FPU, configure --enable-fpu"));
|
||||
@ -423,7 +423,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSIN(bxInstruction_c *i)
|
||||
clear_C2();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -437,7 +437,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FSIN(bxInstruction_c *i)
|
||||
return;
|
||||
}
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(y, 0);
|
||||
#else
|
||||
BX_INFO(("FSIN: required FPU, configure --enable-fpu"));
|
||||
@ -455,7 +455,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCOS(bxInstruction_c *i)
|
||||
clear_C2();
|
||||
|
||||
if (IS_TAG_EMPTY(0)) {
|
||||
BX_CPU_THIS_PTR FPU_stack_underflow(0);
|
||||
FPU_stack_underflow(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -469,7 +469,7 @@ void BX_CPP_AttrRegparmN(1) BX_CPU_C::FCOS(bxInstruction_c *i)
|
||||
return;
|
||||
}
|
||||
|
||||
if (! BX_CPU_THIS_PTR FPU_exception(status.float_exception_flags))
|
||||
if (! FPU_exception(status.float_exception_flags))
|
||||
BX_WRITE_FPU_REG(y, 0);
|
||||
#else
|
||||
BX_INFO(("FCOS: required FPU, configure --enable-fpu"));
|
||||
|
Loading…
Reference in New Issue
Block a user