Commit 8d6c92b6b18a95e079d340db117c77f0e01b71f1

Authored by aurel32
1 parent ce9ede84

softfloat-native: improve correctness of floatXX_is_neg()

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6059 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 9 additions and 3 deletions
fpu/softfloat-native.h
@@ -265,7 +265,9 @@ INLINE float32 float32_is_infinity(float32 a) @@ -265,7 +265,9 @@ INLINE float32 float32_is_infinity(float32 a)
265 265
266 INLINE float32 float32_is_neg(float32 a) 266 INLINE float32 float32_is_neg(float32 a)
267 { 267 {
268 - return a < 0.0; 268 + float32u u;
  269 + u.f = a;
  270 + return u.i >> 31;
269 } 271 }
270 272
271 INLINE float32 float32_is_zero(float32 a) 273 INLINE float32 float32_is_zero(float32 a)
@@ -372,7 +374,9 @@ INLINE float64 float64_is_infinity(float64 a) @@ -372,7 +374,9 @@ INLINE float64 float64_is_infinity(float64 a)
372 374
373 INLINE float64 float64_is_neg(float64 a) 375 INLINE float64 float64_is_neg(float64 a)
374 { 376 {
375 - return a < 0.0; 377 + float64u u;
  378 + u.f = a;
  379 + return u.i >> 63;
376 } 380 }
377 381
378 INLINE float64 float64_is_zero(float64 a) 382 INLINE float64 float64_is_zero(float64 a)
@@ -474,7 +478,9 @@ INLINE floatx80 floatx80_is_infinity(floatx80 a) @@ -474,7 +478,9 @@ INLINE floatx80 floatx80_is_infinity(floatx80 a)
474 478
475 INLINE floatx80 floatx80_is_neg(floatx80 a) 479 INLINE floatx80 floatx80_is_neg(floatx80 a)
476 { 480 {
477 - return a < 0.0; 481 + floatx80u u;
  482 + u.f = a;
  483 + return u.i.high >> 15;
478 } 484 }
479 485
480 INLINE floatx80 floatx80_is_zero(floatx80 a) 486 INLINE floatx80 floatx80_is_zero(floatx80 a)