asm cosmetics: base-4 constants for shuffles
authorLoren Merritt <pengvado@akuvian.org>
Sun, 7 Aug 2011 22:57:27 +0000 (22:57 +0000)
committerJason Garrett-Glaser <jason@x264.com>
Wed, 10 Aug 2011 00:21:41 +0000 (17:21 -0700)
common/x86/dct-a.asm
common/x86/deblock-a.asm
common/x86/mc-a.asm
common/x86/pixel-32.asm
common/x86/pixel-a.asm
common/x86/predict-a.asm
common/x86/quant-a.asm
common/x86/sad-a.asm
common/x86/x86inc.asm
common/x86/x86util.asm

index df6e34a..cdeb482 100644 (file)
@@ -310,8 +310,8 @@ cglobal add4x4_idct, 2,2,6
     paddw     m2, m1            ; row3>>1+row1/row0+2
     SBUTTERFLY2 wd, 0, 2, 1
     SUMSUB_BA w, 2, 0, 1
-    pshuflw   m1, m2, 10110001b
-    pshufhw   m2, m2, 10110001b
+    pshuflw   m1, m2, q2301
+    pshufhw   m2, m2, q2301
     punpckldq m1, m0
     punpckhdq m2, m0
     SWAP       0, 1
@@ -505,11 +505,11 @@ cglobal add8x8_idct_dc, 2,2,7
     pxor        m5, m5
     mova        m3, [r1]
     paddd       m3, [pd_32]
-    psrad       m3, 6             ; dc0   0 dc1   0 dc2   0 dc3   0
-    pshuflw     m4, m3, 10100000b ; dc0 dc0 dc1 dc1   _   _   _   _
-    pshufhw     m3, m3, 10100000b ;   _   _   _   _ dc2 dc2 dc3 dc3
-    pshufd      m4, m4, 01010000b ; dc0 dc0 dc0 dc0 dc1 dc1 dc1 dc1
-    pshufd      m3, m3, 11111010b ; dc2 dc2 dc2 dc2 dc3 dc3 dc3 dc3
+    psrad       m3, 6         ; dc0   0 dc1   0 dc2   0 dc3   0
+    pshuflw     m4, m3, q2200 ; dc0 dc0 dc1 dc1   _   _   _   _
+    pshufhw     m3, m3, q2200 ;   _   _   _   _ dc2 dc2 dc3 dc3
+    pshufd      m4, m4, q1100 ; dc0 dc0 dc0 dc0 dc1 dc1 dc1 dc1
+    pshufd      m3, m3, q3322 ; dc2 dc2 dc2 dc2 dc3 dc3 dc3 dc3
     ADD_DC r0+FDEC_STRIDEB*0, m4
     ADD_DC r0+FDEC_STRIDEB*4, m3
     RET
@@ -522,11 +522,11 @@ cglobal add16x16_idct_dc, 2,3,8
 .loop
     mova        m3, [r1]
     paddd       m3, m7
-    psrad       m3, 6             ; dc0   0 dc1   0 dc2   0 dc3   0
-    pshuflw     m4, m3, 10100000b ; dc0 dc0 dc1 dc1   _   _   _   _
-    pshufhw     m3, m3, 10100000b ;   _   _   _   _ dc2 dc2 dc3 dc3
-    pshufd      m4, m4, 01010000b ; dc0 dc0 dc0 dc0 dc1 dc1 dc1 dc1
-    pshufd      m3, m3, 11111010b ; dc2 dc2 dc2 dc2 dc3 dc3 dc3 dc3
+    psrad       m3, 6         ; dc0   0 dc1   0 dc2   0 dc3   0
+    pshuflw     m4, m3, q2200 ; dc0 dc0 dc1 dc1   _   _   _   _
+    pshufhw     m3, m3, q2200 ;   _   _   _   _ dc2 dc2 dc3 dc3
+    pshufd      m4, m4, q1100 ; dc0 dc0 dc0 dc0 dc1 dc1 dc1 dc1
+    pshufd      m3, m3, q3322 ; dc2 dc2 dc2 dc2 dc3 dc3 dc3 dc3
     ADD_DC r0+FDEC_STRIDEB*0, m4
     ADD_DC r0+SIZEOF_PIXEL*8, m3
     add         r1, 16
@@ -572,8 +572,8 @@ cglobal add8x8_idct_dc_mmx, 2,2
     packuswb  mm1, mm1
     punpcklbw mm0, mm0
     punpcklbw mm1, mm1
-    pshufw    mm2, mm0, 0xFA
-    pshufw    mm3, mm1, 0xFA
+    pshufw    mm2, mm0, q3322
+    pshufw    mm3, mm1, q3322
     punpcklbw mm0, mm0
     punpcklbw mm1, mm1
     ADD_DC    mm0, mm1, r0-FDEC_STRIDE*4
@@ -630,8 +630,8 @@ cglobal add16x16_idct_dc_mmx, 2,3
     packuswb  mm1, mm1
     punpcklbw mm0, mm0
     punpcklbw mm1, mm1
-    pshufw    mm2, mm0, 0xFA
-    pshufw    mm3, mm1, 0xFA
+    pshufw    mm2, mm0, q3322
+    pshufw    mm3, mm1, q3322
     punpcklbw mm0, mm0
     punpcklbw mm1, mm1
     ADD_DC    mm0, mm1, r0
