Also delete some unused deblock asm macros.
Unified · Split
| @@ -106,47 +106,6 @@ cextern pb_A1 · 105 unmodified lines | |||
| 106 | TRANSPOSE4x8_LOAD bw, wd, dq, %1, %2, %3, %4, %5, %6, %7, %8 | 106 | TRANSPOSE4x8_LOAD bw, wd, dq, %1, %2, %3, %4, %5, %6, %7, %8 |
| 107 | %endmacro | 107 | %endmacro |
| 108 | 108 | ||
| 109 | %macro TRANSPOSE4x8W_LOAD 8 | ||
| 110 | %if mmsize==16 | ||
| 111 | TRANSPOSE4x8_LOAD wd, dq, qdq, %1, %2, %3, %4, %5, %6, %7, %8 | ||
| 112 | %else | ||
| 113 | SWAP 1, 4, 2, 3 | ||
| 114 | mova m0, [t5] | ||
| 115 | mova m1, [t5+r1] | ||
| 116 | mova m2, [t5+r1*2] | ||
| 117 | mova m3, [t5+t6] | ||
| 118 | TRANSPOSE4x4W 0, 1, 2, 3, 4 | ||
| 119 | %endif | ||
| 120 | %endmacro | ||
| 121 | |||
| 122 | %macro TRANSPOSE8x2W_STORE 8 | ||
| 123 | punpckhwd m0, m1, m2 | ||
| 124 | punpcklwd m1, m2 | ||
| 125 | %if mmsize==8 | ||
| 126 | movd %3, m0 | ||
| 127 | movd %1, m1 | ||
| 128 | psrlq m1, 32 | ||
| 129 | psrlq m0, 32 | ||
| 130 | movd %2, m1 | ||
| 131 | movd %4, m0 | ||
| 132 | %else | ||
| 133 | movd %5, m0 | ||
| 134 | movd %1, m1 | ||
| 135 | psrldq m1, 4 | ||
| 136 | psrldq m0, 4 | ||
| 137 | movd %2, m1 | ||
| 138 | movd %6, m0 | ||
| 139 | psrldq m1, 4 | ||
| 140 | psrldq m0, 4 | ||
| 141 | movd %3, m1 | ||
| 142 | movd %7, m0 | ||
| 143 | psrldq m1, 4 | ||
| 144 | psrldq m0, 4 | ||
| 145 | movd %4, m1 | ||
| 146 | movd %8, m0 | ||
| 147 | %endif | ||
| 148 | %endmacro | ||
| 149 | |||
| 150 | %macro SBUTTERFLY3 4 | 109 | %macro SBUTTERFLY3 4 |
| 151 | punpckh%1 %4, %2, %3 | 110 | punpckh%1 %4, %2, %3 |
| 152 | punpckl%1 %2, %3 | 111 | punpckl%1 %2, %3 |
| @@ -34,6 +34,7 @@ pw_pixel_max: times 8 dw ((1 << 10)-1) · 33 unmodified lines | |||
| 34 | SECTION .text | 34 | SECTION .text |
| 35 | 35 | ||
| 36 | cextern pw_2 | 36 | cextern pw_2 |
| 37 | cextern pw_3 | ||
| 37 | cextern pw_4 | 38 | cextern pw_4 |
| 38 | 39 | ||
| 39 | ; out: %4 = |%1-%2|-%3 | 40 | ; out: %4 = |%1-%2|-%3 |
| @@ -802,3 +803,108 @@ INIT_AVX · 762 unmodified lines | |||
| 802 | DEBLOCK_LUMA avx | 803 | DEBLOCK_LUMA avx |
| 803 | DEBLOCK_LUMA_INTRA avx | 804 | DEBLOCK_LUMA_INTRA avx |
| 804 | %endif | 805 | %endif |
| 806 | |||
| 807 | ; in: %1=p0, %2=q0, %3=p1, %4=q1, %5=mask, %6=tmp, %7=tmp | ||
| 808 | ; out: %1=p0', %2=q0' | ||
| 809 | %macro CHROMA_DEBLOCK_P0_Q0_INTRA 7 | ||
| 810 | mova %6, [pw_2] | ||
| 811 | paddw %6, %3 | ||
| 812 | paddw %6, %4 | ||
| 813 | paddw %7, %6, %2 | ||
| 814 | paddw %6, %1 | ||
| 815 | paddw %6, %3 | ||
| 816 | paddw %7, %4 | ||
| 817 | psraw %6, 2 | ||
| 818 | psraw %7, 2 | ||
| 819 | psubw %6, %1 | ||
| 820 | psubw %7, %2 | ||
| 821 | pand %6, %5 | ||
| 822 | pand %7, %5 | ||
| 823 | paddw %1, %6 | ||
| 824 | paddw %2, %7 | ||
| 825 | %endmacro | ||
| 826 | |||
| 827 | %macro CHROMA_V_LOAD 1 | ||
| 828 | mova m0, [r0] ; p1 | ||
| 829 | mova m1, [r0+r1] ; p0 | ||
| 830 | mova m2, [%1] ; q0 | ||
| 831 | mova m3, [%1+r1] ; q1 | ||
| 832 | %endmacro | ||
| 833 | |||
| 834 | %macro CHROMA_V_STORE 0 | ||
| 835 | mova [r0+1*r1], m1 | ||
| 836 | mova [r0+2*r1], m2 | ||
| 837 | %endmacro | ||
| 838 | |||
| 839 | %macro DEBLOCK_CHROMA 1 | ||
| 840 | ;----------------------------------------------------------------------------- | ||
| 841 | ; void deblock_v_chroma( uint16_t *pix, int stride, int alpha, int beta, int8_t *tc0 ) | ||
| 842 | ;----------------------------------------------------------------------------- | ||
| 843 | cglobal deblock_v_chroma_10_%1, 5,7-(mmsize/16),8*(mmsize/16) | ||
| 844 | mov r5, r0 | ||
| 845 | sub r0, r1 | ||
| 846 | sub r0, r1 | ||
| 847 | shl r2d, 2 | ||
| 848 | shl r3d, 2 | ||
| 849 | %if mmsize < 16 | ||
| 850 | mov r6, 16/mmsize | ||
| 851 | .loop: | ||
| 852 | %endif | ||
| 853 | CHROMA_V_LOAD r5 | ||
| 854 | LOAD_AB m4, m5, r2, r3 | ||
| 855 | LOAD_MASK m0, m1, m2, m3, m4, m5, m7, m6, m4 | ||
| 856 | pxor m4, m4 | ||
| 857 | LOAD_TC m6, r4 | ||
| 858 | psubw m6, [pw_3] | ||
| 859 | pmaxsw m6, m4 | ||
| 860 | pand m7, m6 | ||
| 861 | DEBLOCK_P0_Q0 m1, m2, m0, m3, m7, m5, m6 | ||
| 862 | CHROMA_V_STORE | ||
| 863 | %if mmsize < 16 | ||
| 864 | add r0, mmsize | ||
| 865 | add r5, mmsize | ||
| 866 | add r4, mmsize/8 | ||
| 867 | dec r6 | ||
| 868 | jg .loop | ||
| 869 | REP_RET | ||
| 870 | %else | ||
| 871 | RET | ||
| 872 | %endif | ||
| 873 | |||
| 874 | ;----------------------------------------------------------------------------- | ||
| 875 | ; void deblock_v_chroma_intra( uint16_t *pix, int stride, int alpha, int beta ) | ||
| 876 | ;----------------------------------------------------------------------------- | ||
| 877 | cglobal deblock_v_chroma_intra_10_%1, 4,6-(mmsize/16),8*(mmsize/16) | ||
| 878 | mov r4, r0 | ||
| 879 | sub r0, r1 | ||
| 880 | sub r0, r1 | ||
| 881 | shl r2d, 2 | ||
| 882 | shl r3d, 2 | ||
| 883 | %if mmsize < 16 | ||
| 884 | mov r5, 16/mmsize | ||
| 885 | .loop: | ||
| 886 | %endif | ||
| 887 | CHROMA_V_LOAD r4 | ||
| 888 | LOAD_AB m4, m5, r2, r3 | ||
| 889 | LOAD_MASK m0, m1, m2, m3, m4, m5, m7, m6, m4 | ||
| 890 | CHROMA_DEBLOCK_P0_Q0_INTRA m1, m2, m0, m3, m7, m5, m6 | ||
| 891 | CHROMA_V_STORE | ||
| 892 | %if mmsize < 16 | ||
| 893 | add r0, mmsize | ||
| 894 | add r4, mmsize | ||
| 895 | dec r5 | ||
| 896 | jg .loop | ||
| 897 | REP_RET | ||
| 898 | %else | ||
| 899 | RET | ||
| 900 | %endif | ||
| 901 | %endmacro | ||
| 902 | |||
| 903 | %ifndef ARCH_X86_64 | ||
| 904 | INIT_MMX | ||
| 905 | DEBLOCK_CHROMA mmxext | ||
| 906 | %endif | ||
| 907 | INIT_XMM | ||
| 908 | DEBLOCK_CHROMA sse2 | ||
| 909 | INIT_AVX | ||
| 910 | DEBLOCK_CHROMA avx | ||
| @@ -236,10 +236,18 @@ LF_FUNC (h, luma, depth, sse2)\ · 235 unmodified lines | |||
| 236 | LF_IFUNC(h, luma_intra, depth, sse2)\ | 236 | LF_IFUNC(h, luma_intra, depth, sse2)\ |
| 237 | LF_FUNC (v, luma, depth, sse2)\ | 237 | LF_FUNC (v, luma, depth, sse2)\ |
| 238 | LF_IFUNC(v, luma_intra, depth, sse2)\ | 238 | LF_IFUNC(v, luma_intra, depth, sse2)\ |
| 239 | LF_FUNC (h, chroma, depth, sse2)\ | ||
| 240 | LF_IFUNC(h, chroma_intra, depth, sse2)\ | ||
| 241 | LF_FUNC (v, chroma, depth, sse2)\ | ||
| 242 | LF_IFUNC(v, chroma_intra, depth, sse2)\ | ||
| 239 | LF_FUNC (h, luma, depth, avx)\ | 243 | LF_FUNC (h, luma, depth, avx)\ |
| 240 | LF_IFUNC(h, luma_intra, depth, avx)\ | 244 | LF_IFUNC(h, luma_intra, depth, avx)\ |
| 241 | LF_FUNC (v, luma, depth, avx)\ | 245 | LF_FUNC (v, luma, depth, avx)\ |
| 242 | LF_IFUNC(v, luma_intra, depth, avx) | 246 | LF_IFUNC(v, luma_intra, depth, avx)\ |
| 247 | LF_FUNC (h, chroma, depth, avx)\ | ||
| 248 | LF_IFUNC(h, chroma_intra, depth, avx)\ | ||
| 249 | LF_FUNC (v, chroma, depth, avx)\ | ||
| 250 | LF_IFUNC(v, chroma_intra, depth, avx) | ||
| 243 | 251 | ||
| 244 | LF_FUNCS( uint8_t, 8) | 252 | LF_FUNCS( uint8_t, 8) |
| 245 | LF_FUNCS(uint16_t, 10) | 253 | LF_FUNCS(uint16_t, 10) |
| @@ -401,12 +409,16 @@ void ff_h264dsp_init_x86(H264DSPContext *c, const int bit_depth) · 155 unmodified lines | |||
| 401 | if (mm_flags & AV_CPU_FLAG_MMX) { | 409 | if (mm_flags & AV_CPU_FLAG_MMX) { |
| 402 | if (mm_flags & AV_CPU_FLAG_MMX2) { | 410 | if (mm_flags & AV_CPU_FLAG_MMX2) { |
| 403 | #if ARCH_X86_32 | 411 | #if ARCH_X86_32 |
| 412 | c->h264_v_loop_filter_chroma= ff_deblock_v_chroma_10_mmxext; | ||
| 413 | c->h264_v_loop_filter_chroma_intra= ff_deblock_v_chroma_intra_10_mmxext; | ||
| 404 | c->h264_v_loop_filter_luma= ff_deblock_v_luma_10_mmxext; | 414 | c->h264_v_loop_filter_luma= ff_deblock_v_luma_10_mmxext; |
| 405 | c->h264_h_loop_filter_luma= ff_deblock_h_luma_10_mmxext; | 415 | c->h264_h_loop_filter_luma= ff_deblock_h_luma_10_mmxext; |
| 406 | c->h264_v_loop_filter_luma_intra = ff_deblock_v_luma_intra_10_mmxext; | 416 | c->h264_v_loop_filter_luma_intra = ff_deblock_v_luma_intra_10_mmxext; |
| 407 | c->h264_h_loop_filter_luma_intra = ff_deblock_h_luma_intra_10_mmxext; | 417 | c->h264_h_loop_filter_luma_intra = ff_deblock_h_luma_intra_10_mmxext; |
| 408 | #endif | 418 | #endif |
| 409 | if (mm_flags&AV_CPU_FLAG_SSE2) { | 419 | if (mm_flags&AV_CPU_FLAG_SSE2) { |
| 420 | c->h264_v_loop_filter_chroma= ff_deblock_v_chroma_10_sse2; | ||
| 421 | c->h264_v_loop_filter_chroma_intra= ff_deblock_v_chroma_intra_10_sse2; | ||
| 410 | #if HAVE_ALIGNED_STACK | 422 | #if HAVE_ALIGNED_STACK |
| 411 | c->h264_v_loop_filter_luma = ff_deblock_v_luma_10_sse2; | 423 | c->h264_v_loop_filter_luma = ff_deblock_v_luma_10_sse2; |
| 412 | c->h264_h_loop_filter_luma = ff_deblock_h_luma_10_sse2; | 424 | c->h264_h_loop_filter_luma = ff_deblock_h_luma_10_sse2; |
| @@ -415,6 +427,8 @@ void ff_h264dsp_init_x86(H264DSPContext *c, const int bit_depth) · 2 unmodified lines | |||
| 415 | #endif | 427 | #endif |
| 416 | } | 428 | } |
| 417 | if (mm_flags&AV_CPU_FLAG_AVX) { | 429 | if (mm_flags&AV_CPU_FLAG_AVX) { |
| 430 | c->h264_v_loop_filter_chroma= ff_deblock_v_chroma_10_avx; | ||
| 431 | c->h264_v_loop_filter_chroma_intra= ff_deblock_v_chroma_intra_10_avx; | ||
| 418 | #if HAVE_ALIGNED_STACK | 432 | #if HAVE_ALIGNED_STACK |
| 419 | c->h264_v_loop_filter_luma = ff_deblock_v_luma_10_avx; | 433 | c->h264_v_loop_filter_luma = ff_deblock_v_luma_10_avx; |
| 420 | c->h264_h_loop_filter_luma = ff_deblock_h_luma_10_avx; | 434 | c->h264_h_loop_filter_luma = ff_deblock_h_luma_10_avx; |