Message ID | klDQRjHsGNLyUfoTY_7IVfFKRRAhSEeHVIYr89lVsb-ufm0FM5_KS2Wok7jCSBaVZXDYTJFmlGNMT7uJxbt0dIyn3m2SLuzdyWsoALd0pi4=@protonmail.com |
---|---|
State | New |
Headers | show |
Series | powerpc: Expose VSX feature test | expand |
Nathan Phillips <waic9e@protonmail.com> writes: > Hope it's OK to submit a small change like this. Trying to familiarize myself > with the patch process. > > My copyright assignment is underway. Ack. > Read the HWCAP auxval key to test for VSX support. Expose result through Please use 2 spaces here ---------------------------^ > the cpu_features interface. > > Preliminary change to prepare for PowerPC optimized libmvec implementations > [BZ #20123]. Enables selecting optimized version at load time in ifunc Likewise. ----^ > resolver. Can't you take it directly from the hwcap variable that is already available when using libc_ifunc or libc_ifunc_redirected? e.g. sysdeps/powerpc/powerpc64/multiarch/memcmp.c
On 28/03/2018 09:16, Tulio Magno Quites Machado Filho wrote: > Nathan Phillips <waic9e@protonmail.com> writes: > >> Hope it's OK to submit a small change like this. Trying to familiarize myself >> with the patch process. >> >> My copyright assignment is underway. > > Ack. > >> Read the HWCAP auxval key to test for VSX support. Expose result through > > Please use 2 spaces here ---------------------------^ > >> the cpu_features interface. >> >> Preliminary change to prepare for PowerPC optimized libmvec implementations >> [BZ #20123]. Enables selecting optimized version at load time in ifunc > > Likewise. ----^ > >> resolver. > > Can't you take it directly from the hwcap variable that is already available > when using libc_ifunc or libc_ifunc_redirected? e.g. > sysdeps/powerpc/powerpc64/multiarch/memcmp.c > > I don't have the original message in my mailbox, was it sent only privately? If it was the case, could you send the original one as well?
Adhemerval Zanella <adhemerval.zanella@linaro.org> writes: > On 28/03/2018 09:16, Tulio Magno Quites Machado Filho wrote: >> Nathan Phillips <waic9e@protonmail.com> writes: >> >>> Hope it's OK to submit a small change like this. Trying to familiarize myself >>> with the patch process. >>> >>> My copyright assignment is underway. >> >> Ack. >> >>> Read the HWCAP auxval key to test for VSX support. Expose result through >> >> Please use 2 spaces here ---------------------------^ >> >>> the cpu_features interface. >>> >>> Preliminary change to prepare for PowerPC optimized libmvec implementations >>> [BZ #20123]. Enables selecting optimized version at load time in ifunc >> >> Likewise. ----^ >> >>> resolver. >> >> Can't you take it directly from the hwcap variable that is already available >> when using libc_ifunc or libc_ifunc_redirected? e.g. >> sysdeps/powerpc/powerpc64/multiarch/memcmp.c >> >> > > I don't have the original message in my mailbox, was it sent only privately? No, it's in the mailing list archives: https://sourceware.org/ml/libc-alpha/2018-03/msg00582.html > If it was the case, could you send the original one as well? Sure! I'm sending it in private to avoid duplicating this in the mailing list.
On 28/03/2018 10:31, Tulio Magno Quites Machado Filho wrote: > Adhemerval Zanella <adhemerval.zanella@linaro.org> writes: > >> On 28/03/2018 09:16, Tulio Magno Quites Machado Filho wrote: >>> Nathan Phillips <waic9e@protonmail.com> writes: >>> >>>> Hope it's OK to submit a small change like this. Trying to familiarize myself >>>> with the patch process. >>>> >>>> My copyright assignment is underway. >>> >>> Ack. >>> >>>> Read the HWCAP auxval key to test for VSX support. Expose result through >>> >>> Please use 2 spaces here ---------------------------^ >>> >>>> the cpu_features interface. >>>> >>>> Preliminary change to prepare for PowerPC optimized libmvec implementations >>>> [BZ #20123]. Enables selecting optimized version at load time in ifunc >>> >>> Likewise. ----^ >>> >>>> resolver. >>> >>> Can't you take it directly from the hwcap variable that is already available >>> when using libc_ifunc or libc_ifunc_redirected? e.g. >>> sysdeps/powerpc/powerpc64/multiarch/memcmp.c >>> >>> >> >> I don't have the original message in my mailbox, was it sent only privately? > > No, it's in the mailing list archives: > https://sourceware.org/ml/libc-alpha/2018-03/msg00582.html > >> If it was the case, could you send the original one as well? > > Sure! I'm sending it in private to avoid duplicating this in the mailing list. > Right, thanks for the link, I missed this one.
Thank you for reviewing. Well noted about the double spaces. On March 28, 2018 6:16 AM, Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com> wrote: > Can't you take it directly from the hwcap variable that is already available > when using libc_ifunc or libc_ifunc_redirected? e.g. > sysdeps/powerpc/powerpc64/multiarch/memcmp.c I hadn't seen that, and it makes sense. The x86 version seems to store everything in cpu_features, then use that to resolve the ifunc. But I see the pattern is different in the PPC section. I propose dropping this patch and I can follow the PPC pattern instead.
diff --git a/sysdeps/powerpc/cpu-features.c b/sysdeps/powerpc/cpu-features.c index 955d4778a6..477c7504b9 100644 --- a/sysdeps/powerpc/cpu-features.c +++ b/sysdeps/powerpc/cpu-features.c @@ -16,6 +16,8 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +#include <errno.h> +#include <sys/auxv.h> #include <stdint.h> #include <cpu-features.h> @@ -26,6 +28,9 @@ static inline void init_cpu_features (struct cpu_features *cpu_features) { + errno = 0; + unsigned long int hwcap = getauxval (AT_HWCAP); + /* Default is to use aligned memory access on optimized function unless tunables is enable, since for this case user can explicit disable unaligned optimizations. */ @@ -36,4 +41,13 @@ init_cpu_features (struct cpu_features *cpu_features) #else cpu_features->use_cached_memopt = false; #endif + + if (errno == ENOENT) + { + cpu_features->vsx = false; + } + else + { + cpu_features->vsx = ((hwcap & PPC_FEATURE_HAS_VSX) != 0); + } } diff --git a/sysdeps/powerpc/cpu-features.h b/sysdeps/powerpc/cpu-features.h index e596385b4b..0248862b8a 100644 --- a/sysdeps/powerpc/cpu-features.h +++ b/sysdeps/powerpc/cpu-features.h @@ -23,6 +23,7 @@ struct cpu_features { bool use_cached_memopt; + bool vsx; }; #endif /* __CPU_FEATURES_H */