117706Sjulian/* $NetBSD: unordtf2.c,v 1.1 2014/01/30 19:06:54 matt Exp $ */
217706Sjulian
317706Sjulian/*
417706Sjulian * Written by Richard Earnshaw, 2003.  This file is in the Public Domain.
517706Sjulian */
617706Sjulian
717706Sjulian#include "softfloat-for-gcc.h"
817706Sjulian#include "milieu.h"
917706Sjulian#include "softfloat.h"
1017706Sjulian
1117706Sjulian#include <sys/cdefs.h>
1217706Sjulian#if defined(LIBC_SCCS) && !defined(lint)
1317706Sjulian__RCSID("$NetBSD: unordtf2.c,v 1.1 2014/01/30 19:06:54 matt Exp $");
1417706Sjulian#endif /* LIBC_SCCS and not lint */
1517706Sjulian
1617706Sjulian#ifdef FLOAT128
1717706Sjulian
1817706Sjulianflag __unordtf2(float128, float128);
1917706Sjulian
2017706Sjulianflag
2117706Sjulian__unordtf2(float128 a, float128 b)
2217706Sjulian{
2317706Sjulian	/*
2417706Sjulian	 * The comparison is unordered if either input is a NaN.
2517706Sjulian	 * Test for this by comparing each operand with itself.
2617706Sjulian	 * We must perform both comparisons to correctly check for
2717706Sjulian	 * signalling NaNs.
2817706Sjulian	 */
2917706Sjulian	return 1 ^ (float128_eq(a, a) & float128_eq(b, b));
3017706Sjulian}
3150476Speter
3218480Swosch#endif /* FLOAT128 */
3317706Sjulian