On 09/08/15 17:47, Matt Turner wrote:
On Sun, Aug 9, 2015 at 3:57 AM, Jose Fonseca <jfons...@vmware.com> wrote:
As currently only GCC x86_64 builds where using it.
---
  src/util/rounding.h | 16 +++++++++++++---
  1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/util/rounding.h b/src/util/rounding.h
index ec31b47..38c1c2f 100644
--- a/src/util/rounding.h
+++ b/src/util/rounding.h
@@ -27,7 +27,17 @@
  #include <math.h>
  #include <limits.h>

-#ifdef __x86_64__
+/* SSE2 is supported on: all x86_64 targets, on x86 targets when -msse2 is
+ * passed to GCC, and should also be enabled on all Windows builds. */
+#if defined(__x86_64__) /* gcc */ || \
+    defined(_M_X64) /* msvc */ || \
+    defined(_M_AMD64) /* msvc */ || \
+    defined(__SSE2__) /* gcc -msse2 */ || \

I don't think we should include __SSE2__ in this. On x86-32,
floating-point operations will be using the x87 FPU, so using SSE
intrinsics will force some transfers to and from memory.

I don't see why not. It would be just missing out good opportunities to use this.

__SSE2__ is defined is -msse2 option is set. And it makes no sense to set -msse2 without -fpmath=sse, as it would be inefficient.

In fact, I think I read that with GCC 5 -msse implies -mfpmath=sse.


+    defined(_WIN32)
+#define HAVE_SSE2 1

Does MSVC define __amd64, __amd64__, or __x86_64? The AMD64 ABI
document says these, and __x86_64__ should be defined if compiling on
x86-64.

I'm afraid MSVC doesn't. See https://msdn.microsoft.com/en-us/library/b0084kay.aspx

This logic was taken from p_config.h.

I believe that the Windows amd64 abi is not 100% identical to the linux ABI.


Jose
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to