aboutsummaryrefslogtreecommitdiffhomepage
path: root/mp3lib
diff options
context:
space:
mode:
authorGravatar atmosfear <atmosfear@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-05-25 14:02:21 +0000
committerGravatar atmosfear <atmosfear@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-05-25 14:02:21 +0000
commit2d570f3d3af409c6a84992087df504189d9bbb16 (patch)
treefc83630709da30131121074483cc698d875f17b6 /mp3lib
parent6af61392b2a68f446e0c9c27944045fd6f61d20d (diff)
Replaced wrond direction floating -> integer conversion.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@873 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mp3lib')
-rw-r--r--mp3lib/decode_sse.s13
1 files changed, 10 insertions, 3 deletions
diff --git a/mp3lib/decode_sse.s b/mp3lib/decode_sse.s
index b4ee78d0ea..eebd2f6cfb 100644
--- a/mp3lib/decode_sse.s
+++ b/mp3lib/decode_sse.s
@@ -110,12 +110,19 @@ synth_1to1_sse:
movups 48(%ecx), %xmm1
mulps 48(%ebx), %xmm1
addps %xmm1, %xmm0
+/* pfnacc -> PFNACC mmreg1, mmreg2 performs the following operations: */
+/* temp = mmreg2 */
+/* mmreg1[31:0] = mmreg1[31:0] - mmreg1[63:32] */
+/* mmreg1[63:32]= temp [31:0] - temp[63:32] */
+/* save difference of mmreg1's low-word and high-word into mmreg1's low-word */
+/* save difference of mmreg2's low-word and high-word into mmreg1's high-word */
movhlps %xmm0, %xmm1
addps %xmm1, %xmm0
movaps %xmm0, %xmm1
shufps $0x55, %xmm1, %xmm1 /* fake of pfnacc. 1|1|1|1 */
+
subss %xmm1, %xmm0
- cvttss2si %xmm0, %eax
+ cvtss2si %xmm0, %eax
/ sar $16,%eax
movw %ax,(%esi)
@@ -141,7 +148,7 @@ synth_1to1_sse:
addps %xmm1, %xmm0
movhlps %xmm0, %xmm1
addss %xmm1, %xmm0
- cvttss2si %xmm0, %eax
+ cvtss2si %xmm0, %eax
/ sar $16,%eax
@@ -171,7 +178,7 @@ synth_1to1_sse:
movaps %xmm0, %xmm1
shufps $0x55, %xmm1, %xmm1 /* fake of pfacc 1|1|1|1 */
addss %xmm1, %xmm0
- cvttss2si %xmm0, %eax
+ cvtss2si %xmm0, %eax
/ sar $16,%eax