📄 vectdct.asm
字号:
movq mm3, mm6
psrad mm5, 15
;mm5--Result3 Result2
packssdw mm2, mm5
movq mm4, mm7
pmaddwd mm3, [edi+80]
paddd mm0, mm1
movq [edx+64], mm2
movq mm2, mm0
pmaddwd mm4, [edi+88]
movq mm1, mm7
pmaddwd mm1, [edi+104]
psrlq mm2, 32
paddd mm2, mm0
movq mm0, mm6
pmaddwd mm0, [edi+96]
paddd mm3, mm4
movq mm5, mm3
movq mm4, mm7
pmaddwd mm4, [edi+120]
psrlq mm5, 32
paddd mm3, mm5
paddd mm0, mm1
punpckldq mm2,mm3
movq mm3, mm6
pmaddwd mm3, [edi+112]
psrad mm2, 15
;mm2--Result1 Result0
movq mm5, mm0
psrlq mm0, 32
paddd mm5, mm0
movq mm0, [esi+80]
paddd mm3, mm4
movq mm6, mm0
movq mm1, mm3
pmaddwd mm0, [edi]
psrlq mm1, 32
paddd mm3, mm1
movq mm1, [esi+88]
punpckldq mm5, mm3
movq mm7, mm1
psrad mm5, 15
;mm5--Result3 Result2
pmaddwd mm1, [edi+8]
packssdw mm2, mm5
movq mm3, mm6
movq mm4, mm7
movq [edx+72], mm2
pmaddwd mm3, [edi+16]
paddd mm0, mm1
pmaddwd mm4, [edi+24]
movq mm1, mm7
pmaddwd mm1, [edi+40]
movq mm2, mm0
psrlq mm2, 32
paddd mm2, mm0
movq mm0, mm6
pmaddwd mm0, [edi+32]
paddd mm3, mm4
movq mm4, mm7
movq mm5, mm3
pmaddwd mm4, [edi+56]
psrlq mm5, 32
paddd mm0, mm1
paddd mm3, mm5
punpckldq mm2, mm3
movq mm3, mm6
pmaddwd mm3, [edi+48]
psrad mm2, 15
;mm2--Result1 Result0
movq mm5, mm0
psrlq mm0, 32
paddd mm5, mm0
movq mm0, mm6
pmaddwd mm0, [edi+64]
paddd mm3, mm4
movq mm1, mm3
psrlq mm3, 32
paddd mm3, mm1
movq mm1, mm7
pmaddwd mm1, [edi+72]
punpckldq mm5, mm3
movq mm3, mm6
psrad mm5, 15
;mm5--Result3 Result2
packssdw mm2, mm5
movq mm4, mm7
pmaddwd mm3, [edi+80]
paddd mm0, mm1
movq [edx+80], mm2
movq mm2, mm0
pmaddwd mm4, [edi+88]
movq mm1, mm7
pmaddwd mm1, [edi+104]
psrlq mm2, 32
paddd mm2, mm0
movq mm0, mm6
pmaddwd mm0, [edi+96]
paddd mm3, mm4
movq mm5, mm3
movq mm4, mm7
pmaddwd mm4, [edi+120]
psrlq mm5, 32
paddd mm3, mm5
paddd mm0, mm1
punpckldq mm2, mm3
movq mm3, mm6
pmaddwd mm3, [edi+112]
psrad mm2, 15
;mm2--Result1 Result0
movq mm5, mm0
psrlq mm0, 32
paddd mm5, mm0
movq mm0, [esi+96]
paddd mm3, mm4
movq mm1, mm3
psrlq mm3, 32
movq mm6, mm0
paddd mm3, mm1
pmaddwd mm0, [edi]
punpckldq mm5, mm3
movq mm1, [esi+104]
psrad mm5, 15
movq mm7, mm1
packssdw mm2, mm5
;mm5--Result3 Result2
pmaddwd mm1, [edi+8]
movq mm3, mm6
movq [edx+88], mm2
movq mm4, mm7
pmaddwd mm3, [edi+16]
pmaddwd mm4, [edi+24]
paddd mm0, mm1
movq mm2, mm0
movq mm1, mm7
pmaddwd mm1, [edi+40]
psrlq mm2, 32
paddd mm2, mm0
movq mm0, mm6
pmaddwd mm0, [edi+32]
paddd mm3, mm4
movq mm4, mm7
movq mm5, mm3
pmaddwd mm4, [edi+56]
psrlq mm5, 32
paddd mm0, mm1
paddd mm3, mm5
punpckldq mm2, mm3
movq mm3, mm6
pmaddwd mm3, [edi+48]
psrad mm2, 15
;mm2--Result1 Result0
movq mm5, mm0
psrlq mm0, 32
paddd mm5, mm0
movq mm0, mm6
pmaddwd mm0, [edi+64]
paddd mm3, mm4
movq mm1, mm3
psrlq mm3, 32
paddd mm3, mm1
movq mm1, mm7
pmaddwd mm1, [edi+72]
punpckldq mm5, mm3
movq mm3, mm6
psrad mm5, 15
;mm5--Result3 Result2
packssdw mm2, mm5
movq mm4, mm7
pmaddwd mm3, [edi+80]
paddd mm0, mm1
movq [edx+96], mm2
movq mm2, mm0
pmaddwd mm4, [edi+88]
movq mm1, mm7
pmaddwd mm1, [edi+104]
psrlq mm2, 32
paddd mm2, mm0
movq mm0, mm6
pmaddwd mm0, [edi+96]
paddd mm3, mm4
movq mm5, mm3
movq mm4, mm7
pmaddwd mm4, [edi+120]
psrlq mm5, 32
paddd mm3, mm5
paddd mm0, mm1
punpckldq mm2, mm3
movq mm3, mm6
pmaddwd mm3, [edi+112]
psrad mm2, 15
;mm2--Result1 Result0
movq mm5, mm0
psrlq mm0, 32
paddd mm5, mm0
movq mm0, [esi+112]
paddd mm3, mm4
movq mm1, mm3
psrlq mm3, 32
movq mm6, mm0
paddd mm3, mm1
pmaddwd mm0, [edi]
punpckldq mm5, mm3
movq mm1, [esi+120]
psrad mm5, 15
movq mm7, mm1
packssdw mm2, mm5
;mm5--Result3 Result2
pmaddwd mm1, [edi+8]
movq mm3, mm6
movq [edx+104], mm2
movq mm4, mm7
pmaddwd mm3, [edi+16]
pmaddwd mm4, [edi+24]
paddd mm0, mm1
movq mm2, mm0
movq mm1, mm7
pmaddwd mm1, [edi+40]
psrlq mm2, 32
paddd mm2, mm0
movq mm0, mm6
pmaddwd mm0, [edi+32]
paddd mm3, mm4
movq mm4, mm7
movq mm5, mm3
pmaddwd mm4, [edi+56]
psrlq mm5, 32
paddd mm0, mm1
paddd mm3, mm5
punpckldq mm2, mm3
movq mm3, mm6
pmaddwd mm3, [edi+48]
psrad mm2, 15
;mm2--Result1 Result0
movq mm5, mm0
psrlq mm0, 32
paddd mm5, mm0
movq mm0, mm6
pmaddwd mm0, [edi+64]
paddd mm3, mm4
movq mm1, mm3
psrlq mm3, 32
paddd mm3, mm1
movq mm1, mm7
pmaddwd mm1, [edi+72]
punpckldq mm5, mm3
movq mm3, mm6
psrad mm5, 15
;mm5--Result3 Result2
packssdw mm2, mm5
movq mm4, mm7
pmaddwd mm3, [edi+80]
paddd mm0, mm1
movq [edx+112], mm2
movq mm2, mm0
pmaddwd mm4, [edi+88]
movq mm1, mm7
pmaddwd mm1, [edi+104]
psrlq mm2, 32
paddd mm2, mm0
movq mm0, mm6
pmaddwd mm0, [edi+96]
paddd mm3, mm4
movq mm4, mm7
movq mm5, mm3
pmaddwd mm4, [edi+120]
psrlq mm5, 32
paddd mm3, mm5
paddd mm0, mm1
punpckldq mm2, mm3
movq mm3, mm6
pmaddwd mm3, [edi+112]
psrad mm2, 15
;mm2--Result1 Result0
movq mm5, mm0
psrlq mm0, 32
pop edi
paddd mm5, mm0
paddd mm3, mm4
movq mm1, mm3
psrlq mm3, 32
paddd mm3, mm1
punpckldq mm5, mm3
psrad mm5, 15
;mm5--Result3 Result2
packssdw mm2, mm5
movq [edx+120], mm2
pop edx
emms
ret
MatrixMulti ENDP
COMMENT ^
void MatrixTrans(short *Src);
^
MatrixTrans PROC NEAR C USES ESI,
Src:PTR SWORD
mov esi, Src
movq mm0, [esi]
movq mm1, [esi+16]
movq mm6, mm0
movq mm2, [esi+32]
movq mm3, [esi+48]
movq mm7, mm2
punpcklwd mm0, mm1
punpcklwd mm2, mm3
movq mm5, mm0
punpckldq mm0, mm2
punpckhdq mm5, mm2
movq [esi], mm0
punpckhwd mm6, mm1
movq [esi+16],mm5
punpckhwd mm7, mm3
movq mm0, [esi+8]
movq mm5, mm6
movq mm1, [esi+24]
punpckldq mm6, mm7
movq mm2, [esi+40]
punpckhdq mm5, mm7
movq [esi+32],mm6
movq mm7, mm2
movq mm3, [esi+56]
movq mm6, mm0
movq [esi+48],mm5
punpcklwd mm0, mm1
punpcklwd mm2, mm3
movq mm5, mm0
movq mm4, [esi+64]
punpckldq mm0, mm2
punpckhdq mm5, mm2
movq [esi+64],mm0
punpckhwd mm6, mm1
movq mm0, [esi+80]
punpckhwd mm7, mm3
movq [esi+80],mm5
movq mm2, [esi+96]
movq mm5, mm6
movq mm3, [esi+112]
punpckldq mm6, mm7
movq mm1, mm0
punpckhdq mm5, mm7
movq [esi+96],mm6
movq mm0, mm4
movq [esi+112],mm5
movq mm6, mm0
movq mm7, mm2
punpcklwd mm0, mm1
punpcklwd mm2, mm3
movq mm5, mm0
punpckldq mm0, mm2
punpckhdq mm5, mm2
movq [esi+8],mm0
punpckhwd mm6, mm1
movq [esi+24],mm5
punpckhwd mm7, mm3
movq mm0, [esi+72]
movq mm5, mm6
movq mm1, [esi+88]
punpckldq mm6, mm7
movq mm2, [esi+104]
punpckhdq mm5, mm7
movq [esi+40],mm6
movq mm7, mm2
movq [esi+56],mm5
movq mm6, mm0
movq mm3, [esi+120]
punpcklwd mm0, mm1
punpcklwd mm2, mm3
movq mm5, mm0
punpckldq mm0, mm2
punpckhdq mm5, mm2
movq [esi+72], mm0
punpckhwd mm6, mm1
movq [esi+88],mm5
punpckhwd mm7, mm3
movq mm5, mm6
punpckldq mm6, mm7
punpckhdq mm5, mm7
movq [esi+104],mm6
movq [esi+120],mm5
emms
ret
MatrixTrans ENDP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -