Ho provato a mescolare l'intrinseco SSE2 e l'assemblatore inline in gcc. Ma se specifico una variabile come xmm0/registro come input, allora in alcuni casi ricevo un errore del compilatore. Esempio:Usa sia l'intrinseco SSE2 che l'assemblatore in-gcc
#include <emmintrin.h>
int main() {
__m128i test = _mm_setzero_si128();
asm ("pxor %%xmm0, %%xmm0" : : "xmm0" (test) :);
}
Quando compilato con gcc version 4.6.1 ottengo:
>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
La cosa strana è che in alcuni casi in cui ho altre variabili di input/registri allora funziona improvvisamente con xmm0 come input ma non xmm1, ecc. E in un altro caso sono stato in grado di specificare xmm0-xmm4 ma non sopra. Un po 'confuso/frustrato per questo: S
Grazie :)
Sei una stella! Grazie :) –