PPC: fix efstst* instructions
(Tristan Gingold) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4362 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
f9320410e1
commit
894efddb50
@ -332,21 +332,21 @@ static always_inline int _do_efststlt (uint32_t op1, uint32_t op2)
|
|||||||
CPU_FloatU u1, u2;
|
CPU_FloatU u1, u2;
|
||||||
u1.l = op1;
|
u1.l = op1;
|
||||||
u2.l = op2;
|
u2.l = op2;
|
||||||
return float32_lt(u1.f, u2.f, &env->spe_status) ? 1 : 0;
|
return float32_lt(u1.f, u2.f, &env->spe_status) ? 4 : 0;
|
||||||
}
|
}
|
||||||
static always_inline int _do_efststgt (uint32_t op1, uint32_t op2)
|
static always_inline int _do_efststgt (uint32_t op1, uint32_t op2)
|
||||||
{
|
{
|
||||||
CPU_FloatU u1, u2;
|
CPU_FloatU u1, u2;
|
||||||
u1.l = op1;
|
u1.l = op1;
|
||||||
u2.l = op2;
|
u2.l = op2;
|
||||||
return float32_le(u1.f, u2.f, &env->spe_status) ? 0 : 1;
|
return float32_le(u1.f, u2.f, &env->spe_status) ? 0 : 4;
|
||||||
}
|
}
|
||||||
static always_inline int _do_efststeq (uint32_t op1, uint32_t op2)
|
static always_inline int _do_efststeq (uint32_t op1, uint32_t op2)
|
||||||
{
|
{
|
||||||
CPU_FloatU u1, u2;
|
CPU_FloatU u1, u2;
|
||||||
u1.l = op1;
|
u1.l = op1;
|
||||||
u2.l = op2;
|
u2.l = op2;
|
||||||
return float32_eq(u1.f, u2.f, &env->spe_status) ? 1 : 0;
|
return float32_eq(u1.f, u2.f, &env->spe_status) ? 4 : 0;
|
||||||
}
|
}
|
||||||
/* Double precision floating-point helpers */
|
/* Double precision floating-point helpers */
|
||||||
static always_inline int _do_efdtstlt (uint64_t op1, uint64_t op2)
|
static always_inline int _do_efdtstlt (uint64_t op1, uint64_t op2)
|
||||||
@ -354,20 +354,20 @@ static always_inline int _do_efdtstlt (uint64_t op1, uint64_t op2)
|
|||||||
CPU_DoubleU u1, u2;
|
CPU_DoubleU u1, u2;
|
||||||
u1.ll = op1;
|
u1.ll = op1;
|
||||||
u2.ll = op2;
|
u2.ll = op2;
|
||||||
return float64_lt(u1.d, u2.d, &env->spe_status) ? 1 : 0;
|
return float64_lt(u1.d, u2.d, &env->spe_status) ? 4 : 0;
|
||||||
}
|
}
|
||||||
static always_inline int _do_efdtstgt (uint64_t op1, uint64_t op2)
|
static always_inline int _do_efdtstgt (uint64_t op1, uint64_t op2)
|
||||||
{
|
{
|
||||||
CPU_DoubleU u1, u2;
|
CPU_DoubleU u1, u2;
|
||||||
u1.ll = op1;
|
u1.ll = op1;
|
||||||
u2.ll = op2;
|
u2.ll = op2;
|
||||||
return float64_le(u1.d, u2.d, &env->spe_status) ? 0 : 1;
|
return float64_le(u1.d, u2.d, &env->spe_status) ? 0 : 4;
|
||||||
}
|
}
|
||||||
static always_inline int _do_efdtsteq (uint64_t op1, uint64_t op2)
|
static always_inline int _do_efdtsteq (uint64_t op1, uint64_t op2)
|
||||||
{
|
{
|
||||||
CPU_DoubleU u1, u2;
|
CPU_DoubleU u1, u2;
|
||||||
u1.ll = op1;
|
u1.ll = op1;
|
||||||
u2.ll = op2;
|
u2.ll = op2;
|
||||||
return float64_eq(u1.d, u2.d, &env->spe_status) ? 1 : 0;
|
return float64_eq(u1.d, u2.d, &env->spe_status) ? 4 : 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user