~ubuntu-branches/ubuntu/quantal/x264/quantal

« back to all changes in this revision

Viewing changes to common/x86/x86util.asm

  • Committer: Package Import Robot
  • Author(s): Reinhard Tartler, Fabian Greffrath, Reinhard Tartler
  • Date: 2012-02-10 21:26:18 UTC
  • mfrom: (12.1.12 experimental)
  • Revision ID: package-import@ubuntu.com-20120210212618-vsfw1bwsbrk7n4ju
Tags: 2:0.120.2151+gita3f4407-2
[ Fabian Greffrath ]
* Meanwhile, upstream enabled PIC for the shared library build on ia64,
  mips* and hppa/parisc (once more closes: #642810), so remove our
  Debian-specific workarounds.

[ Reinhard Tartler ]
* Build against libgpac to enable MP4 output
* Add a note about non-relocatable code in the README.Debian file,
  Closes: #657019, LP: #919509

Show diffs side-by-side

added added

removed removed

Lines of Context:
143
143
%endif
144
144
%endmacro
145
145
 
 
146
%macro WIDEN_SXWD 2
 
147
    punpckhwd m%2, m%1
 
148
    psrad     m%2, 16
 
149
%if cpuflag(sse4)
 
150
    pmovsxwd  m%1, m%1
 
151
%else
 
152
    punpcklwd m%1, m%1
 
153
    psrad     m%1, 16
 
154
%endif
 
155
%endmacro
 
156
 
146
157
%macro ABSW 2-3 ; dst, src, tmp (tmp used only if dst==src)
147
158
%if cpuflag(ssse3)
148
159
    pabsw   %1, %2
272
283
    paddd   %1, %2
273
284
%endmacro
274
285
 
275
 
%macro HADDW 2
 
286
%macro HADDW 2 ; reg, tmp
276
287
%if cpuflag(xop) && mmsize == 16
277
288
    vphaddwq  %1, %1
278
289
    movhlps   %2, %1
586
597
%endmacro
587
598
 
588
599
%macro SUMSUB2_AB 4
589
 
%ifnum %3
 
600
%if cpuflag(xop)
 
601
    pmacs%1%1 m%4, m%3, [p%1_m2], m%2
 
602
    pmacs%1%1 m%2, m%2, [p%1_2], m%3
 
603
%elifnum %3
590
604
    psub%1  m%4, m%2, m%3
591
605
    psub%1  m%4, m%3
592
606
    padd%1  m%2, m%2
600
614
%endif
601
615
%endmacro
602
616
 
603
 
%macro SUMSUB2_BA 4
604
 
%if avx_enabled
605
 
    padd%1  m%4, m%2, m%3
606
 
    padd%1  m%4, m%3
607
 
    psub%1  m%3, m%2
608
 
    psub%1  m%3, m%2
609
 
    SWAP     %2,  %4
610
 
%else
611
 
    mova    m%4, m%2
612
 
    padd%1  m%2, m%3
613
 
    padd%1  m%2, m%3
614
 
    psub%1  m%3, m%4
615
 
    psub%1  m%3, m%4
616
 
%endif
617
 
%endmacro
618
 
 
619
617
%macro SUMSUBD2_AB 5
620
618
%ifnum %4
621
619
    psra%1  m%5, m%2, 1  ; %3: %3>>1
697
695
%endmacro
698
696
 
699
697
%macro LOAD_DIFF8x4 8 ; 4x dst, 1x tmp, 1x mul, 2x ptr
700
 
%if cpuflag(ssse3)
 
698
%if BIT_DEPTH == 8 && cpuflag(ssse3)
701
699
    movh       m%2, [%8+%1*FDEC_STRIDE]
702
700
    movh       m%1, [%7+%1*FENC_STRIDE]
703
701
    punpcklbw  m%1, m%2
715
713
    pmaddubsw  m%3, m%6
716
714
    pmaddubsw  m%4, m%6
717
715
%else
718
 
    LOAD_DIFF  m%1, m%5, m%6, [%7+%1*FENC_STRIDE], [%8+%1*FDEC_STRIDE]
719
 
    LOAD_DIFF  m%2, m%5, m%6, [%7+%2*FENC_STRIDE], [%8+%2*FDEC_STRIDE]
720
 
    LOAD_DIFF  m%3, m%5, m%6, [%7+%3*FENC_STRIDE], [%8+%3*FDEC_STRIDE]
721
 
    LOAD_DIFF  m%4, m%5, m%6, [%7+%4*FENC_STRIDE], [%8+%4*FDEC_STRIDE]
 
716
    LOAD_DIFF  m%1, m%5, m%6, [%7+%1*FENC_STRIDEB], [%8+%1*FDEC_STRIDEB]
 
717
    LOAD_DIFF  m%2, m%5, m%6, [%7+%2*FENC_STRIDEB], [%8+%2*FDEC_STRIDEB]
 
718
    LOAD_DIFF  m%3, m%5, m%6, [%7+%3*FENC_STRIDEB], [%8+%3*FDEC_STRIDEB]
 
719
    LOAD_DIFF  m%4, m%5, m%6, [%7+%4*FENC_STRIDEB], [%8+%4*FDEC_STRIDEB]
722
720
%endif
723
721
%endmacro
724
722
 
767
765
    packuswb   %2, %1
768
766
%endmacro
769
767
 
770
 
%macro STORE_DIFF 4
 
768
; (high depth) in: %1, %2, min to clip, max to clip, mem128
 
769
; in: %1, tmp, %3, mem64
 
770
%macro STORE_DIFF 4-5
 
771
%ifdef HIGH_BIT_DEPTH
 
772
    psrad      %1, 6
 
773
    psrad      %2, 6
 
774
    packssdw   %1, %2
 
775
    paddw      %1, %5
 
776
    CLIPW      %1, %3, %4
 
777
    mova       %5, %1
 
778
%else
771
779
    movh       %2, %4
772
780
    punpcklbw  %2, %3
773
781
    psraw      %1, 6
774
782
    paddsw     %1, %2
775
783
    packuswb   %1, %1
776
784
    movh       %4, %1
 
785
%endif
777
786
%endmacro
778
787
 
779
788
%macro SHUFFLE_MASK_W 8
783
792
        %rotate 1
784
793
    %endrep
785
794
%endmacro
 
795
 
 
796
; instruction, accum, input, iteration (zero to swap, nonzero to add)
 
797
%macro ACCUM 4
 
798
%if %4
 
799
    %1        m%2, m%3
 
800
%else
 
801
    SWAP       %2, %3
 
802
%endif
 
803
%endmacro