Включение GCC инструкций Fused Multiply Add AVX512 при компиляции для процессоров Cascade-Lake

Согласно документации gcc, компиляция с -march = cascadelake не позволяет флаг -AVX512IFMA (который, если я правильно понимаю, включает поддержку инструкций FMA AVX512). Напротив, этот флаг включен, например, при компиляции с -march = cannonlake и -march = tigerlake.

Тем не менее, согласно Intel, процессоры Cascade-Lake фактически включают в себя 2 модуля AVX-512 FMA каждый (вот example, и, насколько я могу судить, это верно для любого процессора Cascade-Lake).

Кто-нибудь может прояснить это поведение? Я неправильно интерпретирую значение флага AVX512IFMA?


person Borbei    schedule 19.12.2020    source источник


Ответы (1)


Блоки AVX-512 FMA на SKX / CSX поддерживают инструкции FMA, которые являются частью расширений AVX512F. Эти инструкции работают с операндами с плавающей запятой. Инструкции AVX512IFMA работают с 52-битовыми целочисленными операндами без знака. Это разные наборы инструкций. В Википедии есть список инструкций для каждого из расширений AVX-512.

person Hadi Brais    schedule 19.12.2020