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.
This commit is contained in:
Xiao Zeng 2024-05-17 13:48:21 +08:00
parent 34ed2b4593
commit 6da1d6efde
8 changed files with 20 additions and 20 deletions

View file

@ -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. */

View file

@ -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)

View file

@ -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;

View file

@ -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; }

View file

@ -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 } } */

View file

@ -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; }

View file

@ -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;

View file

@ -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;