[svn] / branches / release-1_2-branch / xvidcore / src / quant / x86_asm / quantize_h263_mmx.asm Repository:
ViewVC logotype

Diff of /branches/release-1_2-branch/xvidcore/src/quant/x86_asm/quantize_h263_mmx.asm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/xvidcore/src/quant/x86_asm/quantize_h263_mmx.asm revision 1432, Thu Apr 15 19:44:06 2004 UTC branches/release-1_2-branch/xvidcore/src/quant/x86_asm/quantize_h263_mmx.asm revision 1820, Fri Nov 28 16:54:45 2008 UTC
# Line 21  Line 21 
21  ; *  along with this program ; if not, write to the Free Software  ; *  along with this program ; if not, write to the Free Software
22  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA  ; *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
23  ; *  ; *
24  ; * $Id: quantize_h263_mmx.asm,v 1.4 2004-04-15 19:44:06 edgomez Exp $  ; * $Id: quantize_h263_mmx.asm,v 1.11 2008-11-26 23:35:50 Isibaar Exp $
25  ; *  ; *
26  ; ****************************************************************************/  ; ****************************************************************************/
27    
28  ; enable dequant saturate [-2048,2047], test purposes only.  ; enable dequant saturate [-2048,2047], test purposes only.
29  %define SATURATE  %define SATURATE
30    
31  BITS 32  %include "nasm.inc"
   
 %macro cglobal 1  
        %ifdef PREFIX  
                 global _%1  
                 %define %1 _%1  
         %else  
                 global %1  
         %endif  
 %endmacro  
32    
33  ;=============================================================================  ;=============================================================================
34  ; Read only Local data  ; Read only Local data
35  ;=============================================================================  ;=============================================================================
36    
37  %ifdef FORMAT_COFF  DATA
 SECTION .rodata data  
 %else  
 SECTION .rodata data align=16  
 %endif  
38    
39  ALIGN 16  ALIGN SECTION_ALIGN
40  plus_one:  plus_one:
41          times 8 dw 1          times 8 dw 1
42    
# Line 59  Line 46 
46  ;  ;
47  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
48    
49  ALIGN 16  ALIGN SECTION_ALIGN
50  mmx_quant:  mmx_quant:
51  %assign quant 0  %assign quant 0
52  %rep 32  %rep 32
# Line 73  Line 60 
60  ;  ;
61  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
62    
63  ALIGN 16  ALIGN SECTION_ALIGN
64  mmx_sub:  mmx_sub:
65  %assign quant 1  %assign quant 1
66  %rep 31  %rep 31
# Line 91  Line 78 
78  ;  ;
79  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
80    
81  ALIGN 16  ALIGN SECTION_ALIGN
82  mmx_div:  mmx_div:
83  %assign quant 1  %assign quant 1
84  %rep 31  %rep 31
# Line 103  Line 90 
90  ; Code  ; Code
91  ;=============================================================================  ;=============================================================================
92    
93  SECTION .text  SECTION .rotext align=SECTION_ALIGN
94    
95  cglobal quant_h263_intra_mmx  cglobal quant_h263_intra_mmx
96  cglobal quant_h263_intra_sse2  cglobal quant_h263_intra_sse2
# Line 126  Line 113 
113  ;  ;
114  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
115    
116  ALIGN 16  ALIGN SECTION_ALIGN
117  quant_h263_intra_mmx:  quant_h263_intra_mmx:
118    
119    push esi    mov _EAX, prm2     ; data
120      mov TMP0, prm4     ; dcscalar
121    mov esi, [esp + 4 + 8]     ; data    movsx _EAX, word [_EAX]  ; data[0]
122    mov ecx,[esp + 4 + 16]     ; dcscalar  
123    movsx eax, word [esi]      ; data[0]    sar TMP0, 1              ; dcscalar /2
124      mov TMP1, _EAX
125    sar ecx,1                  ; dcscalar /2    sar TMP1, 31             ; sgn(data[0])
126    mov edx,eax    xor TMP0,TMP1            ; *sgn(data[0])
127    sar edx,31                 ; sgn(data[0])    sub _EAX,TMP1
128    xor ecx,edx                ; *sgn(data[0])    add _EAX,TMP0            ; + (dcscalar/2)*sgn(data[0])
129    sub eax,edx  
130    add eax,ecx                ; + (dcscalar/2)*sgn(data[0])    mov TMP0, prm3     ; quant
131      lea TMP1, [mmx_div]
132    mov ecx, [esp + 4 + 12]    ; quant    movq mm7, [TMP1+TMP0 * 8 - 8]
133    %ifdef ARCH_IS_X86_64
134    %ifdef WINDOWS
135      mov TMP1, prm2
136    %endif
137    %endif
138    cdq    cdq
139    idiv dword [esp + 4 + 16]  ; dcscalar    idiv prm4d         ; dcscalar
140    cmp ecx, 1  %ifdef ARCH_IS_X86_64
141    mov edx, [esp + 4 + 4]     ; coeff  %ifdef WINDOWS
142      mov prm2, TMP1
143    %endif
144    %endif
145      cmp TMP0, 1
146      mov TMP1, prm1     ; coeff
147    je .low    je .low
148    
149    movq mm7, [mmx_div+ecx * 8 - 8]    mov TMP0, prm2     ; data
150    mov ecx,4    push _EAX          ; DC
151      mov _EAX, TMP0
152    
153  .loop    mov TMP0,4
154    movq mm0, [esi]           ; data  
155    .loop:
156      movq mm0, [_EAX]           ; data
157    pxor mm4,mm4    pxor mm4,mm4
158    movq mm1, [esi + 8]    movq mm1, [_EAX + 8]
159    pcmpgtw mm4,mm0           ; (data<0)    pcmpgtw mm4,mm0           ; (data<0)
160    pxor mm5,mm5    pxor mm5,mm5
161    pmulhw mm0,mm7            ; /(2*quant)    pmulhw mm0,mm7            ; /(2*quant)
162    pcmpgtw mm5,mm1    pcmpgtw mm5,mm1
163    movq mm2, [esi+16]    movq mm2, [_EAX+16]
164    psubw mm0,mm4             ;  +(data<0)    psubw mm0,mm4             ;  +(data<0)
165    pmulhw mm1,mm7    pmulhw mm1,mm7
166    pxor mm4,mm4    pxor mm4,mm4
167    movq mm3,[esi+24]    movq mm3,[_EAX+24]
168    pcmpgtw mm4,mm2    pcmpgtw mm4,mm2
169    psubw mm1,mm5    psubw mm1,mm5
170    pmulhw mm2,mm7    pmulhw mm2,mm7
# Line 173  Line 173 
173    pmulhw mm3,mm7    pmulhw mm3,mm7
174    psubw mm2,mm4    psubw mm2,mm4
175    psubw mm3,mm5    psubw mm3,mm5
176    movq [edx], mm0    movq [TMP1], mm0
177    lea esi, [esi+32]    lea _EAX, [_EAX+32]
178    movq [edx + 8], mm1    movq [TMP1 + 8], mm1
179    movq [edx + 16], mm2    movq [TMP1 + 16], mm2
180    movq [edx + 24], mm3    movq [TMP1 + 24], mm3
181    
182    dec ecx    dec TMP0
183    lea edx, [edx+32]    lea TMP1, [TMP1+32]
184    jne .loop    jne .loop
185    jmp .end    jmp .end
186    
187  .low  .low:
188    movd mm7,ecx    movd mm7,TMP0d
189    mov ecx,4  
190  .loop_low    mov TMP0, prm2
191    movq mm0, [esi]    push _EAX
192      mov _EAX, TMP0
193    
194      mov TMP0,4
195    .loop_low:
196      movq mm0, [_EAX]
197    pxor mm4,mm4    pxor mm4,mm4
198    movq mm1, [esi + 8]    movq mm1, [_EAX + 8]
199    pcmpgtw mm4,mm0    pcmpgtw mm4,mm0
200    pxor mm5,mm5    pxor mm5,mm5
201    psubw mm0,mm4    psubw mm0,mm4
202    pcmpgtw mm5,mm1    pcmpgtw mm5,mm1
203    psraw mm0,mm7    psraw mm0,mm7
204    psubw mm1,mm5    psubw mm1,mm5
205    movq mm2,[esi+16]    movq mm2,[_EAX+16]
206    pxor mm4,mm4    pxor mm4,mm4
207    psraw mm1,mm7    psraw mm1,mm7
208    pcmpgtw mm4,mm2    pcmpgtw mm4,mm2
209    pxor mm5,mm5    pxor mm5,mm5
210    psubw mm2,mm4    psubw mm2,mm4
211    movq mm3,[esi+24]    movq mm3,[_EAX+24]
212    pcmpgtw mm5,mm3    pcmpgtw mm5,mm3
213    psraw mm2,mm7    psraw mm2,mm7
214    psubw mm3,mm5    psubw mm3,mm5
215    movq [edx], mm0    movq [TMP1], mm0
216    psraw mm3,mm7    psraw mm3,mm7
217    movq [edx + 8], mm1    movq [TMP1 + 8], mm1
218    movq [edx+16],mm2    movq [TMP1+16],mm2
219    lea esi, [esi+32]    lea _EAX, [_EAX+32]
220    movq [edx+24],mm3    movq [TMP1+24],mm3
221    
222    dec ecx    dec TMP0
223    lea edx, [edx+32]    lea TMP1, [TMP1+32]
224    jne .loop_low    jne .loop_low
225    
226  .end  .end:
227    mov edx, [esp + 4 + 4]     ; coeff  
228    mov [edx],ax    pop _EAX
229    xor eax,eax                ; return 0  
230      mov TMP1, prm1     ; coeff
231      mov [TMP1],ax
232      xor _EAX,_EAX       ; return 0
233    
   pop esi  
234    ret    ret
235    ENDFUNC
236    
237    
238  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 237  Line 245 
245  ;  ;
246  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
247    
248  ALIGN 16  ALIGN SECTION_ALIGN
249  quant_h263_intra_sse2:  quant_h263_intra_sse2:
250    
251    push esi    mov _EAX, prm2     ; data
252    
253    mov esi, [esp + 4 + 8]     ; data    movsx _EAX, word [_EAX]      ; data[0]
254    
255    movsx eax, word [esi]      ; data[0]    mov TMP0,prm4     ; dcscalar
256      mov TMP1,_EAX
257    mov ecx,[esp + 4 + 16]     ; dcscalar    sar TMP0,1
258    mov edx,eax    add _EAX,TMP0
259    sar ecx,1    sub TMP1,TMP0
260    add eax,ecx    cmovl _EAX,TMP1              ; +/- dcscalar/2
261    sub edx,ecx    mov TMP0, prm3    ; quant
262    cmovl eax,edx              ; +/- dcscalar/2    lea TMP1, [mmx_div]
263    mov ecx, [esp + 4 + 12]    ; quant    movq xmm7, [TMP1+TMP0 * 8 - 8]
264    
265    %ifdef ARCH_IS_X86_64
266    %ifdef WINDOWS
267      mov TMP1, prm2
268    %endif
269    %endif
270    cdq    cdq
271    idiv dword [esp + 4 + 16]  ; dcscalar    idiv prm4d  ; dcscalar
272    cmp ecx, 1  %ifdef ARCH_IS_X86_64
273    mov edx, [esp + 4 + 4]     ; coeff  %ifdef WINDOWS
274    movq xmm7, [mmx_div+ecx * 8 - 8]    mov prm2, TMP1
275    je .low  %endif
276    %endif
277      cmp TMP0, 1
278      mov TMP1, prm1     ; coeff
279      je near .low
280    
281      mov TMP0, prm2
282      push _EAX ; DC
283      mov _EAX, TMP0
284    
285    mov ecx,2    mov TMP0,2
286    movlhps xmm7,xmm7    movlhps xmm7,xmm7
287    
288  .loop  .loop:
289    movdqa xmm0, [esi]    movdqa xmm0, [_EAX]
290    pxor xmm4,xmm4    pxor xmm4,xmm4
291    movdqa xmm1, [esi + 16]    movdqa xmm1, [_EAX + 16]
292    pcmpgtw xmm4,xmm0    pcmpgtw xmm4,xmm0
293    pxor xmm5,xmm5    pxor xmm5,xmm5
294    pmulhw xmm0,xmm7    pmulhw xmm0,xmm7
295    pcmpgtw xmm5,xmm1    pcmpgtw xmm5,xmm1
296    movdqa xmm2, [esi+32]    movdqa xmm2, [_EAX+32]
297    psubw xmm0,xmm4    psubw xmm0,xmm4
298    pmulhw xmm1,xmm7    pmulhw xmm1,xmm7
299    pxor xmm4,xmm4    pxor xmm4,xmm4
300    movdqa xmm3,[esi+48]    movdqa xmm3,[_EAX+48]
301    pcmpgtw xmm4,xmm2    pcmpgtw xmm4,xmm2
302    psubw xmm1,xmm5    psubw xmm1,xmm5
303    pmulhw xmm2,xmm7    pmulhw xmm2,xmm7
# Line 284  Line 306 
306    pmulhw xmm3,xmm7    pmulhw xmm3,xmm7
307    psubw xmm2,xmm4    psubw xmm2,xmm4
308    psubw xmm3,xmm5    psubw xmm3,xmm5
309    movdqa [edx], xmm0    movdqa [TMP1], xmm0
310    lea esi, [esi+64]    lea _EAX, [_EAX+64]
311    movdqa [edx + 16], xmm1    movdqa [TMP1 + 16], xmm1
312    movdqa [edx + 32], xmm2    movdqa [TMP1 + 32], xmm2
313    movdqa [edx + 48], xmm3    movdqa [TMP1 + 48], xmm3
314    
315    dec ecx    dec TMP0
316    lea edx, [edx+64]    lea TMP1, [TMP1+64]
317    jne .loop    jne .loop
318    jmp .end    jmp .end
319    
320  .low  .low:
321    movd xmm7,ecx    movd xmm7,TMP0d
322    mov ecx,2  
323  .loop_low    mov TMP0, prm2
324    movdqa xmm0, [esi]    push _EAX ; DC
325      mov _EAX, TMP0
326    
327      mov TMP0,2
328    .loop_low:
329      movdqa xmm0, [_EAX]
330    pxor xmm4,xmm4    pxor xmm4,xmm4
331    movdqa xmm1, [esi + 16]    movdqa xmm1, [_EAX + 16]
332    pcmpgtw xmm4,xmm0    pcmpgtw xmm4,xmm0
333    pxor xmm5,xmm5    pxor xmm5,xmm5
334    psubw xmm0,xmm4    psubw xmm0,xmm4
335    pcmpgtw xmm5,xmm1    pcmpgtw xmm5,xmm1
336    psraw xmm0,xmm7    psraw xmm0,xmm7
337    psubw xmm1,xmm5    psubw xmm1,xmm5
338    movdqa xmm2,[esi+32]    movdqa xmm2,[_EAX+32]
339    pxor xmm4,xmm4    pxor xmm4,xmm4
340    psraw xmm1,xmm7    psraw xmm1,xmm7
341    pcmpgtw xmm4,xmm2    pcmpgtw xmm4,xmm2
342    pxor xmm5,xmm5    pxor xmm5,xmm5
343    psubw xmm2,xmm4    psubw xmm2,xmm4
344    movdqa xmm3,[esi+48]    movdqa xmm3,[_EAX+48]
345    pcmpgtw xmm5,xmm3    pcmpgtw xmm5,xmm3
346    psraw xmm2,xmm7    psraw xmm2,xmm7
347    psubw xmm3,xmm5    psubw xmm3,xmm5
348    movdqa [edx], xmm0    movdqa [TMP1], xmm0
349    psraw xmm3,xmm7    psraw xmm3,xmm7
350    movdqa [edx+16], xmm1    movdqa [TMP1+16], xmm1
351    movdqa [edx+32],xmm2    movdqa [TMP1+32],xmm2
352    lea esi, [esi+64]    lea _EAX, [_EAX+64]
353    movdqa [edx+48],xmm3    movdqa [TMP1+48],xmm3
354    
355    dec ecx    dec TMP0
356    lea edx, [edx+64]    lea TMP1, [TMP1+64]
357    jne .loop_low    jne .loop_low
358    
359  .end  .end:
360    mov edx, [esp + 4 + 4]     ; coeff  
361    mov [edx],ax    pop _EAX
362    xor eax,eax                ; return 0  
363      mov TMP1, prm1     ; coeff
364      mov [TMP1],ax
365      xor _EAX,_EAX            ; return 0
366    
   pop esi  
367    ret    ret
368    ENDFUNC
369    
370  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
371  ;  ;
# Line 346  Line 376 
376  ;  ;
377  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
378    
379  ALIGN 16  ALIGN SECTION_ALIGN
380  quant_h263_inter_mmx:  quant_h263_inter_mmx:
381    
382    push ecx    mov TMP1, prm1           ; coeff
383    push esi    mov _EAX, prm3           ; quant
   push edi  
   
   mov edi, [esp + 12 + 4]           ; coeff  
   mov esi, [esp + 12 + 8]           ; data  
   mov eax, [esp + 12 + 12]          ; quant  
   
   xor ecx, ecx  
384    
385    pxor mm5, mm5                     ; sum    pxor mm5, mm5                     ; sum
386    movq mm6, [mmx_sub + eax * 8 - 8] ; sub    lea TMP0, [mmx_sub]
387      movq mm6, [TMP0 + _EAX * 8 - 8] ; sub
388    
389    cmp al, 1    cmp al, 1
390    jz .q1loop    jz near .q1routine
391    
392    movq mm7, [mmx_div + eax * 8 - 8] ; divider    lea TMP0, [mmx_div]
393      movq mm7, [TMP0 + _EAX * 8 - 8] ; divider
394    
395  ALIGN 8    xor TMP0, TMP0
396  .loop    mov _EAX, prm2           ; data
397    movq mm0, [esi + 8*ecx]           ; mm0 = [1st]  
398    movq mm3, [esi + 8*ecx + 8]  ALIGN SECTION_ALIGN
399    .loop:
400      movq mm0, [_EAX + 8*TMP0]           ; mm0 = [1st]
401      movq mm3, [_EAX + 8*TMP0 + 8]
402    pxor mm1, mm1                     ; mm1 = 0    pxor mm1, mm1                     ; mm1 = 0
403    pxor mm4, mm4                     ;    pxor mm4, mm4                     ;
404    pcmpgtw mm1, mm0                  ; mm1 = (0 > mm0)    pcmpgtw mm1, mm0                  ; mm1 = (0 > mm0)
# Line 389  Line 417 
417    pxor mm3, mm4                     ;    pxor mm3, mm4                     ;
418    psubw mm0, mm1                    ; undisplace    psubw mm0, mm1                    ; undisplace
419    psubw mm3, mm4    psubw mm3, mm4
420    movq [edi + 8*ecx], mm0    movq [TMP1 + 8*TMP0], mm0
421    movq [edi + 8*ecx + 8], mm3    movq [TMP1 + 8*TMP0 + 8], mm3
422    
423    add ecx, 2    add TMP0, 2
424    cmp ecx, 16    cmp TMP0, 16
425    jnz .loop    jnz .loop
426    
427  .done  .done:
428    pmaddwd mm5, [plus_one]    pmaddwd mm5, [plus_one]
429    movq mm0, mm5    movq mm0, mm5
430    psrlq mm5, 32    psrlq mm5, 32
431    paddd mm0, mm5    paddd mm0, mm5
432    
433    movd eax, mm0     ; return sum    movd eax, mm0     ; return sum
   pop edi  
   pop esi  
   pop ecx  
434    
435    ret    ret
436    
437  ALIGN 8  .q1routine:
438  .q1loop    xor TMP0, TMP0
439    movq mm0, [esi + 8*ecx]           ; mm0 = [1st]    mov _EAX, prm2           ; data
440    movq mm3, [esi + 8*ecx+ 8]        ;  
441    ALIGN SECTION_ALIGN
442    .q1loop:
443      movq mm0, [_EAX + 8*TMP0]           ; mm0 = [1st]
444      movq mm3, [_EAX + 8*TMP0+ 8]        ;
445    pxor mm1, mm1                     ; mm1 = 0    pxor mm1, mm1                     ; mm1 = 0
446    pxor mm4, mm4                     ;    pxor mm4, mm4                     ;
447    pcmpgtw mm1, mm0                  ; mm1 = (0 > mm0)    pcmpgtw mm1, mm0                  ; mm1 = (0 > mm0)
# Line 431  Line 460 
460    pxor mm3, mm4                     ;    pxor mm3, mm4                     ;
461    psubw mm0, mm1                    ; undisplace    psubw mm0, mm1                    ; undisplace
462    psubw mm3, mm4    psubw mm3, mm4
463    movq [edi + 8*ecx], mm0    movq [TMP1 + 8*TMP0], mm0
464    movq [edi + 8*ecx + 8], mm3    movq [TMP1 + 8*TMP0 + 8], mm3
465    
466    add ecx, 2    add TMP0, 2
467    cmp ecx, 16    cmp TMP0, 16
468    jnz .q1loop    jnz .q1loop
469    
470    jmp .done    jmp .done
471    ENDFUNC
472    
473    
474    
# Line 451  Line 481 
481  ;  ;
482  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
483    
484  ALIGN 16  ALIGN SECTION_ALIGN
485  quant_h263_inter_sse2:  quant_h263_inter_sse2:
486    
487    push esi    mov TMP1, prm1      ; coeff
488    push edi    mov _EAX, prm3      ; quant
   
   mov edi, [esp + 8 + 4]      ; coeff  
   mov esi, [esp + 8 + 8]      ; data  
   mov eax, [esp + 8 + 12]     ; quant  
   
   xor ecx, ecx  
489    
490    pxor xmm5, xmm5                           ; sum    pxor xmm5, xmm5                           ; sum
491    
492    movq mm0, [mmx_sub + eax*8 - 8]           ; sub    lea TMP0, [mmx_sub]
493      movq mm0, [TMP0 + _EAX*8 - 8]             ; sub
494    movq2dq xmm6, mm0                         ; load into low 8 bytes    movq2dq xmm6, mm0                         ; load into low 8 bytes
495    movlhps xmm6, xmm6                        ; duplicate into high 8 bytes    movlhps xmm6, xmm6                        ; duplicate into high 8 bytes
496    
497    cmp al, 1    cmp al, 1
498    jz near .qes2_q1loop    jz near .qes2_q1_routine
499    
500    .qes2_not1:
501      lea TMP0, [mmx_div]
502      movq mm0, [TMP0 + _EAX*8 - 8]          ; divider
503    
504      xor TMP0, TMP0
505      mov _EAX, prm2      ; data
506    
 .qes2_not1  
   movq mm0, [mmx_div + eax*8 - 8]           ; divider  
507    movq2dq xmm7, mm0    movq2dq xmm7, mm0
508    movlhps xmm7, xmm7    movlhps xmm7, xmm7
509    
510  ALIGN 16  ALIGN SECTION_ALIGN
511  .qes2_loop  .qes2_loop:
512    movdqa xmm0, [esi + ecx*8]                ; xmm0 = [1st]    movdqa xmm0, [_EAX + TMP0*8]               ; xmm0 = [1st]
513    movdqa xmm3, [esi + ecx*8 + 16]           ; xmm3 = [2nd]    movdqa xmm3, [_EAX + TMP0*8 + 16]          ; xmm3 = [2nd]
514    pxor xmm1, xmm1    pxor xmm1, xmm1
515    pxor xmm4, xmm4    pxor xmm4, xmm4
516    pcmpgtw xmm1, xmm0    pcmpgtw xmm1, xmm0
# Line 499  Line 529 
529    pxor xmm3, xmm4    pxor xmm3, xmm4
530    psubw xmm0, xmm1    psubw xmm0, xmm1
531    psubw xmm3, xmm4    psubw xmm3, xmm4
532    movdqa [edi + ecx*8], xmm0    movdqa [TMP1 + TMP0*8], xmm0
533    movdqa [edi + ecx*8 + 16], xmm3    movdqa [TMP1 + TMP0*8 + 16], xmm3
534    
535    add ecx, 4    add TMP0, 4
536    cmp ecx, 16    cmp TMP0, 16
537    jnz .qes2_loop    jnz .qes2_loop
538    
539  .qes2_done  .qes2_done:
540    movdqu xmm6, [plus_one]    movdqu xmm6, [plus_one]
541    pmaddwd xmm5, xmm6    pmaddwd xmm5, xmm6
542    movhlps xmm6, xmm5    movhlps xmm6, xmm5
# Line 519  Line 549 
549    
550    movd eax, mm0         ; return sum    movd eax, mm0         ; return sum
551    
   pop edi  
   pop esi  
   
