summaryrefslogtreecommitdiff
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/avx512bw-vpermi2w-2.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512bw-vpermt2w-2.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512bw-vpmaddubsw-2.c3
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512bw-vpmaddwd-2.c3
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-2.c3
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-2.c3
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512vbmi-vpermi2b-2.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/avx512vbmi-vpermt2b-2.c5
-rw-r--r--gcc/testsuite/gcc.target/i386/monitorx.c27
-rw-r--r--gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-1.c16
-rw-r--r--gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-2.c16
-rw-r--r--gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-3.c33
-rw-r--r--gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-4.c17
-rw-r--r--gcc/testsuite/gcc.target/i386/pr65990.c29
-rw-r--r--gcc/testsuite/gcc.target/i386/pr66047.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/pr66174.c30
-rw-r--r--gcc/testsuite/gcc.target/i386/pr66275.c8
-rw-r--r--gcc/testsuite/gcc.target/i386/pr66412.c17
-rw-r--r--gcc/testsuite/gcc.target/i386/pr66470.c13
-rw-r--r--gcc/testsuite/gcc.target/i386/pr66473.c17
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-12.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-13.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-14.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/sse-23.c2
24 files changed, 262 insertions, 16 deletions
diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-vpermi2w-2.c b/gcc/testsuite/gcc.target/i386/avx512bw-vpermi2w-2.c
index 0fd83da310..b1aa81dc9a 100644
--- a/gcc/testsuite/gcc.target/i386/avx512bw-vpermi2w-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512bw-vpermi2w-2.c
@@ -6,8 +6,9 @@
#include "avx512f-helper.h"
#define SIZE (AVX512F_LEN / 16)
-#include "math.h"
-#include "values.h"
+#include <math.h>
+#include <limits.h>
+#include <float.h>
#include "avx512f-mask-type.h"
#define NUM 32
diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-vpermt2w-2.c b/gcc/testsuite/gcc.target/i386/avx512bw-vpermt2w-2.c
index 50446be97b..9a15e9ef71 100644
--- a/gcc/testsuite/gcc.target/i386/avx512bw-vpermt2w-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512bw-vpermt2w-2.c
@@ -6,8 +6,9 @@
#include "avx512f-helper.h"
#define SIZE (AVX512F_LEN / 16)
-#include "math.h"
-#include "values.h"
+#include <math.h>
+#include <limits.h>
+#include <float.h>
#include "avx512f-mask-type.h"
#define NUM 32
diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-vpmaddubsw-2.c b/gcc/testsuite/gcc.target/i386/avx512bw-vpmaddubsw-2.c
index d66be4f596..354e15937d 100644
--- a/gcc/testsuite/gcc.target/i386/avx512bw-vpmaddubsw-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512bw-vpmaddubsw-2.c
@@ -6,7 +6,8 @@
#include "avx512f-helper.h"
#include <math.h>
-#include <values.h>
+#include <limits.h>
+#include <float.h>
#define SIZE (AVX512F_LEN / 16)
#include "avx512f-mask-type.h"
diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-vpmaddwd-2.c b/gcc/testsuite/gcc.target/i386/avx512bw-vpmaddwd-2.c
index 3d08543362..5077427fa8 100644
--- a/gcc/testsuite/gcc.target/i386/avx512bw-vpmaddwd-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512bw-vpmaddwd-2.c
@@ -6,7 +6,8 @@
#include "avx512f-helper.h"
#include <math.h>
-#include <values.h>
+#include <limits.h>
+#include <float.h>
#define SIZE (AVX512F_LEN / 32)
#include "avx512f-mask-type.h"
diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-2.c b/gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-2.c
index d6dfad7c97..6f7c65bfc2 100644
--- a/gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512dq-vfpclasspd-2.c
@@ -6,7 +6,8 @@
#include "avx512f-helper.h"
#include <math.h>
-#include <values.h>
+#include <limits.h>
+#include <float.h>
#define SIZE (AVX512F_LEN / 64)
#include "avx512f-mask-type.h"
diff --git a/gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-2.c b/gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-2.c
index 9401f04137..40b66c435c 100644
--- a/gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512dq-vfpclassps-2.c
@@ -6,7 +6,8 @@
#include "avx512f-helper.h"
#include <math.h>
-#include <values.h>
+#include <limits.h>
+#include <float.h>
#include "avx512f-mask-type.h"
#define SIZE (AVX512F_LEN / 32)
diff --git a/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermi2b-2.c b/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermi2b-2.c
index 31afc521e1..b41131cb1d 100644
--- a/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermi2b-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermi2b-2.c
@@ -7,8 +7,9 @@
#include "avx512f-helper.h"
#define SIZE (AVX512F_LEN / 8)
-#include "math.h"
-#include "values.h"
+#include <math.h>
+#include <limits.h>
+#include <float.h>
#include "avx512f-mask-type.h"
#define NUM 32
diff --git a/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermt2b-2.c b/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermt2b-2.c
index cc034268d8..69c0073360 100644
--- a/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermt2b-2.c
+++ b/gcc/testsuite/gcc.target/i386/avx512vbmi-vpermt2b-2.c
@@ -7,8 +7,9 @@
#include "avx512f-helper.h"
#define SIZE (AVX512F_LEN / 8)
-#include "math.h"
-#include "values.h"
+#include <math.h>
+#include <limits.h>
+#include <float.h>
#include "avx512f-mask-type.h"
#define NUM 32
diff --git a/gcc/testsuite/gcc.target/i386/monitorx.c b/gcc/testsuite/gcc.target/i386/monitorx.c
new file mode 100644
index 0000000000..e4ca18d337
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/monitorx.c
@@ -0,0 +1,27 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mmwaitx" } */
+
+/* Verify that they work in both 32bit and 64bit. */
+
+#include <x86intrin.h>
+
+void
+foo (char *p, int x, int y, int z, int c)
+{
+ _mm_monitorx (p, y, x);
+ _mm_mwaitx (z, y, c);
+}
+
+void
+bar (char *p, long x, long y, long z, long c)
+{
+ _mm_monitorx (p, y, x);
+ _mm_mwaitx (z, y, c);
+}
+
+void
+foo1 (char *p)
+{
+ _mm_monitorx (p, 0, 0);
+ _mm_mwaitx (0, 0, 0);
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-1.c b/gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-1.c
new file mode 100644
index 0000000000..cb4d22984b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-1.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fcheck-pointer-bounds -mmpx" } */
+
+#include "math.h"
+
+double
+test1 (double x, double y, double (*fn)(double, double))
+{
+ return fn (x, y);
+}
+
+double
+test2 (double x, double y)
+{
+ return test1 (x, y, copysign);
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-2.c b/gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-2.c
new file mode 100644
index 0000000000..951e7dece1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-2.c
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -fcheck-pointer-bounds -mmpx -fno-inline" } */
+
+#include "math.h"
+
+double
+test1 (double x, double y, double (*fn)(double, double))
+{
+ return fn (x, y);
+}
+
+double
+test2 (double x, double y)
+{
+ return test1 (x, y, copysign);
+}
diff --git a/gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-3.c b/gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-3.c
new file mode 100644
index 0000000000..439f631a3b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-3.c
@@ -0,0 +1,33 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fexceptions -fcheck-pointer-bounds -mmpx" } */
+
+extern int f2 (const char*, int, ...);
+extern long int f3 (int *);
+extern void err (void) __attribute__((__error__("error")));
+
+extern __inline __attribute__ ((__always_inline__)) int
+f1 (int i, ...)
+{
+ if (__builtin_constant_p (i))
+ {
+ if (i)
+ err ();
+ return f2 ("", i);
+ }
+
+ return f2 ("", i);
+}
+
+int
+test ()
+{
+ int i;
+
+ if (f1 (0))
+ if (f3 (&i))
+ i = 0;
+
+ return i;
+}
+
+
diff --git a/gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-4.c b/gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-4.c
new file mode 100644
index 0000000000..1b7d7032ec
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/mpx/chkp-fix-calls-4.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-Os -fcheck-pointer-bounds -mmpx" } */
+
+typedef void (func) (int *);
+
+static inline void
+bar (func f)
+{
+ int i;
+ f (&i);
+}
+
+void
+foo ()
+{
+ bar (0);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr65990.c b/gcc/testsuite/gcc.target/i386/pr65990.c
new file mode 100644
index 0000000000..c0e5bb6fdf
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr65990.c
@@ -0,0 +1,29 @@
+/* { dg-do compile } */
+/* { dg-options "-mtune=btver2 -mmemcpy-strategy=rep_8byte:-1:noalign" }
+
+/* { dg-error "stringop strategy name rep_8byte specified for option -mmemcpy_strategy= not supported for 32-bit code" "" { target ia32 } 0 } */
+
+struct U9
+{
+ unsigned a[9];
+};
+
+struct U9 u9;
+
+void
+foo ()
+{
+ u9 = (struct U9) {
+ .a = {
+ 0xFF,
+ 0xFF,
+ 0xFF,
+ 0xFF,
+ 0xFF,
+ 0xFF,
+ 0xFF,
+ 0xFF,
+ 0xFF
+ }
+ };
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr66047.c b/gcc/testsuite/gcc.target/i386/pr66047.c
new file mode 100644
index 0000000000..60eefe4d06
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr66047.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mno-sse" } */
+/* { dg-require-effective-target ia32 } */
+__attribute__((target ("sse2"), noinline)) static void
+foo (void)
+{
+ asm volatile ("" : : : "memory");
+}
+
+void
+bar (void)
+{
+ foo ();
+}
+
diff --git a/gcc/testsuite/gcc.target/i386/pr66174.c b/gcc/testsuite/gcc.target/i386/pr66174.c
new file mode 100644
index 0000000000..f591f4b03b
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr66174.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-options "-O -ftree-vectorize -mavx512f" } */
+
+extern void abort (void);
+
+typedef struct {
+ unsigned int a;
+ unsigned int b;
+} ii;
+
+void foo (unsigned short *arr, ii *iarr)
+{
+ ii *iptr = iarr;
+ unsigned short res[128];
+ ii ires[128];
+ int i;
+ for (i = 0; i < 128; i++)
+ {
+ ires[i].a = iptr->b - iptr->a;
+ ires[i].b = iptr->b + iptr->a;
+ iptr++;
+ }
+ for (i = 0; i < 128; i++)
+ {
+ if (res[i] != arr[i]
+ || ires[i].a != iarr[i].b - iarr[i].a
+ || ires[i].b != iarr[i].b + iarr[i].a)
+ abort ();
+ }
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr66275.c b/gcc/testsuite/gcc.target/i386/pr66275.c
new file mode 100644
index 0000000000..b8759aeb5e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr66275.c
@@ -0,0 +1,8 @@
+/* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */
+/* { dg-options "-mabi=ms -fdump-rtl-dfinit" } */
+
+void
+__attribute__((sysv_abi))
+foo () {};
+
+/* { dg-final { scan-rtl-dump "entry block defs\[^\\n]*\\\[si\\]\[^\\n]*\\\[di\\]" "dfinit" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr66412.c b/gcc/testsuite/gcc.target/i386/pr66412.c
new file mode 100644
index 0000000000..c0690dca53
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr66412.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -g" } */
+
+int a, b, c, d;
+
+void
+fn1 ()
+{
+ short e;
+ unsigned short g;
+
+ for (c = 0; c < 1; c++)
+ d = 0;
+ g = ((a == 0) ^ d) % 8;
+ e = g << 1;
+ b = e && 1;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr66470.c b/gcc/testsuite/gcc.target/i386/pr66470.c
new file mode 100644
index 0000000000..73158d1343
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr66470.c
@@ -0,0 +1,13 @@
+/* PR target/66470 */
+/* { dg-do compile { target { ! { ia32 } } } } */
+/* { dg-options "-O2 -mx32 -maddress-mode=long" } */
+/* { dg-require-effective-target tls } */
+
+extern __thread unsigned __int128 c[10];
+int d;
+
+unsigned __int128
+foo (void)
+{
+ return c[d];
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr66473.c b/gcc/testsuite/gcc.target/i386/pr66473.c
new file mode 100644
index 0000000000..f2433abf8e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr66473.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx512f" } */
+
+typedef double __m512d __attribute__ ((__vector_size__ (64)));
+
+extern __m512d _ZGVeN8v_func (__m512d);
+
+double
+func_vlen8 (double x)
+{
+ __m512d mx, mr;
+
+ mx[0] = mx[1] = mx[2] = mx[3] = mx[4] = mx[5] = mx[6] = mx[7] = x;
+ mr = _ZGVeN8v_func (mx);
+
+ return (double) mr[0];
+}
diff --git a/gcc/testsuite/gcc.target/i386/sse-12.c b/gcc/testsuite/gcc.target/i386/sse-12.c
index bdb0e105f1..1db0d8bddd 100644
--- a/gcc/testsuite/gcc.target/i386/sse-12.c
+++ b/gcc/testsuite/gcc.target/i386/sse-12.c
@@ -3,7 +3,7 @@
popcntintrin.h and mm_malloc.h are usable
with -O -std=c89 -pedantic-errors. */
/* { dg-do compile } */
-/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512bw -mavx512dq -mavx512vl -mavx512vbmi -mavx512ifma -mclwb -mpcommit" } */
+/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512bw -mavx512dq -mavx512vl -mavx512vbmi -mavx512ifma -mclwb -mpcommit -mmwaitx" } */
#include <x86intrin.h>
diff --git a/gcc/testsuite/gcc.target/i386/sse-13.c b/gcc/testsuite/gcc.target/i386/sse-13.c
index b8ee0f2abb..13d9eb878e 100644
--- a/gcc/testsuite/gcc.target/i386/sse-13.c
+++ b/gcc/testsuite/gcc.target/i386/sse-13.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512vl -mavx512dq -mavx512bw -mavx512vbmi -mavx512ifma -mclwb -mpcommit" } */
+/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512vl -mavx512dq -mavx512bw -mavx512vbmi -mavx512ifma -mclwb -mpcommit -mmwaitx" } */
#include <mm_malloc.h>
diff --git a/gcc/testsuite/gcc.target/i386/sse-14.c b/gcc/testsuite/gcc.target/i386/sse-14.c
index e8791e387d..52f78025d6 100644
--- a/gcc/testsuite/gcc.target/i386/sse-14.c
+++ b/gcc/testsuite/gcc.target/i386/sse-14.c
@@ -1,5 +1,5 @@
/* { dg-do compile } */
-/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512dq -mavx512bw -mavx512vl -mavx512ifma -mavx512vbmi -mclwb -mpcommit" } */
+/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -mavx512f -mavx512er -mavx512cd -mavx512pf -msha -mprefetchwt1 -mxsavec -mxsaves -mclflushopt -mavx512dq -mavx512bw -mavx512vl -mavx512ifma -mavx512vbmi -mclwb -mpcommit -mmwaitx" } */
/* { dg-add-options bind_pic_locally } */
#include <mm_malloc.h>
diff --git a/gcc/testsuite/gcc.target/i386/sse-23.c b/gcc/testsuite/gcc.target/i386/sse-23.c
index 0671d57ac1..a3660f8b2c 100644
--- a/gcc/testsuite/gcc.target/i386/sse-23.c
+++ b/gcc/testsuite/gcc.target/i386/sse-23.c
@@ -594,6 +594,6 @@
#define __builtin_ia32_extracti64x2_256_mask(A, E, C, D) __builtin_ia32_extracti64x2_256_mask(A, 1, C, D)
#define __builtin_ia32_extractf64x2_256_mask(A, E, C, D) __builtin_ia32_extractf64x2_256_mask(A, 1, C, D)
-#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,avx512f,avx512er,avx512cd,avx512pf,sha,prefetchwt1,xsavec,xsaves,clflushopt,avx512bw,avx512dq,avx512vl,avx512vbmi,avx512ifma,clwb,pcommit")
+#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,avx512f,avx512er,avx512cd,avx512pf,sha,prefetchwt1,xsavec,xsaves,clflushopt,avx512bw,avx512dq,avx512vl,avx512vbmi,avx512ifma,clwb,pcommit,mwaitx")
#include <x86intrin.h>