https://gcc.gnu.org/g:08f125c68e0209a201ca59dbfc246a9d89578b9e

commit 08f125c68e0209a201ca59dbfc246a9d89578b9e
Author: Michael Meissner <[email protected]>
Date:   Sat Oct 31 01:08:15 2026 -0400

    Revert patch 409
    
    Revert patch #409
    
    2026-10-29  Michael Meissner  <[email protected]>
    
    gcc/testsuite/
    
            * gcc.target/powerpc/bf16-1.c: New target.
            * gcc.target/powerpc/bf16-2.c: Likewise.
            * gcc.target/powerpc/bf16-3.c: Likewise.
            * gcc.target/powerpc/bf16-4.c: Likewise.
            * gcc.target/powerpc/float16-1.c: Likewise.
            * gcc.target/powerpc/float16-2.c: Likewise.
            * lib/target-supports.exp (check_ppc_float16_hw_available): New 
target
            supports for _Float16 and __bf16 support.
            (check_ppc_float16_runtime_available): Likewise.
            (check_ppc_bfloat16_hw_available): Likewise.
            (check_ppc_bfloat16_runtime_available): Likewise.
            (is-effective-target): Add new _Float16 and __bf16 targets.

Diff:
---
 gcc/testsuite/gcc.target/powerpc/bf16-1.c    |  34 -------
 gcc/testsuite/gcc.target/powerpc/bf16-2.c    |  97 -------------------
 gcc/testsuite/gcc.target/powerpc/bf16-3.c    |  32 -------
 gcc/testsuite/gcc.target/powerpc/bf16-4.c    |  31 ------
 gcc/testsuite/gcc.target/powerpc/float16-1.c |  34 -------
 gcc/testsuite/gcc.target/powerpc/float16-2.c |  98 -------------------
 gcc/testsuite/lib/target-supports.exp        | 138 ---------------------------
 7 files changed, 464 deletions(-)

