[clang] [X86] Emit Warnings for frontend options to enable knl/knm. (PR #75580)

Phoebe Wang via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 19 06:50:36 PST 2023


phoebewang wrote:

> Can you give me a better idea of the stages you intend to follow with this. The patch title suggests removing all KNL/KNM handling but the patch itself looks to be just about the KNL/KNM specific features.
> 
> Removing the (incomplete) KNL/KNM specific features (ER/PF/etc) I don't think will be any major cause for concern, ideally we'd keep support at the assembly level only (which has been suggested for MMX as well at some point). But even that might not be necessary.


It's a good idea to preserve the assembly level support. I think GCC's proposal just wants to deprecate GCC support rather than remove support from binutils too.

> But what do you expect to happen if a KNL workstation attempts to use clang 19 with `-march=native`? Do we still enable it as a AVX512F+AVX512CD target or are you suggesting we degrade it to match x86-64-v3 arch spec?

There're discussions in GCC mailing loop about `-mtune/arch=knl`. IIUC, the final decision is to remove the march support too. For `-march=native`, I'm not sure whether we detect it by CPU model or feature list. For the former, we didn't remove the KNL/KNM model, we can emit error for it; for the latter, we can return an approaching target has the same (remaining) features.

> How can the test cases then can be simplified? Are you suggesting that we merge more of the AVX512 attributes in X86.td (e.g. AVX512VL always enables BW/DQ / VBMI2 enables VBMI etc?).

I think we can't make AVX512VL being implied by default, but can gradually relax a lot of `Subtarget.hasVLX()` in CPP and TD files. We don't need to test the combinations that have AVX512 features but no AVX512VL and remove them from existing tests gradually.

>From the developmental trend of HW design, I don't think we will fall back to support 512-bit only features in the future. So from my point of view, simplifying backend design and testing would be the major benefit we can achieve.

https://github.com/llvm/llvm-project/pull/75580


More information about the cfe-commits mailing list