4 February

MSVC Backend обновления в Visual Studio 2019 версии 16.3 и 16.4

Microsoft corporate blogProgrammingC++Visual Studio
Translation
Original author: Microsoft
Версии 16.3 и 16.4 Visual Studio 2019 принесли много новых улучшений в качестве генерации кода, пропускной способности сборки и безопасности. Если вы еще не загрузили свою копию, вот краткий обзор того, что вы упустили.



Демонстрация C ++ Build Insights, нового набора инструментов анализа сборки в Visual Studio 2019 версии 16.4.

Visual Studio 2019 версии 16.3


  • Поддержка автоматического векторизатора AVX-512 в параметре /arch:AVX512, позволяющая выполнять логические, арифметические операции, операции с памятью и векторами сокращения, нацеленные на набор инструкций AVX-512.
  • Улучшения в общем инлайнере путем оценки значений переменных и памяти. Включено в /Ob3.
  • Улучшения встраивания небольших функций для ускорения сборки и более эффективного встраивания.
  • Частичная возможность встраивания через косвенные вызовы функций
  • Пакет alias-ов, управляемых потоком данных, добавлен в оптимизатор SSA, что обеспечивает более мощную оптимизацию на основе SSA.
  • Усовершенствования оптимизации общего подвыражения (CSE) направлены на устранение большей загрузки памяти.
  • Вычисление во время компиляции сравнений оператора spaceship на строковых литералах.
  • Автоматическое преобразование fma, fmal, fmaf и std::fma во внутреннюю реализацию FMA, если это поддерживается.
  • Оптимизированная генерация кода при возврате структур размером с регистр с использованием битовых манипуляций с регистрами вместо операций с памятью.
  • Функции __iso_volatile_loadxx и __iso_volatile_storexx, которые позволяют прямое атомарное чтение и запись целочисленных значений.
  • Внутренние версии большинства функций AVX-512, которые ранее были реализованы в виде макросов.
  • Улучшения в выборе инструкций для встроенных функций mm_shuffle и _mm_setps в /arch:AVX2.
  • Досутпность FrameHandler4 (FH4) по умолчанию для платформы AMD64.

Visual Studio 2019 версии 16.4


  • Поддержка AddressSanitizer (ASAN), что позволяет обнаруживать проблемы безопасности памяти во время выполнения.
  • C++ Build Insights, новая коллекция инструментов для понимания и улучшения времени сборки.
  • Значительное улучшение времени генерации кода благодаря использованию до 24 потоков вместо 4, в зависимости от доступных ядер ЦП.
  • Дальнейшее улучшение времени генерации кода за счет улучшения алгоритмов и структур данных, используемых компилятором.
  • Введение новой опции компилятора /d2ReducedOptimizeHugeFunctions для сокращения времени генерации кода за счет исключения дорогих оптимизаций для функций с более чем 20 000 инструкций. Этот порог можно настроить с помощью параметра /d2ReducedOptimizeThreshold:#.
  • Усовершенствования автоматического векторизатора AVX-512, поддержка большего количества форм команд: сравнение переменной ширины, умножение int32, преобразование с плавающей точкой в int-fp. Доступно в /arch:AVX512.
  • Улучшенный анализ потока контроля, чтобы лучше определять, когда значения доказуемо положительны или отрицательны.
  • Включение расширенного inliner, введенного в 16.3 по умолчанию, без использования /Ob3.
  • Встроенная поддержка инструкций ENQCMD и ENQCMDS, которые пишут команды для постановки в регистр.
  • Встроенная поддержка инструкций RDPKRU и WRPKRU, которые считывают и записывают регистр PKRU, доступный в некоторых процессорах Intel.
  • Встроенная поддержка инструкций VP2INTERSECTD и VP2INTERSECTQ, которые генерируют пару масок, указывающих, какие элементы одного вектора соответствуют элементам другого вектора.

Хотите ли вы воспользоваться всеми этими улучшениями? Если да, скачивайте последнюю версию Visual Studio 2019 и делитесь мнениями!
Tags:MSVCBackend UpdatesVisual Studio 2019microsoft
Hubs: Microsoft corporate blog Programming C++ Visual Studio
+6
2.2k 13
Comments 3
Ads
Popular right now