Мое впечатление определенно не есть, но, может быть, есть умный трюк? Спасибо.Можно ли использовать регистры XMM для выполнения любой 128-битной целочисленной математики?
ответ
Непосредственно, но есть 64-разрядные арифметические операции, которые можно легко комбинировать для выполнения 128-битной (или большей) точности.
Возможно, но имейте в виду, что нет никаких операций с добавлением-переносом, поэтому фактическая реализация может быть медленнее, чем скалярная версия. –
@ Jasper: хорошая точка - это довольно легко реализовать (хотя и нетривиально), но производительность может быть не намного лучше, чем просто использование двух 64-битных скалярных ALU, которые имеют большинство современных x86-процессоров. –
Регистры xmm могут выполнять арифметику на 8, 16, 32 и 64 битных целых числах. Он не создает флаг переноса, поэтому вы не можете увеличить точность до 64 бит. Библиотеки расширенной точности математики используют регистры общего назначения, которые 32-разрядные или 64-разрядные, в зависимости от ОС.
Я думаю, что SSE4 поддерживает 128-битные целые числа. – leppie
@leppie: нет, это неверно - существует несколько 64-битных целых операций (например, 'PADDQ' и' PSUBQ'), но это далеко не все. –
[Is __int128_t арифметика, эмулируемая GCC, даже с SSE?] (Http://stackoverflow.com/q/16566437/995714) [практичный BigNum AVX/SSE возможен?] (Http://stackoverflow.com/q/27923192/995714) –