diff options
Diffstat (limited to 'clang/test/Frontend')
-rw-r--r-- | clang/test/Frontend/fixed_point.c | 399 | ||||
-rw-r--r-- | clang/test/Frontend/fixed_point_to_string.c | 21 | ||||
-rw-r--r-- | clang/test/Frontend/float16.cpp | 326 |
3 files changed, 0 insertions, 746 deletions
diff --git a/clang/test/Frontend/fixed_point.c b/clang/test/Frontend/fixed_point.c deleted file mode 100644 index 3a67718fba8..00000000000 --- a/clang/test/Frontend/fixed_point.c +++ /dev/null @@ -1,399 +0,0 @@ -// RUN: %clang_cc1 -x c -ffixed-point -ast-dump %s | FileCheck %s --strict-whitespace - -/* Various contexts where type _Accum can appear. */ - -// Primary fixed point types -signed short _Accum s_short_accum; -signed _Accum s_accum; -signed long _Accum s_long_accum; -unsigned short _Accum u_short_accum; -unsigned _Accum u_accum; -unsigned long _Accum u_long_accum; -signed short _Fract s_short_fract; -signed _Fract s_fract; -signed long _Fract s_long_fract; -unsigned short _Fract u_short_fract; -unsigned _Fract u_fract; -unsigned long _Fract u_long_fract; - -// Aliased fixed point types -short _Accum short_accum; -_Accum accum; -long _Accum long_accum; -short _Fract short_fract; -_Fract fract; -long _Fract long_fract; - -// Saturated fixed point types -_Sat signed short _Accum sat_s_short_accum; -_Sat signed _Accum sat_s_accum; -_Sat signed long _Accum sat_s_long_accum; -_Sat unsigned short _Accum sat_u_short_accum; -_Sat unsigned _Accum sat_u_accum; -_Sat unsigned long _Accum sat_u_long_accum; -_Sat signed short _Fract sat_s_short_fract; -_Sat signed _Fract sat_s_fract; -_Sat signed long _Fract sat_s_long_fract; -_Sat unsigned short _Fract sat_u_short_fract; -_Sat unsigned _Fract sat_u_fract; -_Sat unsigned long _Fract sat_u_long_fract; - -// Aliased saturated fixed point types -_Sat short _Accum sat_short_accum; -_Sat _Accum sat_accum; -_Sat long _Accum sat_long_accum; -_Sat short _Fract sat_short_fract; -_Sat _Fract sat_fract; -_Sat long _Fract sat_long_fract; - -//CHECK: |-VarDecl {{.*}} s_short_accum 'short _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} s_accum '_Accum' -//CHECK-NEXT: |-VarDecl {{.*}} s_long_accum 'long _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} u_short_accum 'unsigned short _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} u_accum 'unsigned _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} u_long_accum 'unsigned long _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} s_short_fract 'short _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} s_fract '_Fract' -//CHECK-NEXT: |-VarDecl {{.*}} s_long_fract 'long _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} u_short_fract 'unsigned short _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} u_fract 'unsigned _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} u_long_fract 'unsigned long _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} short_accum 'short _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} accum '_Accum' -//CHECK-NEXT: |-VarDecl {{.*}} long_accum 'long _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} short_fract 'short _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} fract '_Fract' -//CHECK-NEXT: |-VarDecl {{.*}} long_fract 'long _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} sat_s_short_accum '_Sat short _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} sat_s_accum '_Sat _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} sat_s_long_accum '_Sat long _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} sat_u_short_accum '_Sat unsigned short _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} sat_u_accum '_Sat unsigned _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} sat_u_long_accum '_Sat unsigned long _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} sat_s_short_fract '_Sat short _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} sat_s_fract '_Sat _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} sat_s_long_fract '_Sat long _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} sat_u_short_fract '_Sat unsigned short _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} sat_u_fract '_Sat unsigned _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} sat_u_long_fract '_Sat unsigned long _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} sat_short_accum '_Sat short _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} sat_accum '_Sat _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} sat_long_accum '_Sat long _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} sat_short_fract '_Sat short _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} sat_fract '_Sat _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} sat_long_fract '_Sat long _Fract' - -#define MIX_TYPE_SPEC(SPEC, SIGN, SIZE, ID) \ - SPEC SIGN SIZE _Accum ID; \ - SIGN SPEC SIZE _Accum ID ## 2; \ - SIGN SIZE SPEC _Accum ID ## 3; \ - SIGN SIZE _Accum SPEC ID ## 4; - -/* Mixing fixed point types with other type specifiers */ - -#define MIX_VOLATILE(SIGN, SIZE, ID) MIX_TYPE_SPEC(volatile, SIGN, SIZE, ID) -#define MIX_ATOMIC(SIGN, SIZE, ID) MIX_TYPE_SPEC(_Atomic, SIGN, SIZE, ID) -#define MIX_CONST(SIGN, SIZE, ID) MIX_TYPE_SPEC(const, SIGN, SIZE, ID) - -MIX_VOLATILE(signed, short, vol_s_short_accum) -MIX_ATOMIC(signed, short, atm_s_short_accum) -MIX_CONST(signed, short, const_s_short_accum) - -// CHECK-NEXT: |-VarDecl {{.*}} vol_s_short_accum 'volatile short _Accum' -// CHECK-NEXT: |-VarDecl {{.*}} vol_s_short_accum2 'volatile short _Accum' -// CHECK-NEXT: |-VarDecl {{.*}} vol_s_short_accum3 'volatile short _Accum' -// CHECK-NEXT: |-VarDecl {{.*}} vol_s_short_accum4 'volatile short _Accum' - -// CHECK-NEXT: |-VarDecl {{.*}} atm_s_short_accum '_Atomic(short _Accum)' -// CHECK-NEXT: |-VarDecl {{.*}} atm_s_short_accum2 '_Atomic(short _Accum)' -// CHECK-NEXT: |-VarDecl {{.*}} atm_s_short_accum3 '_Atomic(short _Accum)' -// CHECK-NEXT: |-VarDecl {{.*}} atm_s_short_accum4 '_Atomic(short _Accum)' - -// CHECK-NEXT: |-VarDecl {{.*}} const_s_short_accum 'const short _Accum' -// CHECK-NEXT: |-VarDecl {{.*}} const_s_short_accum2 'const short _Accum' -// CHECK-NEXT: |-VarDecl {{.*}} const_s_short_accum3 'const short _Accum' -// CHECK-NEXT: |-VarDecl {{.*}} const_s_short_accum4 'const short _Accum' - -/* Typedefs */ - -// Primary fixed point types -typedef signed short _Accum SsA_t; -typedef signed _Accum SA_t; -typedef signed long _Accum SlA_t; -typedef unsigned short _Accum UsA_t; -typedef unsigned _Accum UA_t; -typedef unsigned long _Accum UlA_t; -typedef signed short _Fract SsF_t; -typedef signed _Fract SF_t; -typedef signed long _Fract SlF_t; -typedef unsigned short _Fract UsF_t; -typedef unsigned _Fract UF_t; -typedef unsigned long _Fract UlF_t; - -// Aliased fixed point types -typedef short _Accum sA_t; -typedef _Accum A_t; -typedef long _Accum lA_t; -typedef short _Fract sF_t; -typedef _Fract F_t; -typedef long _Fract lF_t; - -// Saturated fixed point types -typedef _Sat signed short _Accum SatSsA_t; -typedef _Sat signed _Accum SatSA_t; -typedef _Sat signed long _Accum SatSlA_t; -typedef _Sat unsigned short _Accum SatUsA_t; -typedef _Sat unsigned _Accum SatUA_t; -typedef _Sat unsigned long _Accum SatUlA_t; -typedef _Sat signed short _Fract SatSsF_t; -typedef _Sat signed _Fract SatSF_t; -typedef _Sat signed long _Fract SatSlF_t; -typedef _Sat unsigned short _Fract SatUsF_t; -typedef _Sat unsigned _Fract SatUF_t; -typedef _Sat unsigned long _Fract SatUlF_t; - -// Aliased saturated fixed point types -typedef _Sat short _Accum SatsA_t; -typedef _Sat _Accum SatA_t; -typedef _Sat long _Accum SatlA_t; -typedef _Sat short _Fract SatsF_t; -typedef _Sat _Fract SatF_t; -typedef _Sat long _Fract SatlF_t; - -SsA_t SsA_type; -SA_t SA_type; -SlA_t SlA_type; -UsA_t UsA_type; -UA_t UA_type; -UlA_t UlA_type; -SsF_t SsF_type; -SF_t SF_type; -SlF_t SlF_type; -UsF_t UsF_type; -UF_t UF_type; -UlF_t UlF_type; - -sA_t sA_type; -A_t A_type; -lA_t lA_type; -sF_t sF_type; -F_t F_type; -lF_t lF_type; - -SatSsA_t SatSsA_type; -SatSA_t SatSA_type; -SatSlA_t SatSlA_type; -SatUsA_t SatUsA_type; -SatUA_t SatUA_type; -SatUlA_t SatUlA_type; -SatSsF_t SatSsF_type; -SatSF_t SatSF_type; -SatSlF_t SatSlF_type; -SatUsF_t SatUsF_type; -SatUF_t SatUF_type; -SatUlF_t SatUlF_type; - -SatsA_t SatsA_type; -SatA_t SatA_type; -SatlA_t SatlA_type; -SatsF_t SatsF_type; -SatF_t SatF_type; -SatlF_t SatlF_type; - -//CHECK: |-VarDecl {{.*}} SsA_type 'SsA_t':'short _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} SA_type 'SA_t':'_Accum' -//CHECK-NEXT: |-VarDecl {{.*}} SlA_type 'SlA_t':'long _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} UsA_type 'UsA_t':'unsigned short _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} UA_type 'UA_t':'unsigned _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} UlA_type 'UlA_t':'unsigned long _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} SsF_type 'SsF_t':'short _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} SF_type 'SF_t':'_Fract' -//CHECK-NEXT: |-VarDecl {{.*}} SlF_type 'SlF_t':'long _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} UsF_type 'UsF_t':'unsigned short _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} UF_type 'UF_t':'unsigned _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} UlF_type 'UlF_t':'unsigned long _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} sA_type 'sA_t':'short _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} A_type 'A_t':'_Accum' -//CHECK-NEXT: |-VarDecl {{.*}} lA_type 'lA_t':'long _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} sF_type 'sF_t':'short _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} F_type 'F_t':'_Fract' -//CHECK-NEXT: |-VarDecl {{.*}} lF_type 'lF_t':'long _Fract' - -//CHECK-NEXT: |-VarDecl {{.*}} SatSsA_type 'SatSsA_t':'_Sat short _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} SatSA_type 'SatSA_t':'_Sat _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} SatSlA_type 'SatSlA_t':'_Sat long _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} SatUsA_type 'SatUsA_t':'_Sat unsigned short _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} SatUA_type 'SatUA_t':'_Sat unsigned _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} SatUlA_type 'SatUlA_t':'_Sat unsigned long _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} SatSsF_type 'SatSsF_t':'_Sat short _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} SatSF_type 'SatSF_t':'_Sat _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} SatSlF_type 'SatSlF_t':'_Sat long _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} SatUsF_type 'SatUsF_t':'_Sat unsigned short _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} SatUF_type 'SatUF_t':'_Sat unsigned _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} SatUlF_type 'SatUlF_t':'_Sat unsigned long _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} SatsA_type 'SatsA_t':'_Sat short _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} SatA_type 'SatA_t':'_Sat _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} SatlA_type 'SatlA_t':'_Sat long _Accum' -//CHECK-NEXT: |-VarDecl {{.*}} SatsF_type 'SatsF_t':'_Sat short _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} SatF_type 'SatF_t':'_Sat _Fract' -//CHECK-NEXT: |-VarDecl {{.*}} SatlF_type 'SatlF_t':'_Sat long _Fract' - -// Fixed point literal exponent syntax -_Accum decexp1 = 1.575e1k; -_Accum decexp2 = 1.575E1k; -_Accum decexp3 = 1575e-2k; -_Accum decexp4 = 1575E-2k; - -_Accum hexexp1 = 0x0.3p10k; -_Accum hexexp2 = 0x0.3P10k; -_Accum hexexp3 = 0x30000p-10k; -_Accum hexexp4 = 0x30000P-10k; - -_Accum zeroexp1 = 1e0k; -_Accum zeroexp2 = 1e-0k; - -//CHECK-NEXT: |-VarDecl {{.*}} decexp1 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 15.75 -//CHECK-NEXT: |-VarDecl {{.*}} decexp2 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 15.75 -//CHECK-NEXT: |-VarDecl {{.*}} decexp3 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 15.75 -//CHECK-NEXT: |-VarDecl {{.*}} decexp4 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 15.75 - -//CHECK-NEXT: |-VarDecl {{.*}} hexexp1 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 192.0 -//CHECK-NEXT: |-VarDecl {{.*}} hexexp2 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 192.0 -//CHECK-NEXT: |-VarDecl {{.*}} hexexp3 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 192.0 -//CHECK-NEXT: |-VarDecl {{.*}} hexexp4 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 192.0 - -//CHECK-NEXT: |-VarDecl {{.*}} zeroexp1 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.0 -//CHECK-NEXT: |-VarDecl {{.*}} zeroexp2 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.0 - -// Fixed point literal values -_Accum literal1 = 2.5k; // Precise decimal -_Accum literal2 = 0.0k; // Zero -_Accum literal3 = 1.1k; // Imprecise decimal -_Accum literal4 = 1.11k; -_Accum literal5 = 1.111k; -_Accum literal6 = 1.1111k; -_Accum literal7 = 1.11111k; // After some point after the radix, adding any more - // digits to the literal will not result in any - // further precision since the nth digit added may - // be less than the precision that can be - // represented by the fractional bits of the type. - // This results in the same value being stored for - // the type. - -//CHECK-NEXT: |-VarDecl {{.*}} literal1 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 2.5 -//CHECK-NEXT: |-VarDecl {{.*}} literal2 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 0.0 -//CHECK-NEXT: |-VarDecl {{.*}} literal3 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.0999755859375 -//CHECK-NEXT: |-VarDecl {{.*}} literal4 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.1099853515625 -//CHECK-NEXT: |-VarDecl {{.*}} literal5 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.110992431640625 -//CHECK-NEXT: |-VarDecl {{.*}} literal6 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.111083984375 -//CHECK-NEXT: |-VarDecl {{.*}} literal7 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.111083984375 - -long _Accum longaccumliteral = 0.99999999lk; -long _Accum longaccumliteral2 = 0.999999999lk; -long _Accum verylongaccumliteral = 0.99999999999999999999999999lk; -long _Fract longfractliteral = 0.99999999lr; -long _Fract longfractliteral2 = 0.999999999lr; -long _Fract verylongfractliteral = 0.99999999999999999999999999lr; - -//CHECK-NEXT: |-VarDecl {{.*}} longaccumliteral 'long _Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Accum' 0.999999989755451679229736328125 -//CHECK-NEXT: |-VarDecl {{.*}} longaccumliteral2 'long _Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Accum' 0.9999999986030161380767822265625 -//CHECK-NEXT: |-VarDecl {{.*}} verylongaccumliteral 'long _Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Accum' 0.9999999995343387126922607421875 -//CHECK-NEXT: |-VarDecl {{.*}} longfractliteral 'long _Fract' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Fract' 0.999999989755451679229736328125 -//CHECK-NEXT: |-VarDecl {{.*}} longfractliteral2 'long _Fract' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Fract' 0.9999999986030161380767822265625 -//CHECK-NEXT: |-VarDecl {{.*}} verylongfractliteral 'long _Fract' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Fract' 0.9999999995343387126922607421875 - -unsigned _Accum uliteral1 = 2.5uk; // Unsigned -_Accum literal8 = -2.5k; // Negative - -//CHECK-NEXT: |-VarDecl {{.*}} uliteral1 'unsigned _Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'unsigned _Accum' 2.5 -//CHECK-NEXT: |-VarDecl {{.*}} literal8 '_Accum' cinit -//CHECK-NEXT: `-UnaryOperator {{.*}} '_Accum' prefix '-' -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 2.5 - -short _Accum literalexact1 = 0.9921875hk; // Exact value -_Accum literalexact2 = 0.999969482421875k; - -//CHECK-NEXT: |-VarDecl {{.*}} literalexact1 'short _Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'short _Accum' 0.9921875 -//CHECK-NEXT: |-VarDecl {{.*}} literalexact2 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 0.999969482421875 - -// Unfortunately we do not have enough space to store the exact decimal value of -// 0.9999999995343387126922607421875 ((1 << 31) - 1), but we can still use a -// large number of 9s to get the max fractional value. -long _Accum long_accum_max = 0.999999999999999999999999999lk; - -//CHECK-NEXT: |-VarDecl {{.*}} long_accum_max 'long _Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Accum' 0.9999999995343387126922607421875 - -// Epsilon -short _Accum short_accum_eps = 0.0078125hk; -short _Accum short_accum_eps2 = 0.0078124hk; // Less than epsilon floors to zero -_Accum accum_eps = 0.000030517578125k; -_Accum accum_eps2 = 0.000030517578124k; -long _Accum long_accum_eps = 0x1p-31lk; -long _Accum long_accum_eps2 = 0x0.99999999p-31lk; - -//CHECK-NEXT: |-VarDecl {{.*}} short_accum_eps 'short _Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'short _Accum' 0.0078125 -//CHECK-NEXT: |-VarDecl {{.*}} short_accum_eps2 'short _Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'short _Accum' 0.0 -//CHECK-NEXT: |-VarDecl {{.*}} accum_eps '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 0.000030517578125 -//CHECK-NEXT: |-VarDecl {{.*}} accum_eps2 '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 0.0 -//CHECK-NEXT: |-VarDecl {{.*}} long_accum_eps 'long _Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Accum' 0.0000000004656612873077392578125 -//CHECK-NEXT: |-VarDecl {{.*}} long_accum_eps2 'long _Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Accum' 0.0 - -// Fract literals can be one but evaluate to the respective Fract max -short _Fract short_fract_one = 1.0hr; -_Fract fract_one = 1.0r; -long _Fract long_fract_one = 1.0lr; -unsigned short _Fract u_short_fract_one = 1.0uhr; -unsigned _Fract u_fract_one = 1.0ur; -unsigned long _Fract u_long_fract_one = 1.0ulr; - -//CHECK-NEXT: |-VarDecl {{.*}} short_fract_one 'short _Fract' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'short _Fract' 0.9921875 -//CHECK-NEXT: |-VarDecl {{.*}} fract_one '_Fract' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Fract' 0.999969482421875 -//CHECK-NEXT: |-VarDecl {{.*}} long_fract_one 'long _Fract' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'long _Fract' 0.9999999995343387126922607421875 - -//CHECK-NEXT: |-VarDecl {{.*}} u_short_fract_one 'unsigned short _Fract' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'unsigned short _Fract' 0.99609375 -//CHECK-NEXT: |-VarDecl {{.*}} u_fract_one 'unsigned _Fract' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'unsigned _Fract' 0.9999847412109375 -//CHECK-NEXT: |-VarDecl {{.*}} u_long_fract_one 'unsigned long _Fract' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} 'unsigned long _Fract' 0.99999999976716935634613037109375 - -_Accum literallast = 1.0k; // One - -//CHECK-NEXT: `-VarDecl {{.*}} literallast '_Accum' cinit -//CHECK-NEXT: `-FixedPointLiteral {{.*}} '_Accum' 1.0 diff --git a/clang/test/Frontend/fixed_point_to_string.c b/clang/test/Frontend/fixed_point_to_string.c deleted file mode 100644 index ad71d1024f5..00000000000 --- a/clang/test/Frontend/fixed_point_to_string.c +++ /dev/null @@ -1,21 +0,0 @@ -// RUN: %clang_cc1 -ast-dump -ffixed-point %s | FileCheck %s -// RUN: %clang_cc1 -ast-dump -ffixed-point -fpadding-on-unsigned-fixed-point %s | FileCheck %s - -/** - * Check the same values are printed in the AST regardless of if unsigned types - * have the same number of fractional bits as signed types. - */ - -unsigned short _Accum u_short_accum = 0.5uhk; -unsigned _Accum u_accum = 0.5uk; -unsigned long _Accum u_long_accum = 0.5ulk; -unsigned short _Fract u_short_fract = 0.5uhr; -unsigned _Fract u_fract = 0.5ur; -unsigned long _Fract u_long_fract = 0.5ulr; - -//CHECK: FixedPointLiteral {{.*}} 'unsigned short _Accum' 0.5 -//CHECK: FixedPointLiteral {{.*}} 'unsigned _Accum' 0.5 -//CHECK: FixedPointLiteral {{.*}} 'unsigned long _Accum' 0.5 -//CHECK: FixedPointLiteral {{.*}} 'unsigned short _Fract' 0.5 -//CHECK: FixedPointLiteral {{.*}} 'unsigned _Fract' 0.5 -//CHECK: FixedPointLiteral {{.*}} 'unsigned long _Fract' 0.5 diff --git a/clang/test/Frontend/float16.cpp b/clang/test/Frontend/float16.cpp deleted file mode 100644 index aa65270c75d..00000000000 --- a/clang/test/Frontend/float16.cpp +++ /dev/null @@ -1,326 +0,0 @@ -// RUN: %clang_cc1 -std=c++11 -ast-dump %s | FileCheck %s --strict-whitespace
-// RUN: %clang_cc1 -std=c++11 -ast-dump -fnative-half-type %s | FileCheck %s --check-prefix=CHECK-NATIVE --strict-whitespace
-
-/* Various contexts where type _Float16 can appear. */
-
-/* Namespace */
-namespace {
- _Float16 f1n;
- _Float16 f2n = 33.f16;
- _Float16 arr1n[10];
- _Float16 arr2n[] = { 1.2, 3.0, 3.e4 };
- const volatile _Float16 func1n(const _Float16 &arg) {
- return arg + f2n + arr1n[4] - arr2n[1];
- }
-}
-
-//CHECK: |-NamespaceDecl
-//CHECK-NEXT: | |-VarDecl {{.*}} f1n '_Float16'
-//CHECK-NEXT: | |-VarDecl {{.*}} f2n '_Float16' cinit
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} '_Float16' 3.300000e+01
-//CHECK-NEXT: | |-VarDecl {{.*}} arr1n '_Float16 [10]'
-//CHECK-NEXT: | |-VarDecl {{.*}} arr2n '_Float16 [3]' cinit
-//CHECK-NEXT: | | `-InitListExpr {{.*}} '_Float16 [3]'
-//CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | | | `-FloatingLiteral {{.*}} 'double' 1.200000e+00
-//CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | | | `-FloatingLiteral {{.*}} 'double' 3.000000e+00
-//CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} 'double' 3.000000e+04
-//CHECK-NEXT: | `-FunctionDecl {{.*}} func1n 'const volatile _Float16 (const _Float16 &)'
-
-/* File */
-_Float16 f1f;
-_Float16 f2f = 32.4;
-_Float16 arr1f[10];
-_Float16 arr2f[] = { -1.2, -3.0, -3.e4 };
-_Float16 func1f(_Float16 arg);
-
-//CHECK: |-VarDecl {{.*}} f1f '_Float16'
-//CHECK-NEXT: |-VarDecl {{.*}} f2f '_Float16' cinit
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} 'double' 3.240000e+01
-//CHECK-NEXT: |-VarDecl {{.*}} arr1f '_Float16 [10]'
-//CHECK-NEXT: |-VarDecl {{.*}} arr2f '_Float16 [3]' cinit
-//CHECK-NEXT: | `-InitListExpr {{.*}} '_Float16 [3]'
-//CHECK-NEXT: | |-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | | `-UnaryOperator {{.*}} 'double' prefix '-'
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} 'double' 1.200000e+00
-//CHECK-NEXT: | |-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | | `-UnaryOperator {{.*}} 'double' prefix '-'
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} 'double' 3.000000e+00
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | `-UnaryOperator {{.*}} 'double' prefix '-'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} 'double' 3.000000e+04
-//CHECK-NEXT: |-FunctionDecl {{.*}} func1f '_Float16 (_Float16)'
-//CHECK-NEXT: | `-ParmVarDecl {{.*}} arg '_Float16'
-
-
-// Mixing __fp16 and Float16 types:
-// The _Float16 type is first converted to __fp16 type and then the operation
-// is completed as if both operands were of __fp16 type.
-
-__fp16 B = -0.1;
-auto C = -1.0f16 + B;
-
-// When we do *not* have native half types, we expect __fp16 to be promoted to
-// float, and consequently also _Float16 promotions to float:
-
-//CHECK: -VarDecl {{.*}} used B '__fp16' cinit
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '__fp16' <FloatingCast>
-//CHECK-NEXT: | `-UnaryOperator {{.*}} 'double' prefix '-'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} 'double' 1.000000e-01
-//CHECK-NEXT: |-VarDecl {{.*}} C 'float':'float' cinit
-//CHECK-NEXT: | `-BinaryOperator {{.*}} 'float' '+'
-//CHECK-NEXT: | |-ImplicitCastExpr {{.*}} 'float' <FloatingCast>
-//CHECK-NEXT: | | `-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} '_Float16' 1.000000e+00
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'float' <FloatingCast>
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '__fp16' <LValueToRValue>
-//CHECK-NEXT: | `-DeclRefExpr {{.*}} '__fp16' lvalue Var 0x{{.*}} 'B' '__fp16'
-
-// When do have native half types, we expect to see promotions to fp16:
-
-//CHECK-NATIVE: |-VarDecl {{.*}} used B '__fp16' cinit
-//CHECK-NATIVE: | `-ImplicitCastExpr {{.*}} '__fp16' <FloatingCast>
-//CHECK-NATIVE: | `-UnaryOperator {{.*}} 'double' prefix '-'
-//CHECK-NATIVE: | `-FloatingLiteral {{.*}} 'double' 1.000000e-01
-//CHECK-NATIVE: |-VarDecl {{.*}} C '__fp16':'__fp16' cinit
-//CHECK-NATIVE: | `-BinaryOperator {{.*}} '__fp16' '+'
-//CHECK-NATIVE: | |-ImplicitCastExpr {{.*}} '__fp16' <FloatingCast>
-//CHECK-NATIVE: | | `-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NATIVE: | | `-FloatingLiteral {{.*}} '_Float16' 1.000000e+00
-//CHECK-NATIVE: | `-ImplicitCastExpr {{.*}} '__fp16' <LValueToRValue>
-//CHECK-NATIVE: | `-DeclRefExpr {{.*}} '__fp16' lvalue Var 0x{{.*}} 'B' '__fp16'
-
-
-/* Class */
-
-class C1 {
- _Float16 f1c;
- static const _Float16 f2c;
- volatile _Float16 f3c;
-public:
- C1(_Float16 arg) : f1c(arg), f3c(arg) { }
- _Float16 func1c(_Float16 arg ) {
- return f1c + arg;
- }
- static _Float16 func2c(_Float16 arg) {
- return arg * C1::f2c;
- }
-};
-
-//CHECK: |-CXXRecordDecl {{.*}} referenced class C1 definition
-//CHECK: | |-CXXRecordDecl {{.*}} implicit referenced class C1
-//CHECK-NEXT: | |-FieldDecl {{.*}} referenced f1c '_Float16'
-//CHECK-NEXT: | |-VarDecl {{.*}} used f2c 'const _Float16' static
-//CHECK-NEXT: | |-FieldDecl {{.*}} f3c 'volatile _Float16'
-//CHECK-NEXT: | |-AccessSpecDecl
-//CHECK-NEXT: | |-CXXConstructorDecl {{.*}} used C1 'void (_Float16)
-//CHECK-NEXT: | | |-ParmVarDecl {{.*}} used arg '_Float16'
-//CHECK-NEXT: | | |-CXXCtorInitializer Field {{.*}} 'f1c' '_Float16'
-//CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | `-DeclRefExpr {{.*}} '_Float16' lvalue ParmVar 0x{{.*}} 'arg' '_Float16'
-//CHECK-NEXT: | | |-CXXCtorInitializer Field {{.*}} 'f3c' 'volatile _Float16'
-//CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | `-DeclRefExpr {{.*}} '_Float16' lvalue ParmVar 0x{{.*}} 'arg' '_Float16'
-//CHECK-NEXT: | | `-CompoundStmt
-//CHECK-NEXT: | |-CXXMethodDecl {{.*}} used func1c '_Float16 (_Float16)
-//CHECK-NEXT: | | |-ParmVarDecl {{.*}} used arg '_Float16'
-//CHECK-NEXT: | | `-CompoundStmt
-//CHECK-NEXT: | | `-ReturnStmt
-//CHECK-NEXT: | | `-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | `-MemberExpr {{.*}} '_Float16' lvalue ->f1c 0x{{.*}}
-//CHECK-NEXT: | | | `-CXXThisExpr {{.*}} 'C1 *' this
-//CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | `-DeclRefExpr {{.*}} '_Float16' lvalue ParmVar 0x{{.*}} 'arg' '_Float16'
-//CHECK-NEXT: | |-CXXMethodDecl {{.*}} used func2c '_Float16 (_Float16)' static
-//CHECK-NEXT: | | |-ParmVarDecl {{.*}} used arg '_Float16'
-//CHECK-NEXT: | | `-CompoundStmt
-//CHECK-NEXT: | | `-ReturnStmt
-//CHECK-NEXT: | | `-BinaryOperator {{.*}} '_Float16' '*'
-//CHECK-NEXT: | | |-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | `-DeclRefExpr {{.*}} '_Float16' lvalue ParmVar 0x{{.*}} 'arg' '_Float16'
-//CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | `-DeclRefExpr {{.*}} 'const _Float16' lvalue Var 0x{{.*}} 'f2c' 'const _Float16'
-
-
-/* Template */
-
-template <class C> C func1t(C arg) {
- return arg * 2.f16;
-}
-
-//CHECK: |-FunctionTemplateDecl {{.*}} func1t
-//CHECK-NEXT: | |-TemplateTypeParmDecl {{.*}} C
-//CHECK-NEXT: | |-FunctionDecl {{.*}} func1t 'C (C)'
-//CHECK-NEXT: | | |-ParmVarDecl {{.*}} referenced arg 'C'
-//CHECK-NEXT: | | `-CompoundStmt
-//CHECK-NEXT: | | `-ReturnStmt
-//CHECK-NEXT: | | `-BinaryOperator {{.*}} '<dependent type>' '*'
-//CHECK-NEXT: | | |-DeclRefExpr {{.*}} 'C' lvalue ParmVar {{.*}} 'arg' 'C'
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} '_Float16' 2.000000e+00
-//CHECK-NEXT: | `-FunctionDecl {{.*}} used func1t '_Float16 (_Float16)'
-//CHECK-NEXT: | |-TemplateArgument type '_Float16'
-//CHECK-NEXT: | |-ParmVarDecl {{.*}} used arg '_Float16':'_Float16'
-//CHECK-NEXT: | `-CompoundStmt
-//CHECK-NEXT: | `-ReturnStmt
-//CHECK-NEXT: | `-BinaryOperator {{.*}} '_Float16' '*'
-//CHECK-NEXT: | |-ImplicitCastExpr {{.*}} '_Float16':'_Float16' <LValueToRValue>
-//CHECK-NEXT: | | `-DeclRefExpr {{.*}} '_Float16':'_Float16' lvalue ParmVar {{.*}} 'arg' '_Float16':'_Float16'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} '_Float16' 2.000000e+00
-
-
-template <class C> struct S1 {
- C mem1;
-};
-
-//CHECK: |-ClassTemplateDecl {{.*}} S1
-//CHECK-NEXT: | |-TemplateTypeParmDecl {{.*}} referenced class depth 0 index 0 C
-//CHECK-NEXT: | |-CXXRecordDecl {{.*}} struct S1 definition
-//CHECK: | | |-CXXRecordDecl {{.*}} implicit struct S1
-//CHECK-NEXT: | | `-FieldDecl {{.*}} mem1 'C'
-//CHECK-NEXT: | `-ClassTemplateSpecialization {{.*}} 'S1'
-
-template <> struct S1<_Float16> {
- _Float16 mem2;
-};
-
-
-/* Local */
-
-extern int printf (const char *__restrict __format, ...);
-
-int main(void) {
- _Float16 f1l = 1e3f16;
-//CHECK: | `-VarDecl {{.*}} used f1l '_Float16' cinit
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} '_Float16' 1.000000e+03
-
- _Float16 f2l = -0.f16;
-//CHECK: | `-VarDecl {{.*}} used f2l '_Float16' cinit
-//CHECK-NEXT: | `-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} '_Float16' 0.000000e+00
-
- _Float16 f3l = 1.000976562;
-//CHECK: | `-VarDecl {{.*}} used f3l '_Float16' cinit
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} 'double' 1.000977e+00
-
- C1 c1(f1l);
-//CHECK: | `-VarDecl{{.*}} used c1 'C1' callinit
-//CHECK-NEXT: | `-CXXConstructExpr {{.*}} 'C1' 'void (_Float16)
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | `-DeclRefExpr {{.*}} '_Float16' lvalue Var 0x{{.*}} 'f1l' '_Float16'
-
- S1<_Float16> s1 = { 132.f16 };
-//CHECK: | `-VarDecl {{.*}} used s1 'S1<_Float16>':'S1<_Float16>' cinit
-//CHECK-NEXT: | `-InitListExpr {{.*}} 'S1<_Float16>':'S1<_Float16>'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} '_Float16' 1.320000e+02
-
- _Float16 f4l = func1n(f1l) + func1f(f2l) + c1.func1c(f3l) + c1.func2c(f1l) +
- func1t(f1l) + s1.mem2 - f1n + f2n;
-//CHECK: | `-VarDecl {{.*}} used f4l '_Float16' cinit
-//CHECK-NEXT: | `-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | |-BinaryOperator {{.*}} '_Float16' '-'
-//CHECK-NEXT: | | |-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | | | |-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | | | | |-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | | | | | |-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | | | | | | |-BinaryOperator {{.*}} '_Float16' '+'
-//CHECK-NEXT: | | | | | | | |-CallExpr {{.*}} '_Float16'
-//CHECK-NEXT: | | | | | | | | |-ImplicitCastExpr {{.*}} 'const volatile _Float16 (*)(const _Float16 &)' <FunctionToPointerDecay>
-//CHECK-NEXT: | | | | | | | | | `-DeclRefExpr {{.*}} 'const volatile _Float16 (const _Float16 &)' lvalue Function {{.*}} 'func1n' 'const volatile _Float16 (const _Float16 &)'
-//CHECK-NEXT: | | | | | | | | `-ImplicitCastExpr {{.*}} 'const _Float16' lvalue <NoOp>
-//CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1l' '_Float16'
-//CHECK-NEXT: | | | | | | | `-CallExpr {{.*}} '_Float16'
-//CHECK-NEXT: | | | | | | | |-ImplicitCastExpr {{.*}} '_Float16 (*)(_Float16)' <FunctionToPointerDecay>
-//CHECK-NEXT: | | | | | | | | `-DeclRefExpr {{.*}} '_Float16 (_Float16)' lvalue Function {{.*}} 'func1f' '_Float16 (_Float16)'
-//CHECK-NEXT: | | | | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2l' '_Float16'
-//CHECK-NEXT: | | | | | | `-CXXMemberCallExpr {{.*}} '_Float16'
-//CHECK-NEXT: | | | | | | |-MemberExpr {{.*}} '<bound member function type>' .func1c {{.*}}
-//CHECK-NEXT: | | | | | | | `-DeclRefExpr {{.*}} 'C1' lvalue Var {{.*}} 'c1' 'C1'
-//CHECK-NEXT: | | | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f3l' '_Float16'
-//CHECK-NEXT: | | | | | `-CallExpr {{.*}} '_Float16'
-//CHECK-NEXT: | | | | | |-ImplicitCastExpr {{.*}} '_Float16 (*)(_Float16)' <FunctionToPointerDecay>
-//CHECK-NEXT: | | | | | | `-MemberExpr {{.*}} '_Float16 (_Float16)' lvalue .func2c {{.*}}
-//CHECK-NEXT: | | | | | | `-DeclRefExpr {{.*}} 'C1' lvalue Var {{.*}} 'c1' 'C1'
-//CHECK-NEXT: | | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1l' '_Float16'
-//CHECK-NEXT: | | | | `-CallExpr {{.*}} '_Float16':'_Float16'
-//CHECK-NEXT: | | | | |-ImplicitCastExpr {{.*}} '_Float16 (*)(_Float16)' <FunctionToPointerDecay>
-//CHECK-NEXT: | | | | | `-DeclRefExpr {{.*}} '_Float16 (_Float16)' lvalue Function {{.*}} 'func1t' '_Float16 (_Float16)' (FunctionTemplate {{.*}} 'func1t')
-//CHECK-NEXT: | | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1l' '_Float16'
-//CHECK-NEXT: | | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | | `-MemberExpr {{.*}} '_Float16' lvalue .mem2 {{.*}}
-//CHECK-NEXT: | | | `-DeclRefExpr {{.*}} 'S1<_Float16>':'S1<_Float16>' lvalue Var {{.*}} 's1' 'S1<_Float16>':'S1<_Float16>'
-//CHECK-NEXT: | | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f1n' '_Float16'
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
-
- auto f5l = -1.f16, *f6l = &f2l, f7l = func1t(f3l);
-//CHECK: | |-VarDecl {{.*}} f5l '_Float16':'_Float16' cinit
-//CHECK-NEXT: | | `-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NEXT: | | `-FloatingLiteral {{.*}} '_Float16' 1.000000e+00
-//CHECK-NEXT: | |-VarDecl {{.*}} f6l '_Float16 *' cinit
-//CHECK-NEXT: | | `-UnaryOperator {{.*}} '_Float16 *' prefix '&'
-//CHECK-NEXT: | | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2l' '_Float16'
-//CHECK-NEXT: | `-VarDecl {{.*}} f7l '_Float16':'_Float16' cinit
-//CHECK-NEXT: | `-CallExpr {{.*}} '_Float16':'_Float16'
-//CHECK-NEXT: | |-ImplicitCastExpr {{.*}} '_Float16 (*)(_Float16)' <FunctionToPointerDecay>
-//CHECK-NEXT: | | `-DeclRefExpr {{.*}} '_Float16 (_Float16)' lvalue Function {{.*}} 'func1t' '_Float16 (_Float16)' (FunctionTemplate {{.*}} 'func1t')
-//CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f3l' '_Float16'
-
- _Float16 f8l = f4l++;
-//CHECK: | `-VarDecl {{.*}} f8l '_Float16' cinit
-//CHECK-NEXT: | `-UnaryOperator {{.*}} '_Float16' postfix '++'
-//CHECK-NEXT: | `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f4l' '_Float16'
-
- _Float16 arr1l[] = { -1.f16, -0.f16, -11.f16 };
-//CHECK: `-VarDecl {{.*}} arr1l '_Float16 [3]' cinit
-//CHECK-NEXT: `-InitListExpr {{.*}} '_Float16 [3]'
-//CHECK-NEXT: |-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} '_Float16' 1.000000e+00
-//CHECK-NEXT: |-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NEXT: | `-FloatingLiteral {{.*}} '_Float16' 0.000000e+00
-//CHECK-NEXT: `-UnaryOperator {{.*}} '_Float16' prefix '-'
-//CHECK-NEXT: `-FloatingLiteral {{.*}} '_Float16' 1.100000e+01
-
- float cvtf = f2n;
-//CHECK: `-VarDecl {{.*}} cvtf 'float' cinit
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} 'float' <FloatingCast>
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
-
- double cvtd = f2n;
-//CHECK: `-VarDecl {{.*}} cvtd 'double' cinit
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} 'double' <FloatingCast>
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
-
- long double cvtld = f2n;
-//CHECK: `-VarDecl {{.*}} cvtld 'long double' cinit
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} 'long double' <FloatingCast>
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} '_Float16' <LValueToRValue>
-//CHECK-NEXT: `-DeclRefExpr {{.*}} '_Float16' lvalue Var {{.*}} 'f2n' '_Float16'
-
- _Float16 f2h = 42.0f;
-//CHECK: `-VarDecl {{.*}} f2h '_Float16' cinit
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: `-FloatingLiteral {{.*}} 'float' 4.200000e+01
-
- _Float16 d2h = 42.0;
-//CHECK: `-VarDecl {{.*}} d2h '_Float16' cinit
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: `-FloatingLiteral {{.*}} 'double' 4.200000e+01
-
- _Float16 ld2h = 42.0l;
-//CHECK: `-VarDecl {{.*}} ld2h '_Float16' cinit
-//CHECK-NEXT: `-ImplicitCastExpr {{.*}} '_Float16' <FloatingCast>
-//CHECK-NEXT: `-FloatingLiteral {{.*}} 'long double' 4.200000e+01
-}
|