Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3960 | Serge | 1 | /* |
2 | equalizer_3dnow: 3DNow! optimized do_equalizer() |
||
3 | |||
4 | copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1 |
||
5 | see COPYING and AUTHORS files in distribution or http://mpg123.org |
||
6 | initially written by KIMURA Takuhiro |
||
7 | */ |
||
8 | |||
9 | #include "mangle.h" |
||
10 | |||
11 | .text |
||
12 | ALIGN4 |
||
13 | .globl ASM_NAME(do_equalizer_3dnow) |
||
14 | /* .type ASM_NAME(do_equalizer_3dnow),@function */ |
||
15 | /* void do_equalizer(real *bandPtr,int channel, real equalizer[2][32]); */ |
||
16 | ASM_NAME(do_equalizer_3dnow): |
||
17 | pushl %esi |
||
18 | pushl %ebx |
||
19 | /* bandPtr */ |
||
20 | movl 12(%esp),%ebx |
||
21 | /* channel */ |
||
22 | movl 16(%esp),%ecx |
||
23 | xorl %edx,%edx |
||
24 | /* equalizer */ |
||
25 | movl 20(%esp),%esi |
||
26 | sall $7,%ecx |
||
27 | ALIGN4 |
||
28 | .L9: |
||
29 | movq (%ebx,%edx),%mm0 |
||
30 | pfmul (%esi,%ecx),%mm0 |
||
31 | |||
32 | movq 8(%ebx,%edx),%mm1 |
||
33 | pfmul 8(%esi,%ecx),%mm1 |
||
34 | movq %mm0,(%ebx,%edx) |
||
35 | |||
36 | movq 16(%ebx,%edx),%mm0 |
||
37 | pfmul 16(%esi,%ecx),%mm0 |
||
38 | movq %mm1,8(%ebx,%edx) |
||
39 | |||
40 | movq 24(%ebx,%edx),%mm1 |
||
41 | pfmul 24(%esi,%ecx),%mm1 |
||
42 | movq %mm0,16(%ebx,%edx) |
||
43 | |||
44 | movq 32(%ebx,%edx),%mm0 |
||
45 | pfmul 32(%esi,%ecx),%mm0 |
||
46 | movq %mm1,24(%ebx,%edx) |
||
47 | |||
48 | movq 40(%ebx,%edx),%mm1 |
||
49 | pfmul 40(%esi,%ecx),%mm1 |
||
50 | movq %mm0,32(%ebx,%edx) |
||
51 | |||
52 | movq 48(%ebx,%edx),%mm0 |
||
53 | pfmul 48(%esi,%ecx),%mm0 |
||
54 | movq %mm1,40(%ebx,%edx) |
||
55 | |||
56 | movq 56(%ebx,%edx),%mm1 |
||
57 | pfmul 56(%esi,%ecx),%mm1 |
||
58 | movq %mm0,48(%ebx,%edx) |
||
59 | movq %mm1,56(%ebx,%edx) |
||
60 | |||
61 | addl $64,%edx |
||
62 | addl $32,%ecx |
||
63 | cmpl $124,%edx |
||
64 | jle .L9 |
||
65 | ALIGN4 |
||
66 | popl %ebx |
||
67 | popl %esi |
||
68 | ret |
||
69 | |||
70 | NONEXEC_STACK |