[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