[PATCH] amdgcn: Add vectorized math routines
Tue Jan 17 19:52:02 GMT 2023
Thanks for re-submitting. For the files you base off that have no license
info, their license defaults to be the Red Hat license at the top of
COPYING.NEWLIB. You will need to add that license to those new files you
-- Jeff J.
On Tue, Jan 17, 2023 at 7:36 AM Kwok Cheung Yeung <firstname.lastname@example.org>
> Sorry for the delay in replying. I've gone through the licenses for each
> file - apart from v64df_gamma.c ,v64sf_gamma.c, v64df_log10.c and
> v64sf_log10.c (which are all rather trivial), all the .c files already
> contain the copyright header from the file from which they were derived.
> A number of the original files simply had no license notice, so there
> was nothing to copy over.
> No license:
> v64_mathcnst.c, v64df_acos.c, v64df_asin.c, v64df_atan.c, v64df_atan2.c,
> v64df_cos.c, v64df_cosh.c, v64df_ispos.c, v64df_numtest.c, v64df_sin.c,
> v64df_sinh.c, v64sf_acos.c, v64sf_asin.c, v64sf_atan.c, v64sf_atan2.c,
> v64sf_cos.c, v64sf_cosh.c, v64sf_ispos.c, v64sf_numtest.c, v64sf_sin.c,
> Sun Microsystems license:
> v64df_acosh.c, v64df_asinh.c, v64df_atanh.c, v64df_copysign.c,
> v64df_erf.c, v64df_finite.c, v64df_fmod.c, v64df_gamma.c, v64df_hypot.c,
> v64df_ilogb.c, v64df_isnan.c, v64df_lgamma_r.c, v64df_lgamma.c,
> v64df_modf.c, v64df_pow.c, v64df_remainder.c, v64df_rint.c,
> v64df_scalb.c, v64df_scalbn.c, v64df_signif.c, v64df_tan.c,
> v64df_tgamma.c, v64sf_acosh.c, v64sf_asinh.c, v64sf_atanh.c,
> v64sf_copysign.c, v64sf_erf.c, v64sf_exp.c, v64sf_finite.c,
> v64sf_fmod.c, v64sf_gamma.c, v64sf_hypot.c, v64sf_ilogb.c,
> v64sf_isnan.c, v64sf_lgamma_r.c, v64sf_lgamma.c, v64sf_modf.c,
> v64sf_pow.c, v64sf_remainder.c, v64sf_rint.c, v64sf_scalb.c,
> v64sf_scalbn.c, v64sf_signif.c, v64sf_tan.c, v64sf_tgamma.c
> Red Hat license:
> v64df_exp2.c, v64sf_exp2.c
> 'Software Manual for the Elementary Functions' attribution:
> v64df_asine.c, v64df_atangent.c, v64df_exp.c, v64df_log.c,
> v64df_log10.c, v64df_sine.c, v64df_sineh.c, v64df_sqrt.c, v64df_tanh.c,
> v64sf_asine.c, v64sf_atangent.c, v64sf_log.c, v64sf_log10.c,
> v64sf_sine.c, v64sf_sineh.c, v64sf_sqrt.c, v64sf_tanh.c
> v64df_log2.c, v64sf_log2.c, v64_reent.c
> The amdgcnmach.h file has portions from:
> newlib/libm/common/fdlibm.h (Sun Microsystems license)
> newlib/libm/mathfp/zmath.h (no license)
> newlib/libm/common/math_errf.c (ARM license)
> newlib/libm/common/math_config.h (ARM license)
> so I have added the Sun and ARM copyright notices to the file. I have
> split off the vector macro library used by all the functions into a
> separate file amdgcn_veclib.h to make the authorship more clear, and
> have amdgcnmach.h include that.
> I have added a copyright notice for Siemens (my parent company) at the
> top of each file, with terms similar to the usual MIT/BSD clauses.
> Okay for inclusion in Newlib?
> > Hi Kwok,
> > You need to provide headers in all the source and include files. Some
> > files mention they are based on an existing
> > newlib file. Those files should copy the license header over and not
> > have a reference (imagine if
> > someone were to delete the original file or rename it). You are not
> > allowed to change the licensing
> > of a file you have based off of but you can add additional copyright info
> > for your additions if you wish.
> > As mentioned you need to add a license header for the new amdgcnmatch.h
> > header file that is used everywhere.
> > -- Jeff J.
> > On Fri, Dec 2, 2022 at 5:04 PM Kwok Cheung Yeung <email@example.com>
> > wrote:
> >> Hello
> >> This patch implements a set of vectorized math routines for use by the
> >> auto-vectorizer in GCC for the AMD GCN architecture. The implementation
> >> is located in libm/machine/amdgcn, and is based on the current set of
> >> scalar math routines in Newlib, from libm/common, libm/math and
> >> libm/mathfp (where the level of accuracy was deemed sufficient for our
> >> purposes). I have ensured that the copyright notices from the original
> >> were retained.
> >> The vectorized routines make extensive use of the GCC vector extensions
> >> for C, some GCN-specific builtins in GCC, and a SIMD abstraction library
> >> located in libm/machine/amdgcn/amdgcnmach.h. As the builtins are a
> >> recent addition to GCC, I have added #if statements to skip compilation
> >> of the routines that use them to ensure that Newlib will still build for
> >> older versions of GCC.
> >> Versions for 2-lane vectors up to 64-lane vectors (in powers of 2) are
> >> provided for all public functions. Versions with <64 lanes (which is the
> >> 'natural' vector width for AMD GCN) are shims that call the 64-lane
> >> version with the unused lanes masked out.
> >> Okay for inclusion into Newlib?
> >> Thanks
> >> Kwok Yeung
More information about the Newlib