diff --git a/gcc/testsuite/gcc.target/powerpc/bf16-1.c 
b/gcc/testsuite/gcc.target/powerpc/bf16-1.c
deleted file mode 100644
index bb4ebf2ca950..000000000000
--- a/gcc/testsuite/gcc.target/powerpc/bf16-1.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* { dg-do run } */
-/* { dg-require-effective-target ppc_bf16_runtime } */
-/* { dg-options "-mfloat16 -O2" } */
-
-#include <stdlib.h>
-
-/* This tests whether we can do __bf16 calculations either with software
-   emuluation or via hardware support.  */
-volatile __bf16 two = 2.0;
-volatile __bf16 three = 3.0;
-volatile __bf16 result_add, result_sub, result_mul, result_div;
-
-int
-main (int argc, char *argv[])
-{
-  result_add = three + two;
-  result_sub = three - two;
-  result_mul = three * two;
-  result_div = three / two;
-
-  if (((double)result_add) != 5.0)
-    abort ();
-
-  if (((double)result_sub) != 1.0)
-    abort ();
-
-  if (((double)result_mul) != 6.0)
-    abort ();
-
-  if (((double)result_div) != 1.5)
-    abort ();
-
-  return 0;
-}
diff --git a/gcc/testsuite/gcc.target/powerpc/bf16-2.c 
b/gcc/testsuite/gcc.target/powerpc/bf16-2.c
deleted file mode 100644
index 05f56eda5bb4..000000000000
--- a/gcc/testsuite/gcc.target/powerpc/bf16-2.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* { dg-do run { target { power10_hw } } } */
-/* { dg-require-effective-target ppc_float16_hw } */
-/* { dg-options "-mfloat16 -O2 -mdejagnu-cpu=power10" } */
-
-#include <stdlib.h>
-
-/* On a power10/power11 system, test whether we can do __bf16 calculations
-   with both software emulation (i.e. running the code with -mcpu=power9) and
-   hardware conversions (i.e. with -mcpu=power10 or -mcpu=power11).
-
-   Power10 supports the XVCVBF16SPN and XVCVSPBF16 instructions that convert 
between
-   a vector __bf16 and a vector float. */
-
-extern void do_power8  (void) __attribute__ ((noinline,target("cpu=power8")));
-extern void do_power9  (void) __attribute__ ((noinline,target("cpu=power9")));
-extern void do_power10 (void) __attribute__ ((noinline,target("cpu=power10")));
-
-volatile __bf16 two   = 2.0;
-volatile __bf16 three = 3.0;
-volatile __bf16 p8_add,  p8_sub,  p8_mul,  p8_div;
-volatile __bf16 p9_add,  p9_sub,  p9_mul,  p9_div;
-volatile __bf16 p10_add, p10_sub, p10_mul, p10_div;
-
-void
-do_power8 (void)
-{
-  p8_add = three + two;
-  p8_sub = three - two;
-  p8_mul = three * two;
-  p8_div = three / two;
-}
-
-void
-do_power9 (void)
-{
-  p9_add = three + two;
-  p9_sub = three - two;
-  p9_mul = three * two;
-  p9_div = three / two;
-}
-
-void
-do_power10 (void)
-{
-  p10_add = three + two;
-  p10_sub = three - two;
-  p10_mul = three * two;
-  p10_div = three / two;
-}
-
-int
-main (int argc, char *argv[])
-{
-  do_power8 ();
-
-  if (((double)p8_add) != 5.0)
-    abort ();
-
-  if (((double)p8_sub) != 1.0)
-    abort ();
-
-  if (((double)p8_mul) != 6.0)
-    abort ();
-
-  if (((double)p8_div) != 1.5)
-    abort ();
-
-  do_power9 ();
-
-  if (((double)p9_add) != 5.0)
-    abort ();
-
-  if (((double)p9_sub) != 1.0)
-    abort ();
-
-  if (((double)p9_mul) != 6.0)
-    abort ();
-
-  if (((double)p9_div) != 1.5)
-    abort ();
-
-  do_power10 ();
-
-  if (((double)p10_add) != 5.0)
-    abort ();
-
-  if (((double)p10_sub) != 1.0)
-    abort ();
-
-  if (((double)p10_mul) != 6.0)
-    abort ();
-
-  if (((double)p10_div) != 1.5)
-    abort ();
-
-  return 0;
-}
diff --git a/gcc/testsuite/gcc.target/powerpc/bf16-3.c 
b/gcc/testsuite/gcc.target/powerpc/bf16-3.c
deleted file mode 100644
index 3b70cb2cba78..000000000000
--- a/gcc/testsuite/gcc.target/powerpc/bf16-3.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/* { dg-require-effective-target power10_ok } */
-/* { dg-require-effective-target ppc_bf16_runtime } */
-/* { dg-options "-mdejagnu-cpu=power10 -O2 -mfloat16" } */
-
-/* Check that we can do multiple __bf16 adds all in V4SFmode.  */
-
-/* Expected code:
-
-   lxsihzx 0,0,4
-   lxsihzx 11,0,5
-   lxsihzx 12,0,6
-   xxspltw 0,0,1
-   xxspltw 11,11,1
-   xxspltw 12,12,1
-   xvcvbf16spn 0,0
-   xvcvbf16spn 11,11
-   xvcvbf16spn 12,12
-   xvaddsp 0,0,11
-   xvaddsp 0,0,12
-   xvcvspbf16 0,0
-   stxsihx 0,0,3  */
-
-void
-add3 (__bf16 *p, __bf16 *q, __bf16 *r, __bf16 *s)
-{
-  *p = *q + *r + *s;
-}
-
-/* { dg-final { scan-assembler-times {\mxxspltw\M|\mvspltw\M|\mmtvsrws\M} 3 } 
} */
-/* { dg-final { scan-assembler-times {\mxvcvbf16spn\M}                    3 } 
} */
-/* { dg-final { scan-assembler-times {\mxvaddsp\M}                        2 } 
} */
-/* { dg-final { scan-assembler-times {\mxvcvspbf16\M}                     1 } 
} */
diff --git a/gcc/testsuite/gcc.target/powerpc/bf16-4.c 
b/gcc/testsuite/gcc.target/powerpc/bf16-4.c
deleted file mode 100644
index 760e4751a75f..000000000000
--- a/gcc/testsuite/gcc.target/powerpc/bf16-4.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* { dg-require-effective-target power10_ok } */
-/* { dg-require-effective-target ppc_bf16_runtime } */
-/* { dg-options "-mdejagnu-cpu=power10 -O2 -mfloat16" } */
-
-/* Check that we can do multiple __bf16 adds all in V4SFmode.  */
-
-/* Expected code:
-
-   lxsihzx 0,0,4
-   lxsihzx 12,0,5
-   xxspltiw 11,1065353216
-   xxspltw 0,0,1
-   xxspltw 12,12,1
-   xvcvbf16spn 0,0
-   xvcvbf16spn 12,12
-   xvaddsp 0,0,12
-   xvaddsp 0,0,11
-   xvcvspbf16 0,0
-   stxsihx 0,0,3  */
-
-void
-add3 (__bf16 *p, __bf16 *q, __bf16 *r)
-{
-  *p = *q + *r + (__bf16)1.0;
-}
-
-/* { dg-final { scan-assembler-times {\mxxspltw\M|\mvspltw\M|\mmtvsrws\M} 2 } 
} */
-/* { dg-final { scan-assembler-times {\mxvcvbf16spn\M}                    2 } 
} */
-/* { dg-final { scan-assembler-times {\mxvaddsp\M}                        2 } 
} */
-/* { dg-final { scan-assembler-times {\mxxspltiw\M}                       1 } 
} */
-/* { dg-final { scan-assembler-times {\mxvcvspbf16\M}                     1 } 
} */
diff --git a/gcc/testsuite/gcc.target/powerpc/float16-1.c 
b/gcc/testsuite/gcc.target/powerpc/float16-1.c
deleted file mode 100644
index e3a749ebbef8..000000000000
--- a/gcc/testsuite/gcc.target/powerpc/float16-1.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* { dg-do run } */
-/* { dg-require-effective-target ppc_float16_runtime } */
-/* { dg-options "-mfloat16 -O2" } */
-
-#include <stdlib.h>
-
-/* This tests whether we can do _Float16 calculations either with software
-   emuluation or via hardware support.  */
-volatile _Float16 two = 2.0F16;
-volatile _Float16 three = 3.0F16;
-volatile _Float16 result_add, result_sub, result_mul, result_div;
-
-int
-main (int argc, char *argv[])
-{
-  result_add = three + two;
-  result_sub = three - two;
-  result_mul = three * two;
-  result_div = three / two;
-
-  if (((double)result_add) != 5.0)
-    abort ();
-
-  if (((double)result_sub) != 1.0)
-    abort ();
-
-  if (((double)result_mul) != 6.0)
-    abort ();
-
-  if (((double)result_div) != 1.5)
-    abort ();
-
-  return 0;
-}
diff --git a/gcc/testsuite/gcc.target/powerpc/float16-2.c 
b/gcc/testsuite/gcc.target/powerpc/float16-2.c
deleted file mode 100644
index 608b5d28682c..000000000000
--- a/gcc/testsuite/gcc.target/powerpc/float16-2.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* { dg-do run { target { power10_hw } } } */
-/* { dg-require-effective-target ppc_float16_hw } */
-/* { dg-options "-mfloat16 -O2 -mdejagnu-cpu=power10" } */
-
-#include <stdlib.h>
-
-/* On a power10/power11 system, test whether we can do _Float16 calculations
-   with both software emulation (i.e. running the code with -mcpu=power8) and
-   hardware conversions (i.e. with -mcpu=power9, -mcpu=power10 or
-   -mcpu=power11).
-
-   Power9 supports the XSCVHPDP and XSCVDPHP instructions that convert between
-   a scalar _Float16 and a scalar double. */
-
-extern void do_power8  (void) __attribute__ ((noinline,target("cpu=power8")));
-extern void do_power9  (void) __attribute__ ((noinline,target("cpu=power9")));
-extern void do_power10 (void) __attribute__ ((noinline,target("cpu=power10")));
-
-volatile _Float16 two   = 2.0;
-volatile _Float16 three = 3.0;
-volatile _Float16 p8_add,  p8_sub,  p8_mul,  p8_div;
-volatile _Float16 p9_add,  p9_sub,  p9_mul,  p9_div;
-volatile _Float16 p10_add, p10_sub, p10_mul, p10_div;
-
-void
-do_power8 (void)
-{
-  p8_add = three + two;
-  p8_sub = three - two;
-  p8_mul = three * two;
-  p8_div = three / two;
-}
-
-void
-do_power9 (void)
-{
-  p9_add = three + two;
-  p9_sub = three - two;
-  p9_mul = three * two;
-  p9_div = three / two;
-}
-
-void
-do_power10 (void)
-{
-  p10_add = three + two;
-  p10_sub = three - two;
-  p10_mul = three * two;
-  p10_div = three / two;
-}
-
-int
-main (int argc, char *argv[])
-{
-  do_power8 ();
-
-  if (((double)p8_add) != 5.0)
-    abort ();
-
-  if (((double)p8_sub) != 1.0)
-    abort ();
-
-  if (((double)p8_mul) != 6.0)
-    abort ();
-
-  if (((double)p8_div) != 1.5)
-    abort ();
-
-  do_power9 ();
-
-  if (((double)p9_add) != 5.0)
-    abort ();
-
-  if (((double)p9_sub) != 1.0)
-    abort ();
-
-  if (((double)p9_mul) != 6.0)
-    abort ();
-
-  if (((double)p9_div) != 1.5)
-    abort ();
-
-  do_power10 ();
-
-  if (((double)p10_add) != 5.0)
-    abort ();
-
-  if (((double)p10_sub) != 1.0)
-    abort ();
-
-  if (((double)p10_mul) != 6.0)
-    abort ();
-
-  if (((double)p10_div) != 1.5)
-    abort ();
-
-  return 0;
-}
diff --git a/gcc/testsuite/lib/target-supports.exp 
b/gcc/testsuite/lib/target-supports.exp
index a6ef7c28503e..3c5dfd59f6fe 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -3731,140 +3731,6 @@ proc check_ppc_recip_hw_available { } {
     }]
 }
 
