Sign in
Register
Home
Projects
Help
Search
:
Paris Hackday Code
Overview
Members
Activity
Repository
Code docs
FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
ffmpeg
libavutil
arm
arm/intmath.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2010 Mans Rullgard <mans@mansr.com>
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#ifndef AVUTIL_ARM_INTMATH_H
22
#define AVUTIL_ARM_INTMATH_H
23
24
#include <stdint.h>
25
26
#include "
config.h
"
27
#include "
libavutil/attributes.h
"
28
29
#if HAVE_INLINE_ASM
30
31
#if HAVE_ARMV6_INLINE
32
33
#define av_clip_uint8 av_clip_uint8_arm
34
static
av_always_inline
av_const
unsigned
av_clip_uint8_arm(
int
a
)
35
{
36
unsigned
x
;
37
__asm__ (
"usat %0, #8, %1"
:
"=r"
(x) :
"r"
(a));
38
return
x
;
39
}
40
41
#define av_clip_int8 av_clip_int8_arm
42
static
av_always_inline
av_const
int
av_clip_int8_arm(
int
a)
43
{
44
int
x
;
45
__asm__ (
"ssat %0, #8, %1"
:
"=r"
(x) :
"r"
(a));
46
return
x
;
47
}
48
49
#define av_clip_uint16 av_clip_uint16_arm
50
static
av_always_inline
av_const
unsigned
av_clip_uint16_arm(
int
a)
51
{
52
unsigned
x
;
53
__asm__ (
"usat %0, #16, %1"
:
"=r"
(x) :
"r"
(a));
54
return
x
;
55
}
56
57
#define av_clip_int16 av_clip_int16_arm
58
static
av_always_inline
av_const
int
av_clip_int16_arm(
int
a)
59
{
60
int
x
;
61
__asm__ (
"ssat %0, #16, %1"
:
"=r"
(x) :
"r"
(a));
62
return
x
;
63
}
64
65
#define av_clip_uintp2 av_clip_uintp2_arm
66
static
av_always_inline
av_const
unsigned
av_clip_uintp2_arm(
int
a,
int
p)
67
{
68
unsigned
x
;
69
__asm__ (
"usat %0, %2, %1"
:
"=r"
(x) :
"r"
(a),
"i"
(p));
70
return
x
;
71
}
72
73
#define av_sat_add32 av_sat_add32_arm
74
static
av_always_inline
int
av_sat_add32_arm(
int
a,
int
b
)
75
{
76
int
r
;
77
__asm__ (
"qadd %0, %1, %2"
:
"=r"
(r) :
"r"
(a),
"r"
(b));
78
return
r
;
79
}
80
81
#define av_sat_dadd32 av_sat_dadd32_arm
82
static
av_always_inline
int
av_sat_dadd32_arm(
int
a,
int
b)
83
{
84
int
r
;
85
__asm__ (
"qdadd %0, %1, %2"
:
"=r"
(r) :
"r"
(a),
"r"
(b));
86
return
r
;
87
}
88
89
#endif
/* HAVE_ARMV6_INLINE */
90
91
#if HAVE_ASM_MOD_Q
92
93
#define av_clipl_int32 av_clipl_int32_arm
94
static
av_always_inline
av_const
int32_t
av_clipl_int32_arm(int64_t a)
95
{
96
int
x
,
y
;
97
__asm__ (
"adds %1, %R2, %Q2, lsr #31 \n\t"
98
"itet ne \n\t"
99
"mvnne %1, #1<<31 \n\t"
100
"moveq %0, %Q2 \n\t"
101
"eorne %0, %1, %R2, asr #31 \n\t"
102
:
"=r"
(x),
"=&r"
(y) :
"r"
(a) :
"cc"
);
103
return
x
;
104
}
105
106
#endif
/* HAVE_ASM_MOD_Q */
107
108
#endif
/* HAVE_INLINE_ASM */
109
110
#endif
/* AVUTIL_ARM_INTMATH_H */
av_const
#define av_const
Definition:
attributes.h:72
attributes.h
Macro definitions for various function/variable attributes.
config.h
b
#define b
Definition:
input.c:42
x
Discrete Time axis x
Definition:
FFT of a Simple Sinusoid.m:10
r
const char * r
Definition:
vf_curves.c:94
int32_t
int32_t
Definition:
audio_convert.c:194
y
function y
Definition:
D.m:1
av_always_inline
#define av_always_inline
Definition:
attributes.h:41
a
a
Definition:
h264pred_template.c:466
Generated on Mon Nov 18 2024 06:51:56 for FFmpeg by
1.8.11
Loading...