emmintrin.h (_mm_cvtpd_epi32): Use __vector rather than vector.
authorBill Schmidt <wschmidt@linux.ibm.com>
Tue, 3 Apr 2018 19:06:28 +0000 (19:06 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Tue, 3 Apr 2018 19:06:28 +0000 (19:06 +0000)
[gcc]

2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>

* config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
than vector.
(_mm_cvtpd_ps): Likewise.
(_mm_cvttpd_epi32): Likewise.
* config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
* config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
vector, pixel, and bool following altivec.h include.

[gcc/testsuite]

2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>

* gcc.target/powerpc/powerpc.exp: Add .C suffix for main loop.
* gcc.target/powerpc/undef-bool-1.C: New file.
* gcc.target/powerpc/undef-bool-2.c: New file.

From-SVN: r259050

gcc/ChangeLog
gcc/config/rs6000/emmintrin.h
gcc/config/rs6000/mmintrin.h
gcc/config/rs6000/xmmintrin.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/powerpc.exp
gcc/testsuite/gcc.target/powerpc/undef-bool-1.C [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/undef-bool-2.c [new file with mode: 0644]

index 82f61551f8fc565e913d7d61cdfdbf8347701257..fea1bed40d125e9107b05a0dca5f07ef8428748c 100644 (file)
@@ -1,3 +1,13 @@
+2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
+
+       * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
+       than vector.
+       (_mm_cvtpd_ps): Likewise.
+       (_mm_cvttpd_epi32): Likewise.
+       * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
+       * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
+       vector, pixel, and bool following altivec.h include.
+
 2018-04-03  Martin Sebor  <msebor@redhat.com>
 
        * doc/extend.texi (Common Function Attributes): Clarify.
index 3dcda0d37b178e1b1f3092cbfde10aea607ad114..8d4545136e1c8dacc90c4db09c780de6bcfa1fac 100644 (file)
@@ -885,7 +885,7 @@ _mm_cvtpd_epi32 (__m128d __A)
 
 #ifdef _ARCH_PWR8
   temp = vec_mergeo (temp, temp);
-  result = (__v4si)vec_vpkudum ((vector long)temp, (vector long)vzero);
+  result = (__v4si)vec_vpkudum ((__vector long)temp, (__vector long)vzero);
 #else
   {
     const __v16qu pkperm = {0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b,
@@ -919,7 +919,7 @@ _mm_cvtpd_ps (__m128d __A)
 
 #ifdef _ARCH_PWR8
   temp = vec_mergeo (temp, temp);
-  result = (__v4sf)vec_vpkudum ((vector long)temp, (vector long)vzero);
+  result = (__v4sf)vec_vpkudum ((__vector long)temp, (__vector long)vzero);
 #else
   {
     const __v16qu pkperm = {0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b,
@@ -947,7 +947,7 @@ _mm_cvttpd_epi32 (__m128d __A)
 
 #ifdef _ARCH_PWR8
   temp = vec_mergeo (temp, temp);
-  result = (__v4si)vec_vpkudum ((vector long)temp, (vector long)vzero);
+  result = (__v4si)vec_vpkudum ((__vector long)temp, (__vector long)vzero);
 #else
   {
     const __v16qu pkperm = {0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b,
index 6ae0e0007fe792980cc22e39d60a33ad78b33125..b15dd9bf242079cae82c83479af9965889a2abdd 100644 (file)
@@ -317,7 +317,7 @@ _mm_unpacklo_pi8 (__m64 __m1, __m64 __m2)
   a = (__vector unsigned char)vec_splats (__m1);
   b = (__vector unsigned char)vec_splats (__m2);
   c = vec_mergel (a, b);
-  return (__builtin_unpack_vector_int128 ((vector __int128_t)c, 1));
+  return (__builtin_unpack_vector_int128 ((__vector __int128_t)c, 1));
 #else
   __m64_union m1, m2, res;
 
index aa2823f5f4800db3e954f8697bb9c5a159a5bf8d..43d03ea059198dae64cc3924658ab81a4243ad0c 100644 (file)
 #define _XMMINTRIN_H_INCLUDED
 
 #include <altivec.h>
+
+/* Avoid collisions between altivec.h and strict adherence to C++ and
+   C11 standards.  This should eventually be done inside altivec.h itself,
+   but only after testing a full distro build.  */
+#if defined(__STRICT_ANSI__) && (defined(__cplusplus) || \
+                                (defined(__STDC_VERSION__) &&  \
+                                 __STDC_VERSION__ >= 201112L))
+#undef vector
+#undef pixel
+#undef bool
+#endif
+
 #include <assert.h>
 
 /* We need type definitions from the MMX header file.  */
index 220fd8f3e8dbfa3ff3e3d171eaf627a7c0dc02c9..4bd6d261d656a79881e9a9f1d594abb73f7a4cbd 100644 (file)
@@ -1,3 +1,9 @@
+2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
+
+       * gcc.target/powerpc/powerpc.exp: Add .C suffix for main loop.
+       * gcc.target/powerpc/undef-bool-1.C: New file.
+       * gcc.target/powerpc/undef-bool-2.c: New file.
+
 2018-04-03  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/84768
index fdb3e931d713d7249178887ee06fcac3b28e1159..498315c90a19c7f8776d9ae2a89a1c98372d3816 100644 (file)
@@ -35,7 +35,7 @@ if ![info exists DEFAULT_CFLAGS] then {
 dg-init
 
 # Main loop.
-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \
        "" $DEFAULT_CFLAGS
 
 set SAVRES_TEST_OPTS [list -Os -O2 {-Os -mno-multiple} {-O2 -mno-multiple}]
diff --git a/gcc/testsuite/gcc.target/powerpc/undef-bool-1.C b/gcc/testsuite/gcc.target/powerpc/undef-bool-1.C
new file mode 100644 (file)
index 0000000..5bdd6a3
--- /dev/null
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -std=c++11 -DNO_WARN_X86_INTRINSICS" } */
+
+/* Test to ensure that "bool" gets undef'd in xmmintrin.h when
+   we require strict ANSI.  */
+
+#include <xmmintrin.h>
+
+bool foo (int x)
+{
+  return x == 2;
+}
+
diff --git a/gcc/testsuite/gcc.target/powerpc/undef-bool-2.c b/gcc/testsuite/gcc.target/powerpc/undef-bool-2.c
new file mode 100644 (file)
index 0000000..3cab936
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -std=c11 -DNO_WARN_X86_INTRINSICS" } */
+
+/* Test to ensure that "bool" gets undef'd in xmmintrin.h when
+   we require strict ANSI.  Subsequent use of bool needs stdbool.h.
+   altivec.h should eventually avoid defining bool, vector, and
+   pixel, following distro testing.  */
+
+#include <xmmintrin.h>
+
+bool foo (int x) /* { dg-error "unknown type name 'bool'; did you mean '_Bool'?" } */
+{
+  return x == 2;
+}
+