https://gcc.gnu.org/g:f795309be2fdf76db678c80fb9cc00707c62102f
commit f795309be2fdf76db678c80fb9cc00707c62102f Author: Michael Meissner <[email protected]> Date: Fri Nov 14 15:09:43 2025 -0500 Revert changes Diff: --- gcc/testsuite/gcc.target/powerpc/bfloat16-1.c | 34 ------- gcc/testsuite/gcc.target/powerpc/bfloat16-2.c | 72 ------------- gcc/testsuite/gcc.target/powerpc/float16-1.c | 34 ------- gcc/testsuite/gcc.target/powerpc/float16-2.c | 73 -------------- gcc/testsuite/lib/target-supports.exp | 139 -------------------------- 5 files changed, 352 deletions(-) diff --git a/gcc/testsuite/gcc.target/powerpc/bfloat16-1.c b/gcc/testsuite/gcc.target/powerpc/bfloat16-1.c deleted file mode 100644 index 322221b2b8e1..000000000000 --- a/gcc/testsuite/gcc.target/powerpc/bfloat16-1.c +++ /dev/null @@ -1,34 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target bfloat16_runtime } */ -/* { dg-options "-mfloat16 -O2" } */ - -#include <stdlib.h> - -/* This tests whether we can do __bfloat16 calculations either with software - emuluation or via hardware support. */ -volatile __bfloat16 two = 2.0; -volatile __bfloat16 three = 3.0; -volatile __bfloat16 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/bfloat16-2.c b/gcc/testsuite/gcc.target/powerpc/bfloat16-2.c deleted file mode 100644 index 89b5f1062881..000000000000 --- a/gcc/testsuite/gcc.target/powerpc/bfloat16-2.c +++ /dev/null @@ -1,72 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target bfloat16_hw } */ -/* { dg-options "-mfloat16 -O2" } */ - -#include <stdlib.h> - -/* On a power10/power11 system, test whether we can do __bfloat16 calculations - with both software emulation (i.e. running the code with -mcpu=power8) and - hardware conversions (i.e. with -mcpu=power10 or -mcpu=power11). - - Power10 supports the XVCVBF16SPN and XVCVSPBF16 instructions that convert between - a vector __bfloat16 and a vector float. */ - -extern void do_power10 (void) __attribute__ ((noinline,target("cpu=power10"))); -extern void do_power8 (void) __attribute__ ((noinline,target("cpu=power8"))); - -volatile __bfloat16 two = 2.0; -volatile __bfloat16 three = 3.0; -volatile __bfloat16 p8_add, p8_sub, p8_mul, p8_div; -volatile __bfloat16 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_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_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/float16-1.c b/gcc/testsuite/gcc.target/powerpc/float16-1.c deleted file mode 100644 index 3aa86a500bff..000000000000 --- a/gcc/testsuite/gcc.target/powerpc/float16-1.c +++ /dev/null @@ -1,34 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target 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 a202bb0a653a..000000000000 --- a/gcc/testsuite/gcc.target/powerpc/float16-2.c +++ /dev/null @@ -1,73 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target float16_hw } */ -/* { dg-options "-mfloat16 -O2" } */ - -#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_power9 (void) __attribute__ ((noinline,target("cpu=power9"))); -extern void do_power8 (void) __attribute__ ((noinline,target("cpu=power8"))); - -volatile __bfloat16 two = 2.0; -volatile __bfloat16 three = 3.0; -volatile __bfloat16 p8_add, p8_sub, p8_mul, p8_div; -volatile __bfloat16 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_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_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 1120ac6a017b..4f9a79702cba 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -3567,141 +3567,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 __bfloat16 -# conversions -proc check_ppc_bfloat16_hw_available { } { - return [check_cached_effective_target ppc_bfloat16_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 __bfloat16 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 { - __bfloat16 five_bf16; - unsigned short five_us; - } u = { 5.0 }; - int main() - { - double y; - 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 __bfloat16 calculations via either -# software or hardware support. -proc check_ppc_bfloat16_runtime_available { } { - return [check_cached_effective_target ppc_bfloat16_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_bfloat16_runtime_available { - extern void abort (void); - volatile __bfloat16 x = 3.0; - volatile __bfloat16 y = 4.0; - volatile __bfloat16 z; - volatile union { - __bfloat16 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. @@ -10681,10 +10546,6 @@ proc is-effective-target { arg } { "gc_sections" { set selected [check_gc_sections_available] } "linker_plugin" { set selected [check_linker_plugin_available] } "cxa_atexit" { set selected [check_cxa_atexit_available] } - "float16_hw" { set selected [check_ppc_float16_hw_available] } - "float16_runtime" { set selected [check_ppc_float16_runtime_available] } - "bfloat16_hw" { set selected [check_ppc_bfloat16_hw_available] } - "bfloat16_runtime" { set selected [check_ppc_bfloat16_runtime_available] } default { error "unknown effective target keyword `$arg'" } } }
