19 |
; * along with this program; if not, write to the Free Software |
; * along with this program; if not, write to the Free Software |
20 |
; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
21 |
; * |
; * |
22 |
; * $Id: fdct_mmx_skal.asm,v 1.4 2004-08-21 11:52:50 edgomez Exp $ |
; * $Id: fdct_mmx_skal.asm,v 1.8 2008-08-19 09:06:48 Isibaar Exp $ |
23 |
; * |
; * |
24 |
; ***************************************************************************/ |
; ***************************************************************************/ |
25 |
|
|
27 |
|
|
28 |
%macro cglobal 1 |
%macro cglobal 1 |
29 |
%ifdef PREFIX |
%ifdef PREFIX |
30 |
|
%ifdef MARK_FUNCS |
31 |
|
global _%1:function %1.endfunc-%1 |
32 |
|
%define %1 _%1:function %1.endfunc-%1 |
33 |
|
%else |
34 |
global _%1 |
global _%1 |
35 |
%define %1 _%1 |
%define %1 _%1 |
36 |
|
%endif |
37 |
|
%else |
38 |
|
%ifdef MARK_FUNCS |
39 |
|
global %1:function %1.endfunc-%1 |
40 |
%else |
%else |
41 |
global %1 |
global %1 |
42 |
%endif |
%endif |
43 |
|
%endif |
44 |
%endmacro |
%endmacro |
45 |
|
|
46 |
;;; Define this if you want an unrolled version of the code |
;;; Define this if you want an unrolled version of the code |
378 |
paddd mm2, mm3 ; [ out0 | out1 ] |
paddd mm2, mm3 ; [ out0 | out1 ] |
379 |
pmaddwd mm7, mm1 ; [a0.M10+a1.M11 | b0.M26+b1.M27] |
pmaddwd mm7, mm1 ; [a0.M10+a1.M11 | b0.M26+b1.M27] |
380 |
psrad mm2, 16 |
psrad mm2, 16 |
381 |
pmaddwd mm0, qword [%3 + 48] ; [a0.M12+a1.M13 | b0.M28+b1.M29] |
pmaddwd mm0, [%3 + 48] ; [a0.M12+a1.M13 | b0.M28+b1.M29] |
382 |
paddd mm4, mm5 ; [ out2 | out3 ] |
paddd mm4, mm5 ; [ out2 | out3 ] |
383 |
pmaddwd mm1, qword [%3 + 56] ; [a0.M14+a1.M15 | b0.M30+b1.M31] |
pmaddwd mm1, [%3 + 56] ; [a0.M14+a1.M15 | b0.M30+b1.M31] |
384 |
psrad mm4, 16 |
psrad mm4, 16 |
385 |
|
|
386 |
paddd mm6, mm7 ; [ out4 | out5 ] |
paddd mm6, mm7 ; [ out4 | out5 ] |
436 |
paddd mm2, mm3 ; [ out0 | out1 ] |
paddd mm2, mm3 ; [ out0 | out1 ] |
437 |
pmaddwd mm7, mm1 ; [a0.M10+a1.M11 | b0.M26+b1.M27] |
pmaddwd mm7, mm1 ; [a0.M10+a1.M11 | b0.M26+b1.M27] |
438 |
psrad mm2, 16 |
psrad mm2, 16 |
439 |
pmaddwd mm0, qword [%3 + 48] ; [a0.M12+a1.M13 | b0.M28+b1.M29] |
pmaddwd mm0, [%3 + 48] ; [a0.M12+a1.M13 | b0.M28+b1.M29] |
440 |
paddd mm4, mm5 ; [ out2 | out3 ] |
paddd mm4, mm5 ; [ out2 | out3 ] |
441 |
pmaddwd mm1, qword [%3 + 56] ; [a0.M14+a1.M15 | b0.M30+b1.M31] |
pmaddwd mm1, [%3 + 56] ; [a0.M14+a1.M15 | b0.M30+b1.M31] |
442 |
psrad mm4, 16 |
psrad mm4, 16 |
443 |
|
|
444 |
paddd mm6, mm7 ; [ out4 | out5 ] |
paddd mm6, mm7 ; [ out4 | out5 ] |
503 |
%endif |
%endif |
504 |
|
|
505 |
ret |
ret |
506 |
|
.endfunc |
507 |
%endmacro |
%endmacro |
508 |
|
|
509 |
;============================================================================= |
;============================================================================= |
523 |
;----------------------------------------------------------------------------- |
;----------------------------------------------------------------------------- |
524 |
|
|
525 |
MAKE_FDCT_FUNC fdct_xmm_skal, fMTX_MULT_XMM |
MAKE_FDCT_FUNC fdct_xmm_skal, fMTX_MULT_XMM |
526 |
|
|
527 |
|
%ifidn __OUTPUT_FORMAT__,elf |
528 |
|
section ".note.GNU-stack" noalloc noexec nowrite progbits |
529 |
|
%endif |
530 |
|
|