@@ -754,15 +754,15 @@ ADD16x16
 %endmacro
 
 %macro DCT2x2 2 ; reg s1/s0 (!=m1), reg s3/s2
-    pshufw    mm1, %1, 10100000b  ;  s1  s1  s0  s0
-    pshufw    mm0, %2, 10110001b  ;  s3  __  s2  __
-    paddw     mm1, %2             ;  s1 s13  s0 s02
-    psubw     mm1, mm0            ; d13 s13 d02 s02
-    pshufw    mm0, mm1, 01000100b ; d02 s02 d02 s02
-    psrlq     mm1, 32             ;  __  __ d13 s13
-    paddw     mm0, mm1            ; d02 s02 d02+d13 s02+s13
-    psllq     mm1, 32             ; d13 s13
-    psubw     mm0, mm1            ; d02-d13 s02-s13 d02+d13 s02+s13
+    pshufw    mm1, %1, q2200  ;  s1  s1  s0  s0
+    pshufw    mm0, %2, q2301  ;  s3  __  s2  __
+    paddw     mm1, %2         ;  s1 s13  s0 s02
+    psubw     mm1, mm0        ; d13 s13 d02 s02
+    pshufw    mm0, mm1, q1010 ; d02 s02 d02 s02
+    psrlq     mm1, 32         ;  __  __ d13 s13
+    paddw     mm0, mm1        ; d02 s02 d02+d13 s02+s13
+    psllq     mm1, 32         ; d13 s13
+    psubw     mm0, mm1        ; d02-d13 s02-s13 d02+d13 s02+s13
 %endmacro
 
 %ifndef HIGH_BIT_DEPTH
@@ -902,7 +902,7 @@ cglobal zigzag_scan_8x8_frame, 2,2,8
     punpckhwd  mm0, mm1
     punpckldq  mm4, mm0
     punpckhdq  mm0, mm6
-    pshufw     mm4, mm4, 0x6c
+    pshufw     mm4, mm4, q1230
 
     movq [r0+2*14], mm4
     movq [r0+2*25], mm0
@@ -914,10 +914,10 @@ cglobal zigzag_scan_8x8_frame, 2,2,8
     punpckldq xmm0, xmm2
     punpckhdq xmm7, xmm4, xmm6
     punpckldq xmm4, xmm6
-    pshufhw   xmm0, xmm0, 0x1b
-    pshuflw   xmm4, xmm4, 0x1b
-    pshufhw   xmm3, xmm3, 0x1b
-    pshuflw   xmm7, xmm7, 0x1b
+    pshufhw   xmm0, xmm0, q0123
+    pshuflw   xmm4, xmm4, q0123
+    pshufhw   xmm3, xmm3, q0123
+    pshuflw   xmm7, xmm7, q0123
 
     movlps [r0+2*10], xmm0
     movhps [r0+2*17], xmm0
@@ -999,8 +999,8 @@ cglobal zigzag_scan_8x8_frame, 2,2,8
     punpckl%3   m5, m1
     movu        m4, [r1+35*SIZEOF_DCTCOEF]
     movu        m1, [r1+49*SIZEOF_DCTCOEF]
-    pshuf%5     m6, m6, 0x1b
-    pshuf%5     m5, m5, 0x1b
+    pshuf%5     m6, m6, q0123
+    pshuf%5     m5, m5, q0123
     mova [r0+60*SIZEOF_DCTCOEF], m0
     mova [r0+56*SIZEOF_DCTCOEF], m2
     movu        m0, [r1+42*SIZEOF_DCTCOEF]
@@ -1017,8 +1017,8 @@ cglobal zigzag_scan_8x8_frame, 2,2,8
     punpckl%3   m1, m7, m3
     punpckh%3   m2, m0
     punpckh%3   m7, m3
-    pshuf%5     m2, m2, 0x1b
-    pshuf%5     m7, m7, 0x1b
+    pshuf%5     m2, m2, q0123
+    pshuf%5     m7, m7, q0123
     mova [r0+28*SIZEOF_DCTCOEF], m4
     movu [r0+43*SIZEOF_DCTCOEF], m1
     movu [r0+39*SIZEOF_DCTCOEF], m2
@@ -1107,7 +1107,7 @@ SCAN_4x4_FRAME
 INIT_XMM
 cglobal zigzag_scan_4x4_field_sse2, 2,3
     movu       m4, [r1+8]
-    pshufd     m0, m4, 0xd2
+    pshufd     m0, m4, q3102
     mova       m1, [r1+32]
     mova       m2, [r1+48]
     movu   [r0+8], m0
@@ -1125,7 +1125,7 @@ cglobal zigzag_scan_4x4_field_sse2, 2,3
 ; sse2 is only 1 cycle faster, and ssse3/pshufb is slower on core2
 INIT_MMX
 cglobal zigzag_scan_4x4_field_mmx2, 2,3
-    pshufw     mm0, [r1+4], 0xd2
+    pshufw     mm0, [r1+4], q3102
     movq       mm1, [r1+16]
     movq       mm2, [r1+24]
     movq    [r0+4], mm0
@@ -1156,13 +1156,13 @@ cglobal zigzag_scan_8x8_field, 2,3,8
     mova       m0, [r1+ 0*SIZEOF_DCTCOEF]       ; 03 02 01 00
     mova       m1, [r1+ 4*SIZEOF_DCTCOEF]       ; 07 06 05 04
     mova       m2, [r1+ 8*SIZEOF_DCTCOEF]       ; 11 10 09 08
-    pshuf%1    m3, m0, 011111111b               ; 03 03 03 03
+    pshuf%1    m3, m0, q3333                    ; 03 03 03 03
     movd       r2, m2                           ; 09 08
-    pshuf%1    m2, m2, 000111001b               ; 08 11 10 09
+    pshuf%1    m2, m2, q0321                    ; 08 11 10 09
     punpckl%2  m3, m1                           ; 05 03 04 03
     pinsr%1    m0, r2d, 3                       ; 08 02 01 00
     punpckl%2  m4, m2, m3                       ; 04 10 03 09
-    pshuf%1    m4, m4, 010110100b               ; 10 04 03 09
+    pshuf%1    m4, m4, q2310                    ; 10 04 03 09
     mova  [r0+ 0*SIZEOF_DCTCOEF], m0            ; 08 02 01 00
     mova  [r0+ 4*SIZEOF_DCTCOEF], m4            ; 10 04 03 09
     mova       m3, [r1+12*SIZEOF_DCTCOEF]       ; 15 14 13 12
@@ -1187,7 +1187,7 @@ cglobal zigzag_scan_8x8_field, 2,3,8
     mova       m7, [r1+28*SIZEOF_DCTCOEF]
     mova       m0, [r1+32*SIZEOF_DCTCOEF]       ; 35 34 33 32
     psrl%4     m5, %5*3                         ; XX XX XX 19
-    pshuf%1    m1, m2, 011111001b               ; 27 27 26 25
+    pshuf%1    m1, m2, q3321                    ; 27 27 26 25
     punpckl%2  m5, m0                           ; 33 XX 32 19
     psrl%4     m2, %5*3                         ; XX XX XX 27
     punpckl%2  m5, m1                           ; 26 32 25 19
@@ -1195,7 +1195,7 @@ cglobal zigzag_scan_8x8_field, 2,3,8
     mova [r0+20*SIZEOF_DCTCOEF], m5             ; 26 32 25 19
     mova       m7, [r1+36*SIZEOF_DCTCOEF]
     mova       m1, [r1+40*SIZEOF_DCTCOEF]       ; 43 42 41 40
-    pshuf%1    m3, m0, 011111001b               ; 35 35 34 33
+    pshuf%1    m3, m0, q3321                    ; 35 35 34 33
     punpckl%2  m2, m1                           ; 41 XX 40 27
     mova [r0+40*SIZEOF_DCTCOEF], m7
     punpckl%2  m2, m3                           ; 34 40 33 27
@@ -1204,7 +1204,7 @@ cglobal zigzag_scan_8x8_field, 2,3,8
     mova       m2, [r1+48*SIZEOF_DCTCOEF]       ; 51 50 49 48
     psrl%4     m0, %5*3                         ; XX XX XX 35
     punpckl%2  m0, m2                           ; 49 XX 48 35
-    pshuf%1    m3, m1, 011111001b               ; 43 43 42 41
+    pshuf%1    m3, m1, q3321                    ; 43 43 42 41
     punpckl%2  m0, m3                           ; 42 48 41 35
     mova [r0+36*SIZEOF_DCTCOEF], m0
     pextr%1     r2d, m2, 3                      ; 51
@@ -1212,7 +1212,7 @@ cglobal zigzag_scan_8x8_field, 2,3,8
     punpckl%2   m1, m7                          ; 45 XX 44 43
     psrl%4      m2, %5                          ; XX 51 50 49
     punpckl%2   m1, m2                          ; 50 44 49 43
-    pshuf%1     m1, m1, 010110100b              ; 44 50 49 43
+    pshuf%1     m1, m1, q2310                   ; 44 50 49 43
     mova [r0+44*SIZEOF_DCTCOEF], m1
     psrl%4      m7, %5                          ; XX 47 46 45
     pinsr%1     m7, r2d, 3                      ; 51 47 46 45
index 9f976d6..9b197a1 100644 (file)
@@ -78,8 +78,8 @@ cextern pw_pixel_max
 %else
     movd        %1, [%2]
     punpcklbw   %1, %1
-    pshuflw     %1, %1, 01010000b
-    pshufd      %1, %1, 01010000b
+    pshuflw     %1, %1, q1100
+    pshufd      %1, %1, q1100
 %endif
     psraw       %1, 8
 %endmacro
@@ -2026,9 +2026,9 @@ DEBLOCK_CHROMA_INTRA
     movu      m1, [%1+12]
     mova      m2, m0
     pslldq    m0, 1
-    shufps    m2, m1, 0xdd ; cur nnz, all rows
+    shufps    m2, m1, q3131 ; cur nnz, all rows
     pslldq    m1, 1
-    shufps    m0, m1, 0xdd ; left neighbors
+    shufps    m0, m1, q3131 ; left neighbors
     pslldq    m1, m2, 4
     movd      m3, [%1-8] ; could be palignr if nnz was aligned
     por       m1, m3 ; top neighbors
index 93c5687..437d791 100644 (file)
@@ -1404,8 +1404,8 @@ cglobal prefetch_ref_mmx2, 3,3
     punpcklwd  %1, %3
     punpckhwd  %2, %3
 %else
-    shufps     %2, %1, %3, 11011101b
-    shufps     %1, %3, 10001000b
+    shufps     %2, %1, %3, q3131
+    shufps     %1, %3, q2020
 %endif
 %endmacro
 %else ; !HIGH_BIT_DEPTH
