]> granicus.if.org Git - libx264/commitdiff
x86util: Support ymm registers in HADD macros
authorHenrik Gramner <henrik@gramner.com>
Tue, 16 Apr 2013 21:26:47 +0000 (23:26 +0200)
committerFiona Glaser <fiona@x264.com>
Tue, 23 Apr 2013 21:36:26 +0000 (14:36 -0700)
common/x86/x86util.asm

index a22c89fc6d8e4887d254de39e68b7972ff8d5b03..e3c918376344affa22c4aed17d37f1f442021c5c 100644 (file)
 %endmacro
 
 %macro HADDD 2 ; sum junk
+%if sizeof%1 == 32
+%define %2 xmm%2
+    vextracti128 %2, %1, 1
+%define %1 xmm%1
+    paddd   %1, %2
+%endif
 %if mmsize >= 16
     movhlps %2, %1
     paddd   %1, %2
 %endif
     PSHUFLW %2, %1, q0032
     paddd   %1, %2
+%undef %1
+%undef %2
 %endmacro
 
 %macro HADDW 2 ; reg, tmp
-%if cpuflag(xop) && mmsize >= 16
+%if cpuflag(xop) && sizeof%1 == 16
     vphaddwq  %1, %1
     movhlps   %2, %1
     paddd     %1, %2
 %endmacro
 
 %macro HADDUWD 2
-%if cpuflag(xop)
+%if cpuflag(xop) && sizeof%1 == 16
     vphadduwd %1, %1
 %else
     psrld %2, %1, 16
 %endmacro
 
 %macro HADDUW 2
-%if cpuflag(xop) && mmsize >= 16
+%if cpuflag(xop) && sizeof%1 == 16
     vphadduwq %1, %1
     movhlps   %2, %1
     paddd     %1, %2
 %else
-    HADDUWD %1, %2
-    HADDD %1, %2
+    HADDUWD   %1, %2
+    HADDD     %1, %2
 %endif
 %endmacro