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: [PATCH][AArch64] Error out of arm_neon.h if nofp/nosimd


On 14/01/15 10:42, Kyrill Tkachov wrote:
> Hi all,
> 
> In the arm version of arm_neon.h we error out early if the user tries to 
> use that header without NEON.
> In aarch64 AdvancedSIMD is available by default unless the user 
> explicitly disables it.
> Still it would be more helpful if we could just error out gracefully 
> instead of dumping a long stream of type errors and other black magic in 
> case the user disables AdvancedSIMD explicitly.
> So, similar to arm_neon.h in the arm port we error out in aarch64 as well.
> 
> Checked that all arm_neon.h-related tests work as before.
> 
> Ok for trunk?
> 
> Thanks,
> Kyrill
> 
> 2015-01-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
> 
>      * config/aarch64/arm_neon.h: Error out if NEON is not available.
> 
> 2015-01-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
> 
>      * gcc.target/aarch64/arm_neon-nosimd-error.c: New test.
> 

OK>

R.

> 
> aarch64-neon-error.patch
> 
> 
> commit 3c3d56e01ec55f8387bf447e57cdc7f94b0e119b
> Author: Kyrylo Tkachov <kyrylo.tkachov@arm.com>
> Date:   Thu Dec 11 15:09:56 2014 +0000
> 
>     [AArch64] Error out of arm_neon.h if nofp/nosimd
> 
> diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h
> index 319cd8c..22dfb0b 100644
> --- a/gcc/config/aarch64/arm_neon.h
> +++ b/gcc/config/aarch64/arm_neon.h
> @@ -27,6 +27,10 @@
>  #ifndef _AARCH64_NEON_H_
>  #define _AARCH64_NEON_H_
>  
> +#ifndef __ARM_NEON
> +#error You must enable AdvancedSIMD instructions to use arm_neon.h
> +#else
> +
>  #include <stdint.h>
>  
>  #define __AARCH64_UINT64_C(__C) ((uint64_t) __C)
> @@ -25209,3 +25213,5 @@ __INTERLEAVE_LIST (zip)
>  #undef __aarch64_vdupq_laneq_u64
>  
>  #endif
> +
> +#endif
> diff --git a/gcc/testsuite/gcc.target/aarch64/arm_neon-nosimd-error.c b/gcc/testsuite/gcc.target/aarch64/arm_neon-nosimd-error.c
> new file mode 100644
> index 0000000..6c508ec
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/aarch64/arm_neon-nosimd-error.c
> @@ -0,0 +1,11 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mgeneral-regs-only" } */
> +/* { dg-excess-errors "You must enable" } */
> +
> +#include "arm_neon.h"
> +
> +int
> +foo ()
> +{
> +  return 0;
> +}
> 



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