x86: correct what gets disabled by certain ".arch .no*"

Features with prereqs as well as features with dependents cannot re-use
CPU_*_MASK for the 3rd argument of SUBARCH() - they need to use
CPU_ANY_*_MASK in order to avoid disabling too many (when there are
prereqs) and/or too few (when there are dependents) features.

Generally any CPU_ANY_*_MASK which exist should not remain unused.
Exceptions are
- FISTTP which has no corresponding entry in cpu_arch[],
- IAMCU which is a base architecture and hence uses ARCH(), not
  SUBARCH() (only extensions can be disabled, but unlike for Cpu*86 it
  would be a little more clumsy to suppress generating of the #define).
This commit is contained in:
Jan Beulich
2022-12-22 09:33:01 +01:00
parent 4d97c5c833
commit 5091b9ee34

View File

@ -1029,21 +1029,21 @@ static const arch_entry cpu_arch[] =
SUBARCH (vmx, VMX, VMX, false),
SUBARCH (vmfunc, VMFUNC, VMFUNC, false),
SUBARCH (smx, SMX, SMX, false),
SUBARCH (xsave, XSAVE, XSAVE, false),
SUBARCH (xsaveopt, XSAVEOPT, XSAVEOPT, false),
SUBARCH (xsavec, XSAVEC, XSAVEC, false),
SUBARCH (xsaves, XSAVES, XSAVES, false),
SUBARCH (aes, AES, AES, false),
SUBARCH (pclmul, PCLMUL, PCLMUL, false),
SUBARCH (clmul, PCLMUL, PCLMUL, true),
SUBARCH (xsave, XSAVE, ANY_XSAVE, false),
SUBARCH (xsaveopt, XSAVEOPT, ANY_XSAVEOPT, false),
SUBARCH (xsavec, XSAVEC, ANY_XSAVEC, false),
SUBARCH (xsaves, XSAVES, ANY_XSAVES, false),
SUBARCH (aes, AES, ANY_AES, false),
SUBARCH (pclmul, PCLMUL, ANY_PCLMUL, false),
SUBARCH (clmul, PCLMUL, ANY_PCLMUL, true),
SUBARCH (fsgsbase, FSGSBASE, FSGSBASE, false),
SUBARCH (rdrnd, RDRND, RDRND, false),
SUBARCH (f16c, F16C, F16C, false),
SUBARCH (f16c, F16C, ANY_F16C, false),
SUBARCH (bmi2, BMI2, BMI2, false),
SUBARCH (fma, FMA, FMA, false),
SUBARCH (fma4, FMA4, FMA4, false),
SUBARCH (xop, XOP, XOP, false),
SUBARCH (lwp, LWP, LWP, false),
SUBARCH (fma, FMA, ANY_FMA, false),
SUBARCH (fma4, FMA4, ANY_FMA4, false),
SUBARCH (xop, XOP, ANY_XOP, false),
SUBARCH (lwp, LWP, ANY_LWP, false),
SUBARCH (movbe, MOVBE, MOVBE, false),
SUBARCH (cx16, CX16, CX16, false),
SUBARCH (ept, EPT, EPT, false),
@ -1056,8 +1056,8 @@ static const arch_entry cpu_arch[] =
SUBARCH (nop, NOP, NOP, false),
SUBARCH (syscall, SYSCALL, SYSCALL, false),
SUBARCH (rdtscp, RDTSCP, RDTSCP, false),
SUBARCH (3dnow, 3DNOW, 3DNOW, false),
SUBARCH (3dnowa, 3DNOWA, 3DNOWA, false),
SUBARCH (3dnow, 3DNOW, ANY_3DNOW, false),
SUBARCH (3dnowa, 3DNOWA, ANY_3DNOWA, false),
SUBARCH (padlock, PADLOCK, PADLOCK, false),
SUBARCH (pacifica, SVME, SVME, true),
SUBARCH (svme, SVME, SVME, false),
@ -1068,8 +1068,8 @@ static const arch_entry cpu_arch[] =
SUBARCH (rdseed, RDSEED, RDSEED, false),
SUBARCH (prfchw, PRFCHW, PRFCHW, false),
SUBARCH (smap, SMAP, SMAP, false),
SUBARCH (mpx, MPX, MPX, false),
SUBARCH (sha, SHA, SHA, false),
SUBARCH (mpx, MPX, ANY_MPX, false),
SUBARCH (sha, SHA, ANY_SHA, false),
SUBARCH (clflushopt, CLFLUSHOPT, CLFLUSHOPT, false),
SUBARCH (prefetchwt1, PREFETCHWT1, PREFETCHWT1, false),
SUBARCH (se1, SE1, SE1, false),
@ -1085,7 +1085,7 @@ static const arch_entry cpu_arch[] =
SUBARCH (avx_vnni, AVX_VNNI, ANY_AVX_VNNI, false),
SUBARCH (clzero, CLZERO, CLZERO, false),
SUBARCH (mwaitx, MWAITX, MWAITX, false),
SUBARCH (ospke, OSPKE, OSPKE, false),
SUBARCH (ospke, OSPKE, ANY_OSPKE, false),
SUBARCH (rdpid, RDPID, RDPID, false),
SUBARCH (ptwrite, PTWRITE, PTWRITE, false),
SUBARCH (ibt, IBT, IBT, false),
@ -1099,7 +1099,7 @@ static const arch_entry cpu_arch[] =
SUBARCH (cldemote, CLDEMOTE, CLDEMOTE, false),
SUBARCH (amx_int8, AMX_INT8, ANY_AMX_INT8, false),
SUBARCH (amx_bf16, AMX_BF16, ANY_AMX_BF16, false),
SUBARCH (amx_fp16, AMX_FP16, AMX_FP16, false),
SUBARCH (amx_fp16, AMX_FP16, ANY_AMX_FP16, false),
SUBARCH (amx_tile, AMX_TILE, ANY_AMX_TILE, false),
SUBARCH (movdiri, MOVDIRI, MOVDIRI, false),
SUBARCH (movdir64b, MOVDIR64B, MOVDIR64B, false),