Announcement

Collapse
No announcement yet.

GCC 11's x86-64 Microarchitecture Feature Levels Are Ready To Roll

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • coder
    replied
    I wish they'd have added a level for Sandybridge, since AVX is a pretty big deal. My employer is still supporting customers with Sandybridge systems (these are appliances with a long service life) and my primary home machines are that generation.

    v4 seems like a hammer for pushing AMD to support AVX-512.

    Leave a comment:


  • ermo
    replied
    FWIW, the ML posts also explicitly suggest that the intent is for x86-64-v2 to include bdver1-3.

    One could argue that x86-64-v1 (and k8) is now mostly relegated to "legacy", while x86-64-v2 is "compatibility" and x86-64-v3 is "reasonably modern".

    Leave a comment:


  • ms178
    replied
    Originally posted by CochainComplex View Post

    well in anyway x86-64 will still support Bulldozer. And there is a good chance that it will be supported under v2. AFAIK the instructionset does not differ much from haswell. Some crucial ones are missing but still might be enough for v2.

    edit.: i have just checked it.https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
    POPCNT required by v2 is only available with ryzen+ on the amd side. All the other pre-ryzen amd architectures might not get v2. this means the old nehalem will profit but an amd 15h (bdver4 - which has already AVX2 ) whatever not?. v2 really looks almost like march=nehalem

    ...one might argue that this is slightly biased. v2 withcout popcnt would less "discriminating".
    Albeit there were some discussions on the mailing lists, I haven't read much debate about the definition of the feature levels in regard to these older AMD CPU's. The first RFC still included a feature level for Ivy Bridge around AVX 1 but that was dropped.

    Not all hope is lost though, I found a discrepancy - the GCC page lists POPCNT as only supported on Zen onwards but Wikipedia states that support for both POPCNT and LZCNT were introduced with Barcelona (https://en.wikipedia.org/wiki/SSE4). "AMD calls this pair of instructions Advanced Bit Manipulation (ABM)."

    Maybe it was an oversight in GCC to not expose POPCNT on Barcelona and onwards? Or Wikipedia is wrong here?

    Update: Ah, I wasn't fast enough to see patstew's and Cochain's newer posts.

    Leave a comment:


  • CochainComplex
    replied
    Originally posted by patstew View Post

    POPCNT is included in 'ABM' for AMD, it's in 'barcelona' (2007) and newer.
    Thx for correcting me!

    Leave a comment:


  • patstew
    replied
    Originally posted by CochainComplex View Post

    well in anyway x86-64 will still support Bulldozer. And there is a good chance that it will be supported under v2. AFAIK the instructionset does not differ much from haswell. Some crucial ones are missing but still might be enough for v2.

    edit.: i have just checked it.https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
    POPCNT required by v2 is only available with ryzen+ on the amd side. All the other pre-ryzen amd architectures might not get v2. this means the old nehalem will profit but an amd 15h (bdver4 - which has already AVX2 ) whatever not?. v2 really looks almost like march=nehalem

    ...one might argue that this is slightly biased. v2 withcout popcnt would less "discriminating".
    POPCNT is included in 'ABM' for AMD, it's in 'barcelona' (2007) and newer.
    Last edited by patstew; 03 November 2020, 08:52 AM.

    Leave a comment:


  • CochainComplex
    replied
    Originally posted by cbxbiker61 View Post
    It seems to be a good idea. Hopefully Bulldozer is supported with x86-64-v2, I don't want to write off those systems quite yet. If it is supported at that level, I might just change my build system to use v2 as its baseline. My build system already accommodates building multiple target versions, although I only turn the multiple target versions on for software that is compute heavy.
    well in anyway x86-64 will still support Bulldozer. And there is a good chance that it will be supported under v2. AFAIK the instructionset does not differ much from haswell. Some crucial ones are missing but still might be enough for v2.

    edit.: i have just checked it.https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
    POPCNT required by v2 is only available with ryzen+ on the amd side. All the other pre-ryzen amd architectures might not get v2. this means the old nehalem will profit but an amd 15h (bdver4 - which has already AVX2 ) whatever not?. v2 really looks almost like march=nehalem

    ...one might argue that this is slightly biased. v2 withcout popcnt would be less "discriminating".

    edit2: as written in the next post by patstew POPCNT is part of ABM - which means pre-ryzen AMD will have not be discriminated.
    Last edited by CochainComplex; 03 November 2020, 08:55 AM.

    Leave a comment:


  • CochainComplex
    replied
    Like a march=XY light Version. So at the end this seems to be a compromise of the Clear Linux approach. Pkg Builder can decide what their minimal arch is and still maintain a "kinda-generic".
    I hope to see this in use for Distro Falvours.
    Maybe there will be more variety like Ubuntu 22.04 x86_64v2, 22.04 x86_64v3 ...this would be nice.
    Last edited by CochainComplex; 03 November 2020, 08:58 AM.

    Leave a comment:


  • cbxbiker61
    replied
    It seems to be a good idea. Hopefully Bulldozer is supported with x86-64-v2, I don't want to write off those systems quite yet. If it is supported at that level, I might just change my build system to use v2 as its baseline. My build system already accommodates building multiple target versions, although I only turn the multiple target versions on for software that is compute heavy.

    Leave a comment:


  • GCC 11's x86-64 Microarchitecture Feature Levels Are Ready To Roll

    Phoronix: GCC 11's x86-64 Microarchitecture Feature Levels Are Ready To Roll

    The Linux x86_64 micro-architecture feature levels have taken shape this year for different feature/performance levels based on a CPU's capabilities. Both LLVM Clang 12 and GCC 11 are ready to go in offering the new x86-64-v2, x86-64-v3, and x86-64-v4 targets...

    http://www.phoronix.com/scan.php?pag...Feature-Levels
Working...
X