Added Skylake Client and Cannonlake Client processors and features to Clang.
Revised features list for Skylake Server and KNL.
The backend already supports these features.
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
lib/Basic/Targets.cpp | ||
---|---|---|
2341 ↗ | (On Diff #46490) | Are the new names "skl" and "cnl" consistent with what gcc is planning/doing? I suspect that cannonlake might be spelled out, and I'm not at all sure about "skl". I'd rather we not have to change this later, be burdened with more "Legacy name"s, and have to do additional cleanups like this one:
|
2698 ↗ | (On Diff #46490) | Is this right? Does KNL support RTM? |
3240 ↗ | (On Diff #46490) | These additions are in direct conflict with the FIXME and the spirit of r223776. At the very least, there needs to be some discussion before adding them. And like the -march settings, we should make sure we are consistent with what gcc is doing. I agree with @chandlerc that programmers ought to be using the ISA macros, at least when the intent is to check for the existence of a feature. But I can see the utility of the tuning macros, e.g. _tune_slm_. Going forward, we might choose to add just those, i.e. _tune_cannonlake_ and not _cannonlake_. |
3395 ↗ | (On Diff #46490) | Does gcc and/or icc define these same macros? Or at the very least, is there agreement on the the names so that we don't end up with inconsistencies? For example, I don't see any evidence that the MOVBE macro is in use even though the movbe feature has been around for a while. |
Changed cnl to cannonlake,
skx to skylake-avx512, skx remains as legacy, - Skylake Server
skylake means Skylake Client
lib/Basic/Targets.cpp | ||
---|---|---|
3246 ↗ | (On Diff #46891) | Should these also be "skylake" and "cannonlake"? |
lib/Basic/Targets.cpp | ||
---|---|---|
3246 ↗ | (On Diff #46891) | Assuming that we keep them at all, they probably should be renamed. We are trying to get agreement from gcc on the exact spelling of all these pre-defined macros to avoid future headaches. Elena, has there been any progress on that? I think that's the only thing holding up this patch. |
I would avoid adding any new pre-defined macros until we get agreement from gcc and/or icc on the exact spellings. For all the new feature-based macros that you are adding, e.g. MPX, MOVBE, etc., do we have consensus on the spellings?
Also, why did you remove the tests for -march=skylake and -march=cannonlake from predefined-arch-macros.c? I think you want to keep those.
Removed all new predefined macros. Reverted macros check for skylake, skylake-512, cannonlake.