2017-09-10 4 views
3

Wie (in C/C++) 32-Bit-Integer zu den niedrigen 32 Bits eines SSE-Registers laden, während der Rest undefiniert bleibt? Ich meine etwas wie vmovd xmm0, eax mit der gleichen Effizienz.C/C++ intrinsisch für Assembly VMOVD

+1

'vmovd = _mm_cvtsi32_si128' aber ich denke du weißt das, also warum wäre das nicht angemessen? – harold

+0

@harold, ich wusste es nicht, danke! –

+3

In Intels Intrinsics Guide könnten Sie nach '(int' suchen, um intrinsics zu finden, wobei der erste Parameter ein 'int' oder' int * 'ist. (Siehe [sse tag wiki] (https://stackoverflow.com/tags (sse/info) für Links) Oder Sie könnten nach 'movd' suchen, um intrinsics für' movd' zu finden, im intrinsics guide oder im insn ref manual von Intel: http://felixcloutier.com/x86/MOVD:MOVQ.html –

Antwort

4

Wahrscheinlich suchen Sie nach dem intrinsischen _mm_cvtsi32_si128 (int a). Dies kopiert die unteren 32 Bits. Die oberen Bits sind auf Null gesetzt.