inline void muladd_fmatrix_fvector(float to[3], float matrix[3][4], float from[3]) { __m128 v1, v2, v3, v4; v1 = _mm_load_ps(&matrix[0]); v2 = _mm_load_ps(&matrix[1]); v3 = _mm_load_ps(&matrix[2]); v4 = _mm_load_ps(from); // stuff v1 = _mm_mul_ps(v1, v4); v2 = _mm_mul_ps(v2, v4); v3 = _mm_mul_ps(v3, v4); v1 = _mm_hadd_ps(v1, v2); v3 = _mm_hadd_ps(v3, _mm_setzero_ps()); v1 = _mm_hadd_ps(v1, v3); v4 = _mm_load_ps(to); v4 = _mm_add_ps(v4,v1); _mm_store_ps(to, v4); }