Message ID | 1389474469-13521-1-git-send-email-martin@martin.st |
---|---|
State | Committed |
Headers | show |
On 2014-01-11 23:07:49 +0200, Martin Storsjö wrote: > --- > With respect to aarch64, one probably needs to split the line > wrapping avresample_convert into a > separate addition behind "enabled_all neon_clobber_test", but > only once the aarch64 stuff is in. We can also just add the avresample neontest for aarch64 although we don't have asm yet. > Also, the testneonclobbers/testw64xmmclobbers macros don't work > with functions only taking one argument like avresample_open, but > since avresample_open doesn't call asm functions (or does it?) > it's probably still fine for now. yeah, C99 unfortunately doesn't allow empty __VA_ARGS__ > --- > configure | 4 +++- > libavresample/arm/Makefile | 1 + > libavresample/arm/neontest.c | 31 +++++++++++++++++++++++++++++++ > libavresample/x86/Makefile | 2 ++ > libavresample/x86/w64xmmtest.c | 31 +++++++++++++++++++++++++++++++ > 5 files changed, 68 insertions(+), 1 deletion(-) > create mode 100644 libavresample/arm/neontest.c > create mode 100644 libavresample/x86/w64xmmtest.c > > diff --git a/configure b/configure > index 67f4a69..6272f4d 100755 > --- a/configure > +++ b/configure > @@ -4069,7 +4069,8 @@ enabled neon_clobber_test && > -Wl,--wrap,avcodec_decode_subtitle2 \ > -Wl,--wrap,avcodec_encode_audio2 \ > -Wl,--wrap,avcodec_encode_video2 \ > - -Wl,--wrap,avcodec_encode_subtitle || > + -Wl,--wrap,avcodec_encode_subtitle \ > + -Wl,--wrap,avresample_convert || > disable neon_clobber_test > > enabled xmm_clobber_test && > @@ -4080,6 +4081,7 @@ enabled xmm_clobber_test && > -Wl,--wrap,avcodec_encode_audio2 \ > -Wl,--wrap,avcodec_encode_video2 \ > -Wl,--wrap,avcodec_encode_subtitle \ > + -Wl,--wrap,avresample_convert \ > -Wl,--wrap,sws_scale || > disable xmm_clobber_test > > diff --git a/libavresample/arm/Makefile b/libavresample/arm/Makefile > index 55683cb..62407a1 100644 > --- a/libavresample/arm/Makefile > +++ b/libavresample/arm/Makefile > @@ -1,2 +1,3 @@ > OBJS += arm/audio_convert_init.o > +OBJS-$(CONFIG_NEON_CLOBBER_TEST) += arm/neontest.o > NEON-OBJS += arm/audio_convert_neon.o > diff --git a/libavresample/arm/neontest.c b/libavresample/arm/neontest.c > new file mode 100644 > index 0000000..d96d4d2 > --- /dev/null > +++ b/libavresample/arm/neontest.c > @@ -0,0 +1,31 @@ > +/* > + * 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/arm/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); > +} > diff --git a/libavresample/x86/Makefile b/libavresample/x86/Makefile > index 2e8786f..0ca2d79 100644 > --- a/libavresample/x86/Makefile > +++ b/libavresample/x86/Makefile > @@ -2,6 +2,8 @@ OBJS += x86/audio_convert_init.o \ > x86/audio_mix_init.o \ > x86/dither_init.o \ > > +OBJS-$(CONFIG_XMM_CLOBBER_TEST) += x86/w64xmmtest.o > + > YASM-OBJS += x86/audio_convert.o \ > x86/audio_mix.o \ > x86/dither.o \ > diff --git a/libavresample/x86/w64xmmtest.c b/libavresample/x86/w64xmmtest.c > new file mode 100644 > index 0000000..51a400e > --- /dev/null > +++ b/libavresample/x86/w64xmmtest.c > @@ -0,0 +1,31 @@ > +/* > + * check XMM registers for clobbers on Win64 > + * 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/x86/w64xmmtest.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)) > +{ > + testxmmclobbers(avresample_convert, avr, output, out_plane_size, > + out_samples, input, in_plane_size, in_samples); > +} ok Janne
On 2014-01-11 22:07, Martin Storsjö wrote: > --- a/libavresample/arm/Makefile > +++ b/libavresample/arm/Makefile > @@ -1,2 +1,3 @@ > OBJS += arm/audio_convert_init.o > +OBJS-$(CONFIG_NEON_CLOBBER_TEST) += arm/neontest.o > NEON-OBJS += arm/audio_convert_neon.o Please add an empty line before and after your new entry while you're at it. Diego
diff --git a/configure b/configure index 67f4a69..6272f4d 100755 --- a/configure +++ b/configure @@ -4069,7 +4069,8 @@ enabled neon_clobber_test && -Wl,--wrap,avcodec_decode_subtitle2 \ -Wl,--wrap,avcodec_encode_audio2 \ -Wl,--wrap,avcodec_encode_video2 \ - -Wl,--wrap,avcodec_encode_subtitle || + -Wl,--wrap,avcodec_encode_subtitle \ + -Wl,--wrap,avresample_convert || disable neon_clobber_test enabled xmm_clobber_test && @@ -4080,6 +4081,7 @@ enabled xmm_clobber_test && -Wl,--wrap,avcodec_encode_audio2 \ -Wl,--wrap,avcodec_encode_video2 \ -Wl,--wrap,avcodec_encode_subtitle \ + -Wl,--wrap,avresample_convert \ -Wl,--wrap,sws_scale || disable xmm_clobber_test diff --git a/libavresample/arm/Makefile b/libavresample/arm/Makefile index 55683cb..62407a1 100644 --- a/libavresample/arm/Makefile +++ b/libavresample/arm/Makefile @@ -1,2 +1,3 @@ OBJS += arm/audio_convert_init.o +OBJS-$(CONFIG_NEON_CLOBBER_TEST) += arm/neontest.o NEON-OBJS += arm/audio_convert_neon.o diff --git a/libavresample/arm/neontest.c b/libavresample/arm/neontest.c new file mode 100644 index 0000000..d96d4d2 --- /dev/null +++ b/libavresample/arm/neontest.c @@ -0,0 +1,31 @@ +/* + * 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/arm/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); +} diff --git a/libavresample/x86/Makefile b/libavresample/x86/Makefile index 2e8786f..0ca2d79 100644 --- a/libavresample/x86/Makefile +++ b/libavresample/x86/Makefile @@ -2,6 +2,8 @@ OBJS += x86/audio_convert_init.o \ x86/audio_mix_init.o \ x86/dither_init.o \ +OBJS-$(CONFIG_XMM_CLOBBER_TEST) += x86/w64xmmtest.o + YASM-OBJS += x86/audio_convert.o \ x86/audio_mix.o \ x86/dither.o \ diff --git a/libavresample/x86/w64xmmtest.c b/libavresample/x86/w64xmmtest.c new file mode 100644 index 0000000..51a400e --- /dev/null +++ b/libavresample/x86/w64xmmtest.c @@ -0,0 +1,31 @@ +/* + * check XMM registers for clobbers on Win64 + * 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/x86/w64xmmtest.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)) +{ + testxmmclobbers(avresample_convert, avr, output, out_plane_size, + out_samples, input, in_plane_size, in_samples); +}