CPU flags¶
archdetect’s x86 spec (eessi_arch_x86.spec) requires the flags that separate one EESSI target from the previous one. GCC -march for that same target enables a larger set. A flag in the march set and absent from the spec is unchecked: a CPU can miss it and still be given that directory. The guard adds one check on top of that spec, waitpkg, for the marches in Detection and matching. Every other name below stays unchecked.
The names are /proc/cpuinfo flags. Where the spelling differs, pni is SSE3, abm is LZCNT, bmi1 is BMI, pclmulqdq is PCLMUL, rdrand is RDRND, 3dnowprefetch is PREFETCHW, and sha_ni is SHA. avx512vbmi and avx512ifma have no underscore. PTA_64BIT, PTA_NO_SAHF, and PTA_EVEX512 are compiler-internal and have no cpuinfo flag, so this page leaves them out. The lists are GCC 15.2.0 gcc/config/i386/i386.h. Trunk’s graniterapids also adds PTA_AVX10_1 (avx10_1). This page leaves that flag out. archdetect leaves it unchecked. novalake is in the guard’s waitpkg set and has no march list here.
icelake is compared with -march=icelake-server. graniterapids shares the Sapphire Rapids spec flags: archdetect upgrades a Sapphire Rapids flag match when the CPU is family 6 model 173 or 174. graniterapids-d has no archdetect spec line; its extra flag over graniterapids is amx_complex. alderlake, tremont, sierraforest, grandridge, arrowlake, arrowlake-s, clearwaterforest, pantherlake, diamondrapids, and novalake have no spec line. archdetect selects them only when a candidate string already names them. The guard still requires waitpkg on that leaf and leaves the rest of the march unchecked.
haswell (-march=haswell; spec avx2 fma): abm, avx, bmi1, bmi2, cx16, f16c, fsgsbase, fxsr, hle, mmx, movbe, pclmulqdq, pni, popcnt, rdrand, sse, sse2, sse4_1, sse4_2, ssse3, xsave, xsaveopt.
skylake_avx512 (-march=skylake-avx512; spec avx2 fma avx512f avx512bw avx512cd avx512dq avx512vl): 3dnowprefetch, abm, adx, aes, avx, bmi1, bmi2, clflushopt, clwb, cx16, f16c, fsgsbase, fxsr, hle, mmx, movbe, pclmulqdq, pku, pni, popcnt, rdrand, rdseed, sgx, sse, sse2, sse4_1, sse4_2, ssse3, xsave, xsavec, xsaveopt, xsaves.
cascadelake (-march=cascadelake; spec adds avx512_vnni): 3dnowprefetch, abm, adx, aes, avx, bmi1, bmi2, clflushopt, clwb, cx16, f16c, fsgsbase, fxsr, hle, mmx, movbe, pclmulqdq, pku, pni, popcnt, rdrand, rdseed, sgx, sse, sse2, sse4_1, sse4_2, ssse3, xsave, xsavec, xsaveopt, xsaves.
icelake (-march=icelake-server; spec adds avx512_vbmi2): 3dnowprefetch, abm, adx, aes, avx, avx512_bitalg, avx512_vpopcntdq, avx512ifma, avx512vbmi, bmi1, bmi2, clflushopt, clwb, cx16, f16c, fsgsbase, fxsr, gfni, hle, mmx, movbe, pclmulqdq, pconfig, pku, pni, popcnt, rdpid, rdrand, rdseed, sgx, sha_ni, sse, sse2, sse4_1, sse4_2, ssse3, vaes, vpclmulqdq, wbnoinvd, xsave, xsavec, xsaveopt, xsaves.
sapphirerapids (-march=sapphirerapids; spec avx2 fma avx512f avx512bw avx512cd avx512dq avx512vl avx512_bf16 amx_tile): 3dnowprefetch, abm, adx, aes, amx_bf16, amx_int8, avx, avx512_bitalg, avx512_fp16, avx512_vbmi2, avx512_vnni, avx512_vpopcntdq, avx512ifma, avx512vbmi, avx_vnni, bmi1, bmi2, cldemote, clflushopt, clwb, cx16, enqcmd, f16c, fsgsbase, fxsr, gfni, hle, mmx, movbe, movdir64b, movdiri, pclmulqdq, pconfig, pku, pni, popcnt, ptwrite, rdpid, rdrand, rdseed, serialize, sgx, sha_ni, sse, sse2, sse4_1, sse4_2, ssse3, tsxldtrk, uintr, vaes, vpclmulqdq, waitpkg, wbnoinvd, xsave, xsavec, xsaveopt, xsaves.
graniterapids (-march=graniterapids; same spec flags as sapphirerapids): 3dnowprefetch, abm, adx, aes, amx_bf16, amx_fp16, amx_int8, avx, avx512_bitalg, avx512_fp16, avx512_vbmi2, avx512_vnni, avx512_vpopcntdq, avx512ifma, avx512vbmi, avx_vnni, bmi1, bmi2, cldemote, clflushopt, clwb, cx16, enqcmd, f16c, fsgsbase, fxsr, gfni, hle, mmx, movbe, movdir64b, movdiri, pclmulqdq, pconfig, pku, pni, popcnt, prefetchi, ptwrite, rdpid, rdrand, rdseed, serialize, sgx, sha_ni, sse, sse2, sse4_1, sse4_2, ssse3, tsxldtrk, uintr, vaes, vpclmulqdq, waitpkg, wbnoinvd, xsave, xsavec, xsaveopt, xsaves.
graniterapids-d (-march=graniterapids-d; no spec line): the graniterapids list, plus amx_complex.
zen2 (-march=znver2; spec avx2 fma): 3dnowprefetch, abm, adx, aes, avx, bmi1, bmi2, clflushopt, clwb, clzero, cx16, f16c, fsgsbase, fxsr, mmx, movbe, mwaitx, pclmulqdq, pni, popcnt, rdpid, rdrand, rdseed, sha_ni, sse, sse2, sse4_1, sse4_2, sse4a, ssse3, wbnoinvd, xsave, xsavec, xsaveopt, xsaves.
zen3 (-march=znver3; spec adds vaes): 3dnowprefetch, abm, adx, aes, avx, bmi1, bmi2, clflushopt, clwb, clzero, cx16, f16c, fsgsbase, fxsr, mmx, movbe, mwaitx, pclmulqdq, pku, pni, popcnt, rdpid, rdrand, rdseed, sha_ni, sse, sse2, sse4_1, sse4_2, sse4a, ssse3, vpclmulqdq, wbnoinvd, xsave, xsavec, xsaveopt, xsaves.
zen4 (-march=znver4; spec adds avx512f avx512ifma): 3dnowprefetch, abm, adx, aes, avx, avx512_bf16, avx512_bitalg, avx512_vbmi2, avx512_vnni, avx512_vpopcntdq, avx512bw, avx512cd, avx512dq, avx512vbmi, avx512vl, bmi1, bmi2, clflushopt, clwb, clzero, cx16, f16c, fsgsbase, fxsr, gfni, mmx, movbe, mwaitx, pclmulqdq, pku, pni, popcnt, rdpid, rdrand, rdseed, sha_ni, sse, sse2, sse4_1, sse4_2, sse4a, ssse3, vpclmulqdq, wbnoinvd, xsave, xsavec, xsaveopt, xsaves.
zen5 (-march=znver5; spec adds avx512_vp2intersect avx_vnni movdiri): 3dnowprefetch, abm, adx, aes, avx, avx512_bf16, avx512_bitalg, avx512_vbmi2, avx512_vnni, avx512_vpopcntdq, avx512bw, avx512cd, avx512dq, avx512vbmi, avx512vl, bmi1, bmi2, clflushopt, clwb, clzero, cx16, f16c, fsgsbase, fxsr, gfni, mmx, movbe, movdir64b, mwaitx, pclmulqdq, pku, pni, popcnt, prefetchi, rdpid, rdrand, rdseed, sha_ni, sse, sse2, sse4_1, sse4_2, sse4a, ssse3, vpclmulqdq, wbnoinvd, xsave, xsavec, xsaveopt, xsaves.