Buona sera a tutti questa è la mia prima volta che scrivo al forum. Spero di non avere sbagliato la sezione.
Come sapete da ormai un decennio le cpu supportano l'architettura SIMD che ha il grande vantaggio di pemettere le operazioni aritmetiche su dati a 128 bit; Microsoft ,naturalmente, viene in suppoto con l'header xmmintrin.h.
Da molte parti ho letto che le funzioni SIMD sono l'ideale nella grafica perchè permettono di compiere, con una sola operazione, qualsiasi funzione aritmetica su vettori fomati da 4 float (4 float=128 bit= __m128).
Su internet ho però riscontrato dei problemi riguardo l'approccio, infatti ho trovato tale codice
struct Vector4
{
float x, y, z, w;
};
// Add two constant vectors and return the resulting vector
Vector4 SSE_Add ( const Vector4 &Op_A, const Vector4 &Op_B )
{
Vector4 Ret_Vector;
__asm
{
MOV EAX, Op_A // Load pointers into CPU regs
MOV EBX, Op_B
MOVUPS XMM0, [EAX] // Move unaligned vectors to SSE regs
MOVUPS XMM1, [EBX]
ADDPS XMM0, XMM1 // Add vector elements
MOVUPS [Ret_Vector], XMM0 // Save the return vector
}
return Ret_Vector;
}
Il problema nasce ora. Infatti il programma usa l'assembly e le istruzioni PPU, ma allora a che servono le librerie xmmintrin.h ?? a che serve il tipo __m128 se non viene usato nelle tanto osannata matematica vettoriale?? seve solo a rappresentare inutili float a 128 bit??