Компиляторы могут остаться без поддержки Intel MMX

Набор SIMD-инструкций Intel MMX, представленный в 1997 году, является откровенно устаревшим и уже давно вытеснен различными версиями SSE и AVX. Тем не менее, в средствах разработки они всё ещё формально поддерживаются. Правда, в силу редкости использования, их имплементация страдает от багов. Поэтому неудивительно, что их в очередной раз предложили выкинуть из популярного набора компиляторов LLVM.

В обсуждении, начатом в листах рассылки, предлагается переписать и заменить интринсики для MMX на новые, использующие уже имеющиеся для SSE или, лучше, SSE2. Текущие требуют некоторый внимательности от разработчика, так как при некорректном использовании программа будет не падать, а выдавать некорректные результаты. В дальнейшем предлагается исключить MMX из представления LLVM IR.

sm.pmmx_.800.webp

Единственный способ использования этих инструкций и сопутствующих регистров, если это по какой-то причине действительно нужно — использование ассемблерных вставок непосредственно в коде. Любопытно, что, судя по всему, даже физически отдельных регистров для x87/MMX в современных процессорах уже нет — они делят «кремний» с регистрами для маскирования AVX-512, так как вероятность высокой нагрузки со стороны обоих типов инструкций одновременно крайне маловероятна.

Отказ от MMX, естественно, повысит минимальные требования LLVM. Однако сейчас трудно найти работающую x86-систему, в которой нет поддержки SSE2 или хотя бы SSE. Это перекликается с активизировавшимися призывами отказаться от поддержки старых CPU вообще, 32-битных и без современных инструкций. В частности, Fedora и RHEL уже движутся в этом направлении.

Servernews
 
Назад
Сверху Снизу