@@ -1458,18 +1458,18 @@ cglobal mc_chroma, 0,6
     pxor       m6, m6
     punpcklbw  m5, m6
 %if mmsize==8
-    pshufw     m7, m5, 0xee
-    pshufw     m6, m5, 0x00
-    pshufw     m5, m5, 0x55
+    pshufw     m7, m5, q3232
+    pshufw     m6, m5, q0000
+    pshufw     m5, m5, q1111
     jge .width4
 %else
 %ifdef WIN64
     cmp dword r7m, 4 ; flags were clobbered by WIN64_SPILL_XMM
 %endif
-    pshufd     m7, m5, 0x55
+    pshufd     m7, m5, q1111
     punpcklwd  m5, m5
-    pshufd     m6, m5, 0x00
-    pshufd     m5, m5, 0x55
+    pshufd     m6, m5, q0000
+    pshufd     m5, m5, q1111
     jg .width8
 %endif
 %ifdef HIGH_BIT_DEPTH
@@ -1635,12 +1635,12 @@ ALIGN 4
 %else ; !HIGH_BIT_DEPTH
     packuswb   m0, m1
 %if mmsize==8
-    pshufw     m1, m0, 0x8
-    pshufw     m0, m0, 0xd
+    pshufw     m1, m0, q0020
+    pshufw     m0, m0, q0031
     movd     [r0], m1
     movd     [r1], m0
 %else
-    pshufd     m0, m0, 0xd8
+    pshufd     m0, m0, q3120
     movq     [r0], m0
     movhps   [r1], m0
 %endif
@@ -1908,7 +1908,7 @@ cglobal mc_chroma, 0,6,9
     psrlw      m0, 6
     psrlw      m1, 6
     packuswb   m0, m1
-    pshufd     m0, m0, 0xd8
+    pshufd     m0, m0, q3120
     movq     [r0], m0
     movhps   [r1], m0
 
@@ -1929,7 +1929,7 @@ cglobal mc_chroma, 0,6,9
     psrlw      m2, 6
     psrlw      m3, 6
     packuswb   m2, m3
-    pshufd     m2, m2, 0xd8
+    pshufd     m2, m2, q3120
     movq   [r0+r2], m2
     movhps [r1+r2], m2
     lea        r3, [r3+r4*2]
index c935e29..fd7e4c0 100644 (file)
@@ -132,18 +132,18 @@ cglobal pixel_sa8d_8x8_internal
 
 %macro SUM_MM_X3 8 ; 3x sum, 4x tmp, op
     pxor        %7, %7
-    pshufw      %4, %1, 01001110b
-    pshufw      %5, %2, 01001110b
-    pshufw      %6, %3, 01001110b
+    pshufw      %4, %1, q1032
+    pshufw      %5, %2, q1032
+    pshufw      %6, %3, q1032
     paddusw     %1, %4
     paddusw     %2, %5
     paddusw     %3, %6
     punpcklwd   %1, %7
     punpcklwd   %2, %7
     punpcklwd   %3, %7
-    pshufw      %4, %1, 01001110b
-    pshufw      %5, %2, 01001110b
-    pshufw      %6, %3, 01001110b
+    pshufw      %4, %1, q1032
+    pshufw      %5, %2, q1032
+    pshufw      %6, %3, q1032
     %8          %1, %4
     %8          %2, %5
     %8          %3, %6
@@ -370,14 +370,14 @@ cglobal pixel_ssim_4x4x2_core
 %endrep
     mov      eax, [esp+28]
     lea      eax, [eax+edi*4]
-    pshufw    m5, m1, 0xE
-    pshufw    m6, m2, 0xE
+    pshufw    m5, m1, q0032
+    pshufw    m6, m2, q0032
     paddusw   m1, m5
     paddusw   m2, m6
     punpcklwd m1, m2
-    pshufw    m2, m1, 0xE
-    pshufw    m5, m3, 0xE
-    pshufw    m6, m4, 0xE
+    pshufw    m2, m1, q0032
+    pshufw    m5, m3, q0032
+    pshufw    m6, m4, q0032
     paddusw   m1, m2
     paddd     m3, m5
     paddd     m4, m6
index 8fe2cd5..0c6713a 100644 (file)
@@ -417,14 +417,11 @@ cglobal pixel_ssd_nv12_core, 6,7,7
     mova        m1, [r0+r6+mmsize]
     psubw       m0, [r2+r6]
     psubw       m1, [r2+r6+mmsize]
-%if mmsize==8
-    pshufw      m0, m0, 11011000b
-    pshufw      m1, m1, 11011000b
-%else
-    pshuflw     m0, m0, 11011000b
-    pshuflw     m1, m1, 11011000b
-    pshufhw     m0, m0, 11011000b
-    pshufhw     m1, m1, 11011000b
+    PSHUFLW     m0, m0, q3120
+    PSHUFLW     m1, m1, q3120
+%if mmsize==16
+    pshufhw     m0, m0, q3120
+    pshufhw     m1, m1, q3120
 %endif
     pmaddwd     m0, m0
     pmaddwd     m1, m1
@@ -993,9 +990,9 @@ cglobal pixel_var2_8x8_ssse3, 5,6,8
     HADDUW      m0, m1
     movd       eax, m0
 %else ; !HIGH_BIT_DEPTH
