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
x86
x86/intreadwrite.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2010 Alexander Strange <astrange@ithinksw.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_X86_INTREADWRITE_H
22
#define AVUTIL_X86_INTREADWRITE_H
23
24
#include <stdint.h>
25
#include "
config.h
"
26
#include "
libavutil/attributes.h
"
27
28
#if HAVE_MMX
29
30
#if !HAVE_FAST_64BIT && defined(__MMX__)
31
32
#define AV_COPY64 AV_COPY64
33
static
av_always_inline
void
AV_COPY64
(
void
*
d
,
const
void
*
s
)
34
{
35
__asm__(
"movq %1, %%mm0 \n\t"
36
"movq %%mm0, %0 \n\t"
37
:
"=m"
(*(uint64_t*)d)
38
:
"m"
(*(
const
uint64_t*)s)
39
:
"mm0"
);
40
}
41
42
#define AV_SWAP64 AV_SWAP64
43
static
av_always_inline
void
AV_SWAP64
(
void
*
a
,
void
*
b
)
44
{
45
__asm__(
"movq %1, %%mm0 \n\t"
46
"movq %0, %%mm1 \n\t"
47
"movq %%mm0, %0 \n\t"
48
"movq %%mm1, %1 \n\t"
49
:
"+m"
(*(uint64_t*)a),
"+m"
(*(uint64_t*)b)
50
::
"mm0"
,
"mm1"
);
51
}
52
53
#define AV_ZERO64 AV_ZERO64
54
static
av_always_inline
void
AV_ZERO64
(
void
*d)
55
{
56
__asm__(
"pxor %%mm0, %%mm0 \n\t"
57
"movq %%mm0, %0 \n\t"
58
:
"=m"
(*(uint64_t*)d)
59
::
"mm0"
);
60
}
61
62
#endif
/* !HAVE_FAST_64BIT && defined(__MMX__) */
63
64
#ifdef __SSE__
65
66
#define AV_COPY128 AV_COPY128
67
static
av_always_inline
void
AV_COPY128
(
void
*d,
const
void
*s)
68
{
69
struct
v
{uint64_t
v
[2];};
70
71
__asm__(
"movaps %1, %%xmm0 \n\t"
72
"movaps %%xmm0, %0 \n\t"
73
:
"=m"
(*(
struct
v
*)d)
74
:
"m"
(*(
const
struct
v
*)s)
75
:
"xmm0"
);
76
}
77
78
#endif
/* __SSE__ */
79
80
#ifdef __SSE2__
81
82
#define AV_ZERO128 AV_ZERO128
83
static
av_always_inline
void
AV_ZERO128
(
void
*d)
84
{
85
struct
v
{uint64_t
v
[2];};
86
87
__asm__(
"pxor %%xmm0, %%xmm0 \n\t"
88
"movdqa %%xmm0, %0 \n\t"
89
:
"=m"
(*(
struct
v
*)d)
90
::
"xmm0"
);
91
}
92
93
#endif
/* __SSE2__ */
94
95
#endif
/* HAVE_MMX */
96
97
#endif
/* AVUTIL_X86_INTREADWRITE_H */
v
float v
Definition:
avf_showspectrum.c:88
s
const char * s
Definition:
avisynth_c.h:668
attributes.h
Macro definitions for various function/variable attributes.
d
set threshold d
Definition:
extra/f0detectionyin.m:6
config.h
b
#define b
Definition:
input.c:42
AV_COPY64
#define AV_COPY64(d, s)
Definition:
intreadwrite.h:582
AV_ZERO128
#define AV_ZERO128(d)
Definition:
intreadwrite.h:614
AV_SWAP64
#define AV_SWAP64(a, b)
Definition:
intreadwrite.h:596
AV_ZERO64
#define AV_ZERO64(d)
Definition:
intreadwrite.h:610
AV_COPY128
#define AV_COPY128(d, s)
Definition:
intreadwrite.h:586
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...