annotate ppc/h264_altivec.c @ 4188:57b22f48a6a6 libavcodec

Decoder can decode many ZLib-packed strips
author kostya
date Mon, 13 Nov 2006 11:27:36 +0000
parents c8c591fe26f8
children bd7f921813b1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
1 /*
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
2 * Copyright (c) 2004 Romain Dolbeau <romain@dolbeau.org>
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
3 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3667
diff changeset
4 * This file is part of FFmpeg.
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3667
diff changeset
5 *
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3667
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
8 * License as published by the Free Software Foundation; either
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3667
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
10 *
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3667
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
14 * Lesser General Public License for more details.
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
15 *
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
3947
c8c591fe26f8 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 3667
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
3036
0b546eab515d Update licensing information: The FSF changed postal address.
diego
parents: 2979
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
19 */
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2236
diff changeset
20
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
21 #include "../dsputil.h"
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
22
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
23 #include "gcc_fixes.h"
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
24
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
25 #include "dsputil_altivec.h"
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
26
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
27 #define PUT_OP_U8_ALTIVEC(d, s, dst) d = s
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
28 #define AVG_OP_U8_ALTIVEC(d, s, dst) d = vec_avg(dst, s)
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
29
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
30 #define OP_U8_ALTIVEC PUT_OP_U8_ALTIVEC
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
31 #define PREFIX_h264_chroma_mc8_altivec put_h264_chroma_mc8_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
32 #define PREFIX_h264_chroma_mc8_num altivec_put_h264_chroma_mc8_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
33 #define PREFIX_h264_qpel16_h_lowpass_altivec put_h264_qpel16_h_lowpass_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
34 #define PREFIX_h264_qpel16_h_lowpass_num altivec_put_h264_qpel16_h_lowpass_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
35 #define PREFIX_h264_qpel16_v_lowpass_altivec put_h264_qpel16_v_lowpass_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
36 #define PREFIX_h264_qpel16_v_lowpass_num altivec_put_h264_qpel16_v_lowpass_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
37 #define PREFIX_h264_qpel16_hv_lowpass_altivec put_h264_qpel16_hv_lowpass_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
38 #define PREFIX_h264_qpel16_hv_lowpass_num altivec_put_h264_qpel16_hv_lowpass_num
3577
5be5a936c8a9 Clean up:make dsputil subfile names consistent
lu_zero
parents: 3544
diff changeset
39 #include "h264_template_altivec.c"
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
40 #undef OP_U8_ALTIVEC
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
41 #undef PREFIX_h264_chroma_mc8_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
42 #undef PREFIX_h264_chroma_mc8_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
43 #undef PREFIX_h264_qpel16_h_lowpass_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
44 #undef PREFIX_h264_qpel16_h_lowpass_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
45 #undef PREFIX_h264_qpel16_v_lowpass_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
46 #undef PREFIX_h264_qpel16_v_lowpass_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
47 #undef PREFIX_h264_qpel16_hv_lowpass_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
48 #undef PREFIX_h264_qpel16_hv_lowpass_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
49
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
50 #define OP_U8_ALTIVEC AVG_OP_U8_ALTIVEC
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
51 #define PREFIX_h264_chroma_mc8_altivec avg_h264_chroma_mc8_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
52 #define PREFIX_h264_chroma_mc8_num altivec_avg_h264_chroma_mc8_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
53 #define PREFIX_h264_qpel16_h_lowpass_altivec avg_h264_qpel16_h_lowpass_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
54 #define PREFIX_h264_qpel16_h_lowpass_num altivec_avg_h264_qpel16_h_lowpass_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
55 #define PREFIX_h264_qpel16_v_lowpass_altivec avg_h264_qpel16_v_lowpass_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
56 #define PREFIX_h264_qpel16_v_lowpass_num altivec_avg_h264_qpel16_v_lowpass_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
57 #define PREFIX_h264_qpel16_hv_lowpass_altivec avg_h264_qpel16_hv_lowpass_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
58 #define PREFIX_h264_qpel16_hv_lowpass_num altivec_avg_h264_qpel16_hv_lowpass_num
3577
5be5a936c8a9 Clean up:make dsputil subfile names consistent
lu_zero
parents: 3544
diff changeset
59 #include "h264_template_altivec.c"
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
60 #undef OP_U8_ALTIVEC
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
61 #undef PREFIX_h264_chroma_mc8_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
62 #undef PREFIX_h264_chroma_mc8_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
63 #undef PREFIX_h264_qpel16_h_lowpass_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
64 #undef PREFIX_h264_qpel16_h_lowpass_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
65 #undef PREFIX_h264_qpel16_v_lowpass_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
66 #undef PREFIX_h264_qpel16_v_lowpass_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
67 #undef PREFIX_h264_qpel16_hv_lowpass_altivec
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
68 #undef PREFIX_h264_qpel16_hv_lowpass_num
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
69
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
70 #define H264_MC(OPNAME, SIZE, CODETYPE) \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
71 static void OPNAME ## h264_qpel ## SIZE ## _mc00_ ## CODETYPE (uint8_t *dst, uint8_t *src, int stride){\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
72 OPNAME ## pixels ## SIZE ## _ ## CODETYPE(dst, src, stride, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
73 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
74 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
75 static void OPNAME ## h264_qpel ## SIZE ## _mc10_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){ \
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
76 DECLARE_ALIGNED_16(uint8_t, half[SIZE*SIZE]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
77 put_h264_qpel ## SIZE ## _h_lowpass_ ## CODETYPE(half, src, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
78 OPNAME ## pixels ## SIZE ## _l2_ ## CODETYPE(dst, src, half, stride, stride, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
79 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
80 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
81 static void OPNAME ## h264_qpel ## SIZE ## _mc20_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
82 OPNAME ## h264_qpel ## SIZE ## _h_lowpass_ ## CODETYPE(dst, src, stride, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
83 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
84 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
85 static void OPNAME ## h264_qpel ## SIZE ## _mc30_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
86 DECLARE_ALIGNED_16(uint8_t, half[SIZE*SIZE]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
87 put_h264_qpel ## SIZE ## _h_lowpass_ ## CODETYPE(half, src, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
88 OPNAME ## pixels ## SIZE ## _l2_ ## CODETYPE(dst, src+1, half, stride, stride, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
89 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
90 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
91 static void OPNAME ## h264_qpel ## SIZE ## _mc01_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
92 DECLARE_ALIGNED_16(uint8_t, half[SIZE*SIZE]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
93 put_h264_qpel ## SIZE ## _v_lowpass_ ## CODETYPE(half, src, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
94 OPNAME ## pixels ## SIZE ## _l2_ ## CODETYPE(dst, src, half, stride, stride, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
95 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
96 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
97 static void OPNAME ## h264_qpel ## SIZE ## _mc02_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
98 OPNAME ## h264_qpel ## SIZE ## _v_lowpass_ ## CODETYPE(dst, src, stride, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
99 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
100 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
101 static void OPNAME ## h264_qpel ## SIZE ## _mc03_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
102 DECLARE_ALIGNED_16(uint8_t, half[SIZE*SIZE]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
103 put_h264_qpel ## SIZE ## _v_lowpass_ ## CODETYPE(half, src, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
104 OPNAME ## pixels ## SIZE ## _l2_ ## CODETYPE(dst, src+stride, half, stride, stride, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
105 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
106 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
107 static void OPNAME ## h264_qpel ## SIZE ## _mc11_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
108 DECLARE_ALIGNED_16(uint8_t, halfH[SIZE*SIZE]);\
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
109 DECLARE_ALIGNED_16(uint8_t, halfV[SIZE*SIZE]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
110 put_h264_qpel ## SIZE ## _h_lowpass_ ## CODETYPE(halfH, src, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
111 put_h264_qpel ## SIZE ## _v_lowpass_ ## CODETYPE(halfV, src, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
112 OPNAME ## pixels ## SIZE ## _l2_ ## CODETYPE(dst, halfH, halfV, stride, SIZE, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
113 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
114 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
115 static void OPNAME ## h264_qpel ## SIZE ## _mc31_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
116 DECLARE_ALIGNED_16(uint8_t, halfH[SIZE*SIZE]);\
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
117 DECLARE_ALIGNED_16(uint8_t, halfV[SIZE*SIZE]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
118 put_h264_qpel ## SIZE ## _h_lowpass_ ## CODETYPE(halfH, src, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
119 put_h264_qpel ## SIZE ## _v_lowpass_ ## CODETYPE(halfV, src+1, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
120 OPNAME ## pixels ## SIZE ## _l2_ ## CODETYPE(dst, halfH, halfV, stride, SIZE, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
121 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
122 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
123 static void OPNAME ## h264_qpel ## SIZE ## _mc13_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
124 DECLARE_ALIGNED_16(uint8_t, halfH[SIZE*SIZE]);\
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
125 DECLARE_ALIGNED_16(uint8_t, halfV[SIZE*SIZE]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
126 put_h264_qpel ## SIZE ## _h_lowpass_ ## CODETYPE(halfH, src + stride, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
127 put_h264_qpel ## SIZE ## _v_lowpass_ ## CODETYPE(halfV, src, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
128 OPNAME ## pixels ## SIZE ## _l2_ ## CODETYPE(dst, halfH, halfV, stride, SIZE, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
129 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
130 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
131 static void OPNAME ## h264_qpel ## SIZE ## _mc33_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
132 DECLARE_ALIGNED_16(uint8_t, halfH[SIZE*SIZE]);\
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
133 DECLARE_ALIGNED_16(uint8_t, halfV[SIZE*SIZE]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
134 put_h264_qpel ## SIZE ## _h_lowpass_ ## CODETYPE(halfH, src + stride, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
135 put_h264_qpel ## SIZE ## _v_lowpass_ ## CODETYPE(halfV, src+1, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
136 OPNAME ## pixels ## SIZE ## _l2_ ## CODETYPE(dst, halfH, halfV, stride, SIZE, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
137 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
138 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
139 static void OPNAME ## h264_qpel ## SIZE ## _mc22_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
140 DECLARE_ALIGNED_16(int16_t, tmp[SIZE*(SIZE+8)]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
141 OPNAME ## h264_qpel ## SIZE ## _hv_lowpass_ ## CODETYPE(dst, tmp, src, stride, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
142 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
143 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
144 static void OPNAME ## h264_qpel ## SIZE ## _mc21_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
145 DECLARE_ALIGNED_16(uint8_t, halfH[SIZE*SIZE]);\
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
146 DECLARE_ALIGNED_16(uint8_t, halfHV[SIZE*SIZE]);\
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
147 DECLARE_ALIGNED_16(int16_t, tmp[SIZE*(SIZE+8)]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
148 put_h264_qpel ## SIZE ## _h_lowpass_ ## CODETYPE(halfH, src, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
149 put_h264_qpel ## SIZE ## _hv_lowpass_ ## CODETYPE(halfHV, tmp, src, SIZE, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
150 OPNAME ## pixels ## SIZE ## _l2_ ## CODETYPE(dst, halfH, halfHV, stride, SIZE, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
151 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
152 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
153 static void OPNAME ## h264_qpel ## SIZE ## _mc23_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
154 DECLARE_ALIGNED_16(uint8_t, halfH[SIZE*SIZE]);\
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
155 DECLARE_ALIGNED_16(uint8_t, halfHV[SIZE*SIZE]);\
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
156 DECLARE_ALIGNED_16(int16_t, tmp[SIZE*(SIZE+8)]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
157 put_h264_qpel ## SIZE ## _h_lowpass_ ## CODETYPE(halfH, src + stride, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
158 put_h264_qpel ## SIZE ## _hv_lowpass_ ## CODETYPE(halfHV, tmp, src, SIZE, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
159 OPNAME ## pixels ## SIZE ## _l2_ ## CODETYPE(dst, halfH, halfHV, stride, SIZE, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
160 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
161 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
162 static void OPNAME ## h264_qpel ## SIZE ## _mc12_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
163 DECLARE_ALIGNED_16(uint8_t, halfV[SIZE*SIZE]);\
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
164 DECLARE_ALIGNED_16(uint8_t, halfHV[SIZE*SIZE]);\
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
165 DECLARE_ALIGNED_16(int16_t, tmp[SIZE*(SIZE+8)]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
166 put_h264_qpel ## SIZE ## _v_lowpass_ ## CODETYPE(halfV, src, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
167 put_h264_qpel ## SIZE ## _hv_lowpass_ ## CODETYPE(halfHV, tmp, src, SIZE, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
168 OPNAME ## pixels ## SIZE ## _l2_ ## CODETYPE(dst, halfV, halfHV, stride, SIZE, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
169 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
170 \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
171 static void OPNAME ## h264_qpel ## SIZE ## _mc32_ ## CODETYPE(uint8_t *dst, uint8_t *src, int stride){\
3544
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
172 DECLARE_ALIGNED_16(uint8_t, halfV[SIZE*SIZE]);\
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
173 DECLARE_ALIGNED_16(uint8_t, halfHV[SIZE*SIZE]);\
8bb61d9a2c40 avoid alignment hacks, luckly gcc does the right thing on arches different from x86
lu_zero
parents: 3337
diff changeset
174 DECLARE_ALIGNED_16(int16_t, tmp[SIZE*(SIZE+8)]);\
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
175 put_h264_qpel ## SIZE ## _v_lowpass_ ## CODETYPE(halfV, src+1, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
176 put_h264_qpel ## SIZE ## _hv_lowpass_ ## CODETYPE(halfHV, tmp, src, SIZE, SIZE, stride);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
177 OPNAME ## pixels ## SIZE ## _l2_ ## CODETYPE(dst, halfV, halfHV, stride, SIZE, SIZE);\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
178 }\
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
179
3667
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
180 /* this code assume that stride % 16 == 0 */
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
181 void put_no_rnd_h264_chroma_mc8_altivec(uint8_t * dst, uint8_t * src, int stride, int h, int x, int y) {
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
182 signed int ABCD[4] __attribute__((aligned(16))) =
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
183 {((8 - x) * (8 - y)),
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
184 ((x) * (8 - y)),
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
185 ((8 - x) * (y)),
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
186 ((x) * (y))};
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
187 register int i;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
188 vector unsigned char fperm;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
189 const vector signed int vABCD = vec_ld(0, ABCD);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
190 const vector signed short vA = vec_splat((vector signed short)vABCD, 1);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
191 const vector signed short vB = vec_splat((vector signed short)vABCD, 3);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
192 const vector signed short vC = vec_splat((vector signed short)vABCD, 5);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
193 const vector signed short vD = vec_splat((vector signed short)vABCD, 7);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
194 const vector signed int vzero = vec_splat_s32(0);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
195 const vector signed short v28ss = vec_sub(vec_sl(vec_splat_s16(1),vec_splat_u16(5)),vec_splat_s16(4));
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
196 const vector unsigned short v6us = vec_splat_u16(6);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
197 register int loadSecond = (((unsigned long)src) % 16) <= 7 ? 0 : 1;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
198 register int reallyBadAlign = (((unsigned long)src) % 16) == 15 ? 1 : 0;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
199
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
200 vector unsigned char vsrcAuc, vsrcBuc, vsrcperm0, vsrcperm1;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
201 vector unsigned char vsrc0uc, vsrc1uc;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
202 vector signed short vsrc0ssH, vsrc1ssH;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
203 vector unsigned char vsrcCuc, vsrc2uc, vsrc3uc;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
204 vector signed short vsrc2ssH, vsrc3ssH, psum;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
205 vector unsigned char vdst, ppsum, vfdst, fsum;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
206
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
207 if (((unsigned long)dst) % 16 == 0) {
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
208 fperm = (vector unsigned char)AVV(0x10, 0x11, 0x12, 0x13,
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
209 0x14, 0x15, 0x16, 0x17,
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
210 0x08, 0x09, 0x0A, 0x0B,
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
211 0x0C, 0x0D, 0x0E, 0x0F);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
212 } else {
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
213 fperm = (vector unsigned char)AVV(0x00, 0x01, 0x02, 0x03,
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
214 0x04, 0x05, 0x06, 0x07,
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
215 0x18, 0x19, 0x1A, 0x1B,
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
216 0x1C, 0x1D, 0x1E, 0x1F);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
217 }
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
218
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
219 vsrcAuc = vec_ld(0, src);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
220
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
221 if (loadSecond)
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
222 vsrcBuc = vec_ld(16, src);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
223 vsrcperm0 = vec_lvsl(0, src);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
224 vsrcperm1 = vec_lvsl(1, src);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
225
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
226 vsrc0uc = vec_perm(vsrcAuc, vsrcBuc, vsrcperm0);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
227 if (reallyBadAlign)
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
228 vsrc1uc = vsrcBuc;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
229 else
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
230 vsrc1uc = vec_perm(vsrcAuc, vsrcBuc, vsrcperm1);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
231
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
232 vsrc0ssH = (vector signed short)vec_mergeh((vector unsigned char)vzero,
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
233 (vector unsigned char)vsrc0uc);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
234 vsrc1ssH = (vector signed short)vec_mergeh((vector unsigned char)vzero,
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
235 (vector unsigned char)vsrc1uc);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
236
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
237 if (!loadSecond) {// -> !reallyBadAlign
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
238 for (i = 0 ; i < h ; i++) {
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
239
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
240
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
241 vsrcCuc = vec_ld(stride + 0, src);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
242
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
243 vsrc2uc = vec_perm(vsrcCuc, vsrcCuc, vsrcperm0);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
244 vsrc3uc = vec_perm(vsrcCuc, vsrcCuc, vsrcperm1);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
245
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
246 vsrc2ssH = (vector signed short)vec_mergeh((vector unsigned char)vzero,
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
247 (vector unsigned char)vsrc2uc);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
248 vsrc3ssH = (vector signed short)vec_mergeh((vector unsigned char)vzero,
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
249 (vector unsigned char)vsrc3uc);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
250
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
251 psum = vec_mladd(vA, vsrc0ssH, vec_splat_s16(0));
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
252 psum = vec_mladd(vB, vsrc1ssH, psum);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
253 psum = vec_mladd(vC, vsrc2ssH, psum);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
254 psum = vec_mladd(vD, vsrc3ssH, psum);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
255 psum = vec_add(v28ss, psum);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
256 psum = vec_sra(psum, v6us);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
257
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
258 vdst = vec_ld(0, dst);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
259 ppsum = (vector unsigned char)vec_packsu(psum, psum);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
260 fsum = vec_perm(vdst, ppsum, fperm);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
261
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
262 vec_st(fsum, 0, dst);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
263
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
264 vsrc0ssH = vsrc2ssH;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
265 vsrc1ssH = vsrc3ssH;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
266
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
267 dst += stride;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
268 src += stride;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
269 }
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
270 } else {
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
271 vector unsigned char vsrcDuc;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
272 for (i = 0 ; i < h ; i++) {
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
273 vsrcCuc = vec_ld(stride + 0, src);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
274 vsrcDuc = vec_ld(stride + 16, src);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
275
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
276 vsrc2uc = vec_perm(vsrcCuc, vsrcDuc, vsrcperm0);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
277 if (reallyBadAlign)
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
278 vsrc3uc = vsrcDuc;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
279 else
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
280 vsrc3uc = vec_perm(vsrcCuc, vsrcDuc, vsrcperm1);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
281
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
282 vsrc2ssH = (vector signed short)vec_mergeh((vector unsigned char)vzero,
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
283 (vector unsigned char)vsrc2uc);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
284 vsrc3ssH = (vector signed short)vec_mergeh((vector unsigned char)vzero,
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
285 (vector unsigned char)vsrc3uc);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
286
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
287 psum = vec_mladd(vA, vsrc0ssH, vec_splat_s16(0));
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
288 psum = vec_mladd(vB, vsrc1ssH, psum);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
289 psum = vec_mladd(vC, vsrc2ssH, psum);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
290 psum = vec_mladd(vD, vsrc3ssH, psum);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
291 psum = vec_add(v28ss, psum);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
292 psum = vec_sr(psum, v6us);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
293
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
294 vdst = vec_ld(0, dst);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
295 ppsum = (vector unsigned char)vec_pack(psum, psum);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
296 fsum = vec_perm(vdst, ppsum, fperm);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
297
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
298 vec_st(fsum, 0, dst);
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
299
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
300 vsrc0ssH = vsrc2ssH;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
301 vsrc1ssH = vsrc3ssH;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
302
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
303 dst += stride;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
304 src += stride;
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
305 }
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
306 }
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
307 }
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
308
3337
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
309 static inline void put_pixels16_l2_altivec( uint8_t * dst, const uint8_t * src1,
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
310 const uint8_t * src2, int dst_stride,
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
311 int src_stride1, int h)
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
312 {
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
313 int i;
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
314 vector unsigned char a, b, d, tmp1, tmp2, mask, mask_, edges, align;
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
315
3337
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
316 mask_ = vec_lvsl(0, src2);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
317
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
318 for (i = 0; i < h; i++) {
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
319
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
320 tmp1 = vec_ld(i * src_stride1, src1);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
321 mask = vec_lvsl(i * src_stride1, src1);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
322 tmp2 = vec_ld(i * src_stride1 + 15, src1);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
323
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
324 a = vec_perm(tmp1, tmp2, mask);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
325
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
326 tmp1 = vec_ld(i * 16, src2);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
327 tmp2 = vec_ld(i * 16 + 15, src2);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
328
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
329 b = vec_perm(tmp1, tmp2, mask_);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
330
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
331 tmp1 = vec_ld(0, dst);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
332 mask = vec_lvsl(0, dst);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
333 tmp2 = vec_ld(15, dst);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
334
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
335 d = vec_avg(a, b);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
336
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
337 edges = vec_perm(tmp2, tmp1, mask);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
338
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
339 align = vec_lvsr(0, dst);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
340
3659
dd55fb216497 Proper fix for the corner case that would have been corrected before, praise&blame to me and exg in equal shares
lu_zero
parents: 3658
diff changeset
341 tmp2 = vec_perm(d, edges, align);
3658
2a113750d778 Revert previous commit
lu_zero
parents: 3583
diff changeset
342 tmp1 = vec_perm(edges, d, align);
3337
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
343
3659
dd55fb216497 Proper fix for the corner case that would have been corrected before, praise&blame to me and exg in equal shares
lu_zero
parents: 3658
diff changeset
344 vec_st(tmp2, 15, dst);
3583
562758eaf7bf 10l, thanks to Emanuele Giaquinta <exg@gentoo.org> for testing and finding the issue
lu_zero
parents: 3577
diff changeset
345 vec_st(tmp1, 0 , dst);
3337
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
346
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
347 dst += dst_stride;
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
348 }
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
349 }
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
350
3337
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
351 static inline void avg_pixels16_l2_altivec( uint8_t * dst, const uint8_t * src1,
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
352 const uint8_t * src2, int dst_stride,
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
353 int src_stride1, int h)
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
354 {
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
355 int i;
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
356 vector unsigned char a, b, d, tmp1, tmp2, mask, mask_, edges, align;
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
357
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
358 mask_ = vec_lvsl(0, src2);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
359
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
360 for (i = 0; i < h; i++) {
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
361
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
362 tmp1 = vec_ld(i * src_stride1, src1);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
363 mask = vec_lvsl(i * src_stride1, src1);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
364 tmp2 = vec_ld(i * src_stride1 + 15, src1);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
365
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
366 a = vec_perm(tmp1, tmp2, mask);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
367
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
368 tmp1 = vec_ld(i * 16, src2);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
369 tmp2 = vec_ld(i * 16 + 15, src2);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
370
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
371 b = vec_perm(tmp1, tmp2, mask_);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
372
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
373 tmp1 = vec_ld(0, dst);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
374 mask = vec_lvsl(0, dst);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
375 tmp2 = vec_ld(15, dst);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
376
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
377 d = vec_avg(vec_perm(tmp1, tmp2, mask), vec_avg(a, b));
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
378
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
379 edges = vec_perm(tmp2, tmp1, mask);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
380
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
381 align = vec_lvsr(0, dst);
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
382
3659
dd55fb216497 Proper fix for the corner case that would have been corrected before, praise&blame to me and exg in equal shares
lu_zero
parents: 3658
diff changeset
383 tmp2 = vec_perm(d, edges, align);
3658
2a113750d778 Revert previous commit
lu_zero
parents: 3583
diff changeset
384 tmp1 = vec_perm(edges, d, align);
3337
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
385
3659
dd55fb216497 Proper fix for the corner case that would have been corrected before, praise&blame to me and exg in equal shares
lu_zero
parents: 3658
diff changeset
386 vec_st(tmp2, 15, dst);
3583
562758eaf7bf 10l, thanks to Emanuele Giaquinta <exg@gentoo.org> for testing and finding the issue
lu_zero
parents: 3577
diff changeset
387 vec_st(tmp1, 0 , dst);
3337
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
388
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
389 dst += dst_stride;
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
390 }
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
391 }
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
392
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
393 /* Implemented but could be faster
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
394 #define put_pixels16_l2_altivec(d,s1,s2,ds,s1s,h) put_pixels16_l2(d,s1,s2,ds,s1s,16,h)
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
395 #define avg_pixels16_l2_altivec(d,s1,s2,ds,s1s,h) avg_pixels16_l2(d,s1,s2,ds,s1s,16,h)
3337
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
396 */
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
397
3337
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
398 H264_MC(put_, 16, altivec)
bec1eb6d3746 put_pixels16_l2_altivec and avg_pixels16_l2_altivec
lu_zero
parents: 3089
diff changeset
399 H264_MC(avg_, 16, altivec)
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
400
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
401 void dsputil_h264_init_ppc(DSPContext* c, AVCodecContext *avctx) {
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2236
diff changeset
402
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
403 #ifdef HAVE_ALTIVEC
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
404 if (has_altivec()) {
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
405 c->put_h264_chroma_pixels_tab[0] = put_h264_chroma_mc8_altivec;
3667
56e60411527c AltiVec version of put_no_rnd_h264_chroma_pixels_tab[0] (slightly changed version of put_h264_chroma_pixels_tab[0])
kostya
parents: 3659
diff changeset
406 c->put_no_rnd_h264_chroma_pixels_tab[0] = put_no_rnd_h264_chroma_mc8_altivec;
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
407 c->avg_h264_chroma_pixels_tab[0] = avg_h264_chroma_mc8_altivec;
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
408
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
409 #define dspfunc(PFX, IDX, NUM) \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
410 c->PFX ## _pixels_tab[IDX][ 0] = PFX ## NUM ## _mc00_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
411 c->PFX ## _pixels_tab[IDX][ 1] = PFX ## NUM ## _mc10_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
412 c->PFX ## _pixels_tab[IDX][ 2] = PFX ## NUM ## _mc20_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
413 c->PFX ## _pixels_tab[IDX][ 3] = PFX ## NUM ## _mc30_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
414 c->PFX ## _pixels_tab[IDX][ 4] = PFX ## NUM ## _mc01_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
415 c->PFX ## _pixels_tab[IDX][ 5] = PFX ## NUM ## _mc11_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
416 c->PFX ## _pixels_tab[IDX][ 6] = PFX ## NUM ## _mc21_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
417 c->PFX ## _pixels_tab[IDX][ 7] = PFX ## NUM ## _mc31_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
418 c->PFX ## _pixels_tab[IDX][ 8] = PFX ## NUM ## _mc02_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
419 c->PFX ## _pixels_tab[IDX][ 9] = PFX ## NUM ## _mc12_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
420 c->PFX ## _pixels_tab[IDX][10] = PFX ## NUM ## _mc22_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
421 c->PFX ## _pixels_tab[IDX][11] = PFX ## NUM ## _mc32_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
422 c->PFX ## _pixels_tab[IDX][12] = PFX ## NUM ## _mc03_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
423 c->PFX ## _pixels_tab[IDX][13] = PFX ## NUM ## _mc13_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
424 c->PFX ## _pixels_tab[IDX][14] = PFX ## NUM ## _mc23_altivec; \
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
425 c->PFX ## _pixels_tab[IDX][15] = PFX ## NUM ## _mc33_altivec
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2236
diff changeset
426
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
427 dspfunc(put_h264_qpel, 0, 16);
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
428 dspfunc(avg_h264_qpel, 0, 16);
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
429 #undef dspfunc
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2236
diff changeset
430
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
431 } else
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
432 #endif /* HAVE_ALTIVEC */
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
433 {
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
434 // Non-AltiVec PPC optimisations
2967
ef2149182f1c COSMETICS: Remove all trailing whitespace.
diego
parents: 2236
diff changeset
435
2236
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
436 // ... pending ...
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
437 }
b0102ea621dd h264 qpel mc, size 16 patch by (Romain Dolbeau <dolbeau at caps-entreprise dot com>)
michael
parents:
diff changeset
438 }