LLVM Clang 12 - Микроархитектура x86_64

Опубликовано August@Karro - пт, 10/23/2020 - 20:23

Функциональные уровни x86_64 позволяют легко разделять различные классы Intel/AMD процессоров x86_64 в надежде на то, что дистрибутивы Linux смогут повысить свои базовые требования не только к x86_64/AMD64, но и улучшить инструментальные цепочки компилятора с общим набором возможных уровней/аппаратных возможностей для генерации оптимизированных библиотек. 

Это сочетается с работой, проводимой Red Hat по повышению требований к процессору x86_64 для новых релизов RHEL/Fedora. На прошлой неделе в LLVM Clang 12 была добавлена поддержка x86_64 уровней функциональности в компилятор Clang C/C++, а также ожидается, что GCC 11 в скором времени получит аналогичную функциональность. 

Определенные уровни функций x86_64: 

  • x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2
  • x86-64-v2: (close to Nehalem) CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3
  • x86-64-v3: (close to Haswell) AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE
  • x86-64-v4: AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL

Различные уровни/версии теперь могут быть добавлены в -march= для Clang 12 и GCC 11, если вы хотите оптимизировать для одной из этих целей, а не указывать конкретные расширения набора инструкций вручную.  


 

Последние материалы