[openal] [PATCH V2] Add some mixer SSE2/4.1 optimisations

Chris Robinson chris.kcat at gmail.com
Tue Jun 3 06:09:29 EDT 2014

On 06/03/2014 12:33 AM, Timothy Arceri wrote:
> +        pos_arr[0] = _mm_cvtsi128_si32(pos4);
> +        pos_arr[1] = _mm_cvtsi128_si32(_mm_shuffle_epi32(pos4, _MM_SHUFFLE(1,1,1,1)));
> +        pos_arr[2] = _mm_cvtsi128_si32(_mm_shuffle_epi32(pos4, _MM_SHUFFLE(2,2,2,2)));
> +        pos_arr[3] = _mm_cvtsi128_si32(_mm_shuffle_epi32(pos4, _MM_SHUFFLE(3,3,3,3)));

I'm quite surprised SSE2 doesn't seem to have an _mm_store_epi32 method. 
Or is it somewhere I'm not seeing? I wonder if it would be worth doing

_mm_store_ps((float*)pos_arr, _mm_castsi128_ps(pos4))

despite the ugly aliasing (assuming it would work, of course).

More information about the openal mailing list