61
61
;=============================================================================
63
63
;-----------------------------------------------------------------------------
64
; void x264_pixel_avg_w4_mmxext( uint8_t *dst, int i_dst_stride,
65
; uint8_t *src1, int i_src1_stride,
66
; uint8_t *src2, int i_src2_stride,
68
;-----------------------------------------------------------------------------
69
cglobal x264_pixel_avg_w4_mmxext
75
mov edi, [esp+20] ; dst
76
mov ebx, [esp+28] ; src1
77
mov ecx, [esp+36] ; src2
78
mov esi, [esp+24] ; i_dst_stride
79
mov eax, [esp+32] ; i_src1_stride
80
mov edx, [esp+40] ; i_src2_stride
81
mov ebp, [esp+44] ; i_height
105
;-----------------------------------------------------------------------------
106
; void x264_pixel_avg_w8_mmxext( uint8_t *dst, int i_dst_stride,
107
; uint8_t *src1, int i_src1_stride,
108
; uint8_t *src2, int i_src2_stride,
110
;-----------------------------------------------------------------------------
111
cglobal x264_pixel_avg_w8_mmxext
117
mov edi, [esp+20] ; dst
118
mov ebx, [esp+28] ; src1
119
mov ecx, [esp+36] ; src2
120
mov esi, [esp+24] ; i_dst_stride
121
mov eax, [esp+32] ; i_src1_stride
122
mov edx, [esp+40] ; i_src2_stride
123
mov ebp, [esp+44] ; i_height
143
;-----------------------------------------------------------------------------
144
; void x264_pixel_avg_w16_mmxext( uint8_t *dst, int i_dst_stride,
145
; uint8_t *src1, int i_src1_stride,
146
; uint8_t *src2, int i_src2_stride,
148
;-----------------------------------------------------------------------------
149
cglobal x264_pixel_avg_w16_mmxext
155
mov edi, [esp+20] ; dst
156
mov ebx, [esp+28] ; src1
157
mov ecx, [esp+36] ; src2
158
mov esi, [esp+24] ; i_dst_stride
159
mov eax, [esp+32] ; i_src1_stride
160
mov edx, [esp+40] ; i_src2_stride
161
mov ebp, [esp+44] ; i_height
184
;-----------------------------------------------------------------------------
185
; void x264_pixel_avg_w20_mmxext( uint8_t *dst, int i_dst_stride,
186
; uint8_t *src1, int i_src1_stride,
187
; uint8_t *src2, int i_src2_stride,
189
;-----------------------------------------------------------------------------
190
cglobal x264_pixel_avg_w20_mmxext
196
mov edi, [esp+20] ; dst
197
mov ebx, [esp+28] ; src1
198
mov ecx, [esp+36] ; src2
199
mov esi, [esp+24] ; i_dst_stride
200
mov eax, [esp+32] ; i_src1_stride
201
mov edx, [esp+40] ; i_src2_stride
202
mov ebp, [esp+44] ; i_height
229
;-----------------------------------------------------------------------------
230
; void x264_pixel_avg_w16_sse2( uint8_t *dst, int i_dst_stride,
231
; uint8_t *src1, int i_src1_stride,
232
; uint8_t *src2, int i_src2_stride,
234
;-----------------------------------------------------------------------------
235
cglobal x264_pixel_avg_w16_sse2
241
mov edi, [esp+20] ; dst
242
mov ebx, [esp+28] ; src1
243
mov ecx, [esp+36] ; src2
244
mov esi, [esp+24] ; i_dst_stride
245
mov eax, [esp+32] ; i_src1_stride
246
mov edx, [esp+40] ; i_src2_stride
247
mov ebp, [esp+44] ; i_height
64
; void x264_pixel_avg_w4_mmxext( uint8_t *dst, int dst_stride,
65
; uint8_t *src, int src_stride,
67
;-----------------------------------------------------------------------------
71
mov eax, [esp+12] ; dst
72
mov ebx, [esp+16] ; dst_stride
73
mov ecx, [esp+20] ; src
74
mov edx, [esp+24] ; src_stride
89
AVG_START x264_pixel_avg_w4_mmxext
98
AVG_START x264_pixel_avg_w8_mmxext
107
AVG_START x264_pixel_avg_w16_mmxext
111
movq mm3, [ecx+edx+8]
115
pavgb mm3, [eax+ebx+8]
119
movq [eax+ebx+8], mm3
122
AVG_START x264_pixel_avg_w16_sse2
124
movdqu xmm1, [ecx+edx]
126
pavgb xmm1, [eax+ebx]
128
movdqa [eax+ebx], xmm1
132
cglobal x264_pixel_avg_%1x%2_mmxext
135
jmp x264_pixel_avg_w%1_mmxext
153
mov eax, [esp+20] ; dst
154
mov ebx, [esp+24] ; dst_stride
155
mov ecx, [esp+28] ; src1
156
mov edx, [esp+32] ; src_stride
157
mov edi, [esp+36] ; src2
158
mov esi, [esp+40] ; height
176
AVG2_START x264_pixel_avg2_w4_mmxext
185
AVG2_START x264_pixel_avg2_w8_mmxext
194
AVG2_START x264_pixel_avg2_w16_mmxext
198
movq mm3, [ecx+edx+8]
200
pavgb mm1, [ecx+edi+8]
202
pavgb mm3, [ecx+ebp+8]
206
movq [eax+ebx+8], mm3
209
AVG2_START x264_pixel_avg2_w20_mmxext
214
movq mm4, [ecx+edx+8]
215
movd mm5, [ecx+edx+16]
217
pavgb mm1, [ecx+edi+8]
218
pavgb mm2, [ecx+edi+16]
220
pavgb mm4, [ecx+ebp+8]
221
pavgb mm5, [ecx+ebp+16]
226
movq [eax+ebx+8], mm4
227
movd [eax+ebx+16], mm5
267
232
;=============================================================================