annotate bfin/mathops.h @ 6323:e6da66f378c7 libavcodec

mpegvideo.h has two function declarations with the 'inline' specifier but no definition for those functions. The C standard requires a definition to appear in the same translation unit for any function declared with 'inline'. Most of the files including mpegvideo.h do not define those functions. Fix this by removing the 'inline' specifiers from the header. patch by Uoti Urpala
author diego
date Sun, 03 Feb 2008 17:54:30 +0000
parents 1d83e9c34641
children c4a4495715dd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5614
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
1 /*
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
2 * mathops.h
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
3 *
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
4 * Copyright (C) 2007 Marc Hoffman <mmhoffm@gmail.com>
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
5 *
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
6 * This file is part of FFmpeg.
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
7 *
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
12 *
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
16 * Lesser General Public License for more details.
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
17 *
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
21 */
5830
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5689
diff changeset
22 #ifndef FFMPEG_BFIN_MATHOPS_H
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5689
diff changeset
23 #define FFMPEG_BFIN_MATHOPS_H
5614
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
24
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
25 #ifdef CONFIG_MPEGAUDIO_HP
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
26 #define MULH(X,Y) ({ int xxo; \
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
27 asm ( \
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
28 "a1 = %2.L * %1.L (FU);\n\t" \
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
29 "a1 = a1 >> 16;\n\t" \
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
30 "a1 += %2.H * %1.L (IS,M);\n\t" \
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
31 "a0 = %1.H * %2.H, a1+= %1.H * %2.L (IS,M);\n\t"\
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
32 "a1 = a1 >>> 16;\n\t" \
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
33 "%0 = (a0 += a1);\n\t" \
5689
84bc9138be8f properly tell the compiler that A0 and A1 are clobbered
mhoffman
parents: 5619
diff changeset
34 : "=d" (xxo) : "d" (X), "d" (Y) : "A0","A1"); xxo; })
5614
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
35 #else
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
36 #define MULH(X,Y) ({ int xxo; \
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
37 asm ( \
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
38 "a1 = %2.H * %1.L (IS,M);\n\t" \
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
39 "a0 = %1.H * %2.H, a1+= %1.H * %2.L (IS,M);\n\t"\
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
40 "a1 = a1 >>> 16;\n\t" \
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
41 "%0 = (a0 += a1);\n\t" \
5689
84bc9138be8f properly tell the compiler that A0 and A1 are clobbered
mhoffman
parents: 5619
diff changeset
42 : "=d" (xxo) : "d" (X), "d" (Y) : "A0","A1"); xxo; })
5614
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
43 #endif
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
44
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
45 /* signed 16x16 -> 32 multiply */
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
46 #define MUL16(a, b) ({ int xxo; \
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
47 asm ( \
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
48 "%0 = %1.l*%2.l (is);\n\t" \
5689
84bc9138be8f properly tell the compiler that A0 and A1 are clobbered
mhoffman
parents: 5619
diff changeset
49 : "=W" (xxo) : "d" (a), "d" (b) : "A1"); \
5614
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
50 xxo; })
bff0c6dc3584 Blackfin 32bit multiplication primitives MULH MUL16
mhoffman
parents:
diff changeset
51
5830
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5689
diff changeset
52 #endif /* FFMPEG_BFIN_MATHOPS_H */