[Bug 1333524] Re: ppc64el build tunes for POWER7, produces sub optimal POWER8 code
Adam Conrad
adconrad at 0c3.net
Tue Jun 24 05:29:26 UTC 2014
** Also affects: glibc (Ubuntu)
Importance: Undecided
Status: New
** Also affects: glibc (Ubuntu Trusty)
Importance: Undecided
Status: New
** Also affects: eglibc (Ubuntu Trusty)
Importance: Undecided
Status: New
** Changed in: glibc (Ubuntu Trusty)
Status: New => Invalid
** Changed in: eglibc (Ubuntu)
Status: New => Invalid
--
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