annotate mp3lib/decode_sse.s @ 1224:cf2ef08fca25

Reviewed for release.
author atmos4
date Sun, 24 Jun 2001 21:12:17 +0000
parents 3d45e3bcd2bd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
787
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
1 ///
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
2 /// Replacement of synth_1to1() with Intel's SSE SIMD operations support
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
3 ///
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
4 /// This code based 'decode_k7.s' by Nick Kurshev
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
5 /// <squash@mb.kcom.ne.jp>,only some types of changes have been made:
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
6 ///
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
7 /// - SSE optimization
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
8 /// - change function name for support SSE automatic detect
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
9 ///
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
10 /// Modified by Nick Kurshev <nickols_k@mail.ru>
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
11 ///
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
12 / synth_1to1_3dnow works the same way as the c version of
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
13 / synth_1to1. this assembler code based 'decode-i586.s'
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
14 / (by Stefan Bieschewski <stb@acm.org>), two types of changes
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
15 / have been made:
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
16 / - use {MMX,3DNow!} instruction for reduce cpu
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
17 / - remove unused(?) local symbols
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
18 /
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
19 / useful sources of information on optimizing 3DNow! code include:
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
20 / AMD 3DNow! Technology Manual (Publication #21928)
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
21 / English: http://www.amd.com/K6/k6docs/pdf/21928d.pdf
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
22 / (Japanese: http://www.amd.com/japan/K6/k6docs/j21928c.pdf)
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
23 / AMD-K6-2 Processor Code Optimization Application Note (Publication #21924)
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
24 / English: http://www.amd.com/K6/k6docs/pdf/21924b.pdf
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
25 /
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
26 / This code was tested only AMD-K6-2 processor Linux systems,
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
27 / please tell me:
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
28 / - whether this code works on other 3DNow! capable processors
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
29 / (ex.IDT-C6-2) or not
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
30 / - whether this code works on other OSes or not
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
31 /
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
32 / by KIMURA Takuhiro <kim@hannah.ipc.miyakyo-u.ac.jp> - until 31.Mar.1998
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
33 / <kim@comtec.co.jp> - after 1.Apr.1998
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
34
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
35 / Enhancments for q-word operation by Michael Hipp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
36
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
37 .bss
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
38 .comm buffs,4352,4
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
39 .data
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
40 .align 4
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
41 bo:
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
42 .long 1
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
43 .text
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
44 /* int synth_1to1(real *bandPtr,int channel,unsigned char *out) */
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
45 .globl synth_1to1_sse
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
46 synth_1to1_sse:
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
47 subl $12,%esp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
48 pushl %ebp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
49 pushl %edi
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
50 pushl %esi
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
51 pushl %ebx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
52
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
53 movl 32(%esp),%eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
54 movl 40(%esp),%esi
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
55 movl $0,%edi
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
56 movl bo,%ebp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
57 cmpl %edi,36(%esp)
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
58 jne .L48
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
59 decl %ebp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
60 andl $15,%ebp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
61 movl %ebp,bo
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
62 movl $buffs,%ecx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
63 jmp .L49
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
64 .L48:
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
65 addl $2,%esi
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
66 movl $buffs+2176,%ecx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
67 .L49:
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
68 testl $1,%ebp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
69 je .L50
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
70 movl %ecx,%ebx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
71 movl %ebp,16(%esp)
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
72 pushl %eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
73 movl 20(%esp),%edx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
74 leal (%ebx,%edx,4),%eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
75 pushl %eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
76 movl 24(%esp),%eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
77 incl %eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
78 andl $15,%eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
79 leal 1088(,%eax,4),%eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
80 addl %ebx,%eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
81 jmp .L74
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
82 .L50:
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
83 leal 1088(%ecx),%ebx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
84 leal 1(%ebp),%edx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
85 movl %edx,16(%esp)
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
86 pushl %eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
87 leal 1092(%ecx,%ebp,4),%eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
88 pushl %eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
89 leal (%ecx,%ebp,4),%eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
90 .L74:
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
91 pushl %eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
92 call dct64
864
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
93 addl $12, %esp
787
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
94 movl 16(%esp),%edx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
95 leal 0(,%edx,4),%edx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
96 movl $decwin+64,%eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
97 movl %eax,%ecx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
98 subl %edx,%ecx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
99 movl $16,%ebp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
100
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
101 .L55:
864
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
102 movups (%ecx), %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
103 mulps (%ebx), %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
104 movups 16(%ecx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
105 mulps 16(%ebx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
106 addps %xmm1, %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
107 movups 32(%ecx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
108 mulps 32(%ebx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
109 addps %xmm1, %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
110 movups 48(%ecx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
111 mulps 48(%ebx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
112 addps %xmm1, %xmm0
872
3d45e3bcd2bd Replaced wrond direction floating -> integer conversion.
atmosfear
parents: 864
diff changeset
113 /* pfnacc -> PFNACC mmreg1, mmreg2 performs the following operations: */
3d45e3bcd2bd Replaced wrond direction floating -> integer conversion.
atmosfear
parents: 864
diff changeset
114 /* temp = mmreg2 */
3d45e3bcd2bd Replaced wrond direction floating -> integer conversion.
atmosfear
parents: 864
diff changeset
115 /* mmreg1[31:0] = mmreg1[31:0] - mmreg1[63:32] */
3d45e3bcd2bd Replaced wrond direction floating -> integer conversion.
atmosfear
parents: 864
diff changeset
116 /* mmreg1[63:32]= temp [31:0] - temp[63:32] */
3d45e3bcd2bd Replaced wrond direction floating -> integer conversion.
atmosfear
parents: 864
diff changeset
117 /* save difference of mmreg1's low-word and high-word into mmreg1's low-word */
3d45e3bcd2bd Replaced wrond direction floating -> integer conversion.
atmosfear
parents: 864
diff changeset
118 /* save difference of mmreg2's low-word and high-word into mmreg1's high-word */
864
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
119 movhlps %xmm0, %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
120 addps %xmm1, %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
121 movaps %xmm0, %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
122 shufps $0x55, %xmm1, %xmm1 /* fake of pfnacc. 1|1|1|1 */
872
3d45e3bcd2bd Replaced wrond direction floating -> integer conversion.
atmosfear
parents: 864
diff changeset
123
864
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
124 subss %xmm1, %xmm0
872
3d45e3bcd2bd Replaced wrond direction floating -> integer conversion.
atmosfear
parents: 864
diff changeset
125 cvtss2si %xmm0, %eax
787
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
126
864
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
127 / sar $16,%eax
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
128 movw %ax,(%esi)
787
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
129
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
130 addl $64,%ebx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
131 subl $-128,%ecx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
132 addl $4,%esi
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
133 decl %ebp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
134 jnz .L55
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
135
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
136 / --- end of loop 1 ---
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
137
864
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
138 movups (%ecx), %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
139 mulps (%ebx), %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
140 movups 16(%ecx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
141 mulps 16(%ebx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
142 addps %xmm1, %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
143 movups 32(%ecx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
144 mulps 32(%ebx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
145 addps %xmm1, %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
146 movups 48(%ecx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
147 mulps 48(%ebx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
148 addps %xmm1, %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
149 movhlps %xmm0, %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
150 addss %xmm1, %xmm0
872
3d45e3bcd2bd Replaced wrond direction floating -> integer conversion.
atmosfear
parents: 864
diff changeset
151 cvtss2si %xmm0, %eax
787
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
152
864
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
153 / sar $16,%eax
787
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
154
864
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
155 movw %ax,(%esi)
787
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
156
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
157 addl $-64,%ebx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
158 addl $4,%esi
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
159 addl $256,%ecx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
160 movl $15,%ebp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
161
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
162 .L68:
864
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
163 xorps %xmm0, %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
164 movups (%ecx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
165 mulps (%ebx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
166 subps %xmm1, %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
167 movups 16(%ecx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
168 mulps 16(%ebx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
169 subps %xmm1, %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
170 movups 32(%ecx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
171 mulps 32(%ebx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
172 subps %xmm1, %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
173 movups 48(%ecx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
174 mulps 48(%ebx), %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
175 subps %xmm1, %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
176 movhlps %xmm0, %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
177 subps %xmm1, %xmm0
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
178 movaps %xmm0, %xmm1
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
179 shufps $0x55, %xmm1, %xmm1 /* fake of pfacc 1|1|1|1 */
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
180 addss %xmm1, %xmm0
872
3d45e3bcd2bd Replaced wrond direction floating -> integer conversion.
atmosfear
parents: 864
diff changeset
181 cvtss2si %xmm0, %eax
787
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
182
864
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
183 / sar $16,%eax
787
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
184
864
f0a3b5bf2e7a This version is slightly better then previous, hard to decide.
atmosfear
parents: 863
diff changeset
185 movw %ax,(%esi)
787
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
186
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
187 addl $-64,%ebx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
188 subl $-128,%ecx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
189 addl $4,%esi
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
190 decl %ebp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
191 jnz .L68
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
192
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
193 / --- end of loop 2
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
194
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
195 movl %edi,%eax
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
196 popl %ebx
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
197 popl %esi
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
198 popl %edi
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
199 popl %ebp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
200 addl $12,%esp
9bc104531aec mp3lib sse support - disabled by default
arpi_esp
parents:
diff changeset
201 ret