2015-03-18 4 views
1

Intel обеспечивает несколько SIMD команд, которые, кажется, все выполняет побитовое исключающие данные 128bit:В чем разница между этим 128-битным SIMD XOR операций

_mm_xor_pd(__m128d, __m128d) 
_mm_xor_ps(__m128, __m128) 
_mm_xor_si128(__m128i, __m128i) 

Не битовые операции работают только на битовых потоках? Почему существуют три операции с разными типами, но с одинаковыми размерами данных?

ответ

1

_mm_xor_pd (__ m128d, __m128d) работает на двух 64-битных двойной точности поплавки

[https://msdn.microsoft.com/en-us/library/w87cdc33%28v=vs.90%29.aspx1

_mm_xor_ps (__ m128d, __m128d) действует на четыре 32-битных одинарной точности поплавки

https://msdn.microsoft.com/en-us/library/ss6k3wk8(v=vs.90).aspx

_mm_xor_si128 (__ m128d, __m128d) работает с одним 128-битным значением

https://msdn.microsoft.com/en-us/library/fzt08www%28v=vs.90%29.aspx

XOR может использоваться между любыми двумя двоичными числами независимо от их формата. Почему три? Потому что это баланс для поддержки общих типов данных (float, double и 128 bits) и не имеет двух команд.

Баланс - это количество используемого кремния, так как каждый набор операций может возникать в отдельных функциональных единицах (целое число, поплавок, двойное). Если они используют другой кремний, все различные типы операций могут выполняться параллельно.

2

С строгой точки зрения C они отличаются друг от друга по типам.

Они также могут быть подсказками для процессоров, о каких типах данных вы собираетесь управлять. По крайней мере, это лучшая интерпретация, с которой стоит experts. По их словам, это должно быть проверено на оборудовании, хотя.

Смежные вопросы