-    pshufw      m1, m0, 01001110b
+    pshufw      m1, m0, q1032
     paddw       m0, m1
-    pshufw      m1, m0, 10110001b
+    pshufw      m1, m0, q2301
     paddw       m0, m1
     movd       eax, m0
     and        eax, 0xffff
@@ -1607,7 +1604,7 @@ cglobal intra_sa8d_x3_8x8_core, 3,3,16
     pmaddwd     m15, m7
     punpckhdq   m3,  m2, m14
     punpckldq   m2,  m14
-    pshufd      m5,  m15, 0xf5
+    pshufd      m5,  m15, q3311
     paddd       m2,  m3
     paddd       m5,  m15
     punpckhqdq  m3,  m2, m5
@@ -1683,18 +1680,18 @@ cglobal hadamard_load
 
 %macro SUM_MM_X3 8 ; 3x sum, 4x tmp, op
     pxor        %7, %7
-    pshufw      %4, %1, 01001110b
-    pshufw      %5, %2, 01001110b
-    pshufw      %6, %3, 01001110b
+    pshufw      %4, %1, q1032
+    pshufw      %5, %2, q1032
+    pshufw      %6, %3, q1032
     paddw       %1, %4
     paddw       %2, %5
     paddw       %3, %6
     punpcklwd   %1, %7
     punpcklwd   %2, %7
     punpcklwd   %3, %7
-    pshufw      %4, %1, 01001110b
-    pshufw      %5, %2, 01001110b
-    pshufw      %6, %3, 01001110b
+    pshufw      %4, %1, q1032
+    pshufw      %5, %2, q1032
+    pshufw      %6, %3, q1032
     %8          %1, %4
     %8          %2, %5
     %8          %3, %6
@@ -2519,13 +2516,13 @@ cglobal pixel_ssim_4x4x2_core, 4,4,8
     ; PHADDW m1, m2
     ; PHADDD m3, m4
     movdqa    m7, [pw_1]
-    pshufd    m5, m3, 0xb1
+    pshufd    m5, m3, q2301
     pmaddwd   m1, m7
     pmaddwd   m2, m7
-    pshufd    m6, m4, 0xb1
+    pshufd    m6, m4, q2301
     packssdw  m1, m2
     paddd     m3, m5
-    pshufd    m1, m1, 0xd8
+    pshufd    m1, m1, q3120
     paddd     m4, m6
     pmaddwd   m1, m7
     punpckhdq m5, m3, m4
@@ -2622,7 +2619,7 @@ cglobal pixel_ssim_end4, 3,3,7
 .skip:
     movhlps   m0, m4
     addps     m0, m4
-    pshuflw   m4, m0, 0xE
+    pshuflw   m4, m0, q0032
     addss     m0, m4
 %ifndef ARCH_X86_64
     movd     r0m, m0
@@ -2669,9 +2666,9 @@ cglobal pixel_ads4, 6,7
     movq    mm6, [r0]
     movq    mm4, [r0+8]
     pshufw  mm7, mm6, 0
-    pshufw  mm6, mm6, 0xAA
+    pshufw  mm6, mm6, q2222
     pshufw  mm5, mm4, 0
-    pshufw  mm4, mm4, 0xAA
+    pshufw  mm4, mm4, q2222
     ADS_START
 .loop:
     movq    mm0, [r1]
@@ -2700,7 +2697,7 @@ cglobal pixel_ads2, 6,7
     movq    mm6, [r0]
     pshufw  mm5, r6m, 0
     pshufw  mm7, mm6, 0
-    pshufw  mm6, mm6, 0xAA
+    pshufw  mm6, mm6, q2222
     ADS_START
 .loop:
     movq    mm0, [r1]
@@ -2742,9 +2739,9 @@ cglobal pixel_ads1, 6,7
 cglobal pixel_ads4, 6,7,12
     movdqa  xmm4, [r0]
     pshuflw xmm7, xmm4, 0
-    pshuflw xmm6, xmm4, 0xAA
+    pshuflw xmm6, xmm4, q2222
     pshufhw xmm5, xmm4, 0
-    pshufhw xmm4, xmm4, 0xAA
+    pshufhw xmm4, xmm4, q2222
     punpcklqdq xmm7, xmm7
     punpcklqdq xmm6, xmm6
     punpckhqdq xmm5, xmm5
@@ -2807,7 +2804,7 @@ cglobal pixel_ads2, 6,7,8
     movq    xmm6, [r0]
     movd    xmm5, r6m
     pshuflw xmm7, xmm6, 0
-    pshuflw xmm6, xmm6, 0xAA
+    pshuflw xmm6, xmm6, q2222
     pshuflw xmm5, xmm5, 0
     punpcklqdq xmm7, xmm7
     punpcklqdq xmm6, xmm6
index 5ce6087..57114ce 100644 (file)
@@ -204,7 +204,7 @@ cglobal predict_4x4_ddl, 1,2
 
     mova    m5, [r0-2*FDEC_STRIDE+6]
     mova    m6, [r0-2*FDEC_STRIDE+8]
-    pshufw  m7, m6, 0xF9
+    pshufw  m7, m6, q3321
     PRED8x8_LOWPASS w, m4, m7, m5, m6
     mova    [r0+6*FDEC_STRIDE], m4
 
@@ -353,7 +353,7 @@ cglobal predict_4x4_ddr, 1,1
     movq    m1, m2
     psllq   m1, 16
     PRED8x8_LOWPASS w, m0, m3, m1, m2
