dsputil: x86: add SHUFFLE_MASK_W macro
authorJason Garrett-Glaser <jason@x264.com>
Fri, 20 Jul 2012 22:33:06 +0000 (18:33 -0400)
committerJustin Ruggles <justin.ruggles@gmail.com>
Sun, 22 Jul 2012 20:56:58 +0000 (16:56 -0400)
Simplifies pshufb masks that operate on words.

libavcodec/x86/dsputil_yasm.asm
libavutil/x86/x86util.asm

index 313e774..077f3a0 100644 (file)
@@ -28,7 +28,7 @@ pb_zzzzzzzz77777777: times 8 db -1
 pb_7: times 8 db 7
 pb_zzzz3333zzzzbbbb: db -1,-1,-1,-1,3,3,3,3,-1,-1,-1,-1,11,11,11,11
 pb_zz11zz55zz99zzdd: db -1,-1,1,1,-1,-1,5,5,-1,-1,9,9,-1,-1,13,13
-pb_revwords: db 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 0, 1
+pb_revwords: SHUFFLE_MASK_W 7, 6, 5, 4, 3, 2, 1, 0
 pd_16384: times 4 dd 16384
 pb_bswap32: db 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12
 
index 941ec76..8450acd 100644 (file)
     shufps       %1, %1, 0
 %endif
 %endmacro
+
+%macro SHUFFLE_MASK_W 8
+    %rep 8
+        %if %1>=0x80
+            db %1, %1
+        %else
+            db %1*2
+            db %1*2+1
+        %endif
+        %rotate 1
+    %endrep
+%endmacro