]> granicus.if.org Git - libx264/commitdiff
tweak x264_pixel_sad_x4_16x16_sse2 horizontal sum. 168 -> 166 cycles on core2.
authorLoren Merritt <pengvado@videolan.org>
Fri, 21 Dec 2007 01:57:14 +0000 (01:57 +0000)
committerLoren Merritt <pengvado@videolan.org>
Fri, 21 Dec 2007 01:57:14 +0000 (01:57 +0000)
git-svn-id: svn://svn.videolan.org/x264/trunk@714 df754926-b1dd-0310-bc7b-ec298dee348c

common/amd64/pixel-sse2.asm
common/i386/pixel-sse2.asm

index 7b8173867513e5303f8fa43a7b4e9cb895eedfb7..fa8668e381094aa0507334d49d65a1fddf187b24 100644 (file)
@@ -268,18 +268,16 @@ SAD_W16 sse3
 
 %macro SAD_X4_END 0
     mov      rax, parm7q
-    movhlps xmm4, xmm0
-    movhlps xmm5, xmm1
-    movhlps xmm6, xmm2
-    movhlps xmm7, xmm3
-    paddw   xmm0, xmm4
-    paddw   xmm1, xmm5
-    paddw   xmm2, xmm6
-    paddw   xmm3, xmm7
-    movd [rax+0], xmm0
-    movd [rax+4], xmm1
-    movd [rax+8], xmm2
-    movd [rax+12], xmm3
+    psllq   xmm1, 32
+    psllq   xmm3, 32
+    paddw   xmm0, xmm1
+    paddw   xmm2, xmm3
+    movhlps xmm1, xmm0
+    movhlps xmm3, xmm2
+    paddw   xmm0, xmm1
+    paddw   xmm2, xmm3
+    movq [rax+0], xmm0
+    movq [rax+8], xmm2
     ret
 %endmacro
 
index 9a849d512a683e98b3b2789c19467825be14b5e0..45e2af7391a235f69a3d9b842fa3af37dcc807e8 100644 (file)
@@ -296,18 +296,16 @@ SAD_W16 sse3
 
 %macro SAD_X4_END 0
     mov     eax,  [esp+40]
-    pshufd  xmm4, xmm0, 2
-    pshufd  xmm5, xmm1, 2
-    pshufd  xmm6, xmm2, 2
-    pshufd  xmm7, xmm3, 2
-    paddw   xmm0, xmm4
-    paddw   xmm1, xmm5
-    paddw   xmm2, xmm6
-    paddw   xmm3, xmm7
-    movd    [eax+0], xmm0
-    movd    [eax+4], xmm1
-    movd    [eax+8], xmm2
-    movd    [eax+12], xmm3
+    psllq   xmm1, 32
+    psllq   xmm3, 32
+    paddw   xmm0, xmm1
+    paddw   xmm2, xmm3
+    pshufd  xmm1, xmm0, 14
+    pshufd  xmm3, xmm2, 14
+    paddw   xmm0, xmm1
+    paddw   xmm2, xmm3
+    movq    [eax+0], xmm0
+    movq    [eax+8], xmm2
     pop     ebx
     pop     esi
     pop     edi