[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#53895] [PATCH 0/5] More CPU detection
From: |
Ludovic Courtès |
Subject: |
[bug#53895] [PATCH 0/5] More CPU detection |
Date: |
Wed, 09 Feb 2022 11:35:22 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
Hi!
Efraim Flashner <efraim@flashner.co.il> skribis:
> * guix/cpu.scm (cpu->gcc-architecture): Rewrite detection based on
> detected feature flags.
[...]
> ;; Transcribed from GCC's 'host_detect_local_cpu' in driver-i386.c.
> (or (and (= 6 (cpu-family cpu)) ;the "Pentium Pro" family
> - (letrec-syntax ((model (syntax-rules (=>)
> - ((_) #f)
> - ((_ (candidate => integers ...) rest
> - ...)
> - (or (and (= (cpu-model cpu) integers)
> - candidate)
> - ...
> - (model rest ...))))))
> - (model ("bonnel" => #x1c #x26)
> - ("silvermont" => #x37 #x4a #x4d #x5a #x5d)
> - ("core2" => #x0f #x17 #x1d)
> - ("nehalem" => #x1a #x1e #x1f #x2e)
> - ("westmere" => #x25 #x2c #x2f)
> - ("sandybridge" => #x2a #x2d)
> - ("ivybridge" => #x3a #x3e)
> - ("haswell" => #x3c #x3f #x45 #x46)
> - ("broadwell" => #x3d #x47 #x4f #x56)
> - ("skylake" => #x4e #x5e #x8e #x9e)
> - ("skylake-avx512" => #x55) ;TODO: cascadelake
> - ("knl" => #x57)
> - ("cannonlake" => #x66)
> - ("knm" => #x85))))
> + (letrec-syntax ((if-flags (syntax-rules (=>)
> + ((_)
> + #f)
> + ((_ (flags ... => name) rest ...)
> + (if (every (lambda (flag)
> + (set-contains?
> (cpu-flags cpu)
> + flag))
> + '(flags ...))
> + name
> + (if-flags rest ...))))))
> +
> + (if-flags ("avx" "avx512vp2intersect" "tsxldtrk" =>
> "sapphirerapids")
> + ("avx" "avx512vp2intersect" => "tigerlake")
> + ("avx" "avx512bf16" => "cooperlake")
> + ("avx" "wbnoinvd" => "icelake-server")
> + ("avx" "avx512bitalg" => "icelake-client")
> + ("avx" "avx512vbmi" => "cannonlake")
In current master, the logic is:
if it’s an intel
then pick the model ID
if that didn’t work
then do feature-based detection
Here you’re removing the first part (using the Intel model ID) and
extending the second part. Perhaps we could extend the second part but
still keep the first one?
The AMD detection code would have to go before the generic fallback case
though.
WDYT?
Ludo’.
[bug#53895] [PATCH 4/5] gnu: gcc: Add compiler-cpu-architectures for armhf., Efraim Flashner, 2022/02/09