12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//===------------ unordtf2_test.c - Test __unordtf2------------------------===// 22d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// 32d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// The LLVM Compiler Infrastructure 42d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// 52d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// This file is dual licensed under the MIT and the University of Illinois Open 62d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// Source Licenses. See LICENSE.TXT for details. 72d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// 82d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//===----------------------------------------------------------------------===// 92d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// 102d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// This file tests __unordtf2 for the compiler_rt library. 112d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// 122d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//===----------------------------------------------------------------------===// 132d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 142d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include <stdio.h> 152d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 162d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if __LP64__ && __LDBL_MANT_DIG__ == 113 172d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 182d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#include "fp_test.h" 192d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 202d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesint __unordtf2(long double a, long double b); 212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesint test__unordtf2(long double a, long double b, enum EXPECTED_RESULT expected) 232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines{ 242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int x = __unordtf2(a, b); 252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int ret = compareResultCMP(x, expected); 262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (ret){ 282d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines printf("error in test__unordtf2(%.20Lf, %.20Lf) = %d, " 292d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines "expected %s\n", a, b, x, expectedStr(expected)); 302d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines } 312d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return ret; 322d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines} 332d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 342d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hineschar assumption_1[sizeof(long double) * CHAR_BIT == 128] = {0}; 352d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 362d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 372d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 382d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesint main() 392d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines{ 402d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#if __LP64__ && __LDBL_MANT_DIG__ == 113 412d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // NaN 422d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (test__unordtf2(makeQNaN128(), 432d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 0x1.234567890abcdef1234567890abcp+3L, 442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines NEQUAL_0)) 452d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 1; 462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // other 472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (test__unordtf2(0x1.234567890abcdef1234567890abcp+3L, 482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 0x1.334567890abcdef1234567890abcp+3L, 492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines EQUAL_0)) 502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 1; 512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (test__unordtf2(0x1.234567890abcdef1234567890abcp+3L, 522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 0x1.234567890abcdef1234567890abcp+3L, 532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines EQUAL_0)) 542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 1; 552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (test__unordtf2(0x1.234567890abcdef1234567890abcp+3L, 562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 0x1.234567890abcdef1234567890abcp-3L, 572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines EQUAL_0)) 582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 1; 592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines printf("skipped\n"); 622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 0; 652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines} 66