public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/56504] New: -mveclibabi=... Support AMD's LibM 3.0 (sucessor of ACML)
@ 2013-03-01 21:58 burnus at gcc dot gnu.org
  2013-03-01 22:12 ` [Bug middle-end/56504] " burnus at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-03-01 21:58 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56504

             Bug #: 56504
           Summary: -mveclibabi=... Support AMD's LibM 3.0 (sucessor of
                    ACML)
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: burnus@gcc.gnu.org


GCC currently supports:

       -mveclibabi=type
           Specifies the ABI type to use for vectorizing intrinsics
           [...] and acml for the AMD math core library. [...]

           [...]    and "__vrd2_sin",
           "__vrd2_cos", "__vrd2_exp", "__vrd2_log", "__vrd2_log2",
           "__vrd2_log10", "__vrs4_sinf", "__vrs4_cosf", "__vrs4_expf",
           "__vrs4_logf", "__vrs4_log2f", "__vrs4_log10f" and
           "__vrs4_powf" for the corresponding function type when
           -mveclibabi=acml is used.

The current AMD LibM version, however, supports much more:
http://developer.amd.com/tools/cpu-development/libm/


>From the release notes:

Vector Functions 
----------------
         Exponential
         -----------
            * vrs4_expf, vrs4_exp2f, vrs4_exp10f, vrs4_expm1f
            * vrsa_expf, vrsa_exp2f, vrsa_exp10f, vrsa_expm1f
            * vrd2_exp, vrd2_exp2, vrd2_exp10, vrd2_expm1
            * vrda_exp, vrda_exp2, vrda_exp10, vrda_expm1

         Logarithmic
         -----------
            * vrs4_logf, vrs4_log2f, vrs4_log10f, vrs4_log1pf
            * vrsa_logf, vrsa_log2f, vrsa_log10f, vrsa_log1pf
            * vrd2_log, vrd2_log2, vrd2_log10, vrd2_log1p
            * vrda_log, vrda_log2, vrda_log10, vrda_log1p

         Trigonometric
         -------------
            * vrs4_cosf, vrs4_sinf
            * vrsa_cosf, vrsa_sinf
            * vrd2_cos, vrd2_sin
            * vrda_cos, vrda_sin
            * vrd2_sincos,vrda_sincos
            * vrs4_sincosf,vrsa_sincosf 
            * vrd2_tan, vrs4_tanf
            * vrd2_cosh


         Power
         -----
            * vrs4_cbrtf, vrd2_cbrt, vrs4_powf, vrs4_powxf
            * vrsa_cbrtf, vrda_cbrt, vrsa_powf, vrsa_powxf
            * vrd2_pow


The vector functions are the known (cf. include/amdlibm.h):
    __m128d amd_vrd2_exp    (__m128d x);
    __m128  amd_vrs4_expf   (__m128  x);
    etc.

While the array version use:
    void amd_vrsa_expf      (int len, float  *src, float  *dst);
    void amd_vrda_exp2      (int len, double *src, double *dst);

    void amd_vrda_exp       (int len, double *src, double *dst);
    void amd_vrsa_expf      (int len, float  *src, float  *dst);

Unfortunately, no further documentation is available, telling whether, e.g.,
src and dst may be the same or not.



Note that AMD LibM now uses "amd_" as prefix to the vector functions. It
contains the old version as weak symbols but only those:

0000000000000340 W __vrd2_cos
00000000000000e0 W __vrd2_exp
00000000000001a0 W __vrd2_log
00000000000001c0 W __vrd2_log10
00000000000001b0 W __vrd2_log2
0000000000000330 W __vrd2_sin
0000000000000390 W __vrs4_cosf
00000000000000a0 W __vrs4_expf
0000000000000200 W __vrs4_log10f
00000000000001f0 W __vrs4_log2f
00000000000001e0 W __vrs4_logf
00000000000003a0 W __vrs4_sinf


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug middle-end/56504] -mveclibabi=... Support AMD's LibM 3.0 (sucessor of ACML)
  2013-03-01 21:58 [Bug middle-end/56504] New: -mveclibabi=... Support AMD's LibM 3.0 (sucessor of ACML) burnus at gcc dot gnu.org
@ 2013-03-01 22:12 ` burnus at gcc dot gnu.org
  2013-03-04 10:48 ` rguenth at gcc dot gnu.org
  2013-03-04 10:53 ` burnus at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-03-01 22:12 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56504

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |burnus at gcc dot gnu.org

--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-03-01 22:11:50 UTC ---
For completeness, also Intel strongly extended the supported vectorizing
intrinsics, cf.
http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mklman/GUID-7B3B6537-71E2-4BF5-A041-0365E72B211B.htm


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug middle-end/56504] -mveclibabi=... Support AMD's LibM 3.0 (sucessor of ACML)
  2013-03-01 21:58 [Bug middle-end/56504] New: -mveclibabi=... Support AMD's LibM 3.0 (sucessor of ACML) burnus at gcc dot gnu.org
  2013-03-01 22:12 ` [Bug middle-end/56504] " burnus at gcc dot gnu.org
@ 2013-03-04 10:48 ` rguenth at gcc dot gnu.org
  2013-03-04 10:53 ` burnus at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-03-04 10:48 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56504

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2013-03-04
                 CC|                            |rguenth at gcc dot gnu.org
     Ever Confirmed|0                           |1

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> 2013-03-04 10:48:16 UTC ---
Confirmed.

The array versions could be used by loop distribution pattern detection.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug middle-end/56504] -mveclibabi=... Support AMD's LibM 3.0 (sucessor of ACML)
  2013-03-01 21:58 [Bug middle-end/56504] New: -mveclibabi=... Support AMD's LibM 3.0 (sucessor of ACML) burnus at gcc dot gnu.org
  2013-03-01 22:12 ` [Bug middle-end/56504] " burnus at gcc dot gnu.org
  2013-03-04 10:48 ` rguenth at gcc dot gnu.org
@ 2013-03-04 10:53 ` burnus at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-03-04 10:53 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56504

--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-03-04 10:53:07 UTC ---
(In reply to comment #0)
> Unfortunately, no further documentation is available, telling whether, e.g.,
> src and dst may be the same or not.

AMD told me that "src" and "dst" are permitted to be the same.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-03-04 10:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-01 21:58 [Bug middle-end/56504] New: -mveclibabi=... Support AMD's LibM 3.0 (sucessor of ACML) burnus at gcc dot gnu.org
2013-03-01 22:12 ` [Bug middle-end/56504] " burnus at gcc dot gnu.org
2013-03-04 10:48 ` rguenth at gcc dot gnu.org
2013-03-04 10:53 ` burnus at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).