Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
fe96769b
Commit
fe96769b
authored
Jan 11, 2014
by
Janne Grunau
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
aarch64: port neon clobber test from arm
parent
f896bca0
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
177 additions
and
0 deletions
+177
-0
Makefile
libavcodec/aarch64/Makefile
+1
-0
neontest.c
libavcodec/aarch64/neontest.c
+79
-0
Makefile
libavresample/aarch64/Makefile
+1
-0
neontest.c
libavresample/aarch64/neontest.c
+31
-0
neontest.h
libavutil/aarch64/neontest.h
+65
-0
No files found.
libavcodec/aarch64/Makefile
View file @
fe96769b
...
...
@@ -2,6 +2,7 @@ OBJS-$(CONFIG_H264CHROMA) += aarch64/h264chroma_init_aarch64.o
OBJS-$(CONFIG_H264DSP)
+=
aarch64/h264dsp_init_aarch64.o
OBJS-$(CONFIG_H264QPEL)
+=
aarch64/h264qpel_init_aarch64.o
OBJS-$(CONFIG_HPELDSP)
+=
aarch64/hpeldsp_init_aarch64.o
OBJS-$(CONFIG_NEON_CLOBBER_TEST)
+=
aarch64/neontest.o
OBJS-$(CONFIG_RV40_DECODER)
+=
aarch64/rv40dsp_init_aarch64.o
OBJS-$(CONFIG_VC1_DECODER)
+=
aarch64/vc1dsp_init_aarch64.o
...
...
libavcodec/aarch64/neontest.c
0 → 100644
View file @
fe96769b
/*
* check NEON registers for clobbers
* Copyright (c) 2013 Martin Storsjo
*
* This file is part of Libav.
*
* Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Libav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "libavcodec/avcodec.h"
#include "libavutil/aarch64/neontest.h"
wrap
(
avcodec_open2
(
AVCodecContext
*
avctx
,
AVCodec
*
codec
,
AVDictionary
**
options
))
{
testneonclobbers
(
avcodec_open2
,
avctx
,
codec
,
options
);
}
wrap
(
avcodec_decode_audio4
(
AVCodecContext
*
avctx
,
AVFrame
*
frame
,
int
*
got_frame_ptr
,
AVPacket
*
avpkt
))
{
testneonclobbers
(
avcodec_decode_audio4
,
avctx
,
frame
,
got_frame_ptr
,
avpkt
);
}
wrap
(
avcodec_decode_video2
(
AVCodecContext
*
avctx
,
AVFrame
*
picture
,
int
*
got_picture_ptr
,
AVPacket
*
avpkt
))
{
testneonclobbers
(
avcodec_decode_video2
,
avctx
,
picture
,
got_picture_ptr
,
avpkt
);
}
wrap
(
avcodec_decode_subtitle2
(
AVCodecContext
*
avctx
,
AVSubtitle
*
sub
,
int
*
got_sub_ptr
,
AVPacket
*
avpkt
))
{
testneonclobbers
(
avcodec_decode_subtitle2
,
avctx
,
sub
,
got_sub_ptr
,
avpkt
);
}
wrap
(
avcodec_encode_audio2
(
AVCodecContext
*
avctx
,
AVPacket
*
avpkt
,
const
AVFrame
*
frame
,
int
*
got_packet_ptr
))
{
testneonclobbers
(
avcodec_encode_audio2
,
avctx
,
avpkt
,
frame
,
got_packet_ptr
);
}
wrap
(
avcodec_encode_subtitle
(
AVCodecContext
*
avctx
,
uint8_t
*
buf
,
int
buf_size
,
const
AVSubtitle
*
sub
))
{
testneonclobbers
(
avcodec_encode_subtitle
,
avctx
,
buf
,
buf_size
,
sub
);
}
wrap
(
avcodec_encode_video2
(
AVCodecContext
*
avctx
,
AVPacket
*
avpkt
,
const
AVFrame
*
frame
,
int
*
got_packet_ptr
))
{
testneonclobbers
(
avcodec_encode_video2
,
avctx
,
avpkt
,
frame
,
got_packet_ptr
);
}
libavresample/aarch64/Makefile
0 → 100644
View file @
fe96769b
OBJS-$(CONFIG_NEON_CLOBBER_TEST)
+=
aarch64/neontest.o
libavresample/aarch64/neontest.c
0 → 100644
View file @
fe96769b
/*
* check NEON registers for clobbers
* Copyright (c) 2013 Martin Storsjo
*
* This file is part of Libav.
*
* Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Libav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "libavresample/avresample.h"
#include "libavutil/aarch64/neontest.h"
wrap
(
avresample_convert
(
AVAudioResampleContext
*
avr
,
uint8_t
**
output
,
int
out_plane_size
,
int
out_samples
,
uint8_t
**
input
,
int
in_plane_size
,
int
in_samples
))
{
testneonclobbers
(
avresample_convert
,
avr
,
output
,
out_plane_size
,
out_samples
,
input
,
in_plane_size
,
in_samples
);
}
libavutil/aarch64/neontest.h
0 → 100644
View file @
fe96769b
/*
* check NEON registers for clobbering
* Copyright (c) 2008 Ramiro Polla <ramiro.polla@gmail.com>
* Copyright (c) 2013 Martin Storsjo
*
* This file is part of Libav.
*
* Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Libav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <inttypes.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include "libavutil/bswap.h"
#define storeneonregs(mem) \
__asm__ volatile( \
"stp d8, d9, [%0]\n\t" \
"stp d10, d11, [%0, #16]\n\t" \
"stp d12, d13, [%0, #32]\n\t" \
"stp d14, d15, [%0, #48]\n\t" \
:: "r"(mem) : "memory")
#define testneonclobbers(func, ctx, ...) \
uint64_t neon[2][8]; \
int ret; \
storeneonregs(neon[0]); \
ret = __real_ ## func(ctx, __VA_ARGS__); \
storeneonregs(neon[1]); \
if (memcmp(neon[0], neon[1], sizeof(neon[0]))) { \
int i; \
av_log(ctx, AV_LOG_ERROR, \
"NEON REGS CLOBBERED IN %s!\n", #func); \
for (i = 0; i < 8; i ++) \
if (neon[0][i] != neon[1][i]) { \
av_log(ctx, AV_LOG_ERROR, \
"d%-2d = %016"PRIx64"\n", \
8 + i, av_bswap64(neon[0][i])); \
av_log(ctx, AV_LOG_ERROR, \
" -> %016"PRIx64"\n", \
av_bswap64(neon[1][i])); \
} \
abort(); \
} \
return ret
#define wrap(func) \
int __real_ ## func; \
int __wrap_ ## func; \
int __wrap_ ## func
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment