[llvm-dev] New x86-64 micro-architecture levels
Mallappa, Premachandra via llvm-dev
llvm-dev at lists.llvm.org
Wed Jul 22 09:45:08 PDT 2020
[AMD Public Use]
> That's deliberate, so that we can use the same x86-* names for 32-bit library selection (once we define matching micro-architecture levels there).
Understood.
> If numbers are out, what should we use instead?
> x86-sse4, x86-avx2, x86-avx512? Would that work?
Yes please, I think we have to choose somewhere, above would be more descriptive
> Let's merge Level B into level C then?
I would vote for this.
>> Also we would also like to have dynamic loader support for "zen" /
>> "zen2" as a version of "Level D" and takes preference over Level D,
>> which may have super-optimized libraries from AMD or other vendors.
> *That* shouldn't be too hard to implement if we can nail down the selection criteria. Let's call this Zen-specific Level C x86-zen-avx2 for the sake of exposition.
Some way of specifying a superset of "level C" , that "C" will capture fully.
Zen/zen2 takes precedence over Level C, but not Level D, but falls back to "Level C" or "x86-avx2" but not "x86-avx".
I think it is better to run a x86-zen on a x86-avx2 or x86-avx compared to running on a base x86_64 config.
> With the levels I proposed, these aspects are covered. But if we start to create vendor-specific forks in the feature progression, things get complicated.
I am not strictly proposing OS vendors should create/maintain this (it would be nice if they did), but a support to cached load via system-wide-config. This directory may/will contain a subset of system libs.
> Do you think we need to figure this out in this iteration? If yes, then I really need a semi-formal description of the selection criteria for this x86-zen-avx2 directory, so that I can passed it along with my psABI proposal.
Preference level (decreasing order) (I can only speak for AMD, others please pitch in)
- system wide config to override (in this case x86-zen)
- x86-avx2
- x86-sse4 (or avx, based on how we name and merge Level B)
- default x86_64
More information about the llvm-dev
mailing list