|
|
|
@ -12,6 +12,12 @@ rec { |
|
|
|
|
broadwell = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "fma" ]; |
|
|
|
|
skylake = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "fma" ]; |
|
|
|
|
skylake-avx512 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "avx512" "fma" ]; |
|
|
|
|
cannonlake = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "avx512" "fma" ]; |
|
|
|
|
icelake-client = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "avx512" "fma" ]; |
|
|
|
|
icelake-server = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "avx512" "fma" ]; |
|
|
|
|
cascadelake = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "avx512" "fma" ]; |
|
|
|
|
cooperlake = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "avx512" "fma" ]; |
|
|
|
|
tigerlake = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "avx512" "fma" ]; |
|
|
|
|
# x86_64 AMD |
|
|
|
|
btver1 = [ "sse3" "ssse3" "sse4_1" "sse4_2" ]; |
|
|
|
|
btver2 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" ]; |
|
|
|
@ -21,6 +27,7 @@ rec { |
|
|
|
|
bdver4 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "sse4a" "aes" "avx" "avx2" "fma" "fma4" ]; |
|
|
|
|
znver1 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "sse4a" "aes" "avx" "avx2" "fma" ]; |
|
|
|
|
znver2 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "sse4a" "aes" "avx" "avx2" "fma" ]; |
|
|
|
|
znver3 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "sse4a" "aes" "avx" "avx2" "fma" ]; |
|
|
|
|
# other |
|
|
|
|
armv5te = [ ]; |
|
|
|
|
armv6 = [ ]; |
|
|
|
@ -41,15 +48,38 @@ rec { |
|
|
|
|
broadwell = [ "haswell" ] ++ inferiors.haswell; |
|
|
|
|
skylake = [ "broadwell" ] ++ inferiors.broadwell; |
|
|
|
|
skylake-avx512 = [ "skylake" ] ++ inferiors.skylake; |
|
|
|
|
|
|
|
|
|
# x86_64 AMD |
|
|
|
|
# TODO: fill this (need testing) |
|
|
|
|
btver1 = [ ]; |
|
|
|
|
btver2 = [ ]; # TODO: fill this (need testing) |
|
|
|
|
bdver1 = [ ]; # TODO: fill this (need testing) |
|
|
|
|
bdver2 = [ ]; # TODO: fill this (need testing) |
|
|
|
|
bdver3 = [ ]; # TODO: fill this (need testing) |
|
|
|
|
bdver4 = [ ]; # TODO: fill this (need testing) |
|
|
|
|
znver1 = [ ]; # TODO: fill this (need testing) |
|
|
|
|
znver2 = [ ]; # TODO: fill this (need testing) |
|
|
|
|
btver2 = [ ]; |
|
|
|
|
bdver1 = [ ]; |
|
|
|
|
bdver2 = [ ]; |
|
|
|
|
bdver3 = [ ]; |
|
|
|
|
bdver4 = [ ]; |
|
|
|
|
# Regarding `skylake` as inferior of `znver1`, there are reports of |
|
|
|
|
# successful usage by Gentoo users and Phoronix benchmarking of different |
|
|
|
|
# `-march` targets. |
|
|
|
|
# |
|
|
|
|
# The GCC documentation on extensions used and wikichip documentation |
|
|
|
|
# regarding supperted extensions on znver1 and skylake was used to create |
|
|
|
|
# this partial order. |
|
|
|
|
# |
|
|
|
|
# Note: |
|
|
|
|
# |
|
|
|
|
# - The succesors of `skylake` (`cannonlake`, `icelake`, etc) use `avx512` |
|
|
|
|
# which no current AMD Zen michroarch support. |
|
|
|
|
# - `znver1` uses `ABM`, `CLZERO`, `CX16`, `MWAITX`, and `SSE4A` which no |
|
|
|
|
# current Intel microarch support. |
|
|
|
|
# |
|
|
|
|
# https://www.phoronix.com/scan.php?page=article&item=amd-znver3-gcc11&num=1 |
|
|
|
|
# https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html |
|
|
|
|
# https://en.wikichip.org/wiki/amd/microarchitectures/zen |
|
|
|
|
# https://en.wikichip.org/wiki/intel/microarchitectures/skylake |
|
|
|
|
znver1 = [ "skylake" ] ++ inferiors.skylake; |
|
|
|
|
znver2 = [ "znver1" ] ++ inferiors.znver1; |
|
|
|
|
znver3 = [ "znver2" ] ++ inferiors.znver2; |
|
|
|
|
|
|
|
|
|
# other |
|
|
|
|
armv5te = [ ]; |
|
|
|
|
armv6 = [ ]; |
|
|
|
|