This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [ping][PATCH, AVX512, x86_64] AVX-512 support in glibc for x86_64
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: "Zamyatin, Igor" <igor dot zamyatin at intel dot com>
- Cc: "libc-alpha at sourceware dot org" <libc-alpha at sourceware dot org>, "Joseph Myers (joseph at codesourcery dot com)" <joseph at codesourcery dot com>
- Date: Thu, 13 Mar 2014 11:26:24 -0700
- Subject: Re: [ping][PATCH, AVX512, x86_64] AVX-512 support in glibc for x86_64
- Authentication-results: sourceware.org; auth=none
- References: <0EFAB2BDD0F67E4FB6CCC8B9F87D756942904274 at IRSMSX101 dot ger dot corp dot intel dot com> <CAMe9rOooUo59_GKz067DRijcDTocM7B40SHZX4EhmLn8zfxy2Q at mail dot gmail dot com> <CAMe9rOpqrQQxFzTbJ1Xze+NKyK1xdRh+2b=FYWZMv3OC6TUOUA at mail dot gmail dot com> <CAMe9rOpOA6MnRKqwtzNW+S5q5ACKXryHxfcdB=tgnwRt0zhb-w at mail dot gmail dot com>
On Tue, Mar 11, 2014 at 12:39 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Tue, Mar 4, 2014 at 10:50 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Thu, Feb 20, 2014 at 10:25 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>> On Wed, Feb 12, 2014 at 4:14 AM, Zamyatin, Igor <igor.zamyatin@intel.com> wrote:
>>>> Ping!
>>>>
>>>>> -----Original Message-----
>>>>> From: Zamyatin, Igor
>>>>> Sent: Wednesday, February 05, 2014 1:50 PM
>>>>> To: Zamyatin, Igor; Joseph Myers
>>>>> Cc: libc-alpha@sourceware.org; hjl.tools@gmail.com
>>>>> Subject: RE: [PATCH, AVX512, x86_64] AVX-512 support in glibc for x86_64
>>>>>
>>>>> Ping.
>>>>>
>>>>> Is it ok for trunk whenever it's allowed to commit?
>>>>>
>>>>> Thanks,
>>>>> Igor
>>>>>
>>>>> > -----Original Message-----
>>>>> > From: libc-alpha-owner@sourceware.org [mailto:libc-alpha-
>>>>> > owner@sourceware.org] On Behalf Of Zamyatin, Igor
>>>>> > Sent: Tuesday, January 28, 2014 4:57 PM
>>>>> > To: Joseph Myers
>>>>> > Cc: libc-alpha@sourceware.org; hjl.tools@gmail.com
>>>>> > Subject: RE: [PATCH, AVX512, x86_64] AVX-512 support in glibc for
>>>>> > x86_64
>>>>> >
>>>>> > >
>>>>> > > On Fri, 24 Jan 2014, Zamyatin, Igor wrote:
>>>>> > >
>>>>> > > > Attached patch adds AVX512 (new Intel ISA extension, see e.g.
>>>>> > > > http://software.intel.com/en-us/intel-isa-
>>>>> > > extensions?page=1&wapkw=soft
>>>>> > > > ware%20development%20manual%20avx512#pid-16007-1495
>>>>> > > > ) support in Glibc for x86_64.
>>>>> > >
>>>>> > > Do you plan to add support for i386 as well, or is there a reason no
>>>>> > > such support is needed (that these registers are call-clobbered and
>>>>> > > not used for argument passing / return, so libc needs no special
>>>>> > > knowledge
>>>>> > of them?)?
>>>>> > > (Cf. bug 15402 suggesting running the AVX audit tests on i386, which
>>>>> > > would make sense if they are valid for x86 even if no associated
>>>>> > > changes to the dynamic linker are needed.)
>>>>> > >
>>>>> > > > * sysdeps/x86_64/tst-audit9.c: New file.
>>>>> > > > * sysdeps/x86_64/tst-auditmod9a.c: New file.
>>>>> > > > * sysdeps/x86_64/tst-auditmod9b.c: New file.
>>>>> > >
>>>>> > > Any new test should have a copyright / license notice immediately
>>>>> > > following the first line saying what the function of the file is.
>>>>> >
>>>>> > Updated patch attached.
>>>>> >
>>>>> > Thanks,
>>>>> > Igor
>>>>> >
>>>
>>> A couple comments:
>>>
>>> 1. i386 audit doesn't support xmm nor ymm registers. Adding
>>> xmm/ymm/zmm register support to i386 audit is orthogonal to
>>> x86-64 audit. It should be evaluated separately from adding
>>> zmm register support to x86-64 audit.
>>> 2. Adding zmm register support to x86-64 ld.so has no performance
>>> impact on non-threaded applications, except that when LD_AUDIT
>>> is used.
>>> 3. Adding zmm register support to _dl_x86_64_save_sse and
>>> _dl_x86_64_restore_sse will have some overhead. They are
>>> called only when RTLD_PREPARE_FOREIGN_CALL
>>> is used. Among all glibc build/tests, it happens with
>>>
>>> /export/build/gnu/glibc/build-x86_64-linux/dlfcn/glrefmain:
>>> /export/build/gnu/glibc/build-x86_64-linux/elf/constload1:
>>> /export/build/gnu/glibc/build-x86_64-linux/elf/reldep:
>>> /export/build/gnu/glibc/build-x86_64-linux/elf/lateglobal:
>>> /export/build/gnu/glibc/build-x86_64-linux/elf/dblload:
>>> /export/build/gnu/glibc/build-x86_64-linux/elf/reldep5:
>>> /export/build/gnu/glibc/build-x86_64-linux/elf/reldep7:
>>> /export/build/gnu/glibc/build-x86_64-linux/elf/dblunload:
>>> /export/build/gnu/glibc/build-x86_64-linux/elf/tst-deep1:
>>> /export/build/gnu/glibc/build-x86_64-linux/elf/unload4:
>>> /export/build/gnu/glibc/build-x86_64-linux/elf/reldep6:
>>>
>>> Do they address all concerns people have?
>>>
>>
>> Any feedbacks/comments/objections?
>>
>
> I will check it in after 24 hours.
>
After tested with GCC 4.8 and 4.9 on Linux/x86-64,
I checked it into master. I made a few changes:
1. Renamed tst-audit9 to tst-audit10 since there is a tst-audit9
added on Feb. 25.
2. Removed changes in sysdeps/x86_64/multiarch/init-arch.h.
bit_AVX512F is defined in GCC 4.9 cpuid.h. Use 0xe6 for
xsave state similar to tst-audit6.c.
Igor, please double check it and submit bound register change.
Thanks.
--
H.J.