[PATCH][ARM] [gcc] Add __artificial__ attribute to all NEON intrinsics

Richard Earnshaw (lists) Richard.Earnshaw@arm.com
Wed Jan 11 16:10:00 GMT 2017


On 10/01/17 10:40, Tamar Christina wrote:
> Hi all,
> 
> This patch adds the __artificial__ and __gnu_inline__
> attributes to the intrinsics in arm_neon.h so that
> costs are associated to the user function during profiling
> and during debugging the intrinsics are hidden in trace.
> 
> A similar patch was already applied to Aarch64.
> 
> The artificial attribute does not affect code generation.
> The functions are also changed from static to being extern
> in order for the __gnu_inline__ function to not treat the
> intrinsics as standalone functions.
> 
> No new tests for this since it would require a gdb test
> but regression tests on arm-none-linux-gnueabi was performed.
> 
> The attribute was added with the following bash script:
> 
> #!/bin/bash
> 
> # first apply to the ones in #define blocks and add extra \ at the end
> sed -i -r 's/(__inline.+)(__attribute__\s*)\(\((.+)\)\)\s*\\/\1\\\n\2 \(\(\3, __gnu_inline__,__artificial__\)\) \\/m' \
>  gcc/config/arm/arm_neon.h
> 
> # Then write all normal functions
> sed -i -r 's/(__inline.+)(__attribute__\s*)\(\((.+)\)\)/\1\n\2 \(\(\3, __gnu_inline__, __artificial__\)\)/m' \
>  gcc/config/arm/arm_neon.h
> 
> # Then correct any trailing whitespaces we might have introduced
> sed -i 's/[ \t]*$//' \
>  gcc/config/arm/arm_neon.h
> 
> # And then finish up by correcting some attribute values which don't fit the patterns above.
> sed -i -r 's/(__attribute__\s+)\(\((__always_inline__)\)\)\s+\\/\1\(\(\2, __gnu_inline__, __artificial__\)\) \\/m' \
>  gcc/config/arm/arm_neon.h
> 
> # Replace static definitions with extern
> sed -i -r 's/(__extension__\s+)static(.+)/\1extern\2/m' \
>  gcc/config/arm/arm_neon.h
> 
> 
> Ok for trunk?
> 
> Thanks,
> Tamar
> 
> gcc/
> 2017-01-10  Tamar Christina  <tamar.christina@arm.com>
> 
> 	* config/arm/arm_neon.h: Add __artificial__ and gnu_inline
>           to all inlined functions, change static to extern.
> 


OK.

R.



More information about the Gcc-patches mailing list