-# Return true if the PowerPC has hardware support for doing _Float16
-# conversions
-proc check_ppc_float16_hw_available { } {
-    return [check_cached_effective_target ppc_float16_hw_available {
-       # Some simulators may not support XSCVHPDP
-       # For now, disable on Darwin
-       if { [istarget powerpc-*-eabi] || [istarget *-*-darwin*]} {
-           expr 0
-       } else {
-           set options "-mfloat16"
-           check_runtime_nocache ppc_float16_hw_available {
-               extern void abort (void);
-               volatile _Float16 x = 3.0F16;
-               volatile union {
-                 _Float16 five_f16;
-                 unsigned short five_us;
-               } u = { 5.0F16 };
-               int main()
-               {
-                 double y;
-                 asm ("xscvhpdp %x0,%x1" : "=wa" (y) : "wa" (x));
-                 if (y != 3.0)
-                   abort ();
-                 if (u.five_us != 0x4500)
-                   abort ();
-                 return 0;
-               }
-           } $options
-       }
-    }]
-}
-
-# Return true if the PowerPC can do _Float16 calculations via either
-# software or hardware support.
-proc check_ppc_float16_runtime_available { } {
-    return [check_cached_effective_target ppc_float16_runtime_available {
-       # Some simulators may not support XSCVHPDP
-       # For now, disable on Darwin
-       if { [istarget powerpc-*-eabi] || [istarget *-*-darwin*]} {
-           expr 0
-       } else {
-           set options "-mfloat16"
-           check_runtime_nocache ppc_float16_runtime_available {
-               extern void abort (void);
-               volatile _Float16 x = 3.0F16;
-               volatile _Float16 y = 4.0F16;
-               volatile _Float16 z;
-               volatile union {
-                 _Float16 five_f16;
-                 unsigned short five_us;
-               } u = { 5.0F16 };
-               int main()
-               {
-                 z = x + y;
-                 if (((double)z) != 7.0)
-                   abort ();
-                 if (u.five_us != 0x4500)
-                   abort ();
-                 return 0;
-               }
-           } $options
-       }
-    }]
-}
-
-# Return true if the PowerPC has hardware support for doing __bf16
-# conversions
-proc check_ppc_bf16_hw_available { } {
-    return [check_cached_effective_target ppc_bf16_hw_available {
-       # Some simulators may not support XVCVBF16SPN/XVADDSP
-       # For now, disable on Darwin
-       if { [istarget powerpc-*-eabi] || [istarget *-*-darwin*]} {
-           expr 0
-       } else {
-           set options "-mfloat16"
-           check_runtime_nocache ppc_float16_hw_available {
-               extern void abort (void);
-               typedef __bf16 vbf16 __attribute__ ((vector_size (16)));
-               volatile vbf16 x = { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 };
-               volatile vector float y = { 2.0f, 2.0f, 2.0f, 2.0f };
-               volatile vector float z;
-               volatile vector float r;
-               volatile union {
-                 __bf16 five_bf16;
-                 unsigned short five_us;
-               } u = { 5.0 };
-               int main()
-               {
-                 asm ("xvcvbf16spn %x0,%x1" : "=wa" (z) : "wa" (x));
-                 r = y + z;
-                 if (r[0] != 3.0 || r[1] != 3.0 || r[2] != 3.0 || r[3] != 3.0)
-                   abort ();
-                 if (u.five_us != 0x40a0)
-                   abort ();
-                 return 0;
-               }
-           } $options
-       }
-    }]
-}
-
-# Return true if the PowerPC can do __bf16 calculations via either
-# software or hardware support.
-proc check_ppc_bf16_runtime_available { } {
-    return [check_cached_effective_target ppc_bf16_runtime_available {
-       # Some simulators may not support XVCVBF16SPN
-       # For now, disable on Darwin
-       if { [istarget powerpc-*-eabi] || [istarget *-*-darwin*]} {
-           expr 0
-       } else {
-           set options "-mfloat16"
-           check_runtime_nocache ppc_bf16_runtime_available {
-               extern void abort (void);
-               volatile __bf16 x = 3.0;
-               volatile __bf16 y = 4.0;
-               volatile __bf16 z;
-               volatile union {
-                 __bf16 five_bf16;
-                 unsigned short five_us;
-               } u = { 5.0 };
-               int main()
-               {
-                 z = x + y;
-                 if (((double)z) != 7.0)
-                   abort ();
-                 if (u.five_us != 0x40a0)
-                   abort ();
-                 return 0;
-               }
-           } $options
-       }
-    }]
-}
-
 # Return 1 if the target supports executing AltiVec and Cell PPU
 # instructions, 0 otherwise.  Cache the result.
 
@@ -11223,10 +11089,6 @@ proc is-effective-target { arg } {
          "ppc_recip_hw"   { set selected [check_ppc_recip_hw_available] }
          "ppc_cpu_supports_hw" { set selected 
[check_ppc_cpu_supports_hw_available] }
          "ppc_mma_hw"     { set selected [check_ppc_mma_hw_available] }
-         "ppc_float16_hw"       { set selected 
[check_ppc_float16_hw_available] }
-         "ppc_float16_runtime"  { set selected 
[check_ppc_float16_runtime_available] }
-         "ppc_bf16_hw"      { set selected [check_ppc_bf16_hw_available] }
-         "ppc_bf16_runtime" { set selected [check_ppc_bf16_runtime_available] }
          "dfp_hw"         { set selected [check_dfp_hw_available] }
          "htm_hw"         { set selected [check_htm_hw_available] }
          "named_sections" { set selected [check_named_sections_available] }

Reply via email to