45 |
%ifdef MARK_FUNCS |
%ifdef MARK_FUNCS |
46 |
global _%1:function %1.endfunc-%1 |
global _%1:function %1.endfunc-%1 |
47 |
%define %1 _%1:function %1.endfunc-%1 |
%define %1 _%1:function %1.endfunc-%1 |
48 |
|
%define ENDFUNC .endfunc |
49 |
%else |
%else |
50 |
global _%1 |
global _%1 |
51 |
%define %1 _%1 |
%define %1 _%1 |
52 |
|
%define ENDFUNC |
53 |
%endif |
%endif |
54 |
%else |
%else |
55 |
%ifdef MARK_FUNCS |
%ifdef MARK_FUNCS |
56 |
global %1:function %1.endfunc-%1 |
global %1:function %1.endfunc-%1 |
57 |
|
%define ENDFUNC .endfunc |
58 |
%else |
%else |
59 |
global %1 |
global %1 |
60 |
|
%define ENDFUNC |
61 |
%endif |
%endif |
62 |
%endif |
%endif |
63 |
%endmacro |
%endmacro |
143 |
times 4 dw 0 |
times 4 dw 0 |
144 |
|
|
145 |
align 16 |
align 16 |
146 |
Rounder_QP_MMX |
Rounder_QP_MMX: |
147 |
times 4 dw 16 |
times 4 dw 16 |
148 |
times 4 dw 15 |
times 4 dw 15 |
149 |
|
|
353 |
PROLOG_AVRG |
PROLOG_AVRG |
354 |
%endif |
%endif |
355 |
|
|
356 |
.Loop |
.Loop: |
357 |
|
|
358 |
; mm0..mm3 serves as a 4x4 delay line |
; mm0..mm3 serves as a 4x4 delay line |
359 |
|
|
462 |
PROLOG_AVRG |
PROLOG_AVRG |
463 |
%endif |
%endif |
464 |
|
|
465 |
.Loop |
.Loop: |
466 |
; mm0..mm3 serves as a 4x4 delay line |
; mm0..mm3 serves as a 4x4 delay line |
467 |
|
|
468 |
%ifndef USE_TABLES |
%ifndef USE_TABLES |
564 |
|
|
565 |
xvid_H_Pass_16_mmx: |
xvid_H_Pass_16_mmx: |
566 |
H_PASS_16 0, 0 |
H_PASS_16 0, 0 |
567 |
.endfunc |
ENDFUNC |
568 |
xvid_H_Pass_Avrg_16_mmx: |
xvid_H_Pass_Avrg_16_mmx: |
569 |
H_PASS_16 1, 0 |
H_PASS_16 1, 0 |
570 |
.endfunc |
ENDFUNC |
571 |
xvid_H_Pass_Avrg_Up_16_mmx: |
xvid_H_Pass_Avrg_Up_16_mmx: |
572 |
H_PASS_16 2, 0 |
H_PASS_16 2, 0 |
573 |
.endfunc |
ENDFUNC |
574 |
|
|
575 |
;////////////////////////////////////////////////////////////////////// |
;////////////////////////////////////////////////////////////////////// |
576 |
;// 8x? copy Functions |
;// 8x? copy Functions |
577 |
|
|
578 |
xvid_H_Pass_8_mmx: |
xvid_H_Pass_8_mmx: |
579 |
H_PASS_8 0, 0 |
H_PASS_8 0, 0 |
580 |
.endfunc |
ENDFUNC |
581 |
xvid_H_Pass_Avrg_8_mmx: |
xvid_H_Pass_Avrg_8_mmx: |
582 |
H_PASS_8 1, 0 |
H_PASS_8 1, 0 |
583 |
.endfunc |
ENDFUNC |
584 |
xvid_H_Pass_Avrg_Up_8_mmx: |
xvid_H_Pass_Avrg_Up_8_mmx: |
585 |
H_PASS_8 2, 0 |
H_PASS_8 2, 0 |
586 |
.endfunc |
ENDFUNC |
587 |
|
|
588 |
;////////////////////////////////////////////////////////////////////// |
;////////////////////////////////////////////////////////////////////// |
589 |
;// 16x? avrg Functions |
;// 16x? avrg Functions |
590 |
|
|
591 |
xvid_H_Pass_Add_16_mmx: |
xvid_H_Pass_Add_16_mmx: |
592 |
H_PASS_16 0, 1 |
H_PASS_16 0, 1 |
593 |
.endfunc |
ENDFUNC |
594 |
xvid_H_Pass_Avrg_Add_16_mmx: |
xvid_H_Pass_Avrg_Add_16_mmx: |
595 |
H_PASS_16 1, 1 |
H_PASS_16 1, 1 |
596 |
.endfunc |
ENDFUNC |
597 |
xvid_H_Pass_Avrg_Up_Add_16_mmx: |
xvid_H_Pass_Avrg_Up_Add_16_mmx: |
598 |
H_PASS_16 2, 1 |
H_PASS_16 2, 1 |
599 |
.endfunc |
ENDFUNC |
600 |
|
|
601 |
;////////////////////////////////////////////////////////////////////// |
;////////////////////////////////////////////////////////////////////// |
602 |
;// 8x? avrg Functions |
;// 8x? avrg Functions |
603 |
|
|
604 |
xvid_H_Pass_8_Add_mmx: |
xvid_H_Pass_8_Add_mmx: |
605 |
H_PASS_8 0, 1 |
H_PASS_8 0, 1 |
606 |
.endfunc |
ENDFUNC |
607 |
xvid_H_Pass_Avrg_8_Add_mmx: |
xvid_H_Pass_Avrg_8_Add_mmx: |
608 |
H_PASS_8 1, 1 |
H_PASS_8 1, 1 |
609 |
.endfunc |
ENDFUNC |
610 |
xvid_H_Pass_Avrg_Up_8_Add_mmx: |
xvid_H_Pass_Avrg_Up_8_Add_mmx: |
611 |
H_PASS_8 2, 1 |
H_PASS_8 2, 1 |
612 |
.endfunc |
ENDFUNC |
613 |
|
|
614 |
|
|
615 |
|
|
708 |
; the size (3rd argument) is meant to be a multiple of 4 |
; the size (3rd argument) is meant to be a multiple of 4 |
709 |
; mm0..mm3 serves as a 4x4 delay line |
; mm0..mm3 serves as a 4x4 delay line |
710 |
|
|
711 |
.Loop |
.Loop: |
712 |
|
|
713 |
push edi |
push edi |
714 |
push esi ; esi is preserved for src-mixing |
push esi ; esi is preserved for src-mixing |
914 |
; we process one stripe of 4x8 pixel each time |
; we process one stripe of 4x8 pixel each time |
915 |
; the size (3rd argument) is meant to be a multiple of 4 |
; the size (3rd argument) is meant to be a multiple of 4 |
916 |
; mm0..mm3 serves as a 4x4 delay line |
; mm0..mm3 serves as a 4x4 delay line |
917 |
.Loop |
.Loop: |
918 |
|
|
919 |
push edi |
push edi |
920 |
push esi ; esi is preserved for src-mixing |
push esi ; esi is preserved for src-mixing |
1016 |
|
|
1017 |
xvid_V_Pass_16_mmx: |
xvid_V_Pass_16_mmx: |
1018 |
V_PASS_16 0, 0 |
V_PASS_16 0, 0 |
1019 |
.endfunc |
ENDFUNC |
1020 |
xvid_V_Pass_Avrg_16_mmx: |
xvid_V_Pass_Avrg_16_mmx: |
1021 |
V_PASS_16 1, 0 |
V_PASS_16 1, 0 |
1022 |
.endfunc |
ENDFUNC |
1023 |
xvid_V_Pass_Avrg_Up_16_mmx: |
xvid_V_Pass_Avrg_Up_16_mmx: |
1024 |
V_PASS_16 2, 0 |
V_PASS_16 2, 0 |
1025 |
.endfunc |
ENDFUNC |
1026 |
|
|
1027 |
;////////////////////////////////////////////////////////////////////// |
;////////////////////////////////////////////////////////////////////// |
1028 |
;// 8x? copy Functions |
;// 8x? copy Functions |
1029 |
|
|
1030 |
xvid_V_Pass_8_mmx: |
xvid_V_Pass_8_mmx: |
1031 |
V_PASS_8 0, 0 |
V_PASS_8 0, 0 |
1032 |
.endfunc |
ENDFUNC |
1033 |
xvid_V_Pass_Avrg_8_mmx: |
xvid_V_Pass_Avrg_8_mmx: |
1034 |
V_PASS_8 1, 0 |
V_PASS_8 1, 0 |
1035 |
.endfunc |
ENDFUNC |
1036 |
xvid_V_Pass_Avrg_Up_8_mmx: |
xvid_V_Pass_Avrg_Up_8_mmx: |
1037 |
V_PASS_8 2, 0 |
V_PASS_8 2, 0 |
1038 |
.endfunc |
ENDFUNC |
1039 |
|
|
1040 |
;////////////////////////////////////////////////////////////////////// |
;////////////////////////////////////////////////////////////////////// |
1041 |
;// 16x? avrg Functions |
;// 16x? avrg Functions |
1042 |
|
|
1043 |
xvid_V_Pass_Add_16_mmx: |
xvid_V_Pass_Add_16_mmx: |
1044 |
V_PASS_16 0, 1 |
V_PASS_16 0, 1 |
1045 |
.endfunc |
ENDFUNC |
1046 |
xvid_V_Pass_Avrg_Add_16_mmx: |
xvid_V_Pass_Avrg_Add_16_mmx: |
1047 |
V_PASS_16 1, 1 |
V_PASS_16 1, 1 |
1048 |
.endfunc |
ENDFUNC |
1049 |
xvid_V_Pass_Avrg_Up_Add_16_mmx: |
xvid_V_Pass_Avrg_Up_Add_16_mmx: |
1050 |
V_PASS_16 2, 1 |
V_PASS_16 2, 1 |
1051 |
.endfunc |
ENDFUNC |
1052 |
|
|
1053 |
;////////////////////////////////////////////////////////////////////// |
;////////////////////////////////////////////////////////////////////// |
1054 |
;// 8x? avrg Functions |
;// 8x? avrg Functions |
1055 |
|
|
1056 |
xvid_V_Pass_8_Add_mmx: |
xvid_V_Pass_8_Add_mmx: |
1057 |
V_PASS_8 0, 1 |
V_PASS_8 0, 1 |
1058 |
.endfunc |
ENDFUNC |
1059 |
xvid_V_Pass_Avrg_8_Add_mmx: |
xvid_V_Pass_Avrg_8_Add_mmx: |
1060 |
V_PASS_8 1, 1 |
V_PASS_8 1, 1 |
1061 |
.endfunc |
ENDFUNC |
1062 |
xvid_V_Pass_Avrg_Up_8_Add_mmx: |
xvid_V_Pass_Avrg_Up_8_Add_mmx: |
1063 |
V_PASS_8 2, 1 |
V_PASS_8 2, 1 |
1064 |
.endfunc |
ENDFUNC |
1065 |
|
|
1066 |
;////////////////////////////////////////////////////////////////////// |
;////////////////////////////////////////////////////////////////////// |
1067 |
|
|