Commit 894efddb50a4531cbeaf2e2b0a1832133d1ef34d
1 parent
f9320410
PPC: fix efstst* instructions
(Tristan Gingold) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4362 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
6 additions
and
6 deletions
target-ppc/op_helper.h
... | ... | @@ -332,21 +332,21 @@ static always_inline int _do_efststlt (uint32_t op1, uint32_t op2) |
332 | 332 | CPU_FloatU u1, u2; |
333 | 333 | u1.l = op1; |
334 | 334 | u2.l = op2; |
335 | - return float32_lt(u1.f, u2.f, &env->spe_status) ? 1 : 0; | |
335 | + return float32_lt(u1.f, u2.f, &env->spe_status) ? 4 : 0; | |
336 | 336 | } |
337 | 337 | static always_inline int _do_efststgt (uint32_t op1, uint32_t op2) |
338 | 338 | { |
339 | 339 | CPU_FloatU u1, u2; |
340 | 340 | u1.l = op1; |
341 | 341 | u2.l = op2; |
342 | - return float32_le(u1.f, u2.f, &env->spe_status) ? 0 : 1; | |
342 | + return float32_le(u1.f, u2.f, &env->spe_status) ? 0 : 4; | |
343 | 343 | } |
344 | 344 | static always_inline int _do_efststeq (uint32_t op1, uint32_t op2) |
345 | 345 | { |
346 | 346 | CPU_FloatU u1, u2; |
347 | 347 | u1.l = op1; |
348 | 348 | u2.l = op2; |
349 | - return float32_eq(u1.f, u2.f, &env->spe_status) ? 1 : 0; | |
349 | + return float32_eq(u1.f, u2.f, &env->spe_status) ? 4 : 0; | |
350 | 350 | } |
351 | 351 | /* Double precision floating-point helpers */ |
352 | 352 | 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) |
354 | 354 | CPU_DoubleU u1, u2; |
355 | 355 | u1.ll = op1; |
356 | 356 | u2.ll = op2; |
357 | - return float64_lt(u1.d, u2.d, &env->spe_status) ? 1 : 0; | |
357 | + return float64_lt(u1.d, u2.d, &env->spe_status) ? 4 : 0; | |
358 | 358 | } |
359 | 359 | static always_inline int _do_efdtstgt (uint64_t op1, uint64_t op2) |
360 | 360 | { |
361 | 361 | CPU_DoubleU u1, u2; |
362 | 362 | u1.ll = op1; |
363 | 363 | u2.ll = op2; |
364 | - return float64_le(u1.d, u2.d, &env->spe_status) ? 0 : 1; | |
364 | + return float64_le(u1.d, u2.d, &env->spe_status) ? 0 : 4; | |
365 | 365 | } |
366 | 366 | static always_inline int _do_efdtsteq (uint64_t op1, uint64_t op2) |
367 | 367 | { |
368 | 368 | CPU_DoubleU u1, u2; |
369 | 369 | u1.ll = op1; |
370 | 370 | u2.ll = op2; |
371 | - return float64_eq(u1.d, u2.d, &env->spe_status) ? 1 : 0; | |
371 | + return float64_eq(u1.d, u2.d, &env->spe_status) ? 4 : 0; | |
372 | 372 | } |
373 | 373 | #endif | ... | ... |