12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines//===------------ lttf2_test.c - Test __lttf2------------------------------===// 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 __lttf2 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 __lttf2(long double a, long double b); 212d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 222d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hinesint test__lttf2(long double a, long double b, enum EXPECTED_RESULT expected) 232d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines{ 242d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int x = __lttf2(a, b); 252d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines int ret = compareResultCMP(x, expected); 262d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 272d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (ret){ 282d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines printf("error in test__lttf2(%.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__lttf2(makeQNaN128(), 432d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 0x1.234567890abcdef1234567890abcp+3L, 442d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines GREATER_EQUAL_0)) 452d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 1; 462d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // < 472d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // exp 482d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (test__lttf2(0x1.234567890abcdef1234567890abcp-3L, 492d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 0x1.234567890abcdef1234567890abcp+3L, 502d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines LESS_0)) 512d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 1; 522d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // mantissa 532d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (test__lttf2(0x1.234567890abcdef1234567890abcp+3L, 542d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 0x1.334567890abcdef1234567890abcp+3L, 552d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines LESS_0)) 562d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 1; 572d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // sign 582d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (test__lttf2(-0x1.234567890abcdef1234567890abcp+3L, 592d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 0x1.234567890abcdef1234567890abcp+3L, 602d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines LESS_0)) 612d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 1; 622d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // == 632d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (test__lttf2(0x1.234567890abcdef1234567890abcp+3L, 642d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 0x1.234567890abcdef1234567890abcp+3L, 652d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines GREATER_EQUAL_0)) 662d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 1; 672d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // > 682d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // exp 692d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (test__lttf2(0x1.234567890abcdef1234567890abcp+3L, 702d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 0x1.234567890abcdef1234567890abcp-3L, 712d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines GREATER_EQUAL_0)) 722d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 1; 732d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // mantissa 742d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (test__lttf2(0x1.334567890abcdef1234567890abcp+3L, 752d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 0x1.234567890abcdef1234567890abcp+3L, 762d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines GREATER_EQUAL_0)) 772d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 1; 782d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines // sign 792d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines if (test__lttf2(0x1.234567890abcdef1234567890abcp+3L, 802d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines -0x1.234567890abcdef1234567890abcp+3L, 812d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines GREATER_EQUAL_0)) 822d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 1; 832d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 842d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#else 852d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines printf("skipped\n"); 862d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines 872d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines#endif 882d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines return 0; 892d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines} 90