From 6da1d6efde2282e6582c00d1631e7457975ad998 Mon Sep 17 00:00:00 2001 From: Xiao Zeng Date: Fri, 17 May 2024 13:48:21 +0800 Subject: RISC-V: Modify _Bfloat16 to __bf16 According to the description in: , the type representation symbol of BF16 has been corrected. Kito Cheng pointed out relevant information in the email: gcc/ChangeLog: * config/riscv/riscv-builtins.cc (riscv_init_builtin_types): Modify _Bfloat16 to __bf16. * config/riscv/riscv.cc (riscv_mangle_type): Ditto. gcc/testsuite/ChangeLog: * gcc.target/riscv/_Bfloat16-nanboxing.c: Move to... * gcc.target/riscv/__bf16-nanboxing.c: ...here. * gcc.target/riscv/bf16_arithmetic.c: Modify _Bfloat16 to __bf16. * gcc.target/riscv/bf16_call.c: Ditto. * gcc.target/riscv/bf16_comparison.c: Ditto. * gcc.target/riscv/bf16_float_libcall_convert.c: Ditto. * gcc.target/riscv/bf16_integer_libcall_convert.c: Ditto. --- gcc/config/riscv/riscv-builtins.cc | 6 ++-- gcc/config/riscv/riscv.cc | 2 +- .../gcc.target/riscv/_Bfloat16-nanboxing.c | 38 ---------------------- gcc/testsuite/gcc.target/riscv/__bf16-nanboxing.c | 38 ++++++++++++++++++++++ gcc/testsuite/gcc.target/riscv/bf16_arithmetic.c | 6 ++-- gcc/testsuite/gcc.target/riscv/bf16_call.c | 4 +-- gcc/testsuite/gcc.target/riscv/bf16_comparison.c | 6 ++-- .../gcc.target/riscv/bf16_float_libcall_convert.c | 2 +- .../riscv/bf16_integer_libcall_convert.c | 2 +- 9 files changed, 52 insertions(+), 52 deletions(-) delete mode 100644 gcc/testsuite/gcc.target/riscv/_Bfloat16-nanboxing.c create mode 100644 gcc/testsuite/gcc.target/riscv/__bf16-nanboxing.c (limited to 'gcc') diff --git a/gcc/config/riscv/riscv-builtins.cc b/gcc/config/riscv/riscv-builtins.cc index 4c08834..dc54e1a 100644 --- a/gcc/config/riscv/riscv-builtins.cc +++ b/gcc/config/riscv/riscv-builtins.cc @@ -275,7 +275,7 @@ riscv_init_builtin_types (void) lang_hooks.types.register_builtin_type (riscv_float16_type_node, "_Float16"); - /* Provide the _Bfloat16 type and bfloat16_type_node if needed. */ + /* Provide the __bf16 type and bfloat16_type_node if needed. */ if (!bfloat16_type_node) { riscv_bfloat16_type_node = make_node (REAL_TYPE); @@ -286,9 +286,9 @@ riscv_init_builtin_types (void) else riscv_bfloat16_type_node = bfloat16_type_node; - if (!maybe_get_identifier ("_Bfloat16")) + if (!maybe_get_identifier ("__bf16")) lang_hooks.types.register_builtin_type (riscv_bfloat16_type_node, - "_Bfloat16"); + "__bf16"); } /* Implement TARGET_INIT_BUILTINS. */ diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 9ac2be8..2be04ec 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -10276,7 +10276,7 @@ riscv_asan_shadow_offset (void) static const char * riscv_mangle_type (const_tree type) { - /* Half-precision float, _Float16 is "DF16_" and _Bfloat16 is "DF16b". */ + /* Half-precision float, _Float16 is "DF16_" and __bf16 is "DF16b". */ if (SCALAR_FLOAT_TYPE_P (type) && TYPE_PRECISION (type) == 16) { if (TYPE_MODE (type) == HFmode) diff --git a/gcc/testsuite/gcc.target/riscv/_Bfloat16-nanboxing.c b/gcc/testsuite/gcc.target/riscv/_Bfloat16-nanboxing.c deleted file mode 100644 index 11a73d2..0000000 --- a/gcc/testsuite/gcc.target/riscv/_Bfloat16-nanboxing.c +++ /dev/null @@ -1,38 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-march=rv64ifd -mabi=lp64d -mcmodel=medlow -O" } */ - -_Bfloat16 gvar = 9.87654; -union U -{ - unsigned short i16; - _Bfloat16 f16; -}; - -_Bfloat16 -test1 (unsigned short input) -{ - union U tmp; - tmp.i16 = input; - return tmp.f16; -} - -_Bfloat16 -test2 () -{ - return 1.234f; -} - -_Bfloat16 -test3 () -{ - return gvar; -} - -_Bfloat16 -test () -{ - return 0.0f; -} - -/* { dg-final { scan-assembler-times "li\[ \t\]" 4 } } */ -/* { dg-final { scan-assembler-times "fmv\.w\.x\[ \t\]" 4 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/__bf16-nanboxing.c b/gcc/testsuite/gcc.target/riscv/__bf16-nanboxing.c new file mode 100644 index 0000000..a9a586c --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/__bf16-nanboxing.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64ifd -mabi=lp64d -mcmodel=medlow -O" } */ + +__bf16 gvar = 9.87654; +union U +{ + unsigned short i16; + __bf16 f16; +}; + +__bf16 +test1 (unsigned short input) +{ + union U tmp; + tmp.i16 = input; + return tmp.f16; +} + +__bf16 +test2 () +{ + return 1.234f; +} + +__bf16 +test3 () +{ + return gvar; +} + +__bf16 +test () +{ + return 0.0f; +} + +/* { dg-final { scan-assembler-times "li\[ \t\]" 4 } } */ +/* { dg-final { scan-assembler-times "fmv\.w\.x\[ \t\]" 4 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/bf16_arithmetic.c b/gcc/testsuite/gcc.target/riscv/bf16_arithmetic.c index 9e48505..190cc1d 100644 --- a/gcc/testsuite/gcc.target/riscv/bf16_arithmetic.c +++ b/gcc/testsuite/gcc.target/riscv/bf16_arithmetic.c @@ -5,9 +5,9 @@ /* 1) bf -> sf (call __extendbfsf2) */ /* 2) sf1 [+|-|*|/] sf2 (call __[add|sub|mul|div]sf3) */ /* 3) sf -> bf (call __truncsfbf2) */ -extern _Bfloat16 bf; -extern _Bfloat16 bf1; -extern _Bfloat16 bf2; +extern __bf16 bf; +extern __bf16 bf1; +extern __bf16 bf2; void bf_add_bf () { bf = bf1 + bf2; } diff --git a/gcc/testsuite/gcc.target/riscv/bf16_call.c b/gcc/testsuite/gcc.target/riscv/bf16_call.c index 29f6771..6ace149 100644 --- a/gcc/testsuite/gcc.target/riscv/bf16_call.c +++ b/gcc/testsuite/gcc.target/riscv/bf16_call.c @@ -4,9 +4,9 @@ /* 1) bf -> sf (call __extendbfsf2) */ /* 2) sf -> bf (call __truncsfbf2) */ -__attribute__ ((noinline)) _Bfloat16 add (_Bfloat16 a, _Bfloat16 b) { return a + b; } +__attribute__ ((noinline)) __bf16 add (__bf16 a, __bf16 b) { return a + b; } -_Bfloat16 test(_Bfloat16 a, _Bfloat16 b) { return add (a, b); } +__bf16 test(__bf16 a, __bf16 b) { return add (a, b); } /* { dg-final { scan-assembler-times "call\t__extendbfsf2" 2 } } */ /* { dg-final { scan-assembler-times "call\t__truncsfbf2" 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/bf16_comparison.c b/gcc/testsuite/gcc.target/riscv/bf16_comparison.c index 69db803..2c13b8a0 100644 --- a/gcc/testsuite/gcc.target/riscv/bf16_comparison.c +++ b/gcc/testsuite/gcc.target/riscv/bf16_comparison.c @@ -4,9 +4,9 @@ /* 1) bf -> sf (call __extendbfsf2) */ /* 2) sf1 [<|<=|>|>=|==] sf2 (call __[lt|le|gt|ge|eq]sf2) */ -extern _Bfloat16 bf; -extern _Bfloat16 bf1; -extern _Bfloat16 bf2; +extern __bf16 bf; +extern __bf16 bf1; +extern __bf16 bf2; void bf_lt_bf () { bf = (bf1 < bf2) ? bf1 : bf2; } diff --git a/gcc/testsuite/gcc.target/riscv/bf16_float_libcall_convert.c b/gcc/testsuite/gcc.target/riscv/bf16_float_libcall_convert.c index ba6c646..423a071 100644 --- a/gcc/testsuite/gcc.target/riscv/bf16_float_libcall_convert.c +++ b/gcc/testsuite/gcc.target/riscv/bf16_float_libcall_convert.c @@ -14,7 +14,7 @@ * bf -> tf == bf -> sf -> tf (call __extendbfsf2 && __extendsftf2) */ -extern _Bfloat16 bf; +extern __bf16 bf; extern _Float16 hf; extern float sf; extern double df; diff --git a/gcc/testsuite/gcc.target/riscv/bf16_integer_libcall_convert.c b/gcc/testsuite/gcc.target/riscv/bf16_integer_libcall_convert.c index ad71425..2c37302 100644 --- a/gcc/testsuite/gcc.target/riscv/bf16_integer_libcall_convert.c +++ b/gcc/testsuite/gcc.target/riscv/bf16_integer_libcall_convert.c @@ -16,7 +16,7 @@ * bf -> udi/uti (call __fixunssf[d|t]i) */ -extern _Bfloat16 bf; +extern __bf16 bf; extern signed char qi; extern unsigned char uqi; -- cgit v1.1