1*15144b0fSOlivier Houchard /* $NetBSD: unordsf2.c,v 1.1 2003/05/06 08:58:20 rearnsha Exp $ */ 2*15144b0fSOlivier Houchard 3*15144b0fSOlivier Houchard /* 4*15144b0fSOlivier Houchard * Written by Richard Earnshaw, 2003. This file is in the Public Domain. 5*15144b0fSOlivier Houchard */ 6*15144b0fSOlivier Houchard 7*15144b0fSOlivier Houchard #include "softfloat-for-gcc.h" 8*15144b0fSOlivier Houchard #include "milieu.h" 9*15144b0fSOlivier Houchard #include "softfloat.h" 10*15144b0fSOlivier Houchard 11*15144b0fSOlivier Houchard flag __unordsf2(float32, float32); 12*15144b0fSOlivier Houchard 13*15144b0fSOlivier Houchard flag __unordsf2(float32 a,float32 b)14*15144b0fSOlivier Houchard__unordsf2(float32 a, float32 b) 15*15144b0fSOlivier Houchard { 16*15144b0fSOlivier Houchard /* 17*15144b0fSOlivier Houchard * The comparison is unordered if either input is a NaN. 18*15144b0fSOlivier Houchard * Test for this by comparing each operand with itself. 19*15144b0fSOlivier Houchard * We must perform both comparisons to correctly check for 20*15144b0fSOlivier Houchard * signalling NaNs. 21*15144b0fSOlivier Houchard */ 22*15144b0fSOlivier Houchard return 1 ^ (float32_eq(a, a) & float32_eq(b, b)); 23*15144b0fSOlivier Houchard } 24