mesa: use _mesa_memcpy for COPY_4FV macro
authorRoland Scheidegger <sroland@vmware.com>
Thu, 3 Dec 2009 22:26:13 +0000 (23:26 +0100)
committerRoland Scheidegger <sroland@vmware.com>
Thu, 3 Dec 2009 22:26:13 +0000 (23:26 +0100)
Gets rid of one of the worst strict-aliasing offenders, and actually
produces faster code (at least in some cases, when compiler can use
for instance 64bit moves for memcpy).
(note _mesa_memcpy should get inlined)

src/mesa/main/macros.h

index 3d9a1ab..f0ea463 100644 (file)
@@ -202,17 +202,12 @@ do {                                \
 #endif
 
 /**
- * Copy a 4-element float vector (avoid using FPU registers)
- * XXX Could use two 64-bit moves on 64-bit systems
+ * Copy a 4-element float vector
+ * memcpy seems to be most efficient
  */
 #define COPY_4FV( DST, SRC )                  \
 do {                                          \
-   const GLuint *_s = (const GLuint *) (SRC); \
-   GLuint *_d = (GLuint *) (DST);             \
-   _d[0] = _s[0];                             \
-   _d[1] = _s[1];                             \
-   _d[2] = _s[2];                             \
-   _d[3] = _s[3];                             \
+   _mesa_memcpy(DST, SRC, sizeof(GLfloat) * 4);       \
 } while (0)
 
 /** Copy \p SZ elements into a 4-element vector */