pixman: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 5 16:38:52 UTC 2018


 test/utils-prng.c |   15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

New commits:
commit bd2b49185b28c5024597a5e530af9fc25de3193a
Author: Vladimir Smirnov <civil at gentoo.org>
Date:   Mon Jun 4 10:04:15 2018 -0700

    test: Adjust for clang's removal of __builtin_shuffle
    
    __builtin_shuffle was removed in clang 5.0.
    
    Build log says:
    test/utils-prng.c:207:27: error: use of unknown builtin '__builtin_shuffle' [-Wimplicit-function-declaration]
                randdata.vb = __builtin_shuffle (randdata.vb, bswap_shufflemask);
                              ^
    test/utils-prng.c:207:25: error: assigning to 'uint8x16' (vector of 16 'uint8_t' values) from incompatible type 'int'
                randdata.vb = __builtin_shuffle (randdata.vb, bswap_shufflemask);
                            ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    2 errors generated
    
    Link to original discussion:
    http://lists.llvm.org/pipermail/cfe-dev/2017-August/055140.html
    
    It's possible to build pixman if attached patch is applied. Basically
    patch adds check for __builtin_shuffle support and in case there is
    none, falls back to clang-specific __builtin_shufflevector that do the
    same but have different API.
    
    Bugzilla: https://bugs.gentoo.org/646360
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104886
    Tested-by: Philip Chimento <philip.chimento at gmail.com>
    Reviewed-by: Matt Turner <mattst88 at gmail.com>
    Reviewed-by: Adam Jackson <ajax at redhat.com>

diff --git a/test/utils-prng.c b/test/utils-prng.c
index c27b5be..0cf53dd 100644
--- a/test/utils-prng.c
+++ b/test/utils-prng.c
@@ -199,12 +199,25 @@ randmemset_internal (prng_t                  *prng,
         }
         else
         {
+
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
+
 #ifdef HAVE_GCC_VECTOR_EXTENSIONS
-            const uint8x16 bswap_shufflemask =
+# if __has_builtin(__builtin_shufflevector)
+            randdata.vb =
+                __builtin_shufflevector (randdata.vb, randdata.vb,
+                                          3,  2,  1,  0,  7,  6 , 5,  4,
+                                         11, 10,  9,  8, 15, 14, 13, 12);
+# else
+            static const uint8x16 bswap_shufflemask =
             {
                 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12
             };
             randdata.vb = __builtin_shuffle (randdata.vb, bswap_shufflemask);
+# endif
+
             store_rand_128_data (buf, &randdata, aligned);
             buf += 16;
 #else


More information about the xorg-commit mailing list