On Tue, Jul 31, 2018 at 04:53:19AM -0500, Matthew Malcomson wrote:
> Fixing the ilp32 issue that Christophe found.
> 
> The existing testcase uses `long` to represent a 64 bit integer.
> This breaks when compiled using the `-mabi=ilp32` flag.
> We switch the use of int/long for int32_t/int64_t to avoid this problem
> and show the requirement of a widening operation more clearly.

Normally we try to avoid pulling more headers than we need in the testsuite.

Have you seen this construct:

  typedef unsigned __attribute__((mode(DI))) uint64_t;

It can be a good way to ensure you have the right type for the patterns you
are adding.

Thanks,
James

> Ok for trunk?
> 
> gcc/testsuite/Changelog
> 2018-07-31  Matthew Malcomson  <matthew.malcom...@arm.com>
> 
>       * gcc.target/aarch64/simd/vect_su_add_sub.c: Use stdint types
> 

> diff --git a/gcc/testsuite/gcc.target/aarch64/simd/vect_su_add_sub.c 
> b/gcc/testsuite/gcc.target/aarch64/simd/vect_su_add_sub.c
> index 
> 338da54f6281c90e1c6b1c59fa50d9b719005c77..e3a2d0175e75b20e309c9b734b747512e466fbb1
>  100644
> --- a/gcc/testsuite/gcc.target/aarch64/simd/vect_su_add_sub.c
> +++ b/gcc/testsuite/gcc.target/aarch64/simd/vect_su_add_sub.c
> @@ -1,21 +1,24 @@
>  /* { dg-do compile } */
>  /* { dg-options "-O3" } */
>  
> +#include <stdint.h>
> +#include <stdlib.h>
> +
>  /* Ensure we use the signed/unsigned extend vectorized add and sub
>     instructions.  */
>  #define N 1024
>  
> -int a[N];
> -long c[N];
> -long d[N];
> -unsigned int ua[N];
> -unsigned long uc[N];
> -unsigned long ud[N];
> +int32_t a[N];
> +int64_t c[N];
> +int64_t d[N];
> +uint32_t ua[N];
> +uint64_t uc[N];
> +uint64_t ud[N];
>  
>  void
>  add ()
>  {
> -  for (int i = 0; i < N; i++)
> +  for (size_t i = 0; i < N; i++)
>      d[i] = a[i] + c[i];
>  }
>  /* { dg-final { scan-assembler-times "\[ \t\]saddw2\[ \t\]+" 1 } } */
> @@ -24,7 +27,7 @@ add ()
>  void
>  subtract ()
>  {
> -  for (int i = 0; i < N; i++)
> +  for (size_t i = 0; i < N; i++)
>      d[i] = c[i] - a[i];
>  }
>  /* { dg-final { scan-assembler-times "\[ \t\]ssubw2\[ \t\]+" 1 } } */
> @@ -33,7 +36,7 @@ subtract ()
>  void
>  uadd ()
>  {
> -  for (int i = 0; i < N; i++)
> +  for (size_t i = 0; i < N; i++)
>      ud[i] = ua[i] + uc[i];
>  }
>  /* { dg-final { scan-assembler-times "\[ \t\]uaddw2\[ \t\]+" 1 } } */
> @@ -42,7 +45,7 @@ uadd ()
>  void
>  usubtract ()
>  {
> -  for (int i = 0; i < N; i++)
> +  for (size_t i = 0; i < N; i++)
>      ud[i] = uc[i] - ua[i];
>  }
>  /* { dg-final { scan-assembler-times "\[ \t\]usubw2\[ \t\]+" 1 } } */
> 

Reply via email to