552    ret    ret
553    
554  ALIGN 16  .qes2_q1_routine:
555  .qes2_q1loop    xor TMP0, TMP0
556    movdqa xmm0, [esi + ecx*8]        ; xmm0 = [1st]    mov _EAX, prm2      ; data
557    movdqa xmm3, [esi + ecx*8 + 16]   ; xmm3 = [2nd]  
558    ALIGN SECTION_ALIGN
559    .qes2_q1loop:
560      movdqa xmm0, [_EAX + TMP0*8]        ; xmm0 = [1st]
561      movdqa xmm3, [_EAX + TMP0*8 + 16]   ; xmm3 = [2nd]
562    pxor xmm1, xmm1    pxor xmm1, xmm1
563    pxor xmm4, xmm4    pxor xmm4, xmm4
564    pcmpgtw xmm1, xmm0    pcmpgtw xmm1, xmm0
# Line 546  Line 577 
577    pxor xmm3, xmm4    pxor xmm3, xmm4
578    psubw xmm0, xmm1    psubw xmm0, xmm1
579    psubw xmm3, xmm4    psubw xmm3, xmm4
580    movdqa [edi + ecx*8], xmm0    movdqa [TMP1 + TMP0*8], xmm0
581    movdqa [edi + ecx*8 + 16], xmm3    movdqa [TMP1 + TMP0*8 + 16], xmm3
582    
583    add ecx, 4    add TMP0, 4
584    cmp ecx, 16    cmp TMP0, 16
585    jnz .qes2_q1loop    jnz .qes2_q1loop
586    jmp .qes2_done    jmp .qes2_done
587    ENDFUNC
588    
589    
590  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 565  Line 597 
597  ;  ;
598  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
599    
600  ALIGN 16  ALIGN SECTION_ALIGN
601  dequant_h263_intra_mmx:  dequant_h263_intra_mmx:
602    
603    mov ecx, [esp+12]                 ; quant    mov TMP0, prm3                 ; quant
604    mov eax, [esp+ 8]                 ; coeff    mov _EAX, prm2                 ; coeff
605    pcmpeqw mm0,mm0    pcmpeqw mm0,mm0
606    movq mm6, [mmx_quant + ecx*8]     ; quant    lea TMP1, [mmx_quant]
607    shl ecx,31                        ; quant & 1 ? 0 : - 1    movq mm6, [TMP1 + TMP0*8] ; quant
608      shl TMP0,31                    ; quant & 1 ? 0 : - 1
609    movq mm7,mm6    movq mm7,mm6
610    movq mm5,mm0    movq mm5,mm0
611    movd mm1,ecx    movd mm1,TMP0d
612    mov edx, [esp+ 4]                 ; data    mov TMP1, prm1                 ; data
613    psllw mm0,mm1    psllw mm0,mm1
614    paddw mm7,mm7                     ; 2*quant    paddw mm7,mm7                     ; 2*quant
615    paddw mm6,mm0                     ; quant-1    paddw mm6,mm0                     ; quant-1
616    psllw mm5,12    psllw mm5,12
617    mov ecx,8    mov TMP0,8
618    psrlw mm5,1    psrlw mm5,1
619    
620  .loop:  .loop:
621    movq mm0,[eax]    movq mm0,[_EAX]
622    pxor mm2,mm2    pxor mm2,mm2
623    pxor mm4,mm4    pxor mm4,mm4
624    pcmpgtw mm2,mm0    pcmpgtw mm2,mm0
625    pcmpeqw mm4,mm0    pcmpeqw mm4,mm0
626    pmullw mm0,mm7      ; * 2 * quant    pmullw mm0,mm7      ; * 2 * quant
627    movq mm1,[eax+8]    movq mm1,[_EAX+8]
628    psubw mm0,mm2    psubw mm0,mm2
629    pxor mm2,mm6    pxor mm2,mm6
630    pxor mm3,mm3    pxor mm3,mm3
# Line 615  Line 648 
648    paddsw mm0, mm5    paddsw mm0, mm5
649    paddsw mm1, mm5    paddsw mm1, mm5
650    
651    movq [edx],mm0    movq [TMP1],mm0
652    lea eax,[eax+16]    lea _EAX,[_EAX+16]
653    movq [edx+8],mm1    movq [TMP1+8],mm1
654    
655    dec ecx    dec TMP0
656    lea edx,[edx+16]    lea TMP1,[TMP1+16]
657    jne .loop    jne .loop
658    
659     ; deal with DC     ; deal with DC
660    mov eax, [esp+ 8]                ; coeff    mov _EAX, prm2               ; coeff
661    movd mm1,[esp+16]                ; dcscalar    movd mm1,prm4d                ; dcscalar
662    movd mm0,[eax]                   ; coeff[0]    movd mm0,[_EAX]                   ; coeff[0]
663    pmullw mm0,mm1                   ; * dcscalar    pmullw mm0,mm1                   ; * dcscalar
664    mov edx, [esp+ 4]                ; data    mov TMP1, prm1               ; data
665    paddsw mm0, mm5                  ; saturate +    paddsw mm0, mm5                  ; saturate +
666    psubsw mm0, mm5    psubsw mm0, mm5
667    psubsw mm0, mm5                  ; saturate -    psubsw mm0, mm5                  ; saturate -
668    paddsw mm0, mm5    paddsw mm0, mm5
669    movd eax,mm0    movd eax,mm0
670    mov [edx], ax    mov [TMP1], ax
671    
672    xor eax, eax                    ; return 0    xor _EAX, _EAX                    ; return 0
673    ret    ret
674    ENDFUNC
675    
676  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
677  ;  ;
# Line 650  Line 684 
684  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
685    
686    
687  ALIGN 16  ALIGN SECTION_ALIGN
688  dequant_h263_intra_xmm:  dequant_h263_intra_xmm:
689    
690    mov ecx, [esp+12]                 ; quant    mov TMP0, prm3                 ; quant
691    mov eax, [esp+ 8]                 ; coeff    mov _EAX, prm2                 ; coeff
692    
693    movd mm6,ecx                      ; quant    movd mm6,TMP0d                  ; quant
694    pcmpeqw mm0,mm0    pcmpeqw mm0,mm0
695    pshufw mm6,mm6,0                  ; all quant    pshufw mm6,mm6,0                  ; all quant
696    shl ecx,31    shl TMP0,31
697    movq mm5,mm0    movq mm5,mm0
698    movq mm7,mm6    movq mm7,mm6
699    movd mm1,ecx    movd mm1,TMP0d
700    mov edx, [esp+ 4]                 ; data    mov TMP1, prm1                 ; data
701    psllw mm0,mm1                     ; quant & 1 ? 0 : - 1    psllw mm0,mm1                     ; quant & 1 ? 0 : - 1
702    movq mm4,mm5    movq mm4,mm5
703    paddw mm7,mm7                     ; quant*2    paddw mm7,mm7                     ; quant*2
704    paddw mm6,mm0                     ; quant-1    paddw mm6,mm0                     ; quant-1
705    psrlw mm4,5                       ; mm4=2047    psrlw mm4,5                       ; mm4=2047
706    mov ecx,8    mov TMP0,8
707    pxor mm5,mm4                      ; mm5=-2048    pxor mm5,mm4                      ; mm5=-2048
708    
709  .loop:  .loop:
710    movq mm0,[eax]    movq mm0,[_EAX]
711    pxor mm2,mm2    pxor mm2,mm2
712    pxor mm3,mm3    pxor mm3,mm3
713    
714    pcmpgtw mm2,mm0    pcmpgtw mm2,mm0
715    pcmpeqw mm3,mm0     ; if coeff==0...    pcmpeqw mm3,mm0     ; if coeff==0...
716    pmullw mm0,mm7      ; * 2 * quant    pmullw mm0,mm7      ; * 2 * quant
717    movq mm1,[eax+8]    movq mm1,[_EAX+8]
718    
719    psubw mm0,mm2    psubw mm0,mm2
720    pxor mm2,mm6    pxor mm2,mm6
# Line 700  Line 734 
734    
735    pmaxsw mm0,mm5    pmaxsw mm0,mm5
736    pminsw mm1,mm4    pminsw mm1,mm4
737    movq [edx],mm0    movq [TMP1],mm0
738    pmaxsw mm1,mm5    pmaxsw mm1,mm5
739    lea eax,[eax+16]    lea _EAX,[_EAX+16]
740    movq [edx+8],mm1    movq [TMP1+8],mm1
741    
742    dec ecx    dec TMP0
743    lea edx,[edx+16]    lea TMP1,[TMP1+16]
744    jne .loop    jne .loop
745    
746     ; deal with DC     ; deal with DC
747    mov eax, [esp+ 8]                 ; coeff    mov _EAX, prm2                ; coeff
748    movd mm1,[esp+16]                 ; dcscalar    movd mm1,prm4d                 ; dcscalar
749    movd mm0, [eax]    movd mm0, [_EAX]
750    pmullw mm0, mm1    pmullw mm0, mm1
751    mov edx, [esp+ 4]                 ; data    mov TMP1, prm1                ; data
752    pminsw mm0,mm4    pminsw mm0,mm4
753    pmaxsw mm0,mm5    pmaxsw mm0,mm5
754    movd eax, mm0    movd eax, mm0
755    mov [edx], ax    mov [TMP1], ax
756    
757    xor eax, eax                      ; return 0    xor _EAX, _EAX                ; return 0
758    ret    ret
759    ENDFUNC
760    
761    
762  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 734  Line 769 
769  ;  ;
770  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
771    
772  ALIGN 16  ALIGN SECTION_ALIGN
773  dequant_h263_intra_sse2:  dequant_h263_intra_sse2:
774    
775    mov ecx, [esp+12]                 ; quant    mov TMP0, prm3                 ; quant
776    mov eax, [esp+ 8]                 ; coeff    mov _EAX, prm2                 ; coeff
777    
778    movd xmm6,ecx                     ; quant    movd xmm6,TMP0d                     ; quant
779    
780    shl ecx,31    shl TMP0,31
781    pshuflw xmm6,xmm6,0    pshuflw xmm6,xmm6,0
782    pcmpeqw xmm0,xmm0    pcmpeqw xmm0,xmm0
783    movlhps xmm6,xmm6                 ; all quant    movlhps xmm6,xmm6                 ; all quant
784    movd xmm1,ecx    movd xmm1,TMP0d
785    movdqa xmm5,xmm0    movdqa xmm5,xmm0
786    movdqa xmm7,xmm6    movdqa xmm7,xmm6
787    mov edx, [esp+ 4]                 ; data    mov TMP1, prm1                 ; data
788    paddw xmm7,xmm7                   ; quant *2    paddw xmm7,xmm7                   ; quant *2
789    psllw xmm0,xmm1                   ; quant & 1 ? 0 : - 1    psllw xmm0,xmm1                   ; quant & 1 ? 0 : - 1
790    movdqa xmm4,xmm5    movdqa xmm4,xmm5
791    paddw xmm6,xmm0                   ; quant-1    paddw xmm6,xmm0                   ; quant-1
792    psrlw xmm4,5                      ; 2047    psrlw xmm4,5                      ; 2047
793    mov ecx,4    mov TMP0,4
794    pxor xmm5,xmm4                    ; mm5=-2048    pxor xmm5,xmm4                    ; mm5=-2048
795    
796  .loop:  .loop:
797    movdqa xmm0,[eax]    movdqa xmm0,[_EAX]
798    pxor xmm2,xmm2    pxor xmm2,xmm2
799    pxor xmm3,xmm3    pxor xmm3,xmm3
800    
801    pcmpgtw xmm2,xmm0    pcmpgtw xmm2,xmm0
802    pcmpeqw xmm3,xmm0    pcmpeqw xmm3,xmm0
803    pmullw xmm0,xmm7      ; * 2 * quant    pmullw xmm0,xmm7      ; * 2 * quant
804    movdqa xmm1,[eax+16]    movdqa xmm1,[_EAX+16]
805    
806    psubw xmm0,xmm2    psubw xmm0,xmm2
807    pxor xmm2,xmm6    pxor xmm2,xmm6
# Line 786  Line 821 
821    
822    pmaxsw xmm0,xmm5    pmaxsw xmm0,xmm5
823    pminsw xmm1,xmm4    pminsw xmm1,xmm4
824    movdqa [edx],xmm0    movdqa [TMP1],xmm0
825    pmaxsw xmm1,xmm5    pmaxsw xmm1,xmm5
826    lea eax,[eax+32]    lea _EAX,[_EAX+32]
827    movdqa [edx+16],xmm1    movdqa [TMP1+16],xmm1
828    
829    dec ecx    dec TMP0
830    lea edx,[edx+32]    lea TMP1,[TMP1+32]
831    jne .loop    jne .loop
832    
833     ; deal with DC     ; deal with DC
834    
835    mov eax, [esp+ 8]             ; coeff    mov _EAX, prm2             ; coeff
836    movsx eax,word [eax]    movsx _EAX,word [_EAX]
837    imul dword [esp+16]           ; dcscalar    imul prm4d                 ; dcscalar
838    mov edx, [esp+ 4]             ; data    mov TMP1, prm1             ; data
839    movd xmm0,eax    movd xmm0,eax
840    pminsw xmm0,xmm4    pminsw xmm0,xmm4
841    pmaxsw xmm0,xmm5    pmaxsw xmm0,xmm5
842    movd eax,xmm0    movd eax,xmm0
843    
844    mov [edx], ax    mov [TMP1], ax
845    
846    xor eax, eax                  ; return 0    xor _EAX, _EAX                  ; return 0
847    ret    ret
848    ENDFUNC
849    
850  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
851  ;  ;
# Line 820  Line 856 
856  ;  ;
857  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
858    
859  ALIGN 16  ALIGN SECTION_ALIGN
860  dequant_h263_inter_mmx:  dequant_h263_inter_mmx:
861    
862    mov ecx, [esp+12]                 ; quant    mov TMP0, prm3                 ; quant
863    mov eax, [esp+ 8]                 ; coeff    mov _EAX, prm2                 ; coeff
864    pcmpeqw mm0,mm0    pcmpeqw mm0,mm0
865    movq mm6, [mmx_quant + ecx*8]     ; quant    lea TMP1, [mmx_quant]
866    shl ecx,31                        ; odd/even    movq mm6, [TMP1 + TMP0*8]      ; quant
867      shl TMP0,31                    ; odd/even
868    movq mm7,mm6    movq mm7,mm6
869    movd mm1,ecx    movd mm1,TMP0d
870    mov edx, [esp+ 4]                 ; data    mov TMP1, prm1                 ; data
871    movq mm5,mm0    movq mm5,mm0
872    psllw mm0,mm1                     ; quant & 1 ? 0 : - 1    psllw mm0,mm1                     ; quant & 1 ? 0 : - 1
873    paddw mm7,mm7                     ; quant*2    paddw mm7,mm7                     ; quant*2
874    paddw mm6,mm0                     ; quant & 1 ? quant : quant - 1    paddw mm6,mm0                     ; quant & 1 ? quant : quant - 1
875    psllw mm5,12    psllw mm5,12
876    mov ecx,8    mov TMP0,8
877    psrlw mm5,1                       ; 32767-2047 (32768-2048)    psrlw mm5,1                       ; 32767-2047 (32768-2048)
878    
879  .loop:  .loop:
880    movq mm0,[eax]    movq mm0,[_EAX]
881    pxor mm4,mm4    pxor mm4,mm4
882    pxor mm2,mm2    pxor mm2,mm2
883    pcmpeqw mm4,mm0     ; if coeff==0...    pcmpeqw mm4,mm0     ; if coeff==0...
# Line 848  Line 885 
885    pmullw mm0,mm7      ; * 2 * quant    pmullw mm0,mm7      ; * 2 * quant
886    pxor mm3,mm3    pxor mm3,mm3
887    psubw mm0,mm2    psubw mm0,mm2
888    movq mm1,[eax+8]    movq mm1,[_EAX+8]
889    pxor mm2,mm6    pxor mm2,mm6
890    pcmpgtw mm3,mm1    pcmpgtw mm3,mm1
891    pandn mm4,mm2      ; ... then data==0    pandn mm4,mm2      ; ... then data==0
# Line 870  Line 907 
907    paddsw mm0, mm5    paddsw mm0, mm5
908    paddsw mm1, mm5    paddsw mm1, mm5
909    
910    movq [edx],mm0    movq [TMP1],mm0
911    lea eax,[eax+16]    lea _EAX,[_EAX+16]
912    movq [edx+8],mm1    movq [TMP1+8],mm1
913    
914    dec ecx    dec TMP0
915    lea edx,[edx+16]    lea TMP1,[TMP1+16]
916    jne .loop    jne .loop
917    
918    xor eax, eax              ; return 0    xor _EAX, _EAX              ; return 0
919    ret    ret
920    ENDFUNC
921    
922    
923  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 890  Line 928 
928  ;                                 const uint16_t *mpeg_matrices);  ;                                 const uint16_t *mpeg_matrices);
929  ;  ;
930  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
931  ALIGN 16  ALIGN SECTION_ALIGN
932  dequant_h263_inter_xmm:  dequant_h263_inter_xmm:
933    
934    mov ecx, [esp+12]                 ; quant    mov TMP0, prm3                 ; quant
935    mov eax, [esp+ 8]                 ; coeff    mov _EAX, prm2                 ; coeff
936    pcmpeqw mm0,mm0    pcmpeqw mm0,mm0
937    movq mm6, [mmx_quant + ecx*8]     ; quant    lea TMP1, [mmx_quant]
938    shl ecx,31    movq mm6, [TMP1 + TMP0*8]      ; quant
939      shl TMP0,31
940    movq mm5,mm0    movq mm5,mm0
941    movd mm1,ecx    movd mm1,TMP0d
942    movq mm7,mm6    movq mm7,mm6
943    psllw mm0,mm1    psllw mm0,mm1
944    mov edx, [esp+ 4]                 ; data    mov TMP1, prm1                 ; data
945    movq mm4,mm5    movq mm4,mm5
946    paddw mm7,mm7    paddw mm7,mm7
947    paddw mm6,mm0                     ; quant-1    paddw mm6,mm0                     ; quant-1
948    
949    psrlw mm4,5    psrlw mm4,5
950    mov ecx,8    mov TMP0,8
951    pxor mm5,mm4                      ; mm5=-2048    pxor mm5,mm4                      ; mm5=-2048
952    
953  .loop:  .loop:
954    movq mm0,[eax]    movq mm0,[_EAX]
955    pxor mm3,mm3    pxor mm3,mm3
956    pxor mm2,mm2    pxor mm2,mm2
957    pcmpeqw mm3,mm0    pcmpeqw mm3,mm0
958    pcmpgtw mm2,mm0    pcmpgtw mm2,mm0
959    pmullw mm0,mm7                    ; * 2 * quant    pmullw mm0,mm7                    ; * 2 * quant
960    pandn mm3,mm6    pandn mm3,mm6
961    movq mm1,[eax+8]    movq mm1,[_EAX+8]
962    psubw mm0,mm2    psubw mm0,mm2
963    pxor mm2,mm3    pxor mm2,mm3
964    pxor mm3,mm3    pxor mm3,mm3
# Line 938  Line 977 
977    pmaxsw mm0,mm5    pmaxsw mm0,mm5
978    pmaxsw mm1,mm5    pmaxsw mm1,mm5
979    
980    movq [edx],mm0    movq [TMP1],mm0
981    lea eax,[eax+16]    lea _EAX,[_EAX+16]
982    movq [edx+8],mm1    movq [TMP1+8],mm1
983    
984    dec ecx    dec TMP0
985    lea edx,[edx+16]    lea TMP1,[TMP1+16]
986    jne .loop    jne .loop
987    
988    xor eax, eax              ; return 0    xor _EAX, _EAX              ; return 0
989    ret    ret
990    ENDFUNC
991    
992    
993  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
# Line 959  Line 999 
999  ;  ;
1000  ;-----------------------------------------------------------------------------  ;-----------------------------------------------------------------------------
1001    
1002  ALIGN 16  ALIGN SECTION_ALIGN
1003  dequant_h263_inter_sse2:  dequant_h263_inter_sse2:
1004    
1005    mov ecx, [esp+12]                 ; quant    mov TMP0, prm3                 ; quant
1006    mov eax, [esp+ 8]                 ; coeff    mov _EAX, prm2                 ; coeff
1007    
1008    movq xmm6, [mmx_quant + ecx*8]    ; quant    lea TMP1, [mmx_quant]
1009    inc ecx    movq xmm6, [TMP1 + TMP0*8]    ; quant
1010      inc TMP0
1011    pcmpeqw xmm5,xmm5    pcmpeqw xmm5,xmm5
1012    and ecx,1    and TMP0,1
1013    movlhps xmm6,xmm6    movlhps xmm6,xmm6
1014    movd xmm0,ecx    movd xmm0,TMP0d
1015    movdqa xmm7,xmm6    movdqa xmm7,xmm6
1016    pshuflw xmm0,xmm0,0    pshuflw xmm0,xmm0,0
1017    movdqa xmm4,xmm5    movdqa xmm4,xmm5
1018    mov edx, [esp+ 4]                 ; data    mov TMP1, prm1                 ; data
1019    movlhps xmm0,xmm0    movlhps xmm0,xmm0
1020    paddw xmm7,xmm7    paddw xmm7,xmm7
1021    psubw xmm6,xmm0    psubw xmm6,xmm0
1022    psrlw xmm4,5   ; 2047    psrlw xmm4,5   ; 2047
1023    mov ecx,4    mov TMP0,4
1024    pxor xmm5,xmm4 ; mm5=-2048    pxor xmm5,xmm4 ; mm5=-2048
1025    
1026  .loop:  .loop:
1027    movdqa xmm0,[eax]    movdqa xmm0,[_EAX]
1028    pxor xmm3,xmm3    pxor xmm3,xmm3
1029    pxor xmm2,xmm2    pxor xmm2,xmm2
1030    pcmpeqw xmm3,xmm0    pcmpeqw xmm3,xmm0
1031    pcmpgtw xmm2,xmm0    pcmpgtw xmm2,xmm0
1032    pmullw xmm0,xmm7      ; * 2 * quant    pmullw xmm0,xmm7      ; * 2 * quant
1033    pandn xmm3,xmm6    pandn xmm3,xmm6
1034    movdqa xmm1,[eax+16]    movdqa xmm1,[_EAX+16]
1035    psubw xmm0,xmm2    psubw xmm0,xmm2
1036    pxor xmm2,xmm3    pxor xmm2,xmm3
1037    pxor xmm3,xmm3    pxor xmm3,xmm3
# Line 1009  Line 1050 
1050    pmaxsw xmm0,xmm5    pmaxsw xmm0,xmm5
1051    pmaxsw xmm1,xmm5    pmaxsw xmm1,xmm5
1052    
1053    movdqa [edx],xmm0    movdqa [TMP1],xmm0
1054    lea eax,[eax+32]    lea _EAX,[_EAX+32]
1055    movdqa [edx+16],xmm1    movdqa [TMP1+16],xmm1
1056    
1057    dec ecx    dec TMP0
1058    lea edx,[edx+32]    lea TMP1,[TMP1+32]
1059    jne .loop    jne .loop
1060    
1061    xor eax, eax              ; return 0    xor _EAX, _EAX              ; return 0
1062    ret    ret
1063    ENDFUNC
1064    
1065    
1066    %ifidn __OUTPUT_FORMAT__,elf
1067    section ".note.GNU-stack" noalloc noexec nowrite progbits
1068    %endif
1069    

Legend:
Removed from v.1432  
changed lines
  Added in v.1820

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4