[Bug libc/23630] New: x86 multiarch works only for i686 target

ikalvachev at gmail dot com sourceware-bugzilla@sourceware.org
Tue Sep 11 14:52:00 GMT 2018


https://sourceware.org/bugzilla/show_bug.cgi?id=23630

            Bug ID: 23630
           Summary: x86 multiarch works only for i686 target
           Product: glibc
           Version: unspecified
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: libc
          Assignee: unassigned at sourceware dot org
          Reporter: ikalvachev at gmail dot com
                CC: drepper.fsp at gmail dot com
  Target Milestone: ---

I'm running Slackware. It still tries to support old machines and builds
packages, including glibc, with i586 support.

Unfortunately all SIMD code and CPU detection code is in i686 directory and the
multiarch configure option is ignored when architecture before i686 is
selected.

What is worse, i586 optimized memcpy() uses a 20 years old hack, that reads
from  destination memory (in order to "prefetch" a cache line) before
overwriting it.
On my i3 this causes a massive slowdown in Mesa3D, when glibc memcpy() is used
to transfer (small) Buffer Objects from system to video ram, because that
involves PCIe transactions.


I did saw that there is a TODO entry to rename i386 to x86 and move
i486,i586,i686 there. However this is only a cosmetic change...

I do request multiarch support that (when selected) also compiles all x86
architectures above the selected, then at runtime detects the running
architecture and uses the appropriate functions for it.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Glibc-bugs mailing list