test: Fix bb-slp-33.c for RVV

Message ID 20231107084725.178816-1-juzhe.zhong@rivai.ai
State Accepted
Headers
Series test: Fix bb-slp-33.c for RVV |

Checks

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

Commit Message

juzhe.zhong@rivai.ai Nov. 7, 2023, 8:47 a.m. UTC
  As https://godbolt.org/z/hPsqahEa5 shows.
RVV failed dump check since "vectorizing stmts using SLP" shows 3 times instead of 2.

The root cause is this code in main:

  if (a[0] != 1
      || a[1] != 2
      || a[2] != 3
      || a[3] != 4
      || a[4] != 7
      || a[5] != 0
      || a[6] != 0
      || a[7] != 0
      || a[8] != 0)
    abort ();

is vectorized. So add -fno-tree-vectorize avoid the confusing check.

gcc/testsuite/ChangeLog:

	* gcc.dg/vect/bb-slp-33.c: Add -fno-tree-vectorize to main.

---
 gcc/testsuite/gcc.dg/vect/bb-slp-33.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

Richard Biener Nov. 7, 2023, 1:48 p.m. UTC | #1
On Tue, 7 Nov 2023, Juzhe-Zhong wrote:

> As https://godbolt.org/z/hPsqahEa5 shows.
> RVV failed dump check since "vectorizing stmts using SLP" shows 3 times instead of 2.
> 
> The root cause is this code in main:
> 
>   if (a[0] != 1
>       || a[1] != 2
>       || a[2] != 3
>       || a[3] != 4
>       || a[4] != 7
>       || a[5] != 0
>       || a[6] != 0
>       || a[7] != 0
>       || a[8] != 0)
>     abort ();
> 
> is vectorized. So add -fno-tree-vectorize avoid the confusing check.

Uh, please don't add optimize attributes.  If you see this vectorized
(as reduction?) then please instead rewrite the condition as

 if (a[0] != 1)
   abort ();
 __asm__ volatile ("");
 if (a[1] != 2)
   abort ();
...

> gcc/testsuite/ChangeLog:
> 
> 	* gcc.dg/vect/bb-slp-33.c: Add -fno-tree-vectorize to main.
> 
> ---
>  gcc/testsuite/gcc.dg/vect/bb-slp-33.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-33.c b/gcc/testsuite/gcc.dg/vect/bb-slp-33.c
> index bbb13ef798e..f44cbdcfbcf 100644
> --- a/gcc/testsuite/gcc.dg/vect/bb-slp-33.c
> +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-33.c
> @@ -17,7 +17,8 @@ test(int *__restrict__ a, int *__restrict__ b)
>    a[8] = 0;
>  }
>  
> -int main()
> +int __attribute__((optimize(("-fno-tree-vectorize"))))
> +main()
>  {
>    int a[9];
>    int b[4];
>
  
juzhe.zhong@rivai.ai Nov. 7, 2023, 3:19 p.m. UTC | #2
Thanks Richi.

Adapt condtion in V2:
https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635589.html 




juzhe.zhong@rivai.ai
 
From: Richard Biener
Date: 2023-11-07 21:48
To: Juzhe-Zhong
CC: gcc-patches; jeffreyalaw
Subject: Re: [PATCH] test: Fix bb-slp-33.c for RVV
On Tue, 7 Nov 2023, Juzhe-Zhong wrote:
 
> As https://godbolt.org/z/hPsqahEa5 shows.
> RVV failed dump check since "vectorizing stmts using SLP" shows 3 times instead of 2.
> 
> The root cause is this code in main:
> 
>   if (a[0] != 1
>       || a[1] != 2
>       || a[2] != 3
>       || a[3] != 4
>       || a[4] != 7
>       || a[5] != 0
>       || a[6] != 0
>       || a[7] != 0
>       || a[8] != 0)
>     abort ();
> 
> is vectorized. So add -fno-tree-vectorize avoid the confusing check.
 
Uh, please don't add optimize attributes.  If you see this vectorized
(as reduction?) then please instead rewrite the condition as
 
if (a[0] != 1)
   abort ();
__asm__ volatile ("");
if (a[1] != 2)
   abort ();
...
 
> gcc/testsuite/ChangeLog:
> 
> * gcc.dg/vect/bb-slp-33.c: Add -fno-tree-vectorize to main.
> 
> ---
>  gcc/testsuite/gcc.dg/vect/bb-slp-33.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-33.c b/gcc/testsuite/gcc.dg/vect/bb-slp-33.c
> index bbb13ef798e..f44cbdcfbcf 100644
> --- a/gcc/testsuite/gcc.dg/vect/bb-slp-33.c
> +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-33.c
> @@ -17,7 +17,8 @@ test(int *__restrict__ a, int *__restrict__ b)
>    a[8] = 0;
>  }
>  
> -int main()
> +int __attribute__((optimize(("-fno-tree-vectorize"))))
> +main()
>  {
>    int a[9];
>    int b[4];
> 
 
-- 
Richard Biener <rguenther@suse.de>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)
  

Patch

diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-33.c b/gcc/testsuite/gcc.dg/vect/bb-slp-33.c
index bbb13ef798e..f44cbdcfbcf 100644
--- a/gcc/testsuite/gcc.dg/vect/bb-slp-33.c
+++ b/gcc/testsuite/gcc.dg/vect/bb-slp-33.c
@@ -17,7 +17,8 @@  test(int *__restrict__ a, int *__restrict__ b)
   a[8] = 0;
 }
 
-int main()
+int __attribute__((optimize(("-fno-tree-vectorize"))))
+main()
 {
   int a[9];
   int b[4];