80 lines · c
1// RUN: %clang_builtins %s %librt -o %t && %run %t2// REQUIRES: librt_has_comparetf23 4#include <stdio.h>5 6#if __LP64__ && __LDBL_MANT_DIG__ == 1137 8#include "fp_test.h"9 10int __netf2(long double a, long double b);11 12int test__netf2(long double a, long double b, enum EXPECTED_RESULT expected)13{14 int x = __netf2(a, b);15 int ret = compareResultCMP(x, expected);16 17 if (ret){18 printf("error in test__netf2(%.20Lf, %.20Lf) = %d, "19 "expected %s\n", a, b, x, expectedStr(expected));20 }21 return ret;22}23 24char assumption_1[sizeof(long double) * CHAR_BIT == 128] = {0};25 26#endif27 28int main()29{30#if __LP64__ && __LDBL_MANT_DIG__ == 11331 // NaN32 if (test__netf2(makeQNaN128(),33 0x1.234567890abcdef1234567890abcp+3L,34 NEQUAL_0))35 return 1;36 // <37 // exp38 if (test__netf2(0x1.234567890abcdef1234567890abcp-3L,39 0x1.234567890abcdef1234567890abcp+3L,40 NEQUAL_0))41 return 1;42 // mantissa43 if (test__netf2(0x1.234567890abcdef1234567890abcp+3L,44 0x1.334567890abcdef1234567890abcp+3L,45 NEQUAL_0))46 return 1;47 // sign48 if (test__netf2(-0x1.234567890abcdef1234567890abcp+3L,49 0x1.234567890abcdef1234567890abcp+3L,50 NEQUAL_0))51 return 1;52 // ==53 if (test__netf2(0x1.234567890abcdef1234567890abcp+3L,54 0x1.234567890abcdef1234567890abcp+3L,55 EQUAL_0))56 return 1;57 // >58 // exp59 if (test__netf2(0x1.234567890abcdef1234567890abcp+3L,60 0x1.234567890abcdef1234567890abcp-3L,61 NEQUAL_0))62 return 1;63 // mantissa64 if (test__netf2(0x1.334567890abcdef1234567890abcp+3L,65 0x1.234567890abcdef1234567890abcp+3L,66 NEQUAL_0))67 return 1;68 // sign69 if (test__netf2(0x1.234567890abcdef1234567890abcp+3L,70 -0x1.234567890abcdef1234567890abcp+3L,71 NEQUAL_0))72 return 1;73 74#else75 printf("skipped\n");76 77#endif78 return 0;79}80