-    pshufw  m0, m0, 0x1B
+    pshufw  m0, m0, q0123
     movq    [r0+3*FDEC_STRIDEB], m0
 
     movq    m2, [r0-1*FDEC_STRIDEB-0]
@@ -434,15 +434,15 @@ cglobal predict_4x4_hu_mmx2, 1,1
     movq      m1, [r0+2*FDEC_STRIDEB-4*2]
     punpckhwd m1, [r0+3*FDEC_STRIDEB-4*2]
     punpckhdq m0, m1
-    pshufw    m1, m1, 0xFF
+    pshufw    m1, m1, q3333
     movq      [r0+3*FDEC_STRIDEB], m1
     movd      [r0+2*FDEC_STRIDEB+4], m1
     mova      m2, m0
     psrlq     m2, 16
     pavgw     m2, m0
 
-    pshufw    m1, m0, 11111001b
-    pshufw    m5, m0, 11111110b
+    pshufw    m1, m0, q3321
+    pshufw    m5, m0, q3332
     PRED8x8_LOWPASS w, m3, m0, m5, m1, m7
     movq      m6, m2
     punpcklwd m6, m3
@@ -465,7 +465,7 @@ cglobal predict_4x4_hu_mmx2, 1,1
     punpckhwd mm0, mm1
     movq      mm1, mm0
     punpckhbw mm1, mm1
-    pshufw    mm1, mm1, 0xFF
+    pshufw    mm1, mm1, q3333
     punpckhdq mm0, mm1
     movq      mm2, mm0
     movq      mm3, mm0
@@ -669,7 +669,7 @@ cglobal predict_8x8_filter, 4,5,7
     jmp .do_topright
 .fix_tr_2:
     punpckh%1%2 m3, m3
-    pshuf%2     m1, m3, 0xFF
+    pshuf%2     m1, m3, q3333
 .do_topright:
     mova        [t1+24*SIZEOF_PIXEL], m1
     psrl%4      m1, 7*%5
@@ -907,7 +907,7 @@ PREDICT_8x8 b, q , 8
 cglobal predict_8x8_hu, 2,2,8
     movu      m1, [r1+7*SIZEOF_PIXEL] ; l0 l1 l2 l3 l4 l5 l6 l7
     add       r0, 4*FDEC_STRIDEB
-    pshuf%3   m0, m1, 00011011b       ; l6 l7 l4 l5 l2 l3 l0 l1
+    pshuf%3   m0, m1, q0123           ; l6 l7 l4 l5 l2 l3 l0 l1
     psll%2    m1, 7*%5                ; l7 .. .. .. .. .. .. ..
     mova      m2, m0
     psll%3    m0, 8*SIZEOF_PIXEL
@@ -928,11 +928,11 @@ cglobal predict_8x8_hu, 2,2,8
     mova      m7, m5
     mova      m0, m5
     PALIGNR   m5, m4, 2*SIZEOF_PIXEL, m1
-    pshuf%3   m1, m6, 11111001b
+    pshuf%3   m1, m6, q3321
     PALIGNR   m6, m4, 4*SIZEOF_PIXEL, m2
-    pshuf%3   m2, m7, 11111110b
+    pshuf%3   m2, m7, q3332
     PALIGNR   m7, m4, 6*SIZEOF_PIXEL, m3
-    pshuf%3   m3, m0, 11111111b
+    pshuf%3   m3, m0, q3333
     mova      [r0-4*FDEC_STRIDEB], m4
     mova      [r0-3*FDEC_STRIDEB], m5
     mova      [r0-2*FDEC_STRIDEB], m6
@@ -1427,7 +1427,7 @@ cglobal predict_8x8_hu, 2,2
     movq      mm4, mm5
 %else
     movq      mm1, [r1+7]           ; l0 l1 l2 l3 l4 l5 l6 l7
-    pshufw    mm0, mm1, 00011011b   ; l6 l7 l4 l5 l2 l3 l0 l1
+    pshufw    mm0, mm1, q0123       ; l6 l7 l4 l5 l2 l3 l0 l1
     movq      mm2, mm0
     psllw     mm0, 8
     psrlw     mm2, 8
@@ -1455,9 +1455,9 @@ cglobal predict_8x8_hu, 2,2
     psrldq    xmm0, 2
 %assign Y (Y+1)
 %endrep
-    pshufw     mm5, mm4, 11111001b
-    pshufw     mm6, mm4, 11111110b
-    pshufw     mm7, mm4, 11111111b
+    pshufw     mm5, mm4, q3321
+    pshufw     mm6, mm4, q3332
+    pshufw     mm7, mm4, q3333
     movq     [r0+Y*FDEC_STRIDE], xmm0
     movq     [r0+0*FDEC_STRIDE], mm4
     movq     [r0+1*FDEC_STRIDE], mm5
@@ -1592,8 +1592,8 @@ cglobal predict_8x8c_dc, 1,3
     punpcklwd m0, m1
     punpcklwd m2, m3
     punpckldq m0, m2            ; s0, s1, s2, s3
-    pshufw    m3, m0, 11110110b ; s2, s1, s3, s3
-    pshufw    m0, m0, 01110100b ; s0, s1, s3, s1
+    pshufw    m3, m0, q3312     ; s2, s1, s3, s3
+    pshufw    m0, m0, q1310     ; s0, s1, s3, s1
     paddw     m0, m3
     psrlw     m0, 2
     pavgw     m0, m7            ; s0+s2, s1, s3, s1+s3
