[Bug 1333524] Re: ppc64el build tunes for POWER7, produces sub optimal POWER8 code

Adam Conrad adconrad at 0c3.net
Tue Jun 24 05:36:01 UTC 2014


** Changed in: eglibc (Ubuntu Trusty)
     Assignee: (unassigned) => Adam Conrad (adconrad)

** Changed in: glibc (Ubuntu)
     Assignee: (unassigned) => Adam Conrad (adconrad)

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to eglibc in Ubuntu.
https://bugs.launchpad.net/bugs/1333524

Title:
  ppc64el build tunes for POWER7, produces sub optimal POWER8 code

Status in “eglibc” package in Ubuntu:
  Invalid
Status in “glibc” package in Ubuntu:
  New
Status in “eglibc” source package in Trusty:
  New
Status in “glibc” source package in Trusty:
  Invalid

Bug description:
  We currently build eglibc using  --with-cpu=power7. This gives us
  optimised power7 glibc functions, but it also passes -mtune=power7 to
  gcc.

  Unfortunately this causes gcc to be overly careful about alignment issues. One example is this fragment in tcgetattr, where
  we zero a struct byte by byte:

    11141c:       2d d7 f9 4b     bl      aeb48 <bcmp+0x1768>
    111420:       00 00 00 60     nop
    111424:       00 00 e3 9b     stb     r31,0(r3)
    111428:       01 00 e3 9b     stb     r31,1(r3)
    11142c:       02 00 e3 9b     stb     r31,2(r3)
    111430:       03 00 e3 9b     stb     r31,3(r3)
    111434:       04 00 e3 9b     stb     r31,4(r3)
    111438:       05 00 e3 9b     stb     r31,5(r3)
    11143c:       06 00 e3 9b     stb     r31,6(r3)
    111440:       07 00 e3 9b     stb     r31,7(r3)
    111444:       08 00 e3 9b     stb     r31,8(r3)
    111448:       09 00 e3 9b     stb     r31,9(r3)
    11144c:       0a 00 e3 9b     stb     r31,10(r3)
    111450:       0b 00 e3 9b     stb     r31,11(r3)
    111454:       0c 00 e3 9b     stb     r31,12(r3)

  If we pass -mtune=power8, then things are much better:

    1104bc:       8d eb f9 4b     bl      af048 <bcmp+0x1768>
    1104c0:       00 00 00 60     nop
    1104c4:       00 00 20 39     li      r9,0
    1104c8:       00 00 c3 93     stw     r30,0(r3)
    1104cc:       04 00 c3 93     stw     r30,4(r3)
    1104d0:       08 00 c3 93     stw     r30,8(r3)
    1104d4:       0c 00 23 99     stb     r9,12(r3)

  (The reason we aren't going 64bit stores is a gcc bug which has been
  fixed upstream recently)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/1333524/+subscriptions



More information about the foundations-bugs mailing list