~ubuntu-branches/ubuntu/vivid/libav/vivid

« back to all changes in this revision

Viewing changes to libavcodec/x86/h264_intrapred_10bit.asm

  • Committer: Package Import Robot
  • Author(s): Reinhard Tartler
  • Date: 2013-10-22 23:24:08 UTC
  • mfrom: (1.3.36 sid)
  • Revision ID: package-import@ubuntu.com-20131022232408-b8tvvn4pyzri9mi3
Tags: 6:9.10-1ubuntu1
* Build all -extra flavors from this source package, as libav got demoted
  from main to universe, cf LP: #1243235
* Simplify debian/rules to follow exactly the code that debian executes
* New upstream (LP: #1180288) fixes lots of security issues (LP: #1242802)
* Merge from unstable, remaining changes:
  - build-depend on libtiff5-dev rather than libtiff4-dev,
    avoids FTBFS caused by imlib
  - follow the regular debian codepaths

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23
23
;******************************************************************************
24
24
 
25
 
%include "x86inc.asm"
26
 
%include "x86util.asm"
 
25
%include "libavutil/x86/x86util.asm"
27
26
 
28
27
SECTION_RODATA
29
28
 
53
52
;-----------------------------------------------------------------------------
54
53
; void pred4x4_down_right(pixel *src, const pixel *topright, int stride)
55
54
;-----------------------------------------------------------------------------
56
 
%macro PRED4x4_DR 1
57
 
cglobal pred4x4_down_right_10_%1, 3,3
 
55
%macro PRED4x4_DR 0
 
56
cglobal pred4x4_down_right_10, 3, 3
58
57
    sub       r0, r2
59
58
    lea       r1, [r0+r2*2]
60
59
    movhps    m1, [r1-8]
79
78
    RET
80
79
%endmacro
81
80
 
82
 
INIT_XMM
83
 
%define PALIGNR PALIGNR_MMX
84
 
PRED4x4_DR sse2
85
 
%define PALIGNR PALIGNR_SSSE3
86
 
PRED4x4_DR ssse3
87
 
%ifdef HAVE_AVX
88
 
INIT_AVX
89
 
PRED4x4_DR avx
90
 
%endif
 
81
INIT_XMM sse2
 
82
PRED4x4_DR
 
83
INIT_XMM ssse3
 
84
PRED4x4_DR
 
85
INIT_XMM avx
 
86
PRED4x4_DR
91
87
 
92
88
;-----------------------------------------------------------------------------
93
89
; void pred4x4_vertical_right(pixel *src, const pixel *topright, int stride)
94
90
;-----------------------------------------------------------------------------
95
 
%macro PRED4x4_VR 1
96
 
cglobal pred4x4_vertical_right_10_%1, 3,3,6
 
91
%macro PRED4x4_VR 0
 
92
cglobal pred4x4_vertical_right_10, 3, 3, 6
97
93
    sub     r0, r2
98
94
    lea     r1, [r0+r2*2]
99
95
    movq    m5, [r0]            ; ........t3t2t1t0
119
115
    RET
120
116
%endmacro
121
117
 
122
 
INIT_XMM
123
 
%define PALIGNR PALIGNR_MMX
124
 
PRED4x4_VR sse2
125
 
%define PALIGNR PALIGNR_SSSE3
126
 
PRED4x4_VR ssse3
127
 
%ifdef HAVE_AVX
128
 
INIT_AVX
129
 
PRED4x4_VR avx
130
 
%endif
 
118
INIT_XMM sse2
 
119
PRED4x4_VR
 
120
INIT_XMM ssse3
 
121
PRED4x4_VR
 
122
INIT_XMM avx
 
123
PRED4x4_VR
131
124
 
132
125
;-----------------------------------------------------------------------------
133
126
; void pred4x4_horizontal_down(pixel *src, const pixel *topright, int stride)
134
127
;-----------------------------------------------------------------------------
135
 
%macro PRED4x4_HD 1
136
 
cglobal pred4x4_horizontal_down_10_%1, 3,3
 
128
%macro PRED4x4_HD 0
 
129
cglobal pred4x4_horizontal_down_10, 3, 3
137
130
    sub        r0, r2
138
131
    lea        r1, [r0+r2*2]
139
132
    movq       m0, [r0-8]      ; lt ..
162
155
    RET
163
156
%endmacro
164
157
 
165
 
INIT_XMM
166
 
%define PALIGNR PALIGNR_MMX
167
 
PRED4x4_HD sse2
168
 
%define PALIGNR PALIGNR_SSSE3
169
 
PRED4x4_HD ssse3
170
 
%ifdef HAVE_AVX
171
 
INIT_AVX
172
 
PRED4x4_HD avx
173
 
%endif
 
158
INIT_XMM sse2
 
159
PRED4x4_HD
 
160
INIT_XMM ssse3
 
161
PRED4x4_HD
 
162
INIT_XMM avx
 
163
PRED4x4_HD
174
164
 
175
165
;-----------------------------------------------------------------------------
176
166
; void pred4x4_dc(pixel *src, const pixel *topright, int stride)
192
182
    HADDD   %1, %2
193
183
%endmacro
194
184
 
195
 
INIT_MMX
196
 
cglobal pred4x4_dc_10_mmxext, 3,3
 
185
INIT_MMX mmxext
 
186
cglobal pred4x4_dc_10, 3, 3
197
187
    sub    r0, r2
198
188
    lea    r1, [r0+r2*2]
199
189
    movq   m2, [r0+r2*1-8]
216
206
;-----------------------------------------------------------------------------
217
207
; void pred4x4_down_left(pixel *src, const pixel *topright, int stride)
218
208
;-----------------------------------------------------------------------------
219
 
%macro PRED4x4_DL 1
220
 
cglobal pred4x4_down_left_10_%1, 3,3
 
209
%macro PRED4x4_DL 0
 
210
cglobal pred4x4_down_left_10, 3, 3
221
211
    sub        r0, r2
222
212
    movq       m0, [r0]
223
213
    movhps     m0, [r1]
236
226
    RET
237
227
%endmacro
238
228
 
239
 
INIT_XMM
240
 
PRED4x4_DL sse2
241
 
%ifdef HAVE_AVX
242
 
INIT_AVX
243
 
PRED4x4_DL avx
244
 
%endif
 
229
INIT_XMM sse2
 
230
PRED4x4_DL
 
231
INIT_XMM avx
 
232
PRED4x4_DL
245
233
 
246
234
;-----------------------------------------------------------------------------
247
235
; void pred4x4_vertical_left(pixel *src, const pixel *topright, int stride)
248
236
;-----------------------------------------------------------------------------
249
 
%macro PRED4x4_VL 1
250
 
cglobal pred4x4_vertical_left_10_%1, 3,3
 
237
%macro PRED4x4_VL 0
 
238
cglobal pred4x4_vertical_left_10, 3, 3
251
239
    sub        r0, r2
252
240
    movu       m1, [r0]
253
241
    movhps     m1, [r1]
265
253
    RET
266
254
%endmacro
267
255
 
268
 
INIT_XMM
269
 
PRED4x4_VL sse2
270
 
%ifdef HAVE_AVX
271
 
INIT_AVX
272
 
PRED4x4_VL avx
273
 
%endif
 
256
INIT_XMM sse2
 
257
PRED4x4_VL
 
258
INIT_XMM avx
 
259
PRED4x4_VL
274
260
 
275
261
;-----------------------------------------------------------------------------
276
262
; void pred4x4_horizontal_up(pixel *src, const pixel *topright, int stride)
277
263
;-----------------------------------------------------------------------------
278
 
INIT_MMX
279
 
cglobal pred4x4_horizontal_up_10_mmxext, 3,3
 
264
INIT_MMX mmxext
 
265
cglobal pred4x4_horizontal_up_10, 3, 3
280
266
    sub       r0, r2
281
267
    lea       r1, [r0+r2*2]
282
268
    movq      m0, [r0+r2*1-8]
309
295
;-----------------------------------------------------------------------------
310
296
; void pred8x8_vertical(pixel *src, int stride)
311
297
;-----------------------------------------------------------------------------
312
 
INIT_XMM
313
 
cglobal pred8x8_vertical_10_sse2, 2,2
 
298
INIT_XMM sse2
 
299
cglobal pred8x8_vertical_10, 2, 2
314
300
    sub  r0, r1
315
301
    mova m0, [r0]
316
302
%rep 3
325
311
;-----------------------------------------------------------------------------
326
312
; void pred8x8_horizontal(pixel *src, int stride)
327
313
;-----------------------------------------------------------------------------
328
 
INIT_XMM
329
 
cglobal pred8x8_horizontal_10_sse2, 2,3
 
314
INIT_XMM sse2
 
315
cglobal pred8x8_horizontal_10, 2, 3
330
316
    mov         r2d, 4
331
317
.loop:
332
318
    movq         m0, [r0+r1*0-8]
355
341
%endif
356
342
%endmacro
357
343
 
358
 
%macro PRED8x8_DC 2
359
 
cglobal pred8x8_dc_10_%1, 2,6
 
344
%macro PRED8x8_DC 1
 
345
cglobal pred8x8_dc_10, 2, 6
360
346
    sub         r0, r1
361
347
    pxor        m4, m4
362
348
    movq        m0, [r0+0]
372
358
    paddw       m1, m3
373
359
    punpcklwd   m0, m1
374
360
%endif
375
 
    %2          m2, m0, 00001110b
 
361
    %1          m2, m0, 00001110b
376
362
    paddw       m0, m2
377
363
 
378
364
    lea         r5, [r1*3]
397
383
 
398
384
    punpcklwd   m2, m3
399
385
    punpckldq   m0, m2            ; s0, s1, s2, s3
400
 
    %2          m3, m0, 11110110b ; s2, s1, s3, s3
401
 
    %2          m0, m0, 01110100b ; s0, s1, s3, s1
 
386
    %1          m3, m0, 11110110b ; s2, s1, s3, s3
 
387
    %1          m0, m0, 01110100b ; s0, s1, s3, s1
402
388
    paddw       m0, m3
403
389
    psrlw       m0, 2
404
390
    pavgw       m0, m4            ; s0+s2, s1, s3, s1+s3
424
410
    RET
425
411
%endmacro
426
412
 
427
 
INIT_MMX
428
 
PRED8x8_DC mmxext, pshufw
429
 
INIT_XMM
430
 
PRED8x8_DC sse2  , pshuflw
 
413
INIT_MMX mmxext
 
414
PRED8x8_DC pshufw
 
415
INIT_XMM sse2
 
416
PRED8x8_DC pshuflw
431
417
 
432
418
;-----------------------------------------------------------------------------
433
419
; void pred8x8_top_dc(pixel *src, int stride)
434
420
;-----------------------------------------------------------------------------
435
 
INIT_XMM
436
 
cglobal pred8x8_top_dc_10_sse2, 2,4
 
421
INIT_XMM sse2
 
422
cglobal pred8x8_top_dc_10, 2, 4
437
423
    sub         r0, r1
438
424
    mova        m0, [r0]
439
425
    pshuflw     m1, m0, 0x4e
459
445
;-----------------------------------------------------------------------------
460
446
; void pred8x8_plane(pixel *src, int stride)
461
447
;-----------------------------------------------------------------------------
462
 
INIT_XMM
463
 
cglobal pred8x8_plane_10_sse2, 2,7,7
 
448
INIT_XMM sse2
 
449
cglobal pred8x8_plane_10, 2, 7, 7
464
450
    sub       r0, r1
465
451
    lea       r2, [r1*3]
466
452
    lea       r3, [r0+r1*4]
522
508
;-----------------------------------------------------------------------------
523
509
; void pred8x8l_128_dc(pixel *src, int has_topleft, int has_topright, int stride)
524
510
;-----------------------------------------------------------------------------
525
 
%macro PRED8x8L_128_DC 1
526
 
cglobal pred8x8l_128_dc_10_%1, 4,4
 
511
%macro PRED8x8L_128_DC 0
 
512
cglobal pred8x8l_128_dc_10, 4, 4
527
513
    mova      m0, [pw_512] ; (1<<(BIT_DEPTH-1))
528
514
    lea       r1, [r3*3]
529
515
    lea       r2, [r0+r3*4]
538
524
    RET
539
525
%endmacro
540
526
 
541
 
INIT_MMX
542
 
PRED8x8L_128_DC mmxext
543
 
INIT_XMM
544
 
PRED8x8L_128_DC sse2
 
527
INIT_MMX mmxext
 
528
PRED8x8L_128_DC
 
529
INIT_XMM sse2
 
530
PRED8x8L_128_DC
545
531
 
546
532
;-----------------------------------------------------------------------------
547
533
; void pred8x8l_top_dc(pixel *src, int has_topleft, int has_topright, int stride)
548
534
;-----------------------------------------------------------------------------
549
 
%macro PRED8x8L_TOP_DC 1
550
 
cglobal pred8x8l_top_dc_10_%1, 4,4,6
 
535
%macro PRED8x8L_TOP_DC 0
 
536
cglobal pred8x8l_top_dc_10, 4, 4, 6
551
537
    sub         r0, r3
552
538
    mova        m0, [r0]
553
539
    shr        r1d, 14
575
561
    RET
576
562
%endmacro
577
563
 
578
 
INIT_XMM
579
 
PRED8x8L_TOP_DC sse2
580
 
%ifdef HAVE_AVX
581
 
INIT_AVX
582
 
PRED8x8L_TOP_DC avx
583
 
%endif
 
564
INIT_XMM sse2
 
565
PRED8x8L_TOP_DC
 
566
INIT_XMM avx
 
567
PRED8x8L_TOP_DC
584
568
 
585
569
;-----------------------------------------------------------------------------
586
570
;void pred8x8l_dc(pixel *src, int has_topleft, int has_topright, int stride)
587
571
;-----------------------------------------------------------------------------
588
572
;TODO: see if scalar is faster
589
 
%macro PRED8x8L_DC 1
590
 
cglobal pred8x8l_dc_10_%1, 4,6,6
 
573
%macro PRED8x8L_DC 0
 
574
cglobal pred8x8l_dc_10, 4, 6, 6
591
575
    sub         r0, r3
592
576
    lea         r4, [r0+r3*4]
593
577
    lea         r5, [r3*3]
634
618
    RET
635
619
%endmacro
636
620
 
637
 
INIT_XMM
638
 
PRED8x8L_DC sse2
639
 
%ifdef HAVE_AVX
640
 
INIT_AVX
641
 
PRED8x8L_DC avx
642
 
%endif
 
621
INIT_XMM sse2
 
622
PRED8x8L_DC
 
623
INIT_XMM avx
 
624
PRED8x8L_DC
643
625
 
644
626
;-----------------------------------------------------------------------------
645
627
; void pred8x8l_vertical(pixel *src, int has_topleft, int has_topright, int stride)
646
628
;-----------------------------------------------------------------------------
647
 
%macro PRED8x8L_VERTICAL 1
648
 
cglobal pred8x8l_vertical_10_%1, 4,4,6
 
629
%macro PRED8x8L_VERTICAL 0
 
630
cglobal pred8x8l_vertical_10, 4, 4, 6
649
631
    sub         r0, r3
650
632
    mova        m0, [r0]
651
633
    shr        r1d, 14
669
651
    RET
670
652
%endmacro
671
653
 
672
 
INIT_XMM
673
 
PRED8x8L_VERTICAL sse2
674
 
%ifdef HAVE_AVX
675
 
INIT_AVX
676
 
PRED8x8L_VERTICAL avx
677
 
%endif
 
654
INIT_XMM sse2
 
655
PRED8x8L_VERTICAL
 
656
INIT_XMM avx
 
657
PRED8x8L_VERTICAL
678
658
 
679
659
;-----------------------------------------------------------------------------
680
660
; void pred8x8l_horizontal(uint8_t *src, int has_topleft, int has_topright, int stride)
681
661
;-----------------------------------------------------------------------------
682
 
%macro PRED8x8L_HORIZONTAL 1
683
 
cglobal pred8x8l_horizontal_10_%1, 4,4,5
 
662
%macro PRED8x8L_HORIZONTAL 0
 
663
cglobal pred8x8l_horizontal_10, 4, 4, 5
684
664
    mova        m0, [r0-16]
685
665
    shr        r1d, 14
686
666
    dec         r1
723
703
    RET
724
704
%endmacro
725
705
 
726
 
INIT_XMM
727
 
%define PALIGNR PALIGNR_MMX
728
 
PRED8x8L_HORIZONTAL sse2
729
 
%define PALIGNR PALIGNR_SSSE3
730
 
PRED8x8L_HORIZONTAL ssse3
731
 
%ifdef HAVE_AVX
732
 
INIT_AVX
733
 
PRED8x8L_HORIZONTAL avx
734
 
%endif
 
706
INIT_XMM sse2
 
707
PRED8x8L_HORIZONTAL
 
708
INIT_XMM ssse3
 
709
PRED8x8L_HORIZONTAL
 
710
INIT_XMM avx
 
711
PRED8x8L_HORIZONTAL
735
712
 
736
713
;-----------------------------------------------------------------------------
737
714
;void pred8x8l_down_left(pixel *src, int has_topleft, int has_topright, int stride)
738
715
;-----------------------------------------------------------------------------
739
 
%macro PRED8x8L_DOWN_LEFT 1
740
 
cglobal pred8x8l_down_left_10_%1, 4,4,7
 
716
%macro PRED8x8L_DOWN_LEFT 0
 
717
cglobal pred8x8l_down_left_10, 4, 4, 7
741
718
    sub         r0, r3
742
719
    mova        m3, [r0]
743
720
    shr        r1d, 14
792
769
    jmp .do_topright
793
770
%endmacro
794
771
 
795
 
INIT_XMM
796
 
%define PALIGNR PALIGNR_MMX
797
 
PRED8x8L_DOWN_LEFT sse2
798
 
%define PALIGNR PALIGNR_SSSE3
799
 
PRED8x8L_DOWN_LEFT ssse3
800
 
%ifdef HAVE_AVX
801
 
INIT_AVX
802
 
PRED8x8L_DOWN_LEFT avx
803
 
%endif
 
772
INIT_XMM sse2
 
773
PRED8x8L_DOWN_LEFT
 
774
INIT_XMM ssse3
 
775
PRED8x8L_DOWN_LEFT
 
776
INIT_XMM avx
 
777
PRED8x8L_DOWN_LEFT
804
778
 
805
779
;-----------------------------------------------------------------------------
806
780
;void pred8x8l_down_right(pixel *src, int has_topleft, int has_topright, int stride)
807
781
;-----------------------------------------------------------------------------
808
 
%macro PRED8x8L_DOWN_RIGHT 1
 
782
%macro PRED8x8L_DOWN_RIGHT 0
809
783
; standard forbids this when has_topleft is false
810
784
; no need to check
811
 
cglobal pred8x8l_down_right_10_%1, 4,5,8
 
785
cglobal pred8x8l_down_right_10, 4, 5, 8
812
786
    sub         r0, r3
813
787
    lea         r4, [r0+r3*4]
814
788
    lea         r1, [r3*3]
867
841
    RET
868
842
%endmacro
869
843
 
870
 
INIT_XMM
871
 
%define PALIGNR PALIGNR_MMX
872
 
PRED8x8L_DOWN_RIGHT sse2
873
 
%define PALIGNR PALIGNR_SSSE3
874
 
PRED8x8L_DOWN_RIGHT ssse3
875
 
%ifdef HAVE_AVX
876
 
INIT_AVX
877
 
PRED8x8L_DOWN_RIGHT avx
878
 
%endif
 
844
INIT_XMM sse2
 
845
PRED8x8L_DOWN_RIGHT
 
846
INIT_XMM ssse3
 
847
PRED8x8L_DOWN_RIGHT
 
848
INIT_XMM avx
 
849
PRED8x8L_DOWN_RIGHT
879
850
 
880
851
;-----------------------------------------------------------------------------
881
852
; void pred8x8l_vertical_right(pixel *src, int has_topleft, int has_topright, int stride)
882
853
;-----------------------------------------------------------------------------
883
 
%macro PRED8x8L_VERTICAL_RIGHT 1
 
854
%macro PRED8x8L_VERTICAL_RIGHT 0
884
855
; likewise with 8x8l_down_right
885
 
cglobal pred8x8l_vertical_right_10_%1, 4,5,7
 
856
cglobal pred8x8l_vertical_right_10, 4, 5, 7
886
857
    sub         r0, r3
887
858
    lea         r4, [r0+r3*4]
888
859
    lea         r1, [r3*3]
938
909
    RET
939
910
%endmacro
940
911
 
941
 
INIT_XMM
942
 
%define PALIGNR PALIGNR_MMX
943
 
PRED8x8L_VERTICAL_RIGHT sse2
944
 
%define PALIGNR PALIGNR_SSSE3
945
 
PRED8x8L_VERTICAL_RIGHT ssse3
946
 
%ifdef HAVE_AVX
947
 
INIT_AVX
948
 
PRED8x8L_VERTICAL_RIGHT avx
949
 
%endif
 
912
INIT_XMM sse2
 
913
PRED8x8L_VERTICAL_RIGHT
 
914
INIT_XMM ssse3
 
915
PRED8x8L_VERTICAL_RIGHT
 
916
INIT_XMM avx
 
917
PRED8x8L_VERTICAL_RIGHT
950
918
 
951
919
;-----------------------------------------------------------------------------
952
920
; void pred8x8l_horizontal_up(pixel *src, int has_topleft, int has_topright, int stride)
953
921
;-----------------------------------------------------------------------------
954
 
%macro PRED8x8L_HORIZONTAL_UP 1
955
 
cglobal pred8x8l_horizontal_up_10_%1, 4,4,6
 
922
%macro PRED8x8L_HORIZONTAL_UP 0
 
923
cglobal pred8x8l_horizontal_up_10, 4, 4, 6
956
924
    mova        m0, [r0+r3*0-16]
957
925
    punpckhwd   m0, [r0+r3*1-16]
958
926
    shr        r1d, 14
1000
968
    RET
1001
969
%endmacro
1002
970
 
1003
 
INIT_XMM
1004
 
%define PALIGNR PALIGNR_MMX
1005
 
PRED8x8L_HORIZONTAL_UP sse2
1006
 
%define PALIGNR PALIGNR_SSSE3
1007
 
PRED8x8L_HORIZONTAL_UP ssse3
1008
 
%ifdef HAVE_AVX
1009
 
INIT_AVX
1010
 
PRED8x8L_HORIZONTAL_UP avx
1011
 
%endif
 
971
INIT_XMM sse2
 
972
PRED8x8L_HORIZONTAL_UP
 
973
INIT_XMM ssse3
 
974
PRED8x8L_HORIZONTAL_UP
 
975
INIT_XMM avx
 
976
PRED8x8L_HORIZONTAL_UP
1012
977
 
1013
978
 
1014
979
;-----------------------------------------------------------------------------
1023
988
%endif
1024
989
%endmacro
1025
990
 
1026
 
%macro PRED16x16_VERTICAL 1
1027
 
cglobal pred16x16_vertical_10_%1, 2,3
 
991
%macro PRED16x16_VERTICAL 0
 
992
cglobal pred16x16_vertical_10, 2, 3
1028
993
    sub   r0, r1
1029
994
    mov  r2d, 8
1030
995
    mova  m0, [r0+ 0]
1042
1007
    REP_RET
1043
1008
%endmacro
1044
1009
 
1045
 
INIT_MMX
1046
 
PRED16x16_VERTICAL mmxext
1047
 
INIT_XMM
1048
 
PRED16x16_VERTICAL sse2
 
1010
INIT_MMX mmxext
 
1011
PRED16x16_VERTICAL
 
1012
INIT_XMM sse2
 
1013
PRED16x16_VERTICAL
1049
1014
 
1050
1015
;-----------------------------------------------------------------------------
1051
1016
; void pred16x16_horizontal(pixel *src, int stride)
1052
1017
;-----------------------------------------------------------------------------
1053
 
%macro PRED16x16_HORIZONTAL 1
1054
 
cglobal pred16x16_horizontal_10_%1, 2,3
 
1018
%macro PRED16x16_HORIZONTAL 0
 
1019
cglobal pred16x16_horizontal_10, 2, 3
1055
1020
    mov   r2d, 8
1056
1021
.vloop:
1057
1022
    movd   m0, [r0+r1*0-4]
1066
1031
    REP_RET
1067
1032
%endmacro
1068
1033
 
1069
 
INIT_MMX
1070
 
PRED16x16_HORIZONTAL mmxext
1071
 
INIT_XMM
1072
 
PRED16x16_HORIZONTAL sse2
 
1034
INIT_MMX mmxext
 
1035
PRED16x16_HORIZONTAL
 
1036
INIT_XMM sse2
 
1037
PRED16x16_HORIZONTAL
1073
1038
 
1074
1039
;-----------------------------------------------------------------------------
1075
1040
; void pred16x16_dc(pixel *src, int stride)
1076
1041
;-----------------------------------------------------------------------------
1077
 
%macro PRED16x16_DC 1
1078
 
cglobal pred16x16_dc_10_%1, 2,6
 
1042
%macro PRED16x16_DC 0
 
1043
cglobal pred16x16_dc_10, 2, 6
1079
1044
    mov        r5, r0
1080
1045
    sub        r0, r1
1081
1046
    mova       m0, [r0+0]
1112
1077
    REP_RET
1113
1078
%endmacro
1114
1079
 
1115
 
INIT_MMX
1116
 
PRED16x16_DC mmxext
1117
 
INIT_XMM
1118
 
PRED16x16_DC sse2
 
1080
INIT_MMX mmxext
 
1081
PRED16x16_DC
 
1082
INIT_XMM sse2
 
1083
PRED16x16_DC
1119
1084
 
1120
1085
;-----------------------------------------------------------------------------
1121
1086
; void pred16x16_top_dc(pixel *src, int stride)
1122
1087
;-----------------------------------------------------------------------------
1123
 
%macro PRED16x16_TOP_DC 1
1124
 
cglobal pred16x16_top_dc_10_%1, 2,3
 
1088
%macro PRED16x16_TOP_DC 0
 
1089
cglobal pred16x16_top_dc_10, 2, 3
1125
1090
    sub        r0, r1
1126
1091
    mova       m0, [r0+0]
1127
1092
    paddw      m0, [r0+mmsize]
1144
1109
    REP_RET
1145
1110
%endmacro
1146
1111
 
1147
 
INIT_MMX
1148
 
PRED16x16_TOP_DC mmxext
1149
 
INIT_XMM
1150
 
PRED16x16_TOP_DC sse2
 
1112
INIT_MMX mmxext
 
1113
PRED16x16_TOP_DC
 
1114
INIT_XMM sse2
 
1115
PRED16x16_TOP_DC
1151
1116
 
1152
1117
;-----------------------------------------------------------------------------
1153
1118
; void pred16x16_left_dc(pixel *src, int stride)
1154
1119
;-----------------------------------------------------------------------------
1155
 
%macro PRED16x16_LEFT_DC 1
1156
 
cglobal pred16x16_left_dc_10_%1, 2,6
 
1120
%macro PRED16x16_LEFT_DC 0
 
1121
cglobal pred16x16_left_dc_10, 2, 6
1157
1122
    mov        r5, r0
1158
1123
 
1159
1124
    sub        r0, 2
1181
1146
    REP_RET
1182
1147
%endmacro
1183
1148
 
1184
 
INIT_MMX
1185
 
PRED16x16_LEFT_DC mmxext
1186
 
INIT_XMM
1187
 
PRED16x16_LEFT_DC sse2
 
1149
INIT_MMX mmxext
 
1150
PRED16x16_LEFT_DC
 
1151
INIT_XMM sse2
 
1152
PRED16x16_LEFT_DC
1188
1153
 
1189
1154
;-----------------------------------------------------------------------------
1190
1155
; void pred16x16_128_dc(pixel *src, int stride)
1191
1156
;-----------------------------------------------------------------------------
1192
 
%macro PRED16x16_128_DC 1
1193
 
cglobal pred16x16_128_dc_10_%1, 2,3
 
1157
%macro PRED16x16_128_DC 0
 
1158
cglobal pred16x16_128_dc_10, 2,3
1194
1159
    mova       m0, [pw_512]
1195
1160
    mov       r2d, 8
1196
1161
.loop:
1202
1167
    REP_RET
1203
1168
%endmacro
1204
1169
 
1205
 
INIT_MMX
1206
 
PRED16x16_128_DC mmxext
1207
 
INIT_XMM
1208
 
PRED16x16_128_DC sse2
 
1170
INIT_MMX mmxext
 
1171
PRED16x16_128_DC
 
1172
INIT_XMM sse2
 
1173
PRED16x16_128_DC