Escolar Documentos
Profissional Documentos
Cultura Documentos
Soma 4 Q30s
Soma 4 Q30s
Ao final do loop interno do algortimo da convoluo utilizando a unidade SSE2 temos, no registrador XMM1, escolhido como acumulador, quatro dwords (32 bits) no formato Q30:
XMM1:
dwQ30_D
dwQ30_C
dwQ30_B
dwQ30_A
XMM0:
dwQ30_D
dwQ30_C
dwQ30_B
dwQ30_A
XMM1:
dwQ30_D
dwQ30_C
dwQ30_B
dwQ30_A
XMM0:
dwQ30_D
dwQ30_B
XMM1:
dwQ30_D
dwQ30_C
dwQ30_B
dwQ30_A
dwQ30_D
dwQ30_C + dwQ30_D
dwQ30_A + dwQ30_B
XMM0:
dwQ30_D
dwQ30_C + dwQ30_D
dwQ30_B
dwQ30_A + dwQ30_B
XMM1:
dwQ30_D
dwQ30_C + dwQ30_D
dwQ30_B
dwQ30_A + dwQ30_B
deslocamos a dqword superior de XMM0 de 64 bits para a direita com psrldq xmm0, 8:
XMM0:
dwQ30_D
dwQ30_C + dwQ30_D
XMM1:
dwQ30_D
dwQ30_C + dwQ30_D
dwQ30_B
dwQ30_A + dwQ30_B
dwQ30_D
dwQ30_C + dwQ30_D
dwQ30_B + dwQ30D
dwQ30_A + dwQ30_B
+
dwQ30_C + dwQ30_D
Finalmente, podemos utilizar a instruo movd para mover a soma completa dos quatro dwords
contida no dword menos significativo de XMM1 para algum registrador de inteiros, por exemplo o
registrador ebx, onde daremos prosseguimento ao processamento:
movd ebx, xmm1.
A tecnologia SSSE3 (note os trs S's) disponibilizou instrues para soma horizontal de inteiros. Se
essa tecnologia estiver disponvel pode-se obter o mesmo resultado utilizando:
phaddd xmm1, xmm0
phaddd xmm1, xmm0
movd ebx, xmm1
fl. 1/1