<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 18, 2016 at 9:31 PM, Jonathan Gray <span dir="ltr"><<a href="mailto:jsg@jsg.id.au" target="_blank">jsg@jsg.id.au</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Use the defines Mesa configure sets to indicate presence of the bswap32<br>
builtins.  This lets i965 work on OpenBSD again after the changes that<br>
were made in 0a5d8d9af42fd77fce1492d55f958da97816961a.<br>
<br>
Signed-off-by: Jonathan Gray <<a href="mailto:jsg@jsg.id.au">jsg@jsg.id.au</a>><br>
---<br>
 src/mesa/drivers/dri/i965/intel_tiled_memcpy.c | 15 ++++++++++++++-<br>
 1 file changed, 14 insertions(+), 1 deletion(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c<br>
index a549854..c888e46 100644<br>
--- a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c<br>
+++ b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c<br>
@@ -64,6 +64,19 @@ ror(uint32_t n, uint32_t d)<br>
    return (n >> d) | (n << (32 - d));<br>
 }<br>
<br>
+static inline uint32_t<br>
+bswap32(uint32_t n)<br>
+{<br>
+#if defined(HAVE___BUILTIN_BSWAP32)<br>
+   return __builtin_bswap32(n);<br>
+#else<br>
+   return (n >> 24) |<br>
+          ((n >> 8) & 0x0000ff00) |<br>
+          ((n << 8) & 0x00ff0000) |<br>
+          (n << 24);<br>
+#endif<br>
+}<br></blockquote><div><br></div><div>If I recall, GCC recognizes an open-coded byte swapping funciton and will replace it with the BSWAP instruction. I'm about 99% sure it is not necessary to use __built_bswap32() to have the benefits of using BSWAP. While I understand that you're trying to fix the use of __builtin_bswap32(), I don't think it is really necessary to continue to use it in your wrapper function. I'm not sure about -O0 though... anyways, maybe it isn't worth looking too hard into, but you might be able to drop some of the ugly #if defined(....) stuff.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+<br>
 /**<br>
  * Copy RGBA to BGRA - swap R and B.<br>
  */<br>
@@ -76,7 +89,7 @@ rgba8_copy(void *dst, const void *src, size_t bytes)<br>
    assert(bytes % 4 == 0);<br>
<br>
    while (bytes >= 4) {<br>
-      *d = ror(__builtin_bswap32(*s), 8);<br>
+      *d = ror(bswap32(*s), 8);<br>
       d += 1;<br>
       s += 1;<br>
       bytes -= 4;<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.8.1<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div>