@@ -1601,7 +1601,7 @@ cglobal predict_8x8c_dc, 1,3
 %if cpuflag(sse2)
     movq2dq   xmm0, m0
     punpcklwd xmm0, xmm0
-    pshufd    xmm1, xmm0, 11111010b
+    pshufd    xmm1, xmm0, q3322
     punpckldq xmm0, xmm0
 %assign n 0
 %rep 8
@@ -1610,10 +1610,10 @@ cglobal predict_8x8c_dc, 1,3
 %assign n n+1
 %endrep
 %else
-    pshufw    m1, m0, 0x00
-    pshufw    m2, m0, 0x55
-    pshufw    m3, m0, 0xaa
-    pshufw    m4, m0, 0xff
+    pshufw    m1, m0, q0000
+    pshufw    m2, m0, q1111
+    pshufw    m3, m0, q2222
+    pshufw    m4, m0, q3333
 %assign n 0
 %rep 8
 %assign i (1 + (n/4)*2)
@@ -1652,13 +1652,13 @@ INIT_XMM
 cglobal predict_8x8c_dc_top_sse2, 1,1
     pxor        m2, m2
     mova        m0, [r0 - FDEC_STRIDEB]
-    pmaddwd     m0, [pw_1]
-    pshufd      m1, m0, 0x31
-    paddd       m0, m1
+    pshufd      m1, m0, q2301
+    paddw       m0, m1
+    pshuflw     m1, m0, q2301
+    pshufhw     m1, m1, q2301
+    paddw       m0, m1
     psrlw       m0, 1
     pavgw       m0, m2
-    pshuflw     m0, m0, 0
-    pshufhw     m0, m0, 0
     STORE8x8    m0, m0
     RET
 
index 3e04a5f..162fff8 100644 (file)
@@ -630,11 +630,7 @@ cglobal dequant_4x4dc, 0,3,6
 %endrep
 
 %else ; !HIGH_BIT_DEPTH
-%if mmsize==8
-    punpcklwd m2, m2
-%else
-    pshuflw m2, m2, 0
-%endif
+    PSHUFLW   m2, m2, 0
     punpcklwd m2, m4
 %rep SIZEOF_PIXEL*32/mmsize
     mova      m0, [r0+x]
@@ -703,7 +699,7 @@ cglobal optimize_chroma_dc, 0,%%regs,7
     mova      m5, [chroma_dc_dmf_mask_mmx]
 %endif
     pshuflw   m2, m2, 0
-    pshufd    m0, m1, 00010001b  ;  1  0  3  2  1  0  3  2
+    pshufd    m0, m1, q0101      ;  1  0  3  2  1  0  3  2
     punpcklqdq m2, m2
     punpcklqdq m1, m1            ;  3  2  1  0  3  2  1  0
     mova      m6, [pd_1024]      ; 32<<5, elements are shifted 5 bits to the left
@@ -733,8 +729,8 @@ cglobal optimize_chroma_dc, 0,%%regs,7
     mova      m3, m0
 .outer_loop:
     movsx    t3d, word [t0+2*t1] ; dct[coeff]
-    pshufd    m6, m1, 11111111b
-    pshufd    m1, m1, 10010000b  ; move the next element to high dword
+    pshufd    m6, m1, q3333
+    pshufd    m1, m1, q2100      ; move the next element to high dword
     PSIGND    m5, m2, m6
     test     t3d, t3d
     jz .loop_end
@@ -759,7 +755,7 @@ cglobal optimize_chroma_dc, 0,%%regs,7
 .loop_end:
     dec      t1d
     jz .last_coeff
-    pshufd    m2, m2, 01111000b  ;  -  +  -  +  /  -  -  +  +
+    pshufd    m2, m2, q1320      ;  -  +  -  +  /  -  -  +  +
     jg .outer_loop
 .ret:
     REP_RET
index 6d32710..b6f70bd 100644 (file)
@@ -372,7 +372,7 @@ cglobal intra_sad_x3_4x4_mmx2, 3,3
     psraw     mm5, 2
     pavgw     mm5, mm7
     punpcklbw mm5, mm5
-    pshufw    mm5, mm5, 0x0 ;DC prediction
+    pshufw    mm5, mm5, 0 ;DC prediction
     movq      mm6, mm5
     psadbw    mm5, mm1
     psadbw    mm6, mm2
@@ -473,18 +473,18 @@ cglobal intra_sad_x3_8x8_mmx2, 3,3
     paddw     m0, [pw_8]
     psrlw     m0, 4
     punpcklbw m0, m0
-    pshufw    m0, m0, 0x0 ;DC prediction
+    pshufw    m0, m0, q0000 ;DC prediction
     punpckhbw m7, m7
-    INTRA_SAD_HVDC_ITER 0, 0xff
-    INTRA_SAD_HVDC_ITER 1, 0xaa
-    INTRA_SAD_HVDC_ITER 2, 0x55
-    INTRA_SAD_HVDC_ITER 3, 0x00
+    INTRA_SAD_HVDC_ITER 0, q3333
+    INTRA_SAD_HVDC_ITER 1, q2222
+    INTRA_SAD_HVDC_ITER 2, q1111
+    INTRA_SAD_HVDC_ITER 3, q0000
     movq      m7, [r1+7]
     punpcklbw m7, m7
-    INTRA_SAD_HVDC_ITER 4, 0xff
-    INTRA_SAD_HVDC_ITER 5, 0xaa
-    INTRA_SAD_HVDC_ITER 6, 0x55
-    INTRA_SAD_HVDC_ITER 7, 0x00
+    INTRA_SAD_HVDC_ITER 4, q3333
+    INTRA_SAD_HVDC_ITER 5, q2222
+    INTRA_SAD_HVDC_ITER 6, q1111
+    INTRA_SAD_HVDC_ITER 7, q0000
     movd  [r2+0], m2
     movd  [r2+4], m3
     movd  [r2+8], m1
@@ -568,8 +568,8 @@ INTRA_SADx3_8x8
     movq        m3, [r1 + FDEC_STRIDE*(%1-3) - 8]
     punpckhbw   m1, m1
     punpckhbw   m3, m3
-    pshufw      m1, m1, 0xff
-    pshufw      m3, m3, 0xff
+    pshufw      m1, m1, q3333
+    pshufw      m3, m3, q3333
 %endif
     movq        m4, [r0 + FENC_STRIDE*(%1+0)]
     movq        m5, [r0 + FENC_STRIDE*(%1+1)]
@@ -625,8 +625,8 @@ cglobal intra_sad_x3_8x8c, 3,3
     punpcklwd   m0, m1
     punpcklwd   m2, m3
     punpckldq   m0, m2 ;s0 s1 s2 s3
-    pshufw      m3, m0, 11110110b ;s2,s1,s3,s3
-    pshufw      m0, m0, 01110100b ;s0,s1,s3,s1
+    pshufw      m3, m0, q3312 ;s2,s1,s3,s3
+    pshufw      m0, m0, q1310 ;s0,s1,s3,s1
     paddw       m0, m3
     psrlw       m0, 2
     pavgw       m0, m7 ; s0+s2, s1, s3, s1+s3
index d7d1e3a..1cfb6fa 100644 (file)
@@ -985,3 +985,22 @@ AVX_INSTR xorps, 1, 0
 AVX_INSTR pfadd, 1, 0
 AVX_INSTR pfsub, 1, 0
 AVX_INSTR pfmul, 1, 0
+
+
+; base-4 constants for shuffles
+%assign i 0
+%rep 256
+    %assign j ((i>>6)&3)*1000 + ((i>>4)&3)*100 + ((i>>2)&3)*10 + (i&3)
+    %if j < 10
+        CAT_XDEFINE q000, j, i
+    %elif j < 100
+        CAT_XDEFINE q00, j, i
+    %elif j < 1000
+        CAT_XDEFINE q0, j, i
+    %else
+        CAT_XDEFINE q, j, i
+    %endif
+%assign i i+1
+%endrep
+%undef i
+%undef j
index 7e2be2b..fcfa16f 100644 (file)
 %endmacro
 
 %imacro SPLATW 2-3 0
+    PSHUFLW    %1, %2, (%3)*q1111
 %if mmsize == 16
-    pshuflw    %1, %2, (%3)*0x55
     punpcklqdq %1, %1
-%else
-    pshufw     %1, %2, (%3)*0x55
 %endif
 %endmacro
 
 %imacro SPLATD 2-3 0
 %if mmsize == 16
-    pshufd %1, %2, (%3)*0x55
+    pshufd %1, %2, (%3)*q1111
 %else
-    pshufw %1, %2, (%3)*0x11 + ((%3)+1)*0x44
+    pshufw %1, %2, (%3)*q0101 + ((%3)+1)*q1010
 %endif
 %endmacro
 
 %if mmsize == 16
     movhlps %2, %1
     paddd   %1, %2
-    pshuflw %2, %1, 0xE
-    paddd   %1, %2
-%else
-    pshufw  %2, %1, 0xE
-    paddd   %1, %2
 %endif
+    PSHUFLW %2, %1, q0032
+    paddd   %1, %2
 %endmacro
 
 %macro HADDW 2
 %endif
 %endmacro
 
+%macro PSHUFLW 1+
+    %if mmsize == 8
+        pshufw %1
+    %else
+        pshuflw %1
+    %endif
+%endmacro
+
 
 %macro DEINTB 5 ; mask, reg1, mask, reg2, optional src to fill masks from
 %ifnum %5
 %ifidn %1, d
 %ifidn %2, ord
     psrl%1  m%5, m%3, 16
-    pblendw m%5, m%4, 10101010b
+    pblendw m%5, m%4, q2222
     psll%1  m%4, 16
-    pblendw m%4, m%3, 01010101b
+    pblendw m%4, m%3, q1111
     SWAP     %3, %5
 %else
 %if avx_enabled
-    pblendw m%5, m%3, m%4, 10101010b
+    pblendw m%5, m%3, m%4, q2222
     SWAP     %3, %5
 %else
     mova    m%5, m%3
-    pblendw m%3, m%4, 10101010b
+    pblendw m%3, m%4, q2222
 %endif
     psll%1  m%4, 16
     psrl%1  m%5, 16
     por     m%4, m%5
 %endif
 %elifidn %1, q
-    shufps m%5, m%3, m%4, 11011101b
-    shufps m%3, m%4, 10001000b
+    shufps m%5, m%3, m%4, q3131
+    shufps m%3, m%4, q2020
     SWAP    %4, %5
 %endif
 %endmacro