== Comment: #0 - Tulio Magno Quites Machado Filho <tulioqm.com> - 2015-05-28 15:52:08 == Although GCC for ppc64le has ben configured using --with-cpu=power7, that doesn't ensure glibc will make usage of all the POWER7 optimizations during its build. That only happens when glibc is configured with --with-cpu=power7. As ppc64le supports POWER >=7, it's better to use this configure flag. A possible solution for this case is to add ppc64le to the following block of code taken from glibc.spec: %ifarch ppc64p7 --with-cpu=power7 \ %endif
Sounds good to me. We'll put this into the backlog.
ppc64le requires POWER8 and later, so this no longer relevant.
------- Comment From tulioqm.com 2016-02-08 14:25 EDT------- (In reply to comment #5) > ppc64le requires POWER8 and later, so this no longer relevant. This is not clear to me. Are you saying that glibc is being configured with --with-cpu=power8 now? When I opened this bug report, Fedora wanted to support POWER7 on ppc64le. If it has changed to support POWER8, it's necessary to configure glibc --with-cpu=power8 in order to correctly use the POWER8 files from glibc.
(In reply to IBM Bug Proxy from comment #4) > When I opened this bug report, Fedora wanted to support POWER7 on ppc64le. IBM does not want to support POWER7 on ppc64le, see the recent discussion on the Fedora secondary list. > If it has changed to support POWER8, it's necessary to configure glibc > --with-cpu=power8 in order to correctly use the POWER8 files from glibc. I don't see any logic in the glibc build system which reacts to that. As far as I can tell, just setting the GCC defaults appropriately is sufficient. It might be theoretically possible to omit support code for older CPU variants, but I don't think glibc can do that for any architecture right now (there is nothing like __ASSUME_KERNEL for CPU features, as far as I know).
------- Comment From tulioqm.com 2016-02-08 15:02 EDT------- (In reply to comment #9) > > If it has changed to support POWER8, it's necessary to configure glibc > > --with-cpu=power8 in order to correctly use the POWER8 files from glibc. > > I don't see any logic in the glibc build system which reacts to that. As > far as I can tell, just setting the GCC defaults appropriately is sufficient. No it isn't. If you don't set --with-cpu=power8, you won't be using POWER8-optimized files, i.e. those under the power8 directories. That's why we have this patch: http://patchwork.sourceware.org/patch/10641/ IMO, you really want to use --with-cpu, unless you want to support POWER >= 4.
(In reply to IBM Bug Proxy from comment #6) > ------- Comment From tulioqm.com 2016-02-08 15:02 EDT------- > (In reply to comment #9) > > > If it has changed to support POWER8, it's necessary to configure glibc > > > --with-cpu=power8 in order to correctly use the POWER8 files from glibc. > > > > I don't see any logic in the glibc build system which reacts to that. As > > far as I can tell, just setting the GCC defaults appropriately is sufficient. > > No it isn't. > If you don't set --with-cpu=power8, you won't be using POWER8-optimized > files, i.e. those under the power8 directories. > That's why we have this patch: http://patchwork.sourceware.org/patch/10641/ Tulio is correct. However, perhaps you can answer a question I had. In general all of the functions in the power8/ sysdep directory appear to be routed to by IFUNCs anyway, so you will get their benefit in a generic build also? However, because it isn't guaranteed that all functions have IFUNC selectors you generally want to build with --with-cpu=powerx for POWERx (where x is an integer value). Florian, if you look deeply the --with-cpu options feed into the sysdeps selection mechanism which makes it a required option to pickup the POWER8 optimized functions. This is fixed this in Rawhide. e.g. 889 %if %{buildpower8} 890 ( 891 AddOns="$AddOns --with-cpu=power8" 892 GCC="$GCC -mcpu=power8 -mtune=power8" 893 GXX="$GXX -mcpu=power8 -mtune=power8" 894 build power8 895 ) I'm marking CLOSED/RAWHIDE since we aren't going to change the runtimes for F22.
Reopening because the default runtime for ppc64le doesn't use the %{buildpower8} path. We need this additional fix: diff --git a/glibc.spec b/glibc.spec index 5cb5262..da36986 100644 --- a/glibc.spec +++ b/glibc.spec @@ -818,6 +818,9 @@ build() %endif --enable-obsolete-rpc \ --enable-systemtap \ +%ifarch ppc64le + --with-cpu=power8 \ +%endif %ifarch ppc64p7 --with-cpu=power7 \ %endif ---
Testing changes to fix this.
This is now fixed in rawhide. The default ppc64le runtime now correctly configures using --with-cpu=power8. Pre-tested using a ppc-koji scratch build and reviewed the final builds.
------- Comment From tulioqm.com 2016-02-09 07:47 EDT------- > However, perhaps you can answer a question I had. In > general all of the functions in the power8/ sysdep directory appear to be > routed to by IFUNCs anyway, so you will get their benefit in a generic build > also? However, because it isn't guaranteed that all functions have IFUNC > selectors you generally want to build with --with-cpu=powerx for POWERx > (where x is an integer value). Not for all of the functions right now. That's especially important for math functions which still lack IFUNC support. Thanks Florian and Carlos!