Я тестирую на Solaris 11.3 с Sun Studio 12.2. У меня проблемы с получением SSE shuffle для компиляции:
solaris:$ cat test.cxx
#include <stdint.h>
#include <emmintrin.h>
int main(int argc, char* argv[])
{
__m128i a, b;
asm ("pshufb %1, %0" : "+x"(a) : "xm"(b));
return 0;
}
А потом:
solaris:$ /opt/solstudio12.2/bin/CC test.cxx -o test.exe
"test.cxx", line 7: Error: The operand type "__m128i_" is not allowed for the constraint "+x".
1 Error(s) detected.
pshufb
является инструкцией SSSE3, но у меня возникают проблемы с определением, поддерживает ли Sun Studio 12.2 (слишком много постороннего шума во время поиска). Я считаю, что Sun Studio поддерживает это. Sun Studio 12.3 и выше использует встроенную сборку.
Почему я получаю ошибку и как ее исправить?
Задача ещё не решена.
Других решений пока нет …