]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
RISC-V: Modify _Bfloat16 to __bf16
authorXiao Zeng <zengxiao@eswincomputing.com>
Fri, 17 May 2024 05:48:21 +0000 (13:48 +0800)
committerXiao Zeng <zengxiao@eswincomputing.com>
Sat, 18 May 2024 03:05:42 +0000 (11:05 +0800)
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.

gcc/config/riscv/riscv-builtins.cc
gcc/config/riscv/riscv.cc
gcc/testsuite/gcc.target/riscv/__bf16-nanboxing.c [moved from gcc/testsuite/gcc.target/riscv/_Bfloat16-nanboxing.c with 83% similarity]
gcc/testsuite/gcc.target/riscv/bf16_arithmetic.c
gcc/testsuite/gcc.target/riscv/bf16_call.c
gcc/testsuite/gcc.target/riscv/bf16_comparison.c
gcc/testsuite/gcc.target/riscv/bf16_float_libcall_convert.c
gcc/testsuite/gcc.target/riscv/bf16_integer_libcall_convert.c

index 4c08834288acd2950b788d0fd86284791a2100e8..dc54e1a59b52982468e91648acc557de2d0ba244 100644 (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.  */
index 9ac2be87acd2a6a5bf500b1da25c8ef81f646c90..2be04ec6bc5ed703b58eda00fe14d0f8a14244d9 100644 (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)
similarity index 83%
rename from gcc/testsuite/gcc.target/riscv/_Bfloat16-nanboxing.c
rename to gcc/testsuite/gcc.target/riscv/__bf16-nanboxing.c
index 11a73d2223457ca2e24cb79aac614e3c19308eea..a9a586c98b9ce145c4e2a19bd0a39c845b74f604 100644 (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;
index 9e48505126008b32e88e70c27c766b230505c5c5..190cc1d574a6e7153ad844961442811441e00be2 100644 (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; }
 
index 29f677199997084ef8b56e65d6d5a6175f1c699c..6ace149437030e4a9d8214c1dc9212be921096e2 100644 (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 } } */
index 69db803f403e1f30d7a08689b507eeb5502bfb05..2c13b8a0c9a71d1335c6025af9fa9bbe8feb2f48 100644 (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; }
 
index ba6c6460bc2cd3de0f5d35256d3c9869576d8eca..423a071d1a54167b7056c08e4327ecb29a3a37ca 100644 (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;
index ad714253a4a5a572fe1cbb58c815ac8e054fae76..2c37302e2947c8579a5b802952e8b9499e693fd3 100644 (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;