[Pixman] Patch to fix test for GCC vector extensions

Siarhei Siamashka siarhei.siamashka at gmail.com
Mon Sep 18 16:54:51 UTC 2017


On Mon, 18 Sep 2017 07:24:49 -0700
Rob Tsuk <rob at tsuk.com> wrote:

> > On Sep 17, 2017, at 6:40 AM, Siarhei Siamashka <siarhei.siamashka at gmail.com> wrote:
> > 
> > On Mon, 7 Aug 2017 07:52:29 -0700
> > Rob Tsuk <rob at tsuk.com <mailto:rob at tsuk.com>> wrote:
> >   
> >> From 662b17d0d691b567a3343af3439f5fbefe989584 Mon Sep 17 00:00:00 2001
> >> From: Rob Tsuk <robtsuk at google.com>
> >> Date: Mon, 7 Aug 2017 07:11:10 -0700
> >> Subject: [PATCH 1/1] Fix test for GCC vector extensions
> >> 
> >> The previous test was getting a false positive for
> >> clang version 4.
> >> ---
> >> configure.ac | 2 +-
> >> 1 file changed, 1 insertion(+), 1 deletion(-)
> >> 
> >> diff --git a/configure.ac b/configure.ac
> >> index e833e45..cbebc82 100644
> >> --- a/configure.ac
> >> +++ b/configure.ac
> >> @@ -1101,7 +1101,7 @@ support_for_gcc_vector_extensions=no
> >> AC_MSG_CHECKING(for GCC vector extensions)
> >> AC_LINK_IFELSE([AC_LANG_SOURCE([[
> >> unsigned int __attribute__ ((vector_size(16))) e, a, b;
> >> -int main (void) { e = a - ((b << 27) + (b >> (32 - 27))) + 1; return e[0]; }
> >> +int main (void) { __builtin_shuffle(a,b);e = a - ((b << 27) + (b >> (32 - 27))) + 1; return e[0]; }
> >> ]])], support_for_gcc_vector_extensions=yes)
> >> 
> >> if test x$support_for_gcc_vector_extensions = xyes; then  
> > 
> > Thanks, the patch looks mostly good. We indeed have to add
> > the use of __builtin_shuffle() to the configure check code
> > snippet because it is used by pixman and Clang implements
> > this functionality in a different and incompatible way.
> > 
> > We did not see this problem with older versions of Clang
> > because it did not support the shift vector by scalar operation
> > in its vector extensions.
> > 
> > Too bad that GCC and Clang parted their ways and we can't have
> > a single unified implementation. The whole reason to use GCC
> > vector extension was that we could avoid platform-dependent
> > intrinsics in this code.
> > 
> > About the patch. It would be great to use the result of
> > __builtin_shuffle() in the intermediate calculations just in
> > case. See
> >   https://cgit.freedesktop.org/pixman/commit/?id=a566f627dbd6ea8f2cba70a446e62caaa2ecbd26 <https://cgit.freedesktop.org/pixman/commit/?id=a566f627dbd6ea8f2cba70a446e62caaa2ecbd26>
>
> Your proposed modification to my patch makes sense. I’m not certain when I”ll have time to perform it.

It does not really require much time. I just did that for you:
https://lists.freedesktop.org/archives/pixman/2017-September/004680.html

-- 
Best regards,
Siarhei Siamashka


More information about the Pixman mailing list