This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH/AARCH64] Improved -mcpu/mtune/march=native handling


On 11.11.16 11:06, Richard Earnshaw wrote:
On 11/11/16 02:56, Andrew Pinski wrote:
As I mentioned in my other emails, parsing /proc/cpuinfo has one issue
is that the current parsing assumes many different things about the
format.  So the best way to do this is to parse
/sys/devices/system/cpu/cpuN/regs/identification/midr_el1 files
instead.  To get which cpu are present (though not necessarily online)
we parse "/sys/devices/system/cpu/present" file.  We fall back to
parsing /proc/cpu if any parsing fails of these files including not
finding out which cpu we are on.  The main reason why we fall back is
because only newer kernels support exporting this file.  To get the
features I just look at the hwcap that the kernel passes to userspace
so I needed to add an extra argument to AARCH64_OPT_EXTENSION.  I also
had to define some HWCAP_* macros in driver-aarch64.c since older
kernels headers don't have these values defined.

It should also be possible to parse
/sys/devices/system/cpu/cpu%d/cache%d directory to get cache
information too but that is left for another patch and another time.

Since I don't have access to a big.LITTLE system, someone should test
there with a new enough kernel; I was using stock 4.9.0-rc3.

OK?  Bootstrapped and tested on ThunderX on aarch64-linux-gnu with no
regressions and making sure /proc/cpuinfo is not read (by using
strace).

Thanks,
Andrew Pinski

ChangeLog:
* config/aarch64/aarch64-option-extensions.def: Document extra
argument to AARCH64_OPT_EXTENSION.  Update for the extra argument for
all of the option extensions.
* config/aarch64/driver-aarch64.c: Include sys/auxv.h and asm/hwcap.h.

GCC supports native builds on freebsd as well as linux.  Isn't this
going to break that?

It will.
Andreas

R.

(HWCAP_CRC32): Define if needed.
(HWCAP_ATOMICS): Likewise.
(HWCAP_FPHP): Likewise.
(HWCAP_ASIMDHP): Likewise.
(aarch64_arch_extension): New field hwcap_mask.
(AARCH64_OPT_EXTENSION): Handle extra argument.
(AARCH64_BIG_LITTLE): Always put the larger core number first.
(valid_bL_core_p): Don't check AARCH64_BIG_LITTLE for the opposite
order as it already handles the order.
(implementor_from_midr): New function.
(part_no_from_midr): New function.
(sysfsformat): New define.
(host_detect_local_cpu_sys): New function.
(host_detect_local_cpu): Call host_detect_local_cpu_sys if opening
"/sys/devices/system/cpu/present" file worked.
* common/config/aarch64/aarch64-common.c (AARCH64_OPT_EXTENSION):
Handle extra argument.





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]