diff options
Diffstat (limited to 'gcc/testsuite/gcc.target/i386')
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> |