[PATCH-1,rs6000] xfail float128 comparison test case that fails on powerpc64 [PR108728]

Message ID b7d4dad9-e410-c4f0-62f7-c3b6acdd7d70@linux.ibm.com
State Accepted
Headers
Series [PATCH-1,rs6000] xfail float128 comparison test case that fails on powerpc64 [PR108728] |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

HAO CHEN GUI April 18, 2023, 3:13 a.m. UTC
  Hi,
  This patch xfails a float128 comparison test case on powerpc64
that fails due to a longstanding issue with floating-point
compares.

  See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58684 for more
information.

  The case is xfailed when instructions of float128 hardware are
generated. When software simulation is used, the case should pass.

  The patch passed regression test on Power Linux platforms.

Thanks
Gui Haochen

ChangeLog
rs6000: xfail float128 comparison test case that fails on powerpc64.

This patch xfails a float128 comparison test cases on powerpc64 that
fails due to a longstanding issue with floating-point compares.

See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58684 for more information.

gcc/testsuite/
	PR target/108728
	* gcc.dg/torture/float128-cmp-invalid.c: Add xfail.

patch.diff
  

Comments

Kewen.Lin April 19, 2023, 2:45 a.m. UTC | #1
Hi Haochen,

on 2023/4/18 11:13, HAO CHEN GUI wrote:
> Hi,
>   This patch xfails a float128 comparison test case on powerpc64
> that fails due to a longstanding issue with floating-point
> compares.
> 
>   See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58684 for more
> information.
> 
>   The case is xfailed when instructions of float128 hardware are
> generated. When software simulation is used, the case should pass.

IMHO we should make the comments here (commit log) clearer, like:
when float128 hardware gets supported (-mfloat128-hardware takes
effect), xscmpuqp is generated for comparison which is unexpected.

"When software simulation is used, the case should pass" is not so
right, I would interpret the use of __lekf2 as software simulation,
we have to xfail this too when the _hw version is used during runtime,
please make it clearer.

> 
>   The patch passed regression test on Power Linux platforms.
> 
> Thanks
> Gui Haochen
> 
> ChangeLog
> rs6000: xfail float128 comparison test case that fails on powerpc64.
> 
> This patch xfails a float128 comparison test cases on powerpc64 that
> fails due to a longstanding issue with floating-point compares.
> 
> See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58684 for more information.
> 
> gcc/testsuite/
> 	PR target/108728
> 	* gcc.dg/torture/float128-cmp-invalid.c: Add xfail.
> 
> patch.diff
> diff --git a/gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c b/gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c
> index 1f675efdd61..7b520d1f9f1 100644
> --- a/gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c
> +++ b/gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c
> @@ -1,5 +1,5 @@
>  /* Test for "invalid" exceptions from __float128 comparisons.  */
> -/* { dg-do run } */
> +/* { dg-do run { xfail { ppc_float128_hw || { ppc_cpu_supports_hw && p9vector_hw } } } } */

This change looks good to me, though personally I prefer dg-xfail-run-if
as we can specify one associated comment with it. :)

BR,
Kewen

>  /* { dg-options "" } */
>  /* { dg-require-effective-target __float128 } */
>  /* { dg-require-effective-target base_quadfloat_support } */
  

Patch

diff --git a/gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c b/gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c
index 1f675efdd61..7b520d1f9f1 100644
--- a/gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c
+++ b/gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c
@@ -1,5 +1,5 @@ 
 /* Test for "invalid" exceptions from __float128 comparisons.  */
-/* { dg-do run } */
+/* { dg-do run { xfail { ppc_float128_hw || { ppc_cpu_supports_hw && p9vector_hw } } } } */
 /* { dg-options "" } */
 /* { dg-require-effective-target __float128 } */
 /* { dg-require-effective-target base_quadfloat_support } */