1 /* $NetBSD: __aeabi_fcmpun.c,v 1.1 2013/04/16 10:37:39 matt Exp $ */ 2 3 /** @file 4 * 5 * Copyright (c) 2013 - 2014, ARM Limited. All rights reserved. 6 * 7 * This program and the accompanying materials 8 * are licensed and made available under the terms and conditions of the BSD License 9 * which accompanies this distribution. The full text of the license may be found at 10 * http://opensource.org/licenses/bsd-license.php 11 * 12 * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 14 * 15 **/ 16 17 /* 18 * Written by Richard Earnshaw, 2003. This file is in the Public Domain. 19 */ 20 21 #include "softfloat-for-gcc.h" 22 #include "milieu.h" 23 #include "softfloat.h" 24 25 #include <sys/cdefs.h> 26 #if defined(LIBC_SCCS) && !defined(lint) 27 __RCSID("$NetBSD: __aeabi_fcmpun.c,v 1.1 2013/04/16 10:37:39 matt Exp $"); 28 #endif /* LIBC_SCCS and not lint */ 29 30 int __aeabi_fcmpun(float32, float32); 31 32 int 33 __aeabi_fcmpun(float32 a, float32 b) 34 { 35 /* 36 * The comparison is unordered if either input is a NaN. 37 * Test for this by comparing each operand with itself. 38 * We must perform both comparisons to correctly check for 39 * signalling NaNs. 40 */ 41 return !float32_eq(a, a) || !float32_eq(b, b); 42 } 43