This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [testsuite] ARM wmul tests: require arm_dsp_multiply


On 23/06/11 22:38, Janis Johnson wrote:
> Tests wmul-[1234].c and mla-2.c in gcc.target/arm require support that
> the arm backend identifies as TARGET_DSP_MULTIPLY.  The tests all
> specify a -march option with that support, but it is overridden by
> multilib flags.
> 
> This patch adds a new effective target, arm_dsp_multiply, and requires
> it for those tests instead of having them specify a -march value.  This
> means that the tests will be skipped for older targets and test coverage
> relies on testing for some newer multilibs.
> 
> The same effective target is needed for tests smlaltb-1.c, smlaltt-1.c,
> smlatb-1.c, and smlatt-1.c, but those also need to be renamed so the
> scans don't pass just because the file name is in the assembly file.
> 
> OK for trunk, and later for 4.6?
> 
> (btw, I'm currently testing ARM compile-only tests with 43 sets of
> multilib flags)
> 

I've recently approved a patch from James Greenhalgh
(http://gcc.gnu.org/ml/gcc-patches/2011-06/msg01852.html) that defines
__ARM_DSP_MULTIPLY when these features are available.  That should
simplify your target-supports change and also serve as a check that we
aren't erroneously defining that macro.

R.

> 
> gcc-20110623-2
> 
> 
> 2011-06-23  Janis Johnson  <janisjo@codesourcery.com>
> 
> 	* lib/target-supports.exp (check_effective_target_arm_dsp_multiply):
> 	New.
> 	* gcc.target/arm/wmul-1.c: Require arm_dsp_multiply, don't
> 	supply -march.
> 	* gcc.target/arm/wmul-2.c: Likewise.
> 	* gcc.target/arm/wmul-3.c: Likewise.
> 	* gcc.target/arm/wmul-4.c: Likewise.
> 	* gcc.target/arm/mla-2.c: Likewise.
> 
> Index: lib/target-supports.exp
> ===================================================================
> --- lib/target-supports.exp	(revision 175313)
> +++ lib/target-supports.exp	(working copy)
> @@ -1902,6 +1902,33 @@
>      }
>  }
>  
> +# Return 1 if this is an ARM target that supports DSP multiply with
> +# current multilib flags.
> +
> +proc check_effective_target_arm_dsp_multiply { } {
> +    return [check_no_compiler_messages arm_dsp_multiply assembly {
> +	#if defined(__ARM_ARCH_2__) || defined(__ARM_ARCH_2A__) \
> +	    || defined(__ARM_ARCH_3__) || defined(__ARM_ARCH_3M__) \
> +	    || defined(__ARM_ARCH_4__) || defined(__ARM_ARCH_4T__) \
> +	    || defined(__ARM_ARCH_5T__)
> +	#  error NOT_SUPPORTED
> +	#elif defined(__thumb__) || defined(__thumb2__)
> +	#  if defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_6__) \
> +	      || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6M__) \
> +	      || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) \
> +	      || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7M__) \
> +	      || defined(__ARM_ARCH_IWMMXT__) || defined(__ARM_ARCH_IWMMXT2__)
> +	#    error NOT_SUPPORTED
> +	#  endif
> +	#else
> +	#  if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_EP9312__)
> +	#    error NOT_SUPPORTED
> +	#  endif
> +	#endif
> +	int i;
> +    }]
> +}
> +
>  # Add the options needed for NEON.  We need either -mfloat-abi=softfp
>  # or -mfloat-abi=hard, but if one is already specified by the
>  # multilib, use it.  Similarly, if a -mfpu option already enables
> Index: gcc.target/arm/wmul-1.c
> ===================================================================
> --- gcc.target/arm/wmul-1.c	(revision 175313)
> +++ gcc.target/arm/wmul-1.c	(working copy)
> @@ -1,5 +1,6 @@
>  /* { dg-do compile } */
> -/* { dg-options "-O2 -march=armv6t2" } */
> +/* { dg-require-effective-target arm_dsp_multiply } */
> +/* { dg-options "-O2" } */
>  
>  int mac(const short *a, const short *b, int sqr, int *sum)
>  {
> Index: gcc.target/arm/wmul-2.c
> ===================================================================
> --- gcc.target/arm/wmul-2.c	(revision 175313)
> +++ gcc.target/arm/wmul-2.c	(working copy)
> @@ -1,5 +1,6 @@
>  /* { dg-do compile } */
> -/* { dg-options "-O2 -march=armv6t2" } */
> +/* { dg-require-effective-target arm_dsp_multiply } */
> +/* { dg-options "-O2" } */
>  
>  void vec_mpy(int y[], const short x[], short scaler)
>  {
> Index: gcc.target/arm/wmul-3.c
> ===================================================================
> --- gcc.target/arm/wmul-3.c	(revision 175313)
> +++ gcc.target/arm/wmul-3.c	(working copy)
> @@ -1,5 +1,6 @@
>  /* { dg-do compile } */
> -/* { dg-options "-O2 -march=armv6t2" } */
> +/* { dg-require-effective-target arm_dsp_multiply } */
> +/* { dg-options "-O2" } */
>  
>  int mac(const short *a, const short *b, int sqr, int *sum)
>  {
> Index: gcc.target/arm/wmul-4.c
> ===================================================================
> --- gcc.target/arm/wmul-4.c	(revision 175313)
> +++ gcc.target/arm/wmul-4.c	(working copy)
> @@ -1,5 +1,6 @@
>  /* { dg-do compile } */
> -/* { dg-options "-O2 -march=armv6t2" } */
> +/* { dg-require-effective-target arm_dsp_multiply } */
> +/* { dg-options "-O2" } */
>  
>  int mac(const int *a, const int *b, long long sqr, long long *sum)
>  {
> Index: gcc.target/arm/mla-2.c
> ===================================================================
> --- gcc.target/arm/mla-2.c	(revision 175313)
> +++ gcc.target/arm/mla-2.c	(working copy)
> @@ -1,5 +1,6 @@
>  /* { dg-do compile } */
> -/* { dg-options "-O2 -march=armv7-a" } */
> +/* { dg-require-effective-target arm_dsp_multiply } */
> +/* { dg-options "-O2" } */
>  
>  long long foolong (long long x, short *a, short *b)
>  {



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]