On Fri, Jul 31, 2015 at 7:26 PM, Matt Turner <matts...@gmail.com> wrote: > gcc actually generates this for us now that we use -fno-math-errno > (which is weird, since lrintf()/lrint() don't set errno) but clang still > does not. Presumably helps MSVC as well. > > Reduced .text size by 8.5k with gcc before -fno-math-errno. > > text data bss dec hex filename > 4935850 195136 26192 5157178 4eb13a i965_dri.so before > 4927225 195128 26192 5148545 4e8f81 i965_dri.so after > --- > src/util/rounding.h | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/src/util/rounding.h b/src/util/rounding.h > index 2d00760..e546c9f 100644 > --- a/src/util/rounding.h > +++ b/src/util/rounding.h > @@ -26,6 +26,11 @@ > > #include <math.h> > > +#ifdef __x86_64__ > +#include <xmmintrin.h> > +#include <emmintrin.h> > +#endif > + > #ifdef __SSE4_1__ > #include <smmintrin.h> > #endif
Not that I object to any of this, but (a) this stuff is presumably also available on 32-bit, so should probably be based on __SSE2__. (b) you can just include <immintrin.h> which is safe to include on x86(_64) and then you get all the functions you're supposed to. > @@ -87,7 +92,11 @@ _mesa_roundeven(double x) > static inline long > _mesa_lroundevenf(float x) > { > +#ifdef __x86_64__ > + return _mm_cvtss_si64(_mm_load_ss(&x)); > +#else > return lrintf(x); > +#endif > } > > /** > @@ -97,7 +106,11 @@ _mesa_lroundevenf(float x) > static inline long > _mesa_lroundeven(double x) > { > +#ifdef __x86_64__ > + return _mm_cvtsd_si64(_mm_load_sd(&x)); > +#else > return lrint(x); > +#endif > } > > #endif > -- > 2.3.6 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev