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]

[PATCH][libgcc-math] Vectorized intrinsics for x86_64


The following patch adds vectorized implementations of some math
intrinsics to libgcc-math, like
        
   __m128d __vrd2_log(__m128d x);
   __m128d,__m128d __vrd4_exp(__m128d x1, __m128d x2);
   __vrs4_sincosf(__m128 x, __m128 * ys, __m128 * yc);
   __m128,__m128 __vrs8_log2f(__m128 x1, __m128 x2);
        
for use by the vectorizer (Zdenek will send a vectorizer/backend patch
to utilize those shortly).

In total, libgcc-math on x86_64 will export the following additional
symbols:
        
LIBGCC_MATH_1.0 {
  global:
    __vrd2_log; __vrd2_log2; __vrd2_log10; __vrd2_exp; __vrd2_sin;
    __vrd2_cos; __vrd2_sincos;
    __vrd4_log; __vrd4_log2; __vrd4_log10; __vrd4_exp; __vrd4_sin;
    __vrd4_cos;
    __vrs4_cosf; __vrs4_expf; __vrs4_log10f; __vrs4_log2f; __vrs4_logf;
    __vrs4_powf; __vrs4_powxf; __vrs4_sincosf; __vrs4_sinf;
    __vrs8_expf; __vrs8_log10f; __vrs8_log2f; __vrs8_logf;
  local:
    *;
};

The intrinsics implementation was contributed by AMD to be licensed
as GPL + libgcc execption.

Boostrapped on x86_64-unknown-linux-gnu and i686-pc-linux-gnu.

Ok for mainline?  
        
Thanks,
Richard.

:ADDPATCH libgcc-math:

(patch attached gzipped because of size)

2006-03-27  Richard Guenther  <rguenther@suse.de>

        * configure.ac: Handle x86_64 subdir.
        * configure: Regenerate.
        * Makefile.in: Regenerate.
        * x86_64/Makefile.am: New file.
        * x86_64/Makefile.in: Regenerate.
        * x86_64/libm_util_amd.h: New file.
        * x86_64/remainder_piby2d2f.c: Likewise.
        * x86_64/remainder_piby2.c: Likewise.
        * x86_64/vrd2log.s: Likewise.
        * x86_64/vrd2log10.s: Likewise.
        * x86_64/vrd4log.s: Likewise.
        * x86_64/vrs4powxf.s: Likewise.
        * x86_64/vrd4log10.s: Likewise.
        * x86_64/vrd2cos.s: Likewise.
        * x86_64/vrs4sincosf.s: Likewise.
        * x86_64/vrd4cos.s: Likewise.
        * x86_64/vrd2sin.s: Likewise.
        * x86_64/vrd4sin.s: Likewise.
        * x86_64/vrs4logf.s: Likewise.
        * x86_64/vrs8logf.s: Likewise.
        * x86_64/vrs4sinf.s: Likewise.
        * x86_64/vrs4expf.s: Likewise.
        * x86_64/vrs8expf.s: Likewise.
        * x86_64/vrs4log2f.s: Likewise.
        * x86_64/vrd2exp.s: Likewise.
        * x86_64/vrs4powf.s: Likewise.
        * x86_64/vrs8log2f.s: Likewise.
        * x86_64/vrd2sincos.s: Likewise.
        * x86_64/vrd4exp.s: Likewise.
        * x86_64/vrd2log2.s: Likewise.
        * x86_64/vrd4log2.s: Likewise.
        * x86_64/vrs4log10f.s: Likewise.
        * x86_64/vrs4cosf.s: Likewise.
        * x86_64/vrs8log10f.s: Likewise.
        * x86_64/mv.map: New version map.

Attachment: libgcc-math-x86_64.patch.gz
Description: GNU Zip compressed data


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