X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmathops.h;h=3b9bfeb09f18cafc0c4361c4da0e6fc894e7aca9;hb=33ac07ea08f47beebf51e43a4a2bc7fe81a9ad90;hp=9ae34d71b24bf8704c40d0ee77f0db01c9b5e2e9;hpb=419b878494346c2f9d81f23d7a75cbe03eb5dab0;p=ffmpeg diff --git a/libavcodec/mathops.h b/libavcodec/mathops.h index 9ae34d71b24..3b9bfeb09f1 100644 --- a/libavcodec/mathops.h +++ b/libavcodec/mathops.h @@ -19,8 +19,10 @@ * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef MATHOPS_H -#define MATHOPS_H +#ifndef FFMPEG_MATHOPS_H +#define FFMPEG_MATHOPS_H + +#include "libavutil/common.h" #ifdef ARCH_X86_32 @@ -30,10 +32,14 @@ #include "armv4l/mathops.h" -#elif defined(ARCH_PPC) +#elif defined(ARCH_POWERPC) #include "ppc/mathops.h" +#elif defined(ARCH_BFIN) + +#include "bfin/mathops.h" + #endif /* generic implementation */ @@ -46,7 +52,7 @@ //gcc 3.4 creates an incredibly bloated mess out of this //# define MULH(a,b) (((int64_t)(a) * (int64_t)(b))>>32) -static always_inline int MULH(int a, int b){ +static av_always_inline int MULH(int a, int b){ return ((int64_t)(a) * (int64_t)(b))>>32; } #endif @@ -55,6 +61,14 @@ static always_inline int MULH(int a, int b){ # define MUL64(a,b) ((int64_t)(a) * (int64_t)(b)) #endif +#ifndef MAC64 +# define MAC64(d, a, b) ((d) += MUL64(a, b)) +#endif + +#ifndef MLS64 +# define MLS64(d, a, b) ((d) -= MUL64(a, b)) +#endif + /* signed 16x16 -> 32 multiply add accumulate */ #ifndef MAC16 # define MAC16(rt, ra, rb) rt += (ra) * (rb) @@ -65,5 +79,9 @@ static always_inline int MULH(int a, int b){ # define MUL16(ra, rb) ((ra) * (rb)) #endif -#endif //MATHOPS_H +#ifndef MLS16 +# define MLS16(rt, ra, rb) ((rt) -= (ra) * (rb)) +#endif + +#endif /* FFMPEG_MATHOPS_H */