aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.target/i386')
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-vextractf128-256-5.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512bw-pr70329-1.c27
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512bw-pr70329-2.c33
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512f-pr70421.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-strlen-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-strlen-2.c3
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-strlen-3.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-strlen-4.c3
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-strlen-5.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-1.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-10.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-11.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-12.c3
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-13.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-14.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-15.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-16.c3
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-2.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-3.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-4.c3
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-5.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-6.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-7.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-8.c3
-rw-r--r--gcc/testsuite/gcc.target/i386/chkp-stropt-9.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/pr64411.C27
-rw-r--r--gcc/testsuite/gcc.target/i386/pr69888.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr69891.c30
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70028.c19
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70062.c11
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70293.c38
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70325.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70327.c12
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70406.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70453.c18
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70510.c14
-rw-r--r--gcc/testsuite/gcc.target/i386/pr70525.c32
37 files changed, 339 insertions, 22 deletions
diff --git a/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-5.c b/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-5.c
index 5359eb7f4b5..3a1db4b3bb4 100644
--- a/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-5.c
+++ b/gcc/testsuite/gcc.target/i386/avx-vextractf128-256-5.c
@@ -1,5 +1,5 @@
-/* { dg-require-effective-target avx512f } */
/* { dg-do assemble { target { ! ia32 } } } */
+/* { dg-require-effective-target avx512f } */
/* { dg-options "-O2 -mavx512f" } */
#include <immintrin.h>
diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-pr70329-1.c b/gcc/testsuite/gcc.target/i386/avx512bw-pr70329-1.c
new file mode 100644
index 00000000000..bb9a9551d0c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512bw-pr70329-1.c
@@ -0,0 +1,27 @@
+/* PR target/70329 */
+/* { dg-do run } */
+/* { dg-options "-O0 -mavx512bw" } */
+/* { dg-require-effective-target avx512bw } */
+
+#define AVX512BW
+#include "avx512f-helper.h"
+
+typedef unsigned char A __attribute__ ((vector_size (64)));
+typedef unsigned int B __attribute__ ((vector_size (64)));
+
+unsigned __attribute__ ((noinline, noclone))
+foo (A a, A b, B c)
+{
+ a *= b;
+ c[1] += a[8];
+ return c[1];
+}
+
+void
+TEST (void)
+{
+ A a = (A) { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+ unsigned x = foo (a, a, (B) { 1, 2 });
+ if (x != 83)
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-pr70329-2.c b/gcc/testsuite/gcc.target/i386/avx512bw-pr70329-2.c
new file mode 100644
index 00000000000..731b9260794
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512bw-pr70329-2.c
@@ -0,0 +1,33 @@
+/* PR target/70329 */
+/* { dg-do run } */
+/* { dg-options "-O2 -ftree-vectorize -mavx512bw" } */
+/* { dg-require-effective-target avx512bw } */
+
+#define AVX512BW
+#include "avx512f-helper.h"
+
+__attribute__((noinline, noclone)) void
+foo (unsigned char *src1, unsigned char *src2, unsigned char *dst)
+{
+ int i;
+
+ for (i = 0; i < 64; i++)
+ dst[i] = (unsigned char) ((int) src1[i] * (int) src2[i]);
+}
+
+void
+TEST (void)
+{
+ unsigned char a[64], b[64], c[64];
+ int i;
+
+ for (i = 0; i < 64; i++)
+ {
+ a[i] = i;
+ b[i] = (i + 1);
+ }
+ foo (a, b, c);
+ for (i = 0; i < 64; i++)
+ if (c[i] != (unsigned char) (i * (i + 1)))
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx512f-pr70421.c b/gcc/testsuite/gcc.target/i386/avx512f-pr70421.c
new file mode 100644
index 00000000000..60e1e2a8863
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx512f-pr70421.c
@@ -0,0 +1,15 @@
+/* PR target/70421 */
+/* { dg-do run } */
+/* { dg-require-effective-target avx512f } */
+/* { dg-options "-O2 -mavx512f" } */
+
+#include "avx512f-check.h"
+
+#define main() do_main()
+#include "../../gcc.dg/torture/pr70421.c"
+
+static void
+avx512f_test (void)
+{
+ do_main ();
+}
diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c
index de6279f1dfa..38d53900627 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */
/* { dg-final { scan-tree-dump "memcpy.chkp" "strlen" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
char *test (char *str1, char *str2)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c
index 9f584efee0a..789ebc1f2d8 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c
@@ -3,7 +3,8 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */
/* { dg-final { scan-tree-dump-not "strlen" "strlen" } } */
-#include "string.h"
+#define USE_GNU
+#include "../../gcc.dg/strlenopt.h"
char *test (char *str1, char *str2)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c
index 311c9a042e0..276f4127975 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */
/* { dg-final { scan-tree-dump-times "strlen" 1 "strlen" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
size_t test (char *str1, char *str2)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c
index 794c8a860da..6866b9869ec 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c
@@ -3,7 +3,8 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen -D_GNU_SOURCE" } */
/* { dg-final { scan-tree-dump-times "strlen" 1 "strlen" } } */
-#include "string.h"
+#define USE_GNU
+#include "../../gcc.dg/strlenopt.h"
char * test (char *str1, char *str2)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c
index e44096cd429..bbafecc3063 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c
@@ -3,7 +3,7 @@
/* { dg-final { scan-tree-dump-times "strlen" 2 "strlen" } } */
/* { dg-final { scan-tree-dump "memcpy" "strlen" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
size_t test (char *str1, char *str2)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c
index 18aa2819cdf..d6148a87fd1 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */
/* { dg-final { scan-tree-dump "memcpy_nochk" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c
index 26e9f13a190..18cff739b01 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump-not "memset_nobnd" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (void *buf1, int c, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c
index e84963f11f7..c53db6a17e4 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump-not "memmove_nobnd" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (void *buf1, void *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c
index 898e7768b30..ee73e09d875 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c
@@ -3,7 +3,8 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions -D_GNU_SOURCE" } */
/* { dg-final { scan-tree-dump-not "mempcpy_nobnd" "chkpopt" } } */
-#include "string.h"
+#define USE_GNU
+#include "../../gcc.dg/strlenopt.h"
void test (void *buf1, void *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c
index 3b926b11f83..279cae3e5bf 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "memcpy_nobnd_nochk" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c
index a8d000ba1fa..b810c682569 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "memset_nobnd_nochk" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int c, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c
index 7c6065657c0..a9a79c1e330 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "memmove_nobnd_nochk" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c
index 891adb4f293..29ea674363a 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c
@@ -3,7 +3,8 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions -D_GNU_SOURCE" } */
/* { dg-final { scan-tree-dump "mempcpy_nobnd_nochk" "chkpopt" } } */
-#include "string.h"
+#define USE_GNU
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c
index cac0feaecbb..6a0c24ee887 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */
/* { dg-final { scan-tree-dump "memset_nochk" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int c, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c
index 72ff3869f7b..310dec77456 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */
/* { dg-final { scan-tree-dump "memmove_nochk" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c
index 3faa58b0aea..34c61cc5b9c 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c
@@ -3,7 +3,8 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -D_GNU_SOURCE" } */
/* { dg-final { scan-tree-dump "mempcpy_nochk" "chkpopt" } } */
-#include "string.h"
+#define USE_GNU
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c
index 02ad9ccc496..39850d62be8 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "memcpy_nobnd" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c
index 6db5d83a0bc..06dcbfb9a25 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "memset_nobnd" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int c, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c
index 761e6263d86..40ded068f8e 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump "memmove_nobnd" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c
index 01bff6930a3..8fef8fdd85a 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c
@@ -3,7 +3,8 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions -D_GNU_SOURCE" } */
/* { dg-final { scan-tree-dump "mempcpy_nobnd" "chkpopt" } } */
-#include "string.h"
+#define USE_GNU
+#include "../../gcc.dg/strlenopt.h"
void test (int *buf1, int *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c
index b79d09633dd..bf26874e5a8 100644
--- a/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c
+++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c
@@ -2,7 +2,7 @@
/* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
/* { dg-final { scan-tree-dump-not "memcpy_nobnd" "chkpopt" } } */
-#include "string.h"
+#include "../../gcc.dg/strlenopt.h"
void test (void *buf1, void *buf2, size_t len)
{
diff --git a/gcc/testsuite/gcc.target/i386/pr64411.C b/gcc/testsuite/gcc.target/i386/pr64411.C
new file mode 100644
index 00000000000..55858fb48eb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr64411.C
@@ -0,0 +1,27 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -mcmodel=medium -fPIC -fschedule-insns -fselective-scheduling" } */
+
+typedef __SIZE_TYPE__ size_t;
+
+extern "C" long strtol ()
+ { return 0; }
+
+static struct {
+ void *sp[2];
+} info;
+
+union S813
+{
+ void * c[5];
+}
+s813;
+
+S813 a813[5];
+S813 check813 (S813, S813 *, S813);
+
+void checkx813 ()
+{
+ __builtin_memset (&s813, '\0', sizeof (s813));
+ __builtin_memset (&info, '\0', sizeof (info));
+ check813 (s813, &a813[1], a813[2]);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr69888.c b/gcc/testsuite/gcc.target/i386/pr69888.c
new file mode 100644
index 00000000000..498fe5acc2c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr69888.c
@@ -0,0 +1,10 @@
+/* PR target/69888 */
+/* { dg-do compile } */
+/* { dg-options "-minline-all-stringops -mmemset-strategy=no_stringop:-1:noalign" } */
+/* { dg-additional-options "-march=geode" { target ia32 } } */
+
+void
+foo (char *p)
+{
+ __builtin_memset (p, 0, 32);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr69891.c b/gcc/testsuite/gcc.target/i386/pr69891.c
new file mode 100644
index 00000000000..2c5e86372e3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr69891.c
@@ -0,0 +1,30 @@
+/* PR rtl-optimization/69891 */
+/* { dg-do run } */
+/* { dg-options "-O -fno-tree-fre -mstringop-strategy=libcall -Wno-psabi" } */
+/* { dg-additional-options "-mno-sse" { target ia32 } } */
+
+typedef unsigned short A;
+typedef unsigned short B __attribute__ ((vector_size (32)));
+typedef unsigned int C;
+typedef unsigned int D __attribute__ ((vector_size (32)));
+typedef unsigned long long E;
+typedef unsigned long long F __attribute__ ((vector_size (32)));
+
+__attribute__((noinline, noclone)) unsigned
+foo(D a, B b, D c, F d)
+{
+ b /= (B) {1, -c[0]} | 1;
+ c[0] |= 7;
+ a %= c | 1;
+ c ^= c;
+ return a[0] + b[15] + c[0] + d[3];
+}
+
+int
+main ()
+{
+ unsigned x = foo ((D) {}, (B) {}, (D) {}, (F) {});
+ if (x != 0)
+ __builtin_abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr70028.c b/gcc/testsuite/gcc.target/i386/pr70028.c
new file mode 100644
index 00000000000..c071aad7403
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70028.c
@@ -0,0 +1,19 @@
+/* PR target/70028 */
+/* { dg-do assemble { target avx512bw } } */
+/* { dg-require-effective-target int128 } */
+/* { dg-require-effective-target masm_intel } */
+/* { dg-options "-O2 -fno-forward-propagate -mavx512bw -masm=intel" } */
+
+typedef unsigned short A;
+typedef int B __attribute__ ((vector_size (32)));
+typedef unsigned __int128 C;
+typedef __int128 D __attribute__ ((vector_size (32)));
+
+C
+foo (A a, int b, unsigned c, C d, A e, unsigned f, B g, D h)
+{
+ g[1] ^= (A) ~ a;
+ a ^= (unsigned) g[0];
+ h %= (D) h | 1;
+ return a + b + c + d + e + g[0] + g[1] + h[1];
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr70062.c b/gcc/testsuite/gcc.target/i386/pr70062.c
new file mode 100644
index 00000000000..e5cb854f2ee
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70062.c
@@ -0,0 +1,11 @@
+/* PR target/70062 */
+/* { dg-options "-minline-all-stringops -minline-stringops-dynamically -mmemcpy-strategy=libcall:-1:noalign -Wno-psabi" } */
+/* { dg-additional-options "-mtune=k6-2" { target ia32 } } */
+
+typedef int V __attribute__ ((vector_size (32)));
+
+V
+foo (V x)
+{
+ return (V) { x[0] };
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr70293.c b/gcc/testsuite/gcc.target/i386/pr70293.c
new file mode 100644
index 00000000000..4510166ead8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70293.c
@@ -0,0 +1,38 @@
+/* PR target/70293 */
+/* { dg-do compile } */
+/* { dg-require-effective-target lp64 } */
+/* { dg-options "-mtune=westmere -mavx512vl -O2" } */
+
+typedef short __v8hi __attribute__((__vector_size__(16)));
+typedef int __v8hu __attribute__((__vector_size__(16)));
+typedef long __m128i __attribute__((__vector_size__(16)));
+__m128i _mm_madd_epi16___B, _mm_mullo_epi16___A,
+ scaled_bilinear_scanline_sse2_8888_8_8888_OVER_xmm_b,
+ scaled_bilinear_scanline_sse2_8888_8_8888_OVER___trans_tmp_16,
+ scaled_bilinear_scanline_sse2_8888_8_8888_OVER___trans_tmp_13;
+int _mm_srli_epi16___B, scaled_bilinear_scanline_sse2_8888_8_8888_OVER_m,
+ scaled_bilinear_scanline_sse2_8888_8_8888_OVER_dst,
+ scaled_bilinear_scanline_sse2_8888_8_8888_OVER_wt;
+__m128i _mm_set_epi16();
+void _mm_cvtsi128_si32();
+void
+scaled_bilinear_scanline_sse2_8888_8_8888_OVER(int p1) {
+ __m128i __trans_tmp_12, __trans_tmp_6, __trans_tmp_5, xmm_x = _mm_set_epi16();
+ int mask;
+ __trans_tmp_5 = (__m128i){scaled_bilinear_scanline_sse2_8888_8_8888_OVER_wt};
+ __trans_tmp_6 = (__m128i)(__v8hi){p1, p1, p1, p1, p1, p1, p1, p1};
+ while (scaled_bilinear_scanline_sse2_8888_8_8888_OVER_dst) {
+ scaled_bilinear_scanline_sse2_8888_8_8888_OVER_m = mask++;
+ if (scaled_bilinear_scanline_sse2_8888_8_8888_OVER_m) {
+ __trans_tmp_12 =
+ (__m128i)((__v8hu)_mm_mullo_epi16___A * (__v8hu)__trans_tmp_6);
+ scaled_bilinear_scanline_sse2_8888_8_8888_OVER_xmm_b = __trans_tmp_12;
+ scaled_bilinear_scanline_sse2_8888_8_8888_OVER___trans_tmp_13 =
+ (__m128i)__builtin_ia32_psrlwi128((__v8hi)xmm_x, _mm_srli_epi16___B);
+ scaled_bilinear_scanline_sse2_8888_8_8888_OVER___trans_tmp_16 =
+ (__m128i)__builtin_ia32_pmaddwd128((__v8hi)__trans_tmp_5,
+ (__v8hi)_mm_madd_epi16___B);
+ _mm_cvtsi128_si32();
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr70325.c b/gcc/testsuite/gcc.target/i386/pr70325.c
new file mode 100644
index 00000000000..e2b9342658c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70325.c
@@ -0,0 +1,12 @@
+/* PR target/70325 */
+/* { dg-do compile } */
+/* { dg-options "-mavx512vl -O2" } */
+
+typedef char C __attribute((__vector_size__(32)));
+typedef int I __attribute((__vector_size__(32)));
+
+void
+f(int a,I b)
+{
+ __builtin_ia32_storedquqi256_mask((C*)f,(C)b,a); /* { dg-warning "implicit declaration of function" } */
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr70327.c b/gcc/testsuite/gcc.target/i386/pr70327.c
new file mode 100644
index 00000000000..035bb68d458
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70327.c
@@ -0,0 +1,12 @@
+/* PR target/70327 */
+/* { dg-do compile } */
+/* { dg-require-effective-target int128 } */
+/* { dg-options "-mavx512f" } */
+
+typedef unsigned __int128 v4ti __attribute__ ((vector_size (64)));
+
+void
+foo (v4ti v)
+{
+ foo(v);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr70406.c b/gcc/testsuite/gcc.target/i386/pr70406.c
new file mode 100644
index 00000000000..b75a5af450e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70406.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target ia32 } */
+/* { dg-options "-O -mtune=pentium2 -mavx512f" } */
+
+typedef int v4si __attribute__ ((vector_size (16)));
+
+unsigned
+foo (unsigned char i, unsigned x, v4si u, v4si v, v4si w)
+{
+ i &= (unsigned)~x;
+ v <<= w[x];
+ return i + u[x] + v[i];
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr70453.c b/gcc/testsuite/gcc.target/i386/pr70453.c
new file mode 100644
index 00000000000..2ff1fbb804d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70453.c
@@ -0,0 +1,18 @@
+/* PR target/70453 */
+/* { dg-do assemble { target { lp64 } } } */
+/* { dg-require-effective-target avx512vbmi } */
+/* { dg-options "-Og -fschedule-insns -mavx512vbmi" } */
+
+
+typedef char v64u8 __attribute__ ((vector_size (64)));
+typedef short v64u16 __attribute__ ((vector_size (64)));
+typedef __int128 v64u128 __attribute__ ((vector_size (64)));
+
+int
+foo(v64u8 v64u8_0, v64u16 v64u16_0, v64u128 v64u128_0)
+{
+ v64u128_0 /= (v64u128){ v64u8_0[28] } | 0x1424171b0c;
+ v64u8_0 %= (v64u8){ v64u16_0[25], v64u128_0[1]} ;
+ v64u128_0 %= (v64u128){ v64u16_0[8] };
+ return v64u8_0[0] + v64u8_0[1] + v64u16_0[0] + v64u128_0[0];
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr70510.c b/gcc/testsuite/gcc.target/i386/pr70510.c
new file mode 100644
index 00000000000..fdad97a16f4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70510.c
@@ -0,0 +1,14 @@
+/* PR target/70510 */
+/* { dg-do assemble { target avx512bw } } */
+/* { dg-require-effective-target masm_intel } */
+/* { dg-options "-Og -mavx512bw -masm=intel" } */
+
+typedef int V __attribute__ ((vector_size (64)));
+
+V
+foo (V u, V v)
+{
+ v[0] |= v[u[0]];
+ u /= ((V)v)[0];
+ return u;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr70525.c b/gcc/testsuite/gcc.target/i386/pr70525.c
new file mode 100644
index 00000000000..78ba752f94b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr70525.c
@@ -0,0 +1,32 @@
+/* PR target/70525 */
+/* { dg-do assemble { target avx512bw } } */
+/* { dg-options "-O2 -mavx512bw -mno-avx512vl" } */
+
+typedef char v64qi __attribute__ ((vector_size (64)));
+typedef short v32hi __attribute__ ((vector_size (64)));
+typedef int v16si __attribute__ ((vector_size (64)));
+typedef long long v8di __attribute__ ((vector_size (64)));
+
+v64qi
+f1 (v64qi x, v64qi y)
+{
+ return x & ~y;
+}
+
+v32hi
+f2 (v32hi x, v32hi y)
+{
+ return x & ~y;
+}
+
+v16si
+f3 (v16si x, v16si y)
+{
+ return x & ~y;
+}
+
+v8di
+f4 (v8di x, v8di y)
+{
+ return x & ~y;
+}