Можно ли использовать регистры XMM для выполнения любой 128-битной целочисленной математики?

Мое впечатление точно нет, но, возможно, есть хитрый трюк? Спасибо.


person Upper    schedule 18.07.2011    source источник
comment
Я думаю, что SSE4 поддерживает 128-битные целые числа.   -  person leppie    schedule 19.07.2011
comment
@leppie: нет, это неправильно - есть несколько 64-битных целочисленных операций (например, PADDQ и PSUBQ), но это все, что нужно.   -  person Paul R    schedule 19.07.2011


Ответы (2)


Не напрямую, но есть 64-битные арифметические операции, которые можно легко комбинировать для выполнения 128-битной (или большей) точности.

person Paul R    schedule 19.07.2011
comment
Это возможно, но имейте в виду, что здесь нет операций добавления с переносом, поэтому фактическая реализация может быть медленнее, чем скалярная версия. - person Jasper Bekkers; 19.07.2011
comment
@Jasper: хороший момент - это относительно легко реализовать (хотя и нетривиально), но производительность может быть ненамного лучше, чем просто использование двух 64-битных скалярных ALU, которые есть в большинстве современных процессоров x86. - person Paul R; 20.07.2011

Регистры xmm могут выполнять арифметические операции с 8-, 16-, 32- и 64-битными целыми числами. Он не создает флаг переноса, поэтому вы не можете расширить точность за пределы 64 бит. Математические библиотеки расширенной точности используют регистры общего назначения, которые являются 32-битными или 64-битными, в зависимости от ОС.

person A Fog    schedule 26.07.2011