[PATCH] Compile AVX libm functions with -mavx

Andreas Jaeger aj@suse.com
Tue Oct 2 14:35:00 GMT 2012


On 10/02/2012 03:53 PM, H.J. Lu wrote:
> Hi,
>
> This patch compiles AVX libm functions with -mavx.  It reduces text size
> of libm.so by about 1%:
>
> Before
>
> gnu-tools-1:pts/4[17]> size libm.so
>     text	   data	    bss	    dec	    hex	filename
> 1027977	    876	     72	1028925	  fb33d	libm.so
>
> After:
>
> gnu-tools-1:pts/3[25]> size libm.so
>     text	   data	    bss	    dec	    hex	filename
> 1018017	    876	     72	1018965	  f8c55	libm.so
>
> Tested on AVX machine.  OK for trunk?

textsize is a good metric but what about performance?



> Thanks.
>
> H.J.
> ---
>   sysdeps/x86_64/fpu/multiarch/Makefile | 22 +++++++++++-----------
>   2 files changed, 25 insertions(+), 11 deletions(-)
>   create mode 100644 ChangeLog.pr14654
>
> 2012-10-02  H.J. Lu  <hongjiu.lu@intel.com>
>
> 	* sysdeps/x86_64/fpu/multiarch/Makefile: Check config-cflags-avx
> 	instead of config-cflags-sse2avx.
> 	(CFLAGS-e_atan2-avx.c): Set to -mavx.
> 	(CFLAGS-e_exp-avx.c): Likewise.
> 	(CFLAGS-e_log-avx.c): Likewise.
> 	(CFLAGS-mpa-avx.c): Likewise.
> 	(CFLAGS-mpexp-avx.c): Likewise.
> 	(CFLAGS-mplog-avx.c): Likewise.
> 	(CFLAGS-s_atan-avx.c): Likewise.
> 	(CFLAGS-s_sin-avx.c): Likewise.
> 	(CFLAGS-slowexp-avx.c): Likewise.
> 	(CFLAGS-s_tan-avx.c): Likewise.
> diff --git a/sysdeps/x86_64/fpu/multiarch/Makefile b/sysdeps/x86_64/fpu/multiarch/Makefile
> index 12b0526..ad09ac4 100644
> --- a/sysdeps/x86_64/fpu/multiarch/Makefile
> +++ b/sysdeps/x86_64/fpu/multiarch/Makefile
> @@ -33,21 +33,21 @@ CFLAGS-s_sin-fma4.c = -mfma4
>   CFLAGS-s_tan-fma4.c = -mfma4
>   endif
>
> -ifeq ($(config-cflags-sse2avx),yes)
> +ifeq ($(config-cflags-avx),yes)

I think this is the only usage of config-cflags-sse2avx, so let's remove 
its definition in this case as well.

>   libm-sysdep_routines += e_exp-avx e_log-avx s_atan-avx \
>   			e_atan2-avx s_sin-avx s_tan-avx \
>   			mplog-avx mpa-avx slowexp-avx \
>   			mpexp-avx
>
> -CFLAGS-e_atan2-avx.c = -msse2avx -DSSE2AVX
> -CFLAGS-e_exp-avx.c = -msse2avx -DSSE2AVX
> -CFLAGS-e_log-avx.c = -msse2avx -DSSE2AVX
> -CFLAGS-mpa-avx.c = -msse2avx -DSSE2AVX
> -CFLAGS-mpexp-avx.c = -msse2avx -DSSE2AVX
> -CFLAGS-mplog-avx.c = -msse2avx -DSSE2AVX
> -CFLAGS-s_atan-avx.c = -msse2avx -DSSE2AVX
> -CFLAGS-s_sin-avx.c = -msse2avx -DSSE2AVX
> -CFLAGS-slowexp-avx.c = -msse2avx -DSSE2AVX
> -CFLAGS-s_tan-avx.c = -msse2avx -DSSE2AVX
> +CFLAGS-e_atan2-avx.c = -mavx

You remove the SSE2AVX definition here. Can we now remove it completely 
from glibc?

> +CFLAGS-e_exp-avx.c = -mavx
> +CFLAGS-e_log-avx.c = -mavx
> +CFLAGS-mpa-avx.c = -mavx
> +CFLAGS-mpexp-avx.c = -mavx
> +CFLAGS-mplog-avx.c = -mavx
> +CFLAGS-s_atan-avx.c = -mavx
> +CFLAGS-s_sin-avx.c = -mavx
> +CFLAGS-slowexp-avx.c = -mavx
> +CFLAGS-s_tan-avx.c = -mavx
>   endif
>   endif
>

I'd like to see:
* Performance numbers
* Cleanup of sse2avx and SSE2AVX variables/macros as additional patch

Andreas
-- 
  Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
   SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
    GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
     GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126



More information about the Libc-alpha mailing list