Commit 894efddb50a4531cbeaf2e2b0a1832133d1ef34d

Authored by aurel32
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,21 +332,21 @@ static always_inline int _do_efststlt (uint32_t op1, uint32_t op2)
332 CPU_FloatU u1, u2; 332 CPU_FloatU u1, u2;
333 u1.l = op1; 333 u1.l = op1;
334 u2.l = op2; 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 static always_inline int _do_efststgt (uint32_t op1, uint32_t op2) 337 static always_inline int _do_efststgt (uint32_t op1, uint32_t op2)
338 { 338 {
339 CPU_FloatU u1, u2; 339 CPU_FloatU u1, u2;
340 u1.l = op1; 340 u1.l = op1;
341 u2.l = op2; 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 static always_inline int _do_efststeq (uint32_t op1, uint32_t op2) 344 static always_inline int _do_efststeq (uint32_t op1, uint32_t op2)
345 { 345 {
346 CPU_FloatU u1, u2; 346 CPU_FloatU u1, u2;
347 u1.l = op1; 347 u1.l = op1;
348 u2.l = op2; 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 /* Double precision floating-point helpers */ 351 /* Double precision floating-point helpers */
352 static always_inline int _do_efdtstlt (uint64_t op1, uint64_t op2) 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,20 +354,20 @@ static always_inline int _do_efdtstlt (uint64_t op1, uint64_t op2)
354 CPU_DoubleU u1, u2; 354 CPU_DoubleU u1, u2;
355 u1.ll = op1; 355 u1.ll = op1;
356 u2.ll = op2; 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 static always_inline int _do_efdtstgt (uint64_t op1, uint64_t op2) 359 static always_inline int _do_efdtstgt (uint64_t op1, uint64_t op2)
360 { 360 {
361 CPU_DoubleU u1, u2; 361 CPU_DoubleU u1, u2;
362 u1.ll = op1; 362 u1.ll = op1;
363 u2.ll = op2; 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 static always_inline int _do_efdtsteq (uint64_t op1, uint64_t op2) 366 static always_inline int _do_efdtsteq (uint64_t op1, uint64_t op2)
367 { 367 {
368 CPU_DoubleU u1, u2; 368 CPU_DoubleU u1, u2;
369 u1.ll = op1; 369 u1.ll = op1;
370 u2.ll = op2; 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 #endif 373 #endif