1*ad49657aSPiJoules /// Assert the fixed point precision macros according to ISO/IEC TR 18037:2008 7.18a.3 are 2*ad49657aSPiJoules /// defined when -ffixed-point is provided. 3*ad49657aSPiJoules 4*ad49657aSPiJoules // RUN: %clang_cc1 -triple=x86_64 -E -dM -ffixed-point -x c < /dev/null | FileCheck -match-full-lines %s 5*ad49657aSPiJoules // RUN: %clang_cc1 -triple=x86_64 -E -dM -ffixed-point -x c++ < /dev/null | FileCheck -match-full-lines %s 6*ad49657aSPiJoules 7*ad49657aSPiJoules /// These are the implementation-defined values for x86_64. 8*ad49657aSPiJoules // CHECK-DAG:#define __SFRACT_EPSILON__ 0.0078125HR 9*ad49657aSPiJoules // CHECK-DAG:#define __SFRACT_FBIT__ 7 10*ad49657aSPiJoules // CHECK-DAG:#define __SFRACT_MAX__ 0.9921875HR 11*ad49657aSPiJoules // CHECK-DAG:#define __SFRACT_MIN__ (-0.5HR-0.5HR) 12*ad49657aSPiJoules 13*ad49657aSPiJoules // CHECK-DAG:#define __USFRACT_EPSILON__ 0.00390625UHR 14*ad49657aSPiJoules // CHECK-DAG:#define __USFRACT_FBIT__ 8 15*ad49657aSPiJoules // CHECK-DAG:#define __USFRACT_MAX__ 0.99609375UHR 16*ad49657aSPiJoules 17*ad49657aSPiJoules // CHECK-DAG:#define __FRACT_EPSILON__ 0.000030517578125R 18*ad49657aSPiJoules // CHECK-DAG:#define __FRACT_FBIT__ 15 19*ad49657aSPiJoules // CHECK-DAG:#define __FRACT_MAX__ 0.999969482421875R 20*ad49657aSPiJoules // CHECK-DAG:#define __FRACT_MIN__ (-0.5R-0.5R) 21*ad49657aSPiJoules 22*ad49657aSPiJoules // CHECK-DAG:#define __UFRACT_EPSILON__ 0.0000152587890625UR 23*ad49657aSPiJoules // CHECK-DAG:#define __UFRACT_FBIT__ 16 24*ad49657aSPiJoules // CHECK-DAG:#define __UFRACT_MAX__ 0.9999847412109375UR 25*ad49657aSPiJoules 26*ad49657aSPiJoules // CHECK-DAG:#define __LFRACT_EPSILON__ 0.0000000004656612873077392578125LR 27*ad49657aSPiJoules // CHECK-DAG:#define __LFRACT_FBIT__ 31 28*ad49657aSPiJoules // CHECK-DAG:#define __LFRACT_MAX__ 0.9999999995343387126922607421875LR 29*ad49657aSPiJoules // CHECK-DAG:#define __LFRACT_MIN__ (-0.5LR-0.5LR) 30*ad49657aSPiJoules 31*ad49657aSPiJoules // CHECK-DAG:#define __ULFRACT_EPSILON__ 0.00000000023283064365386962890625ULR 32*ad49657aSPiJoules // CHECK-DAG:#define __ULFRACT_FBIT__ 32 33*ad49657aSPiJoules // CHECK-DAG:#define __ULFRACT_MAX__ 0.99999999976716935634613037109375ULR 34*ad49657aSPiJoules 35*ad49657aSPiJoules // CHECK-DAG:#define __SACCUM_EPSILON__ 0.0078125HK 36*ad49657aSPiJoules // CHECK-DAG:#define __SACCUM_FBIT__ 7 37*ad49657aSPiJoules // CHECK-DAG:#define __SACCUM_MAX__ 255.9921875HK 38*ad49657aSPiJoules // CHECK-DAG:#define __SACCUM_MIN__ (-128.0HK-128.0HK) 39*ad49657aSPiJoules 40*ad49657aSPiJoules // CHECK-DAG:#define __USACCUM_EPSILON__ 0.00390625UHK 41*ad49657aSPiJoules // CHECK-DAG:#define __USACCUM_FBIT__ 8 42*ad49657aSPiJoules // CHECK-DAG:#define __USACCUM_MAX__ 255.99609375UHK 43*ad49657aSPiJoules 44*ad49657aSPiJoules // CHECK-DAG:#define __ACCUM_EPSILON__ 0.000030517578125K 45*ad49657aSPiJoules // CHECK-DAG:#define __ACCUM_FBIT__ 15 46*ad49657aSPiJoules // CHECK-DAG:#define __ACCUM_MAX__ 65535.999969482421875K 47*ad49657aSPiJoules // CHECK-DAG:#define __ACCUM_MIN__ (-32768.0K-32768.0K) 48*ad49657aSPiJoules 49*ad49657aSPiJoules // CHECK-DAG:#define __UACCUM_EPSILON__ 0.0000152587890625UK 50*ad49657aSPiJoules // CHECK-DAG:#define __UACCUM_FBIT__ 16 51*ad49657aSPiJoules // CHECK-DAG:#define __UACCUM_MAX__ 65535.9999847412109375UK 52*ad49657aSPiJoules 53*ad49657aSPiJoules // CHECK-DAG:#define __LACCUM_EPSILON__ 0.0000000004656612873077392578125LK 54*ad49657aSPiJoules // CHECK-DAG:#define __LACCUM_FBIT__ 31 55*ad49657aSPiJoules // CHECK-DAG:#define __LACCUM_MAX__ 4294967295.9999999995343387126922607421875LK 56*ad49657aSPiJoules // CHECK-DAG:#define __LACCUM_MIN__ (-2147483648.0LK-2147483648.0LK) 57*ad49657aSPiJoules 58*ad49657aSPiJoules // CHECK-DAG:#define __ULACCUM_EPSILON__ 0.00000000023283064365386962890625ULK 59*ad49657aSPiJoules // CHECK-DAG:#define __ULACCUM_FBIT__ 32 60*ad49657aSPiJoules // CHECK-DAG:#define __ULACCUM_MAX__ 4294967295.99999999976716935634613037109375ULK 61*ad49657aSPiJoules 62*ad49657aSPiJoules // CHECK-DAG:#define __SACCUM_IBIT__ 8 63*ad49657aSPiJoules // CHECK-DAG:#define __USACCUM_IBIT__ 8 64*ad49657aSPiJoules // CHECK-DAG:#define __ACCUM_IBIT__ 16 65*ad49657aSPiJoules // CHECK-DAG:#define __UACCUM_IBIT__ 16 66*ad49657aSPiJoules // CHECK-DAG:#define __LACCUM_IBIT__ 32 67*ad49657aSPiJoules // CHECK-DAG:#define __ULACCUM_IBIT__ 32 68