Hi Luiz, > > --- > Makefile.am | 1 + > sbc/sbc_primitives.c | 20 ++- > sbc/sbc_primitives_sse.c | 361 +++++++++++++++++++++++++++++++++++++++ > sbc/sbc_primitives_sse.h | 38 +++++ > 4 files changed, 417 insertions(+), 3 deletions(-) > create mode 100644 sbc/sbc_primitives_sse.c > create mode 100644 sbc/sbc_primitives_sse.h > > diff --git a/Makefile.am b/Makefile.am > index 342043d..7ff0c7d 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -14,6 +14,7 @@ sbc_headers = sbc/sbc.h > > sbc_sources = sbc/sbc.c sbc/sbc_private.h sbc/sbc_math.h sbc/sbc_tables.h \ > sbc/sbc_primitives.h sbc/sbc_primitives.c \ > + sbc/sbc_primitives_sse.h sbc/sbc_primitives_sse.c \ > sbc/sbc_primitives_mmx.h sbc/sbc_primitives_mmx.c \ > sbc/sbc_primitives_iwmmxt.h sbc/sbc_primitives_iwmmxt.c \ > sbc/sbc_primitives_neon.h sbc/sbc_primitives_neon.c \ > diff --git a/sbc/sbc_primitives.c b/sbc/sbc_primitives.c > index ff343cf..97a75be 100644 > --- a/sbc/sbc_primitives.c > +++ b/sbc/sbc_primitives.c > @@ -33,6 +33,7 @@ > #include "sbc_tables.h" > > #include "sbc_primitives.h" > +#include "sbc_primitives_sse.h" > #include "sbc_primitives_mmx.h" > #include "sbc_primitives_iwmmxt.h" > #include "sbc_primitives_neon.h" > @@ -590,6 +591,21 @@ static int sbc_calc_scalefactors_j( > return joint; > } > > +static void sbc_init_primitives_x86(struct sbc_encoder_state *state) > +{ > + __builtin_cpu_init(); > + > +#ifdef SBC_BUILD_WITH_MMX_SUPPORT > + if (__builtin_cpu_supports("mmx")) > + sbc_init_primitives_mmx(state); > +#endif > + > +#ifdef SBC_BUILD_WITH_SSE_SUPPORT > + if (__builtin_cpu_supports("sse4.2")) > + sbc_init_primitives_sse(state); > +#endif lets keep the ifdef in the primitive functions they belong. This should be consistent across all primitives and not spread in two places. Regards Marcel