Я попытался использовать встроенные ассемблеры SSE2 и встроенный ассемблер в gcc. Но если я укажу переменную как xmm0/register в качестве входных данных, то в некоторые случаях я получаю ошибку компилятора. Пример:Использовать встроенный ассемблер SSE2 и встроенный ассемблер gcc
#include <emmintrin.h>
int main() {
__m128i test = _mm_setzero_si128();
asm ("pxor %%xmm0, %%xmm0" : : "xmm0" (test) :);
}
При компиляции с GCC версии 4.6.1 я получаю:
>gcc asm_xmm.c
asm_xmm.c: In function ‘main’:
asm_xmm.c:10:3: error: matching constraint references invalid operand number
asm_xmm.c:7:5: error: matching constraint references invalid operand number
Самое странное в том, что в тех же случаях, когда у меня есть другие входные переменные/регистры, то он вдруг работает с XMM0 как но не xmm1 и т. д. И в другом случае я смог указать xmm0-xmm4, но не выше. Немного запутался/разочарование по этому поводу: S
Спасибо :)
Вы - звезда! Благодаря :) –