https://gcc.gnu.org/g:af9118f721e8d586049ff4a60ff7bc5507478344
commit af9118f721e8d586049ff4a60ff7bc5507478344 Author: Xiao Zeng <zengx...@eswincomputing.com> Date: Fri May 17 13:48:21 2024 +0800 RISC-V: Modify _Bfloat16 to __bf16 According to the description in: <https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/367>, the type representation symbol of BF16 has been corrected. Kito Cheng pointed out relevant information in the email: <https://gcc.gnu.org/pipermail/gcc-patches/2024-May/651850.html> 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. (cherry picked from commit 6da1d6efde2282e6582c00d1631e7457975ad998) Diff: --- gcc/config/riscv/riscv-builtins.cc | 6 +++--- gcc/config/riscv/riscv.cc | 2 +- .../riscv/{_Bfloat16-nanboxing.c => __bf16-nanboxing.c} | 12 ++++++------ 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/testsuite/gcc.target/riscv/bf16_float_libcall_convert.c | 2 +- .../gcc.target/riscv/bf16_integer_libcall_convert.c | 2 +- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/gcc/config/riscv/riscv-builtins.cc b/gcc/config/riscv/riscv-builtins.cc index 4c08834288ac..dc54e1a59b52 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 9ac2be87acd2..2be04ec6bc5e 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/__bf16-nanboxing.c similarity index 83% rename from gcc/testsuite/gcc.target/riscv/_Bfloat16-nanboxing.c rename to gcc/testsuite/gcc.target/riscv/__bf16-nanboxing.c index 11a73d222345..a9a586c98b9c 100644 --- a/gcc/testsuite/gcc.target/riscv/_Bfloat16-nanboxing.c +++ b/gcc/testsuite/gcc.target/riscv/__bf16-nanboxing.c @@ -1,14 +1,14 @@ /* { dg-do compile } */ /* { dg-options "-march=rv64ifd -mabi=lp64d -mcmodel=medlow -O" } */ -_Bfloat16 gvar = 9.87654; +__bf16 gvar = 9.87654; union U { unsigned short i16; - _Bfloat16 f16; + __bf16 f16; }; -_Bfloat16 +__bf16 test1 (unsigned short input) { union U tmp; @@ -16,19 +16,19 @@ test1 (unsigned short input) return tmp.f16; } -_Bfloat16 +__bf16 test2 () { return 1.234f; } -_Bfloat16 +__bf16 test3 () { return gvar; } -_Bfloat16 +__bf16 test () { return 0.0f; diff --git a/gcc/testsuite/gcc.target/riscv/bf16_arithmetic.c b/gcc/testsuite/gcc.target/riscv/bf16_arithmetic.c index 9e4850512600..190cc1d574a6 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 29f677199997..6ace14943703 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 69db803f403e..2c13b8a0c9a7 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 ba6c6460bc2c..423a071d1a54 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 ad714253a4a5..2c37302e2947 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;