On Mon, Oct 27, 2014 at 01:44:59AM +1100, Matt Oliver wrote: > On 26 October 2014 21:31, Michael Niedermayer <michae...@gmx.at> wrote: > > > On Sun, Oct 26, 2014 at 08:49:07PM +1100, Matt Oliver wrote: > > > > > intmath.h already uses the gcc builtin intrinsics for log2 and ctz. This > > > > > patch just adds the equivalent icl and msvc intrinsics. All added > > > > > intrinsics have the same function (i.e. with respect to input 0s etc.) as > > > > > the existing gcc builtins. > > > > > > > > > intmath.h | 37 +++++++++++++++++++++++++++++++------ > > > > > 1 file changed, 31 insertions(+), 6 deletions(-) > > > > > 26a67ffba2f85535b6ac5dcb7643ec89c1d81d5f > > 0001-avutil-intmath-enable-builtin-intrinsics-for-icl-and.patch > > > > > From 8b2a0cc3e265750650b4399ad051ae2e98a24f42 Mon Sep 17 00:00:00 2001 > > > > > From: Matthew Oliver <protogo...@gmail.com> > > > > > Date: Wed, 22 Oct 2014 00:30:53 +1100 > > > > > Subject: [PATCH] avutil/intmath: enable builtin intrinsics for icl and > > > > > msvc. > > > > > > > > > > --- > > > > > libavutil/intmath.h | 37 +++++++++++++++++++++++++++++++------ > > > > > 1 file changed, 31 insertions(+), 6 deletions(-) > > > > > > > > > > diff --git a/libavutil/intmath.h b/libavutil/intmath.h > > > > > index 8f7a69e..7d836d9 100644 > > > > > --- a/libavutil/intmath.h > > > > > +++ b/libavutil/intmath.h > > > > > @@ -35,21 +35,29 @@ > > > > > * @{ > > > > > */ > > > > > > > > > > -#if HAVE_FAST_CLZ && AV_GCC_VERSION_AT_LEAST(3,4) > > > > > - > > > > > +#if HAVE_FAST_CLZ > > > > > +#if AV_GCC_VERSION_AT_LEAST(3,4) > > > > > #ifndef ff_log2 > > > > > # define ff_log2(x) (31 - __builtin_clz((x)|1)) > > > > > # ifndef ff_log2_16bit > > > > > # define ff_log2_16bit av_log2 > > > > > # endif > > > > > #endif /* ff_log2 */ > > > > > - > > > > > +#elif defined( __INTEL_COMPILER ) > > > > > +#ifndef ff_log2 > > > > > +# define ff_log2(x) (_bit_scan_reverse(x|1)) > > > > > +# ifndef ff_log2_16bit > > > > > +# define ff_log2_16bit av_log2 > > > > > +# endif > > > > > +#endif /* ff_log2 */ > > > > > +#endif > > > > > #endif /* AV_GCC_VERSION_AT_LEAST(3,4) */ > > > > > > > > > > extern const uint8_t ff_log2_tab[256]; > > > > > > > > > > #ifndef ff_log2 > > > > > #define ff_log2 ff_log2_c > > > > > +#if !defined( _MSC_VER ) > > > > > static av_always_inline av_const int ff_log2_c(unsigned int v) > > > > > { > > > > > int n = 0; > > > > > @@ -65,6 +73,15 @@ static av_always_inline av_const int > > ff_log2_c(unsigned int v) > > > > > > > > > > return n; > > > > > } > > > > > +#else > > > > > +static av_always_inline av_const int ff_log2_c(unsigned int v) > > > > > +{ > > > > > > > > > + int n = 0; > > > > > + _BitScanReverse((unsigned long *)&n, v|1); > > > > > > > > strict aliasing violation > > > > > > > > > > > > [...] > > > > > int c; > > > > > - > > > > > +#if !defined( _MSC_VER ) > > > > > if (v & 0x1) > > > > > return 0; > > > > > > > > > > @@ -127,7 +150,9 @@ static av_always_inline av_const int ff_ctz_c(int v) > > > > > c += 2; > > > > > } > > > > > c -= v & 0x1; > > > > > - > > > > > +#else > > > > > + _BitScanForward( (unsigned long *)&c, v ); > > > > > > > > here too > > > > > > > > [...] > > > > Long and int are exactly the same size in msvc. But attached is a slightly > different version that avoids the casting casting.
> intmath.h | 40 ++++++++++++++++++++++++++++++++++++---- > 1 file changed, 36 insertions(+), 4 deletions(-) > 07acb6a8c92791a2c85dcd00a57bac636e9cdafe > 0001-avutil-intmath-enable-builtin-intrinsics-for-icl-and.patch > From 0777b80ffcd46bd92a109720ce60db186e0f8918 Mon Sep 17 00:00:00 2001 > From: Matthew Oliver <protogo...@gmail.com> > Date: Mon, 27 Oct 2014 01:43:15 +1100 > Subject: [PATCH] avutil/intmath: enable builtin intrinsics for icl and msvc. > > --- > libavutil/intmath.h | 40 ++++++++++++++++++++++++++++++++++++---- > 1 file changed, 36 insertions(+), 4 deletions(-) applied thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The educated differ from the uneducated as much as the living from the dead. -- Aristotle
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel