et encore mieux, en utilisant xmm4/5 pour eviter une dependance toutes les deux instructions entre les minps/maxps:
__asm
{
mov eax, streamAligned16
mov ebx, count
movaps xmm4, [eax]
add ebx, ebx
movaps xmm5, xmm4
movaps xmm6, xmm4
movaps xmm7, xmm4
lea ebx, [eax + ebx * 8] // end = stream + count*16
add eax, 16
lea ecx, [ebx - 64]
cmp eax, ecx
jg _SkipUnrolled
_LoopUnrolled:
movaps xmm0, [eax]
movaps xmm1, [eax + 0x10]
movaps xmm2, [eax + 0x20]
movaps xmm3, [eax + 0x30]
minps xmm4, xmm0 // <--
maxps xmm5, xmm0 // <--
add eax, 64
minps xmm6, xmm1
maxps xmm7, xmm1
cmp eax, ecx
minps xmm4, xmm2 // <--
maxps xmm5, xmm2 // <--
minps xmm6, xmm3
maxps xmm7, xmm3
jbe _LoopUnrolled
entre 3.5 et 4 * plus rapide que la daube compilee par visual... pfff