diff --git a/gcc/common/config/i386/cpuinfo.h b/gcc/common/config/i386/cpuinfo.h index 017a952a5db..4610bf6d6a4 100644 --- a/gcc/common/config/i386/cpuinfo.h +++ b/gcc/common/config/i386/cpuinfo.h @@ -390,18 +390,6 @@ get_intel_cpu (struct __processor_model *cpu_model, CHECK___builtin_cpu_is ("tremont"); cpu_model->__cpu_type = INTEL_TREMONT; break; - case 0x57: - /* Knights Landing. */ - cpu = "knl"; - CHECK___builtin_cpu_is ("knl"); - cpu_model->__cpu_type = INTEL_KNL; - break; - case 0x85: - /* Knights Mill. */ - cpu = "knm"; - CHECK___builtin_cpu_is ("knm"); - cpu_model->__cpu_type = INTEL_KNM; - break; case 0x1a: case 0x1e: case 0x1f: @@ -844,8 +832,6 @@ get_available_features (struct __processor_model *cpu_model, set_feature (FEATURE_CLFLUSHOPT); if (ebx & bit_CLWB) set_feature (FEATURE_CLWB); - if (ecx & bit_PREFETCHWT1) - set_feature (FEATURE_PREFETCHWT1); /* NB: bit_OSPKE indicates that OS supports PKU. */ if (ecx & bit_OSPKE) set_feature (FEATURE_PKU); @@ -898,10 +884,6 @@ get_available_features (struct __processor_model *cpu_model, set_feature (FEATURE_AVX512DQ); if (ebx & bit_AVX512CD) set_feature (FEATURE_AVX512CD); - if (ebx & bit_AVX512PF) - set_feature (FEATURE_AVX512PF); - if (ebx & bit_AVX512ER) - set_feature (FEATURE_AVX512ER); if (ebx & bit_AVX512IFMA) set_feature (FEATURE_AVX512IFMA); if (ecx & bit_AVX512VBMI) @@ -914,10 +896,6 @@ get_available_features (struct __processor_model *cpu_model, set_feature (FEATURE_AVX512BITALG); if (ecx & bit_AVX512VPOPCNTDQ) set_feature (FEATURE_AVX512VPOPCNTDQ); - if (edx & bit_AVX5124VNNIW) - set_feature (FEATURE_AVX5124VNNIW); - if (edx & bit_AVX5124FMAPS) - set_feature (FEATURE_AVX5124FMAPS); if (edx & bit_AVX512VP2INTERSECT) set_feature (FEATURE_AVX512VP2INTERSECT); if (edx & bit_AVX512FP16) diff --git a/gcc/common/config/i386/i386-common.cc b/gcc/common/config/i386/i386-common.cc index 77b154663bc..895e5fa662d 100644 --- a/gcc/common/config/i386/i386-common.cc +++ b/gcc/common/config/i386/i386-common.cc @@ -64,10 +64,6 @@ along with GCC; see the file COPYING3. If not see (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_AVX2_SET) #define OPTION_MASK_ISA_AVX512CD_SET \ (OPTION_MASK_ISA_AVX512CD | OPTION_MASK_ISA_AVX512F_SET) -#define OPTION_MASK_ISA_AVX512PF_SET \ - (OPTION_MASK_ISA_AVX512PF | OPTION_MASK_ISA_AVX512F_SET) -#define OPTION_MASK_ISA_AVX512ER_SET \ - (OPTION_MASK_ISA_AVX512ER | OPTION_MASK_ISA_AVX512F_SET) #define OPTION_MASK_ISA_AVX512DQ_SET \ (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512F_SET) #define OPTION_MASK_ISA_AVX512BW_SET \ @@ -79,8 +75,6 @@ along with GCC; see the file COPYING3. If not see #define OPTION_MASK_ISA2_AVXIFMA_SET OPTION_MASK_ISA2_AVXIFMA #define OPTION_MASK_ISA_AVX512VBMI_SET \ (OPTION_MASK_ISA_AVX512VBMI | OPTION_MASK_ISA_AVX512BW_SET) -#define OPTION_MASK_ISA2_AVX5124FMAPS_SET OPTION_MASK_ISA2_AVX5124FMAPS -#define OPTION_MASK_ISA2_AVX5124VNNIW_SET OPTION_MASK_ISA2_AVX5124VNNIW #define OPTION_MASK_ISA_AVX512VBMI2_SET \ (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW_SET) #define OPTION_MASK_ISA_AVX512FP16_SET OPTION_MASK_ISA_AVX512BW_SET @@ -97,7 +91,6 @@ along with GCC; see the file COPYING3. If not see #define OPTION_MASK_ISA_PRFCHW_SET OPTION_MASK_ISA_PRFCHW #define OPTION_MASK_ISA_RDSEED_SET OPTION_MASK_ISA_RDSEED #define OPTION_MASK_ISA_ADX_SET OPTION_MASK_ISA_ADX -#define OPTION_MASK_ISA_PREFETCHWT1_SET OPTION_MASK_ISA_PREFETCHWT1 #define OPTION_MASK_ISA_CLFLUSHOPT_SET OPTION_MASK_ISA_CLFLUSHOPT #define OPTION_MASK_ISA_XSAVES_SET \ (OPTION_MASK_ISA_XSAVES | OPTION_MASK_ISA_XSAVE_SET) @@ -242,14 +235,11 @@ along with GCC; see the file COPYING3. If not see | OPTION_MASK_ISA2_AVX10_1_256_UNSET) #define OPTION_MASK_ISA_AVX512F_UNSET \ (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_AVX512CD_UNSET \ - | OPTION_MASK_ISA_AVX512PF_UNSET | OPTION_MASK_ISA_AVX512ER_UNSET \ | OPTION_MASK_ISA_AVX512DQ_UNSET | OPTION_MASK_ISA_AVX512BW_UNSET \ | OPTION_MASK_ISA_AVX512VL_UNSET | OPTION_MASK_ISA_AVX512IFMA_UNSET \ | OPTION_MASK_ISA_AVX512VNNI_UNSET \ | OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET) #define OPTION_MASK_ISA_AVX512CD_UNSET OPTION_MASK_ISA_AVX512CD -#define OPTION_MASK_ISA_AVX512PF_UNSET OPTION_MASK_ISA_AVX512PF -#define OPTION_MASK_ISA_AVX512ER_UNSET OPTION_MASK_ISA_AVX512ER #define OPTION_MASK_ISA_AVX512DQ_UNSET OPTION_MASK_ISA_AVX512DQ #define OPTION_MASK_ISA_AVX512BW_UNSET \ (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VBMI_UNSET \ @@ -258,8 +248,6 @@ along with GCC; see the file COPYING3. If not see #define OPTION_MASK_ISA_AVX512IFMA_UNSET OPTION_MASK_ISA_AVX512IFMA #define OPTION_MASK_ISA2_AVXIFMA_UNSET OPTION_MASK_ISA2_AVXIFMA #define OPTION_MASK_ISA_AVX512VBMI_UNSET OPTION_MASK_ISA_AVX512VBMI -#define OPTION_MASK_ISA2_AVX5124FMAPS_UNSET OPTION_MASK_ISA2_AVX5124FMAPS -#define OPTION_MASK_ISA2_AVX5124VNNIW_UNSET OPTION_MASK_ISA2_AVX5124VNNIW #define OPTION_MASK_ISA_AVX512VBMI2_UNSET OPTION_MASK_ISA_AVX512VBMI2 #define OPTION_MASK_ISA_AVX512FP16_UNSET OPTION_MASK_ISA_AVX512BW_UNSET #define OPTION_MASK_ISA2_AVX512FP16_UNSET OPTION_MASK_ISA2_AVX512FP16 @@ -272,7 +260,6 @@ along with GCC; see the file COPYING3. If not see #define OPTION_MASK_ISA_PRFCHW_UNSET OPTION_MASK_ISA_PRFCHW #define OPTION_MASK_ISA_RDSEED_UNSET OPTION_MASK_ISA_RDSEED #define OPTION_MASK_ISA_ADX_UNSET OPTION_MASK_ISA_ADX -#define OPTION_MASK_ISA_PREFETCHWT1_UNSET OPTION_MASK_ISA_PREFETCHWT1 #define OPTION_MASK_ISA_CLFLUSHOPT_UNSET OPTION_MASK_ISA_CLFLUSHOPT #define OPTION_MASK_ISA_XSAVEC_UNSET OPTION_MASK_ISA_XSAVEC #define OPTION_MASK_ISA_XSAVES_UNSET OPTION_MASK_ISA_XSAVES @@ -364,8 +351,6 @@ along with GCC; see the file COPYING3. If not see #define OPTION_MASK_ISA2_AVX512F_UNSET \ (OPTION_MASK_ISA2_AVX512BW_UNSET \ - | OPTION_MASK_ISA2_AVX5124FMAPS_UNSET \ - | OPTION_MASK_ISA2_AVX5124VNNIW_UNSET \ | OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET) #define OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET \ OPTION_MASK_ISA2_SSE_UNSET @@ -641,32 +626,6 @@ ix86_handle_option (struct gcc_options *opts, } return true; - case OPT_mavx512pf: - if (value) - { - opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512PF_SET; - opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512PF_SET; - } - else - { - opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512PF_UNSET; - opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512PF_UNSET; - } - return true; - - case OPT_mavx512er: - if (value) - { - opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512ER_SET; - opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512ER_SET; - } - else - { - opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512ER_UNSET; - opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512ER_UNSET; - } - return true; - case OPT_mrdpid: if (value) { @@ -872,36 +831,6 @@ ix86_handle_option (struct gcc_options *opts, } return true; - case OPT_mavx5124fmaps: - if (value) - { - opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX5124FMAPS_SET; - opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX5124FMAPS_SET; - opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET; - opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET; - } - else - { - opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX5124FMAPS_UNSET; - opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX5124FMAPS_UNSET; - } - return true; - - case OPT_mavx5124vnniw: - if (value) - { - opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX5124VNNIW_SET; - opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX5124VNNIW_SET; - opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET; - opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET; - } - else - { - opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX5124VNNIW_UNSET; - opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX5124VNNIW_UNSET; - } - return true; - case OPT_mavx512vbmi2: if (value) { @@ -1858,19 +1787,6 @@ ix86_handle_option (struct gcc_options *opts, } return true; - case OPT_mprefetchwt1: - if (value) - { - opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PREFETCHWT1_SET; - opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PREFETCHWT1_SET; - } - else - { - opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_PREFETCHWT1_UNSET; - opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PREFETCHWT1_UNSET; - } - return true; - case OPT_mclflushopt: if (value) { @@ -2131,8 +2047,6 @@ const char *const processor_names[] = "sierraforest", "grandridge", "clearwaterforest", - "knl", - "knm", "skylake", "skylake-avx512", "cannonlake", @@ -2307,10 +2221,6 @@ const pta processor_alias_table[] = M_CPU_TYPE (INTEL_GRANDRIDGE), P_PROC_AVX2}, {"clearwaterforest", PROCESSOR_CLEARWATERFOREST, CPU_HASWELL, PTA_CLEARWATERFOREST, M_CPU_TYPE (INTEL_CLEARWATERFOREST), P_PROC_AVX2}, - {"knl", PROCESSOR_KNL, CPU_SLM, PTA_KNL, - M_CPU_TYPE (INTEL_KNL), P_PROC_AVX512F}, - {"knm", PROCESSOR_KNM, CPU_SLM, PTA_KNM, - M_CPU_TYPE (INTEL_KNM), P_PROC_AVX512F}, {"intel", PROCESSOR_INTEL, CPU_SLM, PTA_NEHALEM, M_VENDOR (VENDOR_INTEL), P_NONE}, {"geode", PROCESSOR_GEODE, CPU_GEODE, diff --git a/gcc/common/config/i386/i386-cpuinfo.h b/gcc/common/config/i386/i386-cpuinfo.h index 73131657eab..9edad96d4fd 100644 --- a/gcc/common/config/i386/i386-cpuinfo.h +++ b/gcc/common/config/i386/i386-cpuinfo.h @@ -50,12 +50,10 @@ enum processor_types AMDFAM10H, AMDFAM15H, INTEL_SILVERMONT, - INTEL_KNL, - AMD_BTVER1, + AMD_BTVER1 = 8, AMD_BTVER2, AMDFAM17H, - INTEL_KNM, - INTEL_GOLDMONT, + INTEL_GOLDMONT = 12, INTEL_GOLDMONT_PLUS, INTEL_TREMONT, AMDFAM19H, @@ -179,13 +177,9 @@ enum processor_features FEATURE_AVX512BW, FEATURE_AVX512DQ, FEATURE_AVX512CD, - FEATURE_AVX512ER, - FEATURE_AVX512PF, - FEATURE_AVX512VBMI, + FEATURE_AVX512VBMI = 26, FEATURE_AVX512IFMA, - FEATURE_AVX5124VNNIW, - FEATURE_AVX5124FMAPS, - FEATURE_AVX512VPOPCNTDQ, + FEATURE_AVX512VPOPCNTDQ = 30, FEATURE_AVX512VBMI2, FEATURE_GFNI, FEATURE_VPCLMULQDQ, @@ -220,8 +214,7 @@ enum processor_features FEATURE_OSXSAVE, FEATURE_PCONFIG, FEATURE_PKU, - FEATURE_PREFETCHWT1, - FEATURE_PRFCHW, + FEATURE_PRFCHW = 66, FEATURE_PTWRITE, FEATURE_RDPID, FEATURE_RDRND, diff --git a/gcc/common/config/i386/i386-isas.h b/gcc/common/config/i386/i386-isas.h index d6deb9a1522..4b4d4b4af99 100644 --- a/gcc/common/config/i386/i386-isas.h +++ b/gcc/common/config/i386/i386-isas.h @@ -76,18 +76,10 @@ ISA_NAMES_TABLE_START "-mavx512dq") ISA_NAMES_TABLE_ENTRY("avx512cd", FEATURE_AVX512CD, P_NONE, "-mavx512cd") - ISA_NAMES_TABLE_ENTRY("avx512er", FEATURE_AVX512ER, P_NONE, - "-mavx512er") - ISA_NAMES_TABLE_ENTRY("avx512pf", FEATURE_AVX512PF, P_NONE, - "-mavx512pf") ISA_NAMES_TABLE_ENTRY("avx512vbmi", FEATURE_AVX512VBMI, P_NONE, "-mavx512vbmi") ISA_NAMES_TABLE_ENTRY("avx512ifma", FEATURE_AVX512IFMA, P_NONE, "-mavx512ifma") - ISA_NAMES_TABLE_ENTRY("avx5124vnniw", FEATURE_AVX5124VNNIW, P_NONE, - "-mavx5124vnniw") - ISA_NAMES_TABLE_ENTRY("avx5124fmaps", FEATURE_AVX5124FMAPS, P_NONE, - "-mavx5124fmaps") ISA_NAMES_TABLE_ENTRY("avx512vpopcntdq", FEATURE_AVX512VPOPCNTDQ, P_NONE, "-mavx512vpopcntdq") ISA_NAMES_TABLE_ENTRY("avx512vbmi2", FEATURE_AVX512VBMI2, P_NONE, @@ -135,8 +127,6 @@ ISA_NAMES_TABLE_START ISA_NAMES_TABLE_ENTRY("osxsave", FEATURE_OSXSAVE, P_NONE, NULL) ISA_NAMES_TABLE_ENTRY("pconfig", FEATURE_PCONFIG, P_NONE, "-mpconfig") ISA_NAMES_TABLE_ENTRY("pku", FEATURE_PKU, P_NONE, "-mpku") - ISA_NAMES_TABLE_ENTRY("prefetchwt1", FEATURE_PREFETCHWT1, P_NONE, - "-mprefetchwt1") ISA_NAMES_TABLE_ENTRY("prfchw", FEATURE_PRFCHW, P_NONE, "-mprfchw") ISA_NAMES_TABLE_ENTRY("ptwrite", FEATURE_PTWRITE, P_NONE, "-mptwrite") ISA_NAMES_TABLE_ENTRY("rdpid", FEATURE_RDPID, P_NONE, "-mrdpid") diff --git a/gcc/config.gcc b/gcc/config.gcc index cfc2db545d0..a37113bd00a 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -428,12 +428,11 @@ i[34567]86-*-* | x86_64-*-*) avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h - avx512cdintrin.h avx512erintrin.h avx512pfintrin.h - shaintrin.h clflushoptintrin.h xsavecintrin.h - xsavesintrin.h avx512dqintrin.h avx512bwintrin.h - avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h - avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h - avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h + avx512cdintrin.h shaintrin.h clflushoptintrin.h + xsavecintrin.h xsavesintrin.h avx512dqintrin.h + avx512bwintrin.h avx512vlintrin.h avx512vlbwintrin.h + avx512vldqintrin.h avx512ifmaintrin.h avx512ifmavlintrin.h + avx512vbmiintrin.h avx512vbmivlintrin.h avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h gfniintrin.h cet.h avx512vbmi2intrin.h @@ -709,7 +708,7 @@ x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \ bdver3 bdver4 znver1 znver2 znver3 znver4 znver5 btver1 btver2 k8 k8-sse3 \ opteron opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 \ atom slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \ -silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \ +silvermont skylake-avx512 cannonlake icelake-client icelake-server \ skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake \ sapphirerapids alderlake rocketlake eden-x2 nano nano-1000 nano-2000 nano-3000 \ nano-x2 eden-x4 nano-x4 lujiazui yongfeng x86-64 x86-64-v2 x86-64-v3 x86-64-v4 \ diff --git a/gcc/config/i386/avx5124fmapsintrin.h b/gcc/config/i386/avx5124fmapsintrin.h index 842f1fcddb0..860f5abd0a4 100644 --- a/gcc/config/i386/avx5124fmapsintrin.h +++ b/gcc/config/i386/avx5124fmapsintrin.h @@ -21,196 +21,4 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ -#if !defined _IMMINTRIN_H_INCLUDED -# error "Never use directly; include instead." -#endif - -#ifndef _AVX5124FMAPSINTRIN_H_INCLUDED -#define _AVX5124FMAPSINTRIN_H_INCLUDED - -#ifndef __AVX5124FMAPS__ -#pragma GCC push_options -#pragma GCC target("avx5124fmaps,evex512") -#define __DISABLE_AVX5124FMAPS__ -#endif /* __AVX5124FMAPS__ */ - -extern __inline __m512 -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_4fmadd_ps (__m512 __A, __m512 __B, __m512 __C, - __m512 __D, __m512 __E, __m128 *__F) -{ - return (__m512) __builtin_ia32_4fmaddps ((__v16sf) __B, - (__v16sf) __C, - (__v16sf) __D, - (__v16sf) __E, - (__v16sf) __A, - (const __v4sf *) __F); -} - -extern __inline __m512 -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_4fmadd_ps (__m512 __A, __mmask16 __U, __m512 __B, - __m512 __C, __m512 __D, __m512 __E, __m128 *__F) -{ - return (__m512) __builtin_ia32_4fmaddps_mask ((__v16sf) __B, - (__v16sf) __C, - (__v16sf) __D, - (__v16sf) __E, - (__v16sf) __A, - (const __v4sf *) __F, - (__v16sf) __A, - (__mmask16) __U); -} - -extern __inline __m512 -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_4fmadd_ps (__mmask16 __U, - __m512 __A, __m512 __B, __m512 __C, - __m512 __D, __m512 __E, __m128 *__F) -{ - return (__m512) __builtin_ia32_4fmaddps_mask ((__v16sf) __B, - (__v16sf) __C, - (__v16sf) __D, - (__v16sf) __E, - (__v16sf) __A, - (const __v4sf *) __F, - (__v16sf) _mm512_setzero_ps (), - (__mmask16) __U); -} - -extern __inline __m128 -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm_4fmadd_ss (__m128 __A, __m128 __B, __m128 __C, - __m128 __D, __m128 __E, __m128 *__F) -{ - return (__m128) __builtin_ia32_4fmaddss ((__v4sf) __B, - (__v4sf) __C, - (__v4sf) __D, - (__v4sf) __E, - (__v4sf) __A, - (const __v4sf *) __F); -} - -extern __inline __m128 -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm_mask_4fmadd_ss (__m128 __A, __mmask8 __U, __m128 __B, __m128 __C, - __m128 __D, __m128 __E, __m128 *__F) -{ - return (__m128) __builtin_ia32_4fmaddss_mask ((__v4sf) __B, - (__v4sf) __C, - (__v4sf) __D, - (__v4sf) __E, - (__v4sf) __A, - (const __v4sf *) __F, - (__v4sf) __A, - (__mmask8) __U); -} - -extern __inline __m128 -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm_maskz_4fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C, - __m128 __D, __m128 __E, __m128 *__F) -{ - return (__m128) __builtin_ia32_4fmaddss_mask ((__v4sf) __B, - (__v4sf) __C, - (__v4sf) __D, - (__v4sf) __E, - (__v4sf) __A, - (const __v4sf *) __F, - (__v4sf) _mm_setzero_ps (), - (__mmask8) __U); -} - -extern __inline __m512 -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_4fnmadd_ps (__m512 __A, __m512 __B, __m512 __C, - __m512 __D, __m512 __E, __m128 *__F) -{ - return (__m512) __builtin_ia32_4fnmaddps ((__v16sf) __B, - (__v16sf) __C, - (__v16sf) __D, - (__v16sf) __E, - (__v16sf) __A, - (const __v4sf *) __F); -} - -extern __inline __m512 -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_4fnmadd_ps (__m512 __A, __mmask16 __U, __m512 __B, - __m512 __C, __m512 __D, __m512 __E, __m128 *__F) -{ - return (__m512) __builtin_ia32_4fnmaddps_mask ((__v16sf) __B, - (__v16sf) __C, - (__v16sf) __D, - (__v16sf) __E, - (__v16sf) __A, - (const __v4sf *) __F, - (__v16sf) __A, - (__mmask16) __U); -} - -extern __inline __m512 -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_4fnmadd_ps (__mmask16 __U, - __m512 __A, __m512 __B, __m512 __C, - __m512 __D, __m512 __E, __m128 *__F) -{ - return (__m512) __builtin_ia32_4fnmaddps_mask ((__v16sf) __B, - (__v16sf) __C, - (__v16sf) __D, - (__v16sf) __E, - (__v16sf) __A, - (const __v4sf *) __F, - (__v16sf) _mm512_setzero_ps (), - (__mmask16) __U); -} - -extern __inline __m128 -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm_4fnmadd_ss (__m128 __A, __m128 __B, __m128 __C, - __m128 __D, __m128 __E, __m128 *__F) -{ - return (__m128) __builtin_ia32_4fnmaddss ((__v4sf) __B, - (__v4sf) __C, - (__v4sf) __D, - (__v4sf) __E, - (__v4sf) __A, - (const __v4sf *) __F); -} - -extern __inline __m128 -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm_mask_4fnmadd_ss (__m128 __A, __mmask8 __U, __m128 __B, __m128 __C, - __m128 __D, __m128 __E, __m128 *__F) -{ - return (__m128) __builtin_ia32_4fnmaddss_mask ((__v4sf) __B, - (__v4sf) __C, - (__v4sf) __D, - (__v4sf) __E, - (__v4sf) __A, - (const __v4sf *) __F, - (__v4sf) __A, - (__mmask8) __U); -} - -extern __inline __m128 -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm_maskz_4fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C, - __m128 __D, __m128 __E, __m128 *__F) -{ - return (__m128) __builtin_ia32_4fnmaddss_mask ((__v4sf) __B, - (__v4sf) __C, - (__v4sf) __D, - (__v4sf) __E, - (__v4sf) __A, - (const __v4sf *) __F, - (__v4sf) _mm_setzero_ps (), - (__mmask8) __U); -} - -#ifdef __DISABLE_AVX5124FMAPS__ -#undef __DISABLE_AVX5124FMAPS__ -#pragma GCC pop_options -#endif /* __DISABLE_AVX5124FMAPS__ */ - -#endif /* _AVX5124FMAPSINTRIN_H_INCLUDED */ +#error "AVX5124FMAPS support has been removed since GCC 15." diff --git a/gcc/config/i386/avx5124vnniwintrin.h b/gcc/config/i386/avx5124vnniwintrin.h index 57df9b27a2a..13f469cdcf0 100644 --- a/gcc/config/i386/avx5124vnniwintrin.h +++ b/gcc/config/i386/avx5124vnniwintrin.h @@ -21,112 +21,4 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ -#if !defined _IMMINTRIN_H_INCLUDED -# error "Never use directly; include instead." -#endif - -#ifndef _AVX5124VNNIWINTRIN_H_INCLUDED -#define _AVX5124VNNIWINTRIN_H_INCLUDED - -#ifndef __AVX5124VNNIW__ -#pragma GCC push_options -#pragma GCC target("avx5124vnniw,evex512") -#define __DISABLE_AVX5124VNNIW__ -#endif /* __AVX5124VNNIW__ */ - -extern __inline __m512i -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_4dpwssd_epi32 (__m512i __A, __m512i __B, __m512i __C, - __m512i __D, __m512i __E, __m128i *__F) -{ - return (__m512i) __builtin_ia32_vp4dpwssd ((__v16si) __B, - (__v16si) __C, - (__v16si) __D, - (__v16si) __E, - (__v16si) __A, - (const __v4si *) __F); -} - -extern __inline __m512i -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_4dpwssd_epi32 (__m512i __A, __mmask16 __U, __m512i __B, - __m512i __C, __m512i __D, __m512i __E, - __m128i *__F) -{ - return (__m512i) __builtin_ia32_vp4dpwssd_mask ((__v16si) __B, - (__v16si) __C, - (__v16si) __D, - (__v16si) __E, - (__v16si) __A, - (const __v4si *) __F, - (__v16si) __A, - (__mmask16) __U); -} - -extern __inline __m512i -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_4dpwssd_epi32 (__mmask16 __U, __m512i __A, __m512i __B, - __m512i __C, __m512i __D, __m512i __E, - __m128i *__F) -{ - return (__m512i) __builtin_ia32_vp4dpwssd_mask ((__v16si) __B, - (__v16si) __C, - (__v16si) __D, - (__v16si) __E, - (__v16si) __A, - (const __v4si *) __F, - (__v16si) _mm512_setzero_ps (), - (__mmask16) __U); -} - -extern __inline __m512i -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_4dpwssds_epi32 (__m512i __A, __m512i __B, __m512i __C, - __m512i __D, __m512i __E, __m128i *__F) -{ - return (__m512i) __builtin_ia32_vp4dpwssds ((__v16si) __B, - (__v16si) __C, - (__v16si) __D, - (__v16si) __E, - (__v16si) __A, - (const __v4si *) __F); -} - -extern __inline __m512i -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_4dpwssds_epi32 (__m512i __A, __mmask16 __U, __m512i __B, - __m512i __C, __m512i __D, __m512i __E, - __m128i *__F) -{ - return (__m512i) __builtin_ia32_vp4dpwssds_mask ((__v16si) __B, - (__v16si) __C, - (__v16si) __D, - (__v16si) __E, - (__v16si) __A, - (const __v4si *) __F, - (__v16si) __A, - (__mmask16) __U); -} - -extern __inline __m512i -__attribute__((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_4dpwssds_epi32 (__mmask16 __U, __m512i __A, __m512i __B, - __m512i __C, __m512i __D, __m512i __E, - __m128i *__F) -{ - return (__m512i) __builtin_ia32_vp4dpwssds_mask ((__v16si) __B, - (__v16si) __C, - (__v16si) __D, - (__v16si) __E, - (__v16si) __A, - (const __v4si *) __F, - (__v16si) _mm512_setzero_ps (), - (__mmask16) __U); -} - -#ifdef __DISABLE_AVX5124VNNIW__ -#undef __DISABLE_AVX5124VNNIW__ -#pragma GCC pop_options -#endif /* __DISABLE_AVX5124VNNIW__ */ - -#endif /* _AVX5124VNNIWINTRIN_H_INCLUDED */ +#error "AVX5124VNNIW support has been removed since GCC 15." diff --git a/gcc/config/i386/avx512erintrin.h b/gcc/config/i386/avx512erintrin.h index b3d8a64ee54..d8c62c90586 100644 --- a/gcc/config/i386/avx512erintrin.h +++ b/gcc/config/i386/avx512erintrin.h @@ -21,516 +21,4 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ -#ifndef _IMMINTRIN_H_INCLUDED -#error "Never use directly; include instead." -#endif - -#ifndef _AVX512ERINTRIN_H_INCLUDED -#define _AVX512ERINTRIN_H_INCLUDED - -#ifndef __AVX512ER__ -#pragma GCC push_options -#pragma GCC target("avx512er,evex512") -#define __DISABLE_AVX512ER__ -#endif /* __AVX512ER__ */ - -/* Internal data types for implementing the intrinsics. */ -typedef double __v8df __attribute__ ((__vector_size__ (64))); -typedef float __v16sf __attribute__ ((__vector_size__ (64))); - -/* The Intel API is flexible enough that we must allow aliasing with other - vector types, and their scalar components. */ -typedef float __m512 __attribute__ ((__vector_size__ (64), __may_alias__)); -typedef double __m512d __attribute__ ((__vector_size__ (64), __may_alias__)); - -typedef unsigned char __mmask8; -typedef unsigned short __mmask16; - -#ifdef __OPTIMIZE__ -extern __inline __m512d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_exp2a23_round_pd (__m512d __A, int __R) -{ - return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A, - (__v8df) _mm512_undefined_pd (), - (__mmask8) -1, __R); -} - -extern __inline __m512d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_exp2a23_round_pd (__m512d __W, __mmask8 __U, __m512d __A, int __R) -{ - return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A, - (__v8df) __W, - (__mmask8) __U, __R); -} - -extern __inline __m512d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_exp2a23_round_pd (__mmask8 __U, __m512d __A, int __R) -{ - return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A, - (__v8df) _mm512_setzero_pd (), - (__mmask8) __U, __R); -} - -extern __inline __m512 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_exp2a23_round_ps (__m512 __A, int __R) -{ - return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A, - (__v16sf) _mm512_undefined_ps (), - (__mmask16) -1, __R); -} - -extern __inline __m512 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_exp2a23_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __R) -{ - return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A, - (__v16sf) __W, - (__mmask16) __U, __R); -} - -extern __inline __m512 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_exp2a23_round_ps (__mmask16 __U, __m512 __A, int __R) -{ - return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A, - (__v16sf) _mm512_setzero_ps (), - (__mmask16) __U, __R); -} - -extern __inline __m512d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_rcp28_round_pd (__m512d __A, int __R) -{ - return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A, - (__v8df) _mm512_undefined_pd (), - (__mmask8) -1, __R); -} - -extern __inline __m512d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_rcp28_round_pd (__m512d __W, __mmask8 __U, __m512d __A, int __R) -{ - return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A, - (__v8df) __W, - (__mmask8) __U, __R); -} - -extern __inline __m512d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_rcp28_round_pd (__mmask8 __U, __m512d __A, int __R) -{ - return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A, - (__v8df) _mm512_setzero_pd (), - (__mmask8) __U, __R); -} - -extern __inline __m512 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_rcp28_round_ps (__m512 __A, int __R) -{ - return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A, - (__v16sf) _mm512_undefined_ps (), - (__mmask16) -1, __R); -} - -extern __inline __m512 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_rcp28_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __R) -{ - return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A, - (__v16sf) __W, - (__mmask16) __U, __R); -} - -extern __inline __m512 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_rcp28_round_ps (__mmask16 __U, __m512 __A, int __R) -{ - return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A, - (__v16sf) _mm512_setzero_ps (), - (__mmask16) __U, __R); -} - -extern __inline __m128d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_rcp28_round_sd (__m128d __A, __m128d __B, int __R) -{ - return (__m128d) __builtin_ia32_rcp28sd_round ((__v2df) __B, - (__v2df) __A, - __R); -} - -extern __inline __m128d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_mask_rcp28_round_sd (__m128d __W, __mmask8 __U, __m128d __A, - __m128d __B, int __R) -{ - return (__m128d) __builtin_ia32_rcp28sd_mask_round ((__v2df) __B, - (__v2df) __A, - (__v2df) __W, - __U, - __R); -} - -extern __inline __m128d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_maskz_rcp28_round_sd (__mmask8 __U, __m128d __A, __m128d __B, int __R) -{ - return (__m128d) __builtin_ia32_rcp28sd_mask_round ((__v2df) __B, - (__v2df) __A, - (__v2df) - _mm_setzero_pd (), - __U, - __R); -} - -extern __inline __m128 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_rcp28_round_ss (__m128 __A, __m128 __B, int __R) -{ - return (__m128) __builtin_ia32_rcp28ss_round ((__v4sf) __B, - (__v4sf) __A, - __R); -} - -extern __inline __m128 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_mask_rcp28_round_ss (__m128 __W, __mmask8 __U, __m128 __A, - __m128 __B, int __R) -{ - return (__m128) __builtin_ia32_rcp28ss_mask_round ((__v4sf) __B, - (__v4sf) __A, - (__v4sf) __W, - __U, - __R); -} - -extern __inline __m128 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_maskz_rcp28_round_ss (__mmask8 __U, __m128 __A, __m128 __B, int __R) -{ - return (__m128) __builtin_ia32_rcp28ss_mask_round ((__v4sf) __B, - (__v4sf) __A, - (__v4sf) - _mm_setzero_ps (), - __U, - __R); -} - -extern __inline __m512d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_rsqrt28_round_pd (__m512d __A, int __R) -{ - return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A, - (__v8df) _mm512_undefined_pd (), - (__mmask8) -1, __R); -} - -extern __inline __m512d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_rsqrt28_round_pd (__m512d __W, __mmask8 __U, __m512d __A, int __R) -{ - return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A, - (__v8df) __W, - (__mmask8) __U, __R); -} - -extern __inline __m512d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_rsqrt28_round_pd (__mmask8 __U, __m512d __A, int __R) -{ - return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A, - (__v8df) _mm512_setzero_pd (), - (__mmask8) __U, __R); -} - -extern __inline __m512 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_rsqrt28_round_ps (__m512 __A, int __R) -{ - return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A, - (__v16sf) _mm512_undefined_ps (), - (__mmask16) -1, __R); -} - -extern __inline __m512 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_rsqrt28_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __R) -{ - return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A, - (__v16sf) __W, - (__mmask16) __U, __R); -} - -extern __inline __m512 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_maskz_rsqrt28_round_ps (__mmask16 __U, __m512 __A, int __R) -{ - return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A, - (__v16sf) _mm512_setzero_ps (), - (__mmask16) __U, __R); -} - -extern __inline __m128d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_rsqrt28_round_sd (__m128d __A, __m128d __B, int __R) -{ - return (__m128d) __builtin_ia32_rsqrt28sd_round ((__v2df) __B, - (__v2df) __A, - __R); -} - -extern __inline __m128d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_mask_rsqrt28_round_sd (__m128d __W, __mmask8 __U, __m128d __A, - __m128d __B, int __R) -{ - return (__m128d) __builtin_ia32_rsqrt28sd_mask_round ((__v2df) __B, - (__v2df) __A, - (__v2df) __W, - __U, - __R); -} - -extern __inline __m128d -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_maskz_rsqrt28_round_sd (__mmask8 __U, __m128d __A, __m128d __B, int __R) -{ - return (__m128d) __builtin_ia32_rsqrt28sd_mask_round ((__v2df) __B, - (__v2df) __A, - (__v2df) - _mm_setzero_pd (), - __U, - __R); -} - -extern __inline __m128 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_rsqrt28_round_ss (__m128 __A, __m128 __B, int __R) -{ - return (__m128) __builtin_ia32_rsqrt28ss_round ((__v4sf) __B, - (__v4sf) __A, - __R); -} - -extern __inline __m128 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_mask_rsqrt28_round_ss (__m128 __W, __mmask8 __U, __m128 __A, - __m128 __B, int __R) -{ - return (__m128) __builtin_ia32_rsqrt28ss_mask_round ((__v4sf) __B, - (__v4sf) __A, - (__v4sf) __W, - __U, - __R); -} - -extern __inline __m128 -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm_maskz_rsqrt28_round_ss (__mmask8 __U, __m128 __A, __m128 __B, int __R) -{ - return (__m128) __builtin_ia32_rsqrt28ss_mask_round ((__v4sf) __B, - (__v4sf) __A, - (__v4sf) - _mm_setzero_ps (), - __U, - __R); -} - -#else -#define _mm512_exp2a23_round_pd(A, C) \ - __builtin_ia32_exp2pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C) - -#define _mm512_mask_exp2a23_round_pd(W, U, A, C) \ - __builtin_ia32_exp2pd_mask(A, W, U, C) - -#define _mm512_maskz_exp2a23_round_pd(U, A, C) \ - __builtin_ia32_exp2pd_mask(A, (__v8df)_mm512_setzero_pd(), U, C) - -#define _mm512_exp2a23_round_ps(A, C) \ - __builtin_ia32_exp2ps_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C) - -#define _mm512_mask_exp2a23_round_ps(W, U, A, C) \ - __builtin_ia32_exp2ps_mask(A, W, U, C) - -#define _mm512_maskz_exp2a23_round_ps(U, A, C) \ - __builtin_ia32_exp2ps_mask(A, (__v16sf)_mm512_setzero_ps(), U, C) - -#define _mm512_rcp28_round_pd(A, C) \ - __builtin_ia32_rcp28pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C) - -#define _mm512_mask_rcp28_round_pd(W, U, A, C) \ - __builtin_ia32_rcp28pd_mask(A, W, U, C) - -#define _mm512_maskz_rcp28_round_pd(U, A, C) \ - __builtin_ia32_rcp28pd_mask(A, (__v8df)_mm512_setzero_pd(), U, C) - -#define _mm512_rcp28_round_ps(A, C) \ - __builtin_ia32_rcp28ps_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C) - -#define _mm512_mask_rcp28_round_ps(W, U, A, C) \ - __builtin_ia32_rcp28ps_mask(A, W, U, C) - -#define _mm512_maskz_rcp28_round_ps(U, A, C) \ - __builtin_ia32_rcp28ps_mask(A, (__v16sf)_mm512_setzero_ps(), U, C) - -#define _mm512_rsqrt28_round_pd(A, C) \ - __builtin_ia32_rsqrt28pd_mask(A, (__v8df)_mm512_setzero_pd(), -1, C) - -#define _mm512_mask_rsqrt28_round_pd(W, U, A, C) \ - __builtin_ia32_rsqrt28pd_mask(A, W, U, C) - -#define _mm512_maskz_rsqrt28_round_pd(U, A, C) \ - __builtin_ia32_rsqrt28pd_mask(A, (__v8df)_mm512_setzero_pd(), U, C) - -#define _mm512_rsqrt28_round_ps(A, C) \ - __builtin_ia32_rsqrt28ps_mask(A, (__v16sf)_mm512_setzero_ps(), -1, C) - -#define _mm512_mask_rsqrt28_round_ps(W, U, A, C) \ - __builtin_ia32_rsqrt28ps_mask(A, W, U, C) - -#define _mm512_maskz_rsqrt28_round_ps(U, A, C) \ - __builtin_ia32_rsqrt28ps_mask(A, (__v16sf)_mm512_setzero_ps(), U, C) - -#define _mm_rcp28_round_sd(A, B, R) \ - __builtin_ia32_rcp28sd_round(A, B, R) - -#define _mm_mask_rcp28_round_sd(W, U, A, B, R) \ - __builtin_ia32_rcp28sd_mask_round ((A), (B), (W), (U), (R)) - -#define _mm_maskz_rcp28_round_sd(U, A, B, R) \ - __builtin_ia32_rcp28sd_mask_round ((A), (B), (__v2df) _mm_setzero_pd (), \ - (U), (R)) - -#define _mm_rcp28_round_ss(A, B, R) \ - __builtin_ia32_rcp28ss_round(A, B, R) - -#define _mm_mask_rcp28_round_ss(W, U, A, B, R) \ - __builtin_ia32_rcp28ss_mask_round ((A), (B), (W), (U), (R)) - -#define _mm_maskz_rcp28_round_ss(U, A, B, R) \ - __builtin_ia32_rcp28ss_mask_round ((A), (B), (__v4sf) _mm_setzero_ps (), \ - (U), (R)) - -#define _mm_rsqrt28_round_sd(A, B, R) \ - __builtin_ia32_rsqrt28sd_round(A, B, R) - -#define _mm_mask_rsqrt28_round_sd(W, U, A, B, R) \ - __builtin_ia32_rsqrt28sd_mask_round ((A), (B), (W), (U), (R)) - -#define _mm_maskz_rsqrt28_round_sd(U, A, B, R) \ - __builtin_ia32_rsqrt28sd_mask_round ((A), (B), (__v2df) _mm_setzero_pd (),\ - (U), (R)) - -#define _mm_rsqrt28_round_ss(A, B, R) \ - __builtin_ia32_rsqrt28ss_round(A, B, R) - -#define _mm_mask_rsqrt28_round_ss(W, U, A, B, R) \ - __builtin_ia32_rsqrt28ss_mask_round ((A), (B), (W), (U), (R)) - -#define _mm_maskz_rsqrt28_round_ss(U, A, B, R) \ - __builtin_ia32_rsqrt28ss_mask_round ((A), (B), (__v4sf) _mm_setzero_ps (),\ - (U), (R)) - -#endif - -#define _mm_mask_rcp28_sd(W, U, A, B)\ - _mm_mask_rcp28_round_sd ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION) - -#define _mm_maskz_rcp28_sd(U, A, B)\ - _mm_maskz_rcp28_round_sd ((U), (A), (B), _MM_FROUND_CUR_DIRECTION) - -#define _mm_mask_rcp28_ss(W, U, A, B)\ - _mm_mask_rcp28_round_ss ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION) - -#define _mm_maskz_rcp28_ss(U, A, B)\ - _mm_maskz_rcp28_round_ss ((U), (A), (B), _MM_FROUND_CUR_DIRECTION) - -#define _mm_mask_rsqrt28_sd(W, U, A, B)\ - _mm_mask_rsqrt28_round_sd ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION) - -#define _mm_maskz_rsqrt28_sd(U, A, B)\ - _mm_maskz_rsqrt28_round_sd ((U), (A), (B), _MM_FROUND_CUR_DIRECTION) - -#define _mm_mask_rsqrt28_ss(W, U, A, B)\ - _mm_mask_rsqrt28_round_ss ((W), (U), (A), (B), _MM_FROUND_CUR_DIRECTION) - -#define _mm_maskz_rsqrt28_ss(U, A, B)\ - _mm_maskz_rsqrt28_round_ss ((U), (A), (B), _MM_FROUND_CUR_DIRECTION) - -#define _mm512_exp2a23_pd(A) \ - _mm512_exp2a23_round_pd(A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_mask_exp2a23_pd(W, U, A) \ - _mm512_mask_exp2a23_round_pd(W, U, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_maskz_exp2a23_pd(U, A) \ - _mm512_maskz_exp2a23_round_pd(U, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_exp2a23_ps(A) \ - _mm512_exp2a23_round_ps(A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_mask_exp2a23_ps(W, U, A) \ - _mm512_mask_exp2a23_round_ps(W, U, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_maskz_exp2a23_ps(U, A) \ - _mm512_maskz_exp2a23_round_ps(U, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_rcp28_pd(A) \ - _mm512_rcp28_round_pd(A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_mask_rcp28_pd(W, U, A) \ - _mm512_mask_rcp28_round_pd(W, U, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_maskz_rcp28_pd(U, A) \ - _mm512_maskz_rcp28_round_pd(U, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_rcp28_ps(A) \ - _mm512_rcp28_round_ps(A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_mask_rcp28_ps(W, U, A) \ - _mm512_mask_rcp28_round_ps(W, U, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_maskz_rcp28_ps(U, A) \ - _mm512_maskz_rcp28_round_ps(U, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_rsqrt28_pd(A) \ - _mm512_rsqrt28_round_pd(A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_mask_rsqrt28_pd(W, U, A) \ - _mm512_mask_rsqrt28_round_pd(W, U, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_maskz_rsqrt28_pd(U, A) \ - _mm512_maskz_rsqrt28_round_pd(U, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_rsqrt28_ps(A) \ - _mm512_rsqrt28_round_ps(A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_mask_rsqrt28_ps(W, U, A) \ - _mm512_mask_rsqrt28_round_ps(W, U, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm512_maskz_rsqrt28_ps(U, A) \ - _mm512_maskz_rsqrt28_round_ps(U, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm_rcp28_sd(A, B) \ - __builtin_ia32_rcp28sd_round(B, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm_rcp28_ss(A, B) \ - __builtin_ia32_rcp28ss_round(B, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm_rsqrt28_sd(A, B) \ - __builtin_ia32_rsqrt28sd_round(B, A, _MM_FROUND_CUR_DIRECTION) - -#define _mm_rsqrt28_ss(A, B) \ - __builtin_ia32_rsqrt28ss_round(B, A, _MM_FROUND_CUR_DIRECTION) - -#ifdef __DISABLE_AVX512ER__ -#undef __DISABLE_AVX512ER__ -#pragma GCC pop_options -#endif /* __DISABLE_AVX512ER__ */ - -#endif /* _AVX512ERINTRIN_H_INCLUDED */ +#error "AVX512ER support has been removed since GCC 15." diff --git a/gcc/config/i386/avx512pfintrin.h b/gcc/config/i386/avx512pfintrin.h index 5ad87d13eba..7a4959b38d3 100644 --- a/gcc/config/i386/avx512pfintrin.h +++ b/gcc/config/i386/avx512pfintrin.h @@ -21,249 +21,5 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ -#ifndef _IMMINTRIN_H_INCLUDED -#error "Never use directly; include instead." -#endif +#error "AVX512PF support has been removed since GCC 15." -#ifndef _AVX512PFINTRIN_H_INCLUDED -#define _AVX512PFINTRIN_H_INCLUDED - -#ifndef __AVX512PF__ -#pragma GCC push_options -#pragma GCC target("avx512pf,evex512") -#define __DISABLE_AVX512PF__ -#endif /* __AVX512PF__ */ - -/* Internal data types for implementing the intrinsics. */ -typedef long long __v8di __attribute__ ((__vector_size__ (64))); -typedef int __v16si __attribute__ ((__vector_size__ (64))); - -/* The Intel API is flexible enough that we must allow aliasing with other - vector types, and their scalar components. */ -typedef long long __m512i __attribute__ ((__vector_size__ (64), __may_alias__)); - -typedef unsigned char __mmask8; -typedef unsigned short __mmask16; - -#ifdef __OPTIMIZE__ -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_prefetch_i32gather_pd (__m256i __index, void const *__addr, - int __scale, int __hint) -{ - __builtin_ia32_gatherpfdpd ((__mmask8) 0xFF, (__v8si) __index, __addr, - __scale, __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_prefetch_i32gather_ps (__m512i __index, void const *__addr, - int __scale, int __hint) -{ - __builtin_ia32_gatherpfdps ((__mmask16) 0xFFFF, (__v16si) __index, __addr, - __scale, __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_prefetch_i32gather_pd (__m256i __index, __mmask8 __mask, - void const *__addr, int __scale, int __hint) -{ - __builtin_ia32_gatherpfdpd (__mask, (__v8si) __index, __addr, __scale, - __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_prefetch_i32gather_ps (__m512i __index, __mmask16 __mask, - void const *__addr, int __scale, int __hint) -{ - __builtin_ia32_gatherpfdps (__mask, (__v16si) __index, __addr, __scale, - __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_prefetch_i64gather_pd (__m512i __index, void const *__addr, - int __scale, int __hint) -{ - __builtin_ia32_gatherpfqpd ((__mmask8) 0xFF, (__v8di) __index, __addr, - __scale, __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_prefetch_i64gather_ps (__m512i __index, void const *__addr, - int __scale, int __hint) -{ - __builtin_ia32_gatherpfqps ((__mmask8) 0xFF, (__v8di) __index, __addr, - __scale, __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_prefetch_i64gather_pd (__m512i __index, __mmask8 __mask, - void const *__addr, int __scale, int __hint) -{ - __builtin_ia32_gatherpfqpd (__mask, (__v8di) __index, __addr, __scale, - __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_prefetch_i64gather_ps (__m512i __index, __mmask8 __mask, - void const *__addr, int __scale, int __hint) -{ - __builtin_ia32_gatherpfqps (__mask, (__v8di) __index, __addr, __scale, - __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_prefetch_i32scatter_pd (void *__addr, __m256i __index, int __scale, - int __hint) -{ - __builtin_ia32_scatterpfdpd ((__mmask8) 0xFF, (__v8si) __index, __addr, - __scale, __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_prefetch_i32scatter_ps (void *__addr, __m512i __index, int __scale, - int __hint) -{ - __builtin_ia32_scatterpfdps ((__mmask16) 0xFFFF, (__v16si) __index, __addr, - __scale, __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_prefetch_i32scatter_pd (void *__addr, __mmask8 __mask, - __m256i __index, int __scale, int __hint) -{ - __builtin_ia32_scatterpfdpd (__mask, (__v8si) __index, __addr, __scale, - __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_prefetch_i32scatter_ps (void *__addr, __mmask16 __mask, - __m512i __index, int __scale, int __hint) -{ - __builtin_ia32_scatterpfdps (__mask, (__v16si) __index, __addr, __scale, - __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_prefetch_i64scatter_pd (void *__addr, __m512i __index, int __scale, - int __hint) -{ - __builtin_ia32_scatterpfqpd ((__mmask8) 0xFF, (__v8di) __index,__addr, - __scale, __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_prefetch_i64scatter_ps (void *__addr, __m512i __index, int __scale, - int __hint) -{ - __builtin_ia32_scatterpfqps ((__mmask8) 0xFF, (__v8di) __index, __addr, - __scale, __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_prefetch_i64scatter_pd (void *__addr, __mmask8 __mask, - __m512i __index, int __scale, int __hint) -{ - __builtin_ia32_scatterpfqpd (__mask, (__v8di) __index, __addr, __scale, - __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_prefetch_i64scatter_ps (void *__addr, __mmask8 __mask, - __m512i __index, int __scale, int __hint) -{ - __builtin_ia32_scatterpfqps (__mask, (__v8di) __index, __addr, __scale, - __hint); -} - -#else -#define _mm512_prefetch_i32gather_pd(INDEX, ADDR, SCALE, HINT) \ - __builtin_ia32_gatherpfdpd ((__mmask8)0xFF, (__v8si)(__m256i) (INDEX), \ - (void const *) (ADDR), (int) (SCALE), \ - (int) (HINT)) - -#define _mm512_prefetch_i32gather_ps(INDEX, ADDR, SCALE, HINT) \ - __builtin_ia32_gatherpfdps ((__mmask16)0xFFFF, (__v16si)(__m512i) (INDEX), \ - (void const *) (ADDR), (int) (SCALE), \ - (int) (HINT)) - -#define _mm512_mask_prefetch_i32gather_pd(INDEX, MASK, ADDR, SCALE, HINT) \ - __builtin_ia32_gatherpfdpd ((__mmask8) (MASK), (__v8si)(__m256i) (INDEX), \ - (void const *) (ADDR), (int) (SCALE), \ - (int) (HINT)) - -#define _mm512_mask_prefetch_i32gather_ps(INDEX, MASK, ADDR, SCALE, HINT) \ - __builtin_ia32_gatherpfdps ((__mmask16) (MASK), (__v16si)(__m512i) (INDEX),\ - (void const *) (ADDR), (int) (SCALE), \ - (int) (HINT)) - -#define _mm512_prefetch_i64gather_pd(INDEX, ADDR, SCALE, HINT) \ - __builtin_ia32_gatherpfqpd ((__mmask8)0xFF, (__v8di)(__m512i) (INDEX), \ - (void *) (ADDR), (int) (SCALE), (int) (HINT)) - -#define _mm512_prefetch_i64gather_ps(INDEX, ADDR, SCALE, HINT) \ - __builtin_ia32_gatherpfqps ((__mmask8)0xFF, (__v8di)(__m512i) (INDEX), \ - (void *) (ADDR), (int) (SCALE), (int) (HINT)) - -#define _mm512_mask_prefetch_i64gather_pd(INDEX, MASK, ADDR, SCALE, HINT) \ - __builtin_ia32_gatherpfqpd ((__mmask8) (MASK), (__v8di)(__m512i) (INDEX), \ - (void *) (ADDR), (int) (SCALE), (int) (HINT)) - -#define _mm512_mask_prefetch_i64gather_ps(INDEX, MASK, ADDR, SCALE, HINT) \ - __builtin_ia32_gatherpfqps ((__mmask8) (MASK), (__v8di)(__m512i) (INDEX), \ - (void *) (ADDR), (int) (SCALE), (int) (HINT)) - -#define _mm512_prefetch_i32scatter_pd(ADDR, INDEX, SCALE, HINT) \ - __builtin_ia32_scatterpfdpd ((__mmask8)0xFF, (__v8si)(__m256i) (INDEX), \ - (void *) (ADDR), (int) (SCALE), (int) (HINT)) - -#define _mm512_prefetch_i32scatter_ps(ADDR, INDEX, SCALE, HINT) \ - __builtin_ia32_scatterpfdps ((__mmask16)0xFFFF, (__v16si)(__m512i) (INDEX),\ - (void *) (ADDR), (int) (SCALE), (int) (HINT)) - -#define _mm512_mask_prefetch_i32scatter_pd(ADDR, MASK, INDEX, SCALE, HINT) \ - __builtin_ia32_scatterpfdpd ((__mmask8) (MASK), (__v8si)(__m256i) (INDEX), \ - (void *) (ADDR), (int) (SCALE), (int) (HINT)) - -#define _mm512_mask_prefetch_i32scatter_ps(ADDR, MASK, INDEX, SCALE, HINT) \ - __builtin_ia32_scatterpfdps ((__mmask16) (MASK), \ - (__v16si)(__m512i) (INDEX), \ - (void *) (ADDR), (int) (SCALE), (int) (HINT)) - -#define _mm512_prefetch_i64scatter_pd(ADDR, INDEX, SCALE, HINT) \ - __builtin_ia32_scatterpfqpd ((__mmask8)0xFF, (__v8di)(__m512i) (INDEX), \ - (void *) (ADDR), (int) (SCALE), (int) (HINT)) - -#define _mm512_prefetch_i64scatter_ps(ADDR, INDEX, SCALE, HINT) \ - __builtin_ia32_scatterpfqps ((__mmask8)0xFF, (__v8di)(__m512i) (INDEX), \ - (void *) (ADDR), (int) (SCALE), (int) (HINT)) - -#define _mm512_mask_prefetch_i64scatter_pd(ADDR, MASK, INDEX, SCALE, HINT) \ - __builtin_ia32_scatterpfqpd ((__mmask8) (MASK), (__v8di)(__m512i) (INDEX), \ - (void *) (ADDR), (int) (SCALE), (int) (HINT)) - -#define _mm512_mask_prefetch_i64scatter_ps(ADDR, MASK, INDEX, SCALE, HINT) \ - __builtin_ia32_scatterpfqps ((__mmask8) (MASK), (__v8di)(__m512i) (INDEX), \ - (void *) (ADDR), (int) (SCALE), (int) (HINT)) -#endif - -#ifdef __DISABLE_AVX512PF__ -#undef __DISABLE_AVX512PF__ -#pragma GCC pop_options -#endif /* __DISABLE_AVX512PF__ */ - -#endif /* _AVX512PFINTRIN_H_INCLUDED */ diff --git a/gcc/config/i386/cpuid.h b/gcc/config/i386/cpuid.h index efb05f9abd7..1e8060e5cff 100644 --- a/gcc/config/i386/cpuid.h +++ b/gcc/config/i386/cpuid.h @@ -88,15 +88,12 @@ #define bit_AVX512IFMA (1 << 21) #define bit_CLFLUSHOPT (1 << 23) #define bit_CLWB (1 << 24) -#define bit_AVX512PF (1 << 26) -#define bit_AVX512ER (1 << 27) #define bit_AVX512CD (1 << 28) #define bit_SHA (1 << 29) #define bit_AVX512BW (1 << 30) #define bit_AVX512VL (1u << 31) /* %ecx */ -#define bit_PREFETCHWT1 (1 << 0) #define bit_AVX512VBMI (1 << 1) #define bit_PKU (1 << 3) #define bit_OSPKE (1 << 4) @@ -117,8 +114,6 @@ #define bit_ENQCMD (1 << 29) /* %edx */ -#define bit_AVX5124VNNIW (1 << 2) -#define bit_AVX5124FMAPS (1 << 3) #define bit_UINTR (1 << 5) #define bit_AVX512VP2INTERSECT (1 << 8) #define bit_SERIALIZE (1 << 14) diff --git a/gcc/config/i386/driver-i386.cc b/gcc/config/i386/driver-i386.cc index bb53af4b203..0176d8b6cd2 100644 --- a/gcc/config/i386/driver-i386.cc +++ b/gcc/config/i386/driver-i386.cc @@ -23,6 +23,7 @@ along with GCC; see the file COPYING3. If not see #include "system.h" #include "coretypes.h" #include "tm.h" +#include "diagnostic.h" const char *host_detect_local_cpu (int argc, const char **argv); @@ -646,12 +647,13 @@ const char *host_detect_local_cpu (int argc, const char **argv) /* Assume Cannon Lake. */ else if (has_feature (FEATURE_AVX512VBMI)) cpu = "cannonlake"; - /* Assume Knights Mill. */ - else if (has_feature (FEATURE_AVX5124VNNIW)) - cpu = "knm"; - /* Assume Knights Landing. */ - else if (has_feature (FEATURE_AVX512ER)) - cpu = "knl"; + /* Assume Xeon Phi Processors. Support has been removed + since GCC 15. */ + else if (!has_feature (FEATURE_AVX512VL)) + error ("Xeon Phi ISA support has been removed since " + "GCC 15, use GCC 14 for the Xeon Phi ISAs or " + "%<-march=broadwell%> for all the other ISAs " + "supported on this machine."); /* Assume Skylake with AVX-512. */ else cpu = "skylake-avx512"; @@ -901,11 +903,6 @@ const char *host_detect_local_cpu (int argc, const char **argv) avoid unnecessary warnings when building librarys. */ else if (isa_names_table[i].feature != FEATURE_AVX10_1_256 && isa_names_table[i].feature != FEATURE_AVX10_1_512 - && isa_names_table[i].feature != FEATURE_AVX512PF - && isa_names_table[i].feature != FEATURE_AVX512ER - && isa_names_table[i].feature != FEATURE_AVX5124FMAPS - && isa_names_table[i].feature != FEATURE_AVX5124VNNIW - && isa_names_table[i].feature != FEATURE_PREFETCHWT1 && check_avx512_features (cpu_model, cpu_features2, isa_names_table[i].feature)) options = concat (options, neg_option, diff --git a/gcc/config/i386/i386-builtin-types.def b/gcc/config/i386/i386-builtin-types.def index 183029f2c75..5e1245174a3 100644 --- a/gcc/config/i386/i386-builtin-types.def +++ b/gcc/config/i386/i386-builtin-types.def @@ -564,15 +564,6 @@ DEF_FUNCTION_TYPE (VOID, UNSIGNED, UNSIGNED) DEF_FUNCTION_TYPE (VOID, UNSIGNED, UNSIGNED, UNSIGNED) DEF_FUNCTION_TYPE (VOID, PV8DI, V8DI) -DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, V16SF, V16SF, V16SF, PCV4SF, V16SF, UHI) -DEF_FUNCTION_TYPE (V16SF, V16SF, V16SF, V16SF, V16SF, V16SF, PCV4SF) -DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SF, V4SF, V4SF, PCV4SF) -DEF_FUNCTION_TYPE (V4SF, V4SF, V4SF, V4SF, V4SF, V4SF, PCV4SF, V4SF, UQI) - -DEF_FUNCTION_TYPE (V16SI, V16SI, V16SI, V16SI, V16SI, V16SI, PCV4SI, V16SI, UHI) -DEF_FUNCTION_TYPE (V16SI, V16SI, V16SI, V16SI, V16SI, V16SI, PCV4SI) - - # Instructions returning mask DEF_FUNCTION_TYPE (UCHAR, UQI, UQI, PUCHAR) DEF_FUNCTION_TYPE (UCHAR, UQI, UQI) @@ -1147,9 +1138,6 @@ DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4DI, V4SI, INT) DEF_FUNCTION_TYPE (VOID, PVOID, QI, V2DI, V4SI, INT) DEF_FUNCTION_TYPE (VOID, PVOID, QI, V4DI, V4DI, INT) DEF_FUNCTION_TYPE (VOID, PVOID, QI, V2DI, V2DI, INT) -DEF_FUNCTION_TYPE (VOID, QI, V8SI, PCVOID, INT, INT) -DEF_FUNCTION_TYPE (VOID, HI, V16SI, PCVOID, INT, INT) -DEF_FUNCTION_TYPE (VOID, QI, V8DI, PCVOID, INT, INT) DEF_FUNCTION_TYPE (VOID, PUDI, V8HI, UQI) DEF_FUNCTION_TYPE (VOID, PV16QI, V16HI, UHI) diff --git a/gcc/config/i386/i386-builtin.def b/gcc/config/i386/i386-builtin.def index 927a79bb825..a28c48c7566 100644 --- a/gcc/config/i386/i386-builtin.def +++ b/gcc/config/i386/i386-builtin.def @@ -1571,7 +1571,6 @@ BDESC (OPTION_MASK_ISA_AVX512F, OPTION_MASK_ISA2_EVEX512, CODE_FOR_copysignv16sf BDESC (OPTION_MASK_ISA_AVX512F, OPTION_MASK_ISA2_EVEX512, CODE_FOR_copysignv8df3, "__builtin_ia32_copysignpd512", IX86_BUILTIN_CPYSGNPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF) BDESC (OPTION_MASK_ISA_AVX512F, OPTION_MASK_ISA2_EVEX512, CODE_FOR_avx512f_sqrtv8df2, "__builtin_ia32_sqrtpd512", IX86_BUILTIN_SQRTPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF) BDESC (OPTION_MASK_ISA_AVX512F, OPTION_MASK_ISA2_EVEX512, CODE_FOR_sqrtv16sf2, "__builtin_ia32_sqrtps512", IX86_BUILTIN_SQRTPS_NR512, UNKNOWN, (int) V16SF_FTYPE_V16SF) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_exp2v16sf, "__builtin_ia32_exp2ps", IX86_BUILTIN_EXP2PS, UNKNOWN, (int) V16SF_FTYPE_V16SF) BDESC (0, OPTION_MASK_ISA2_AVX512FP16 | OPTION_MASK_ISA2_EVEX512, CODE_FOR_avx512bw_rndscalev32hf, "__builtin_ia32_floorph512", IX86_BUILTIN_FLOORPH512, (enum rtx_code) ROUND_FLOOR, (int) V32HF_FTYPE_V32HF_ROUND) BDESC (0, OPTION_MASK_ISA2_AVX512FP16 | OPTION_MASK_ISA2_EVEX512, CODE_FOR_avx512bw_rndscalev32hf, "__builtin_ia32_ceilph512", IX86_BUILTIN_CEILPH512, (enum rtx_code) ROUND_CEIL, (int) V32HF_FTYPE_V32HF_ROUND) BDESC (0, OPTION_MASK_ISA2_AVX512FP16 | OPTION_MASK_ISA2_EVEX512, CODE_FOR_avx512bw_rndscalev32hf, "__builtin_ia32_truncph512", IX86_BUILTIN_TRUNCPH512, (enum rtx_code) ROUND_TRUNC, (int) V32HF_FTYPE_V32HF_ROUND) @@ -2813,20 +2812,6 @@ BDESC (OPTION_MASK_ISA_AVX512BITALG, OPTION_MASK_ISA2_EVEX512, CODE_FOR_avx512vl BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_vpshufbitqmbv32qi_mask, "__builtin_ia32_vpshufbitqmb256_mask", IX86_BUILTIN_VPSHUFBITQMB256_MASK, UNKNOWN, (int) USI_FTYPE_V32QI_V32QI_USI) BDESC (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_vpshufbitqmbv16qi_mask, "__builtin_ia32_vpshufbitqmb128_mask", IX86_BUILTIN_VPSHUFBITQMB128_MASK, UNKNOWN, (int) UHI_FTYPE_V16QI_V16QI_UHI) -/* AVX512_4FMAPS and AVX512_4VNNIW builtins with variable number of arguments. Defined in additional ix86_isa_flags2. */ -BDESC (0, OPTION_MASK_ISA2_AVX5124FMAPS, CODE_FOR_avx5124fmaddps_4fmaddps_mask, "__builtin_ia32_4fmaddps_mask", IX86_BUILTIN_4FMAPS_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_V16SF_V16SF_PCV4SF_V16SF_UHI) -BDESC (0, OPTION_MASK_ISA2_AVX5124FMAPS, CODE_FOR_avx5124fmaddps_4fmaddps, "__builtin_ia32_4fmaddps", IX86_BUILTIN_4FMAPS, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_V16SF_V16SF_PCV4SF) -BDESC (0, OPTION_MASK_ISA2_AVX5124FMAPS, CODE_FOR_avx5124fmaddps_4fmaddss, "__builtin_ia32_4fmaddss", IX86_BUILTIN_4FMASS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_V4SF_V4SF_V4SF_PCV4SF) -BDESC (0, OPTION_MASK_ISA2_AVX5124FMAPS, CODE_FOR_avx5124fmaddps_4fmaddss_mask, "__builtin_ia32_4fmaddss_mask", IX86_BUILTIN_4FMASS_MASK, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_V4SF_V4SF_V4SF_PCV4SF_V4SF_UQI) -BDESC (0, OPTION_MASK_ISA2_AVX5124FMAPS, CODE_FOR_avx5124fmaddps_4fnmaddps_mask, "__builtin_ia32_4fnmaddps_mask", IX86_BUILTIN_4FNMAPS_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_V16SF_V16SF_PCV4SF_V16SF_UHI) -BDESC (0, OPTION_MASK_ISA2_AVX5124FMAPS, CODE_FOR_avx5124fmaddps_4fnmaddps, "__builtin_ia32_4fnmaddps", IX86_BUILTIN_4FNMAPS, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_V16SF_V16SF_PCV4SF) -BDESC (0, OPTION_MASK_ISA2_AVX5124FMAPS, CODE_FOR_avx5124fmaddps_4fnmaddss, "__builtin_ia32_4fnmaddss", IX86_BUILTIN_4FNMASS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_V4SF_V4SF_V4SF_PCV4SF) -BDESC (0, OPTION_MASK_ISA2_AVX5124FMAPS, CODE_FOR_avx5124fmaddps_4fnmaddss_mask, "__builtin_ia32_4fnmaddss_mask", IX86_BUILTIN_4FNMASS_MASK, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_V4SF_V4SF_V4SF_PCV4SF_V4SF_UQI) -BDESC (0, OPTION_MASK_ISA2_AVX5124VNNIW, CODE_FOR_avx5124vnniw_vp4dpwssd, "__builtin_ia32_vp4dpwssd", IX86_BUILTIN_4DPWSSD, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI) -BDESC (0, OPTION_MASK_ISA2_AVX5124VNNIW, CODE_FOR_avx5124vnniw_vp4dpwssd_mask, "__builtin_ia32_vp4dpwssd_mask", IX86_BUILTIN_4DPWSSD_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI_V16SI_UHI) -BDESC (0, OPTION_MASK_ISA2_AVX5124VNNIW, CODE_FOR_avx5124vnniw_vp4dpwssds, "__builtin_ia32_vp4dpwssds", IX86_BUILTIN_4DPWSSDS, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI) -BDESC (0, OPTION_MASK_ISA2_AVX5124VNNIW, CODE_FOR_avx5124vnniw_vp4dpwssds_mask, "__builtin_ia32_vp4dpwssds_mask", IX86_BUILTIN_4DPWSSDS_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SI_V16SI_V16SI_V16SI_V16SI_PCV4SI_V16SI_UHI) - /* RDPID. */ BDESC (0, OPTION_MASK_ISA2_RDPID, CODE_FOR_rdpid, "__builtin_ia32_rdpid", IX86_BUILTIN_RDPID, UNKNOWN, (int) UNSIGNED_FTYPE_VOID) @@ -3194,22 +3179,6 @@ BDESC (OPTION_MASK_ISA_AVX512F, OPTION_MASK_ISA2_EVEX512, CODE_FOR_avx512f_fnmsu BDESC (OPTION_MASK_ISA_AVX512F, OPTION_MASK_ISA2_EVEX512, CODE_FOR_avx512f_fnmsub_v16sf_mask3_round, "__builtin_ia32_vfnmsubps512_mask3", IX86_BUILTIN_VFNMSUBPS512_MASK3, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT) BDESC (OPTION_MASK_ISA_AVX512F, OPTION_MASK_ISA2_EVEX512, CODE_FOR_avx512f_fnmsub_v16sf_maskz_round, "__builtin_ia32_vfnmsubps512_maskz", IX86_BUILTIN_VFNMSUBPS512_MASKZ, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_V16SF_HI_INT) -/* AVX512ER */ -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_exp2v8df_mask_round, "__builtin_ia32_exp2pd_mask", IX86_BUILTIN_EXP2PD_MASK, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_exp2v16sf_mask_round, "__builtin_ia32_exp2ps_mask", IX86_BUILTIN_EXP2PS_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_rcp28v8df_mask_round, "__builtin_ia32_rcp28pd_mask", IX86_BUILTIN_RCP28PD, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_rcp28v16sf_mask_round, "__builtin_ia32_rcp28ps_mask", IX86_BUILTIN_RCP28PS, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrcp28v2df_round, "__builtin_ia32_rcp28sd_round", IX86_BUILTIN_RCP28SD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrcp28v2df_mask_round, "__builtin_ia32_rcp28sd_mask_round", IX86_BUILTIN_RCP28SD_MASK_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrcp28v4sf_round, "__builtin_ia32_rcp28ss_round", IX86_BUILTIN_RCP28SS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrcp28v4sf_mask_round, "__builtin_ia32_rcp28ss_mask_round", IX86_BUILTIN_RCP28SS_MASK_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_rsqrt28v8df_mask_round, "__builtin_ia32_rsqrt28pd_mask", IX86_BUILTIN_RSQRT28PD, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_QI_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_rsqrt28v16sf_mask_round, "__builtin_ia32_rsqrt28ps_mask", IX86_BUILTIN_RSQRT28PS, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_HI_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrsqrt28v2df_round, "__builtin_ia32_rsqrt28sd_round", IX86_BUILTIN_RSQRT28SD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrsqrt28v2df_mask_round, "__builtin_ia32_rsqrt28sd_mask_round", IX86_BUILTIN_RSQRT28SD_MASK_ROUND, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrsqrt28v4sf_round, "__builtin_ia32_rsqrt28ss_round", IX86_BUILTIN_RSQRT28SS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT) -BDESC (OPTION_MASK_ISA_AVX512ER, 0, CODE_FOR_avx512er_vmrsqrt28v4sf_mask_round, "__builtin_ia32_rsqrt28ss_mask_round", IX86_BUILTIN_RSQRT28SS_MASK_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT) - /* AVX512DQ. */ BDESC (OPTION_MASK_ISA_AVX512DQ, OPTION_MASK_ISA2_EVEX512, CODE_FOR_reducepv8df_mask_round, "__builtin_ia32_reducepd512_mask_round", IX86_BUILTIN_REDUCEPD512_MASK_ROUND, UNKNOWN, (int) V8DF_FTYPE_V8DF_INT_V8DF_UQI_INT) BDESC (OPTION_MASK_ISA_AVX512DQ, OPTION_MASK_ISA2_EVEX512, CODE_FOR_reducepv16sf_mask_round, "__builtin_ia32_reduceps512_mask_round", IX86_BUILTIN_REDUCEPS512_MASK_ROUND, UNKNOWN, (int) V16SF_FTYPE_V16SF_INT_V16SF_UHI_INT) diff --git a/gcc/config/i386/i386-builtins.cc b/gcc/config/i386/i386-builtins.cc index 8b79d335c88..a76451f5949 100644 --- a/gcc/config/i386/i386-builtins.cc +++ b/gcc/config/i386/i386-builtins.cc @@ -1095,32 +1095,6 @@ ix86_init_mmx_sse_builtins (void) VOID_FTYPE_PINT_QI_V2DI_V4SI_INT, IX86_BUILTIN_SCATTERALTDIV4SI); - /* AVX512PF */ - def_builtin (OPTION_MASK_ISA_AVX512PF, 0, "__builtin_ia32_gatherpfdpd", - VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, - IX86_BUILTIN_GATHERPFDPD); - def_builtin (OPTION_MASK_ISA_AVX512PF, 0, "__builtin_ia32_gatherpfdps", - VOID_FTYPE_HI_V16SI_PCVOID_INT_INT, - IX86_BUILTIN_GATHERPFDPS); - def_builtin (OPTION_MASK_ISA_AVX512PF, 0, "__builtin_ia32_gatherpfqpd", - VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, - IX86_BUILTIN_GATHERPFQPD); - def_builtin (OPTION_MASK_ISA_AVX512PF, 0, "__builtin_ia32_gatherpfqps", - VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, - IX86_BUILTIN_GATHERPFQPS); - def_builtin (OPTION_MASK_ISA_AVX512PF, 0, "__builtin_ia32_scatterpfdpd", - VOID_FTYPE_QI_V8SI_PCVOID_INT_INT, - IX86_BUILTIN_SCATTERPFDPD); - def_builtin (OPTION_MASK_ISA_AVX512PF, 0, "__builtin_ia32_scatterpfdps", - VOID_FTYPE_HI_V16SI_PCVOID_INT_INT, - IX86_BUILTIN_SCATTERPFDPS); - def_builtin (OPTION_MASK_ISA_AVX512PF, 0, "__builtin_ia32_scatterpfqpd", - VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, - IX86_BUILTIN_SCATTERPFQPD); - def_builtin (OPTION_MASK_ISA_AVX512PF, 0, "__builtin_ia32_scatterpfqps", - VOID_FTYPE_QI_V8DI_PCVOID_INT_INT, - IX86_BUILTIN_SCATTERPFQPS); - /* SHA */ def_builtin_const (OPTION_MASK_ISA_SHA, 0, "__builtin_ia32_sha1msg1", V4SI_FTYPE_V4SI_V4SI, IX86_BUILTIN_SHA1MSG1); diff --git a/gcc/config/i386/i386-c.cc b/gcc/config/i386/i386-c.cc index 07f4936ba91..7b0ad9e9181 100644 --- a/gcc/config/i386/i386-c.cc +++ b/gcc/config/i386/i386-c.cc @@ -222,13 +222,6 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, def_or_undef (parse_in, "__clearwaterforest"); def_or_undef (parse_in, "__clearwaterforest__"); break; - case PROCESSOR_KNL: - def_or_undef (parse_in, "__knl"); - def_or_undef (parse_in, "__knl__"); - break; - case PROCESSOR_KNM: - def_or_undef (parse_in, "__knm"); - def_or_undef (parse_in, "__knm__"); break; case PROCESSOR_SKYLAKE: def_or_undef (parse_in, "__skylake"); @@ -440,12 +433,6 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, case PROCESSOR_CLEARWATERFOREST: def_or_undef (parse_in, "__tune_clearwaterforest__"); break; - case PROCESSOR_KNL: - def_or_undef (parse_in, "__tune_knl__"); - break; - case PROCESSOR_KNM: - def_or_undef (parse_in, "__tune_knm__"); - break; case PROCESSOR_SKYLAKE: def_or_undef (parse_in, "__tune_skylake__"); break; @@ -563,12 +550,8 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, def_or_undef (parse_in, "__AVX2__"); if (isa_flag & OPTION_MASK_ISA_AVX512F) def_or_undef (parse_in, "__AVX512F__"); - if (isa_flag & OPTION_MASK_ISA_AVX512ER) - def_or_undef (parse_in, "__AVX512ER__"); if (isa_flag & OPTION_MASK_ISA_AVX512CD) def_or_undef (parse_in, "__AVX512CD__"); - if (isa_flag & OPTION_MASK_ISA_AVX512PF) - def_or_undef (parse_in, "__AVX512PF__"); if (isa_flag & OPTION_MASK_ISA_AVX512DQ) def_or_undef (parse_in, "__AVX512DQ__"); if (isa_flag & OPTION_MASK_ISA_AVX512BW) @@ -582,8 +565,6 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, def_or_undef (parse_in, "__AVX512VBMI__"); if (isa_flag & OPTION_MASK_ISA_AVX512IFMA) def_or_undef (parse_in, "__AVX512IFMA__"); - if (isa_flag2 & OPTION_MASK_ISA2_AVX5124VNNIW) - def_or_undef (parse_in, "__AVX5124VNNIW__"); if (isa_flag & OPTION_MASK_ISA_AVX512VBMI2) def_or_undef (parse_in, "__AVX512VBMI2__"); if (isa_flag & OPTION_MASK_ISA_AVX512VNNI) @@ -592,8 +573,6 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, def_or_undef (parse_in, "__PCONFIG__"); if (isa_flag2 & OPTION_MASK_ISA2_SGX) def_or_undef (parse_in, "__SGX__"); - if (isa_flag2 & OPTION_MASK_ISA2_AVX5124FMAPS) - def_or_undef (parse_in, "__AVX5124FMAPS__"); if (isa_flag & OPTION_MASK_ISA_AVX512BITALG) def_or_undef (parse_in, "__AVX512BITALG__"); if (isa_flag & OPTION_MASK_ISA_AVX512VPOPCNTDQ) @@ -642,8 +621,6 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag, def_or_undef (parse_in, "__XSAVE__"); if (isa_flag & OPTION_MASK_ISA_XSAVEOPT) def_or_undef (parse_in, "__XSAVEOPT__"); - if (isa_flag & OPTION_MASK_ISA_PREFETCHWT1) - def_or_undef (parse_in, "__PREFETCHWT1__"); if ((fpmath & FPMATH_SSE) && (isa_flag & OPTION_MASK_ISA_SSE)) def_or_undef (parse_in, "__SSE_MATH__"); if ((fpmath & FPMATH_SSE) && (isa_flag & OPTION_MASK_ISA_SSE2)) diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc index 4e16aedc5c1..100fb2afb3a 100644 --- a/gcc/config/i386/i386-expand.cc +++ b/gcc/config/i386/i386-expand.cc @@ -13648,7 +13648,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget, } if (TARGET_3DNOW || TARGET_PREFETCH_SSE - || TARGET_PRFCHW || TARGET_PREFETCHWT1) + || TARGET_PRFCHW) emit_insn (gen_prefetch (op0, op1, op2)); else if (!MEM_P (op0) && side_effects_p (op0)) /* Don't do anything with direct references to volatile memory, @@ -14836,9 +14836,6 @@ rdseed_step: case IX86_BUILTIN_SCATTERDIV2DI: icode = CODE_FOR_avx512vl_scatterdiv2di; goto scatter_gen; - case IX86_BUILTIN_GATHERPFDPD: - icode = CODE_FOR_avx512pf_gatherpfv8sidf; - goto vec_prefetch_gen; case IX86_BUILTIN_SCATTERALTSIV8DF: icode = CODE_FOR_avx512f_scattersiv8df; goto scatter_gen; @@ -14875,27 +14872,6 @@ rdseed_step: case IX86_BUILTIN_SCATTERALTDIV4SI: icode = CODE_FOR_avx512vl_scatterdiv4si; goto scatter_gen; - case IX86_BUILTIN_GATHERPFDPS: - icode = CODE_FOR_avx512pf_gatherpfv16sisf; - goto vec_prefetch_gen; - case IX86_BUILTIN_GATHERPFQPD: - icode = CODE_FOR_avx512pf_gatherpfv8didf; - goto vec_prefetch_gen; - case IX86_BUILTIN_GATHERPFQPS: - icode = CODE_FOR_avx512pf_gatherpfv8disf; - goto vec_prefetch_gen; - case IX86_BUILTIN_SCATTERPFDPD: - icode = CODE_FOR_avx512pf_scatterpfv8sidf; - goto vec_prefetch_gen; - case IX86_BUILTIN_SCATTERPFDPS: - icode = CODE_FOR_avx512pf_scatterpfv16sisf; - goto vec_prefetch_gen; - case IX86_BUILTIN_SCATTERPFQPD: - icode = CODE_FOR_avx512pf_scatterpfv8didf; - goto vec_prefetch_gen; - case IX86_BUILTIN_SCATTERPFQPS: - icode = CODE_FOR_avx512pf_scatterpfv8disf; - goto vec_prefetch_gen; gather_gen: rtx half; @@ -15233,66 +15209,6 @@ rdseed_step: emit_insn (pat); return 0; - vec_prefetch_gen: - arg0 = CALL_EXPR_ARG (exp, 0); - arg1 = CALL_EXPR_ARG (exp, 1); - arg2 = CALL_EXPR_ARG (exp, 2); - arg3 = CALL_EXPR_ARG (exp, 3); - arg4 = CALL_EXPR_ARG (exp, 4); - op0 = expand_normal (arg0); - op1 = expand_normal (arg1); - op2 = expand_normal (arg2); - op3 = expand_normal (arg3); - op4 = expand_normal (arg4); - mode0 = insn_data[icode].operand[0].mode; - mode1 = insn_data[icode].operand[1].mode; - mode3 = insn_data[icode].operand[3].mode; - mode4 = insn_data[icode].operand[4].mode; - - op0 = fixup_modeless_constant (op0, mode0); - - if (GET_MODE (op0) == mode0 || GET_MODE (op0) == VOIDmode) - { - if (!insn_data[icode].operand[0].predicate (op0, mode0)) - op0 = copy_to_mode_reg (mode0, op0); - } - else - { - op0 = copy_to_reg (op0); - op0 = lowpart_subreg (mode0, op0, GET_MODE (op0)); - } - - if (!insn_data[icode].operand[1].predicate (op1, mode1)) - op1 = copy_to_mode_reg (mode1, op1); - - /* Force memory operand only with base register here. But we - don't want to do it on memory operand for other builtin - functions. */ - op2 = force_reg (Pmode, convert_to_mode (Pmode, op2, 1)); - - if (!insn_data[icode].operand[2].predicate (op2, Pmode)) - op2 = copy_to_mode_reg (Pmode, op2); - - if (!insn_data[icode].operand[3].predicate (op3, mode3)) - { - error ("the forth argument must be scale 1, 2, 4, 8"); - return const0_rtx; - } - - if (!insn_data[icode].operand[4].predicate (op4, mode4)) - { - error ("incorrect hint operand"); - return const0_rtx; - } - - pat = GEN_FCN (icode) (op0, op1, op2, op3, op4); - if (! pat) - return const0_rtx; - - emit_insn (pat); - - return 0; - case IX86_BUILTIN_XABORT: icode = CODE_FOR_xabort; arg0 = CALL_EXPR_ARG (exp, 0); @@ -15410,229 +15326,9 @@ rdseed_step: && fcode <= IX86_BUILTIN__BDESC_ARGS_LAST) { i = fcode - IX86_BUILTIN__BDESC_ARGS_FIRST; - rtx (*fcn) (rtx, rtx, rtx, rtx) = NULL; - rtx (*fcn_mask) (rtx, rtx, rtx, rtx, rtx); - rtx (*fcn_maskz) (rtx, rtx, rtx, rtx, rtx, rtx); - int masked = 1; - machine_mode mode, wide_mode, nar_mode; - - nar_mode = V4SFmode; - mode = V16SFmode; - wide_mode = V64SFmode; - fcn_mask = gen_avx5124fmaddps_4fmaddps_mask; - fcn_maskz = gen_avx5124fmaddps_4fmaddps_maskz; switch (fcode) { - case IX86_BUILTIN_4FMAPS: - fcn = gen_avx5124fmaddps_4fmaddps; - masked = 0; - goto v4fma_expand; - - case IX86_BUILTIN_4DPWSSD: - nar_mode = V4SImode; - mode = V16SImode; - wide_mode = V64SImode; - fcn = gen_avx5124vnniw_vp4dpwssd; - masked = 0; - goto v4fma_expand; - - case IX86_BUILTIN_4DPWSSDS: - nar_mode = V4SImode; - mode = V16SImode; - wide_mode = V64SImode; - fcn = gen_avx5124vnniw_vp4dpwssds; - masked = 0; - goto v4fma_expand; - - case IX86_BUILTIN_4FNMAPS: - fcn = gen_avx5124fmaddps_4fnmaddps; - masked = 0; - goto v4fma_expand; - - case IX86_BUILTIN_4FNMAPS_MASK: - fcn_mask = gen_avx5124fmaddps_4fnmaddps_mask; - fcn_maskz = gen_avx5124fmaddps_4fnmaddps_maskz; - goto v4fma_expand; - - case IX86_BUILTIN_4DPWSSD_MASK: - nar_mode = V4SImode; - mode = V16SImode; - wide_mode = V64SImode; - fcn_mask = gen_avx5124vnniw_vp4dpwssd_mask; - fcn_maskz = gen_avx5124vnniw_vp4dpwssd_maskz; - goto v4fma_expand; - - case IX86_BUILTIN_4DPWSSDS_MASK: - nar_mode = V4SImode; - mode = V16SImode; - wide_mode = V64SImode; - fcn_mask = gen_avx5124vnniw_vp4dpwssds_mask; - fcn_maskz = gen_avx5124vnniw_vp4dpwssds_maskz; - goto v4fma_expand; - - case IX86_BUILTIN_4FMAPS_MASK: - { - tree args[4]; - rtx ops[4]; - rtx wide_reg; - rtx accum; - rtx addr; - rtx mem; - -v4fma_expand: - wide_reg = gen_reg_rtx (wide_mode); - for (i = 0; i < 4; i++) - { - args[i] = CALL_EXPR_ARG (exp, i); - ops[i] = expand_normal (args[i]); - - emit_move_insn (gen_rtx_SUBREG (mode, wide_reg, i * 64), - ops[i]); - } - - accum = expand_normal (CALL_EXPR_ARG (exp, 4)); - accum = force_reg (mode, accum); - - addr = expand_normal (CALL_EXPR_ARG (exp, 5)); - addr = force_reg (Pmode, addr); - - mem = gen_rtx_MEM (nar_mode, addr); - - target = gen_reg_rtx (mode); - - emit_move_insn (target, accum); - - if (! masked) - emit_insn (fcn (target, accum, wide_reg, mem)); - else - { - rtx merge, mask; - merge = expand_normal (CALL_EXPR_ARG (exp, 6)); - - mask = expand_normal (CALL_EXPR_ARG (exp, 7)); - - if (CONST_INT_P (mask)) - mask = fixup_modeless_constant (mask, HImode); - - mask = force_reg (HImode, mask); - - if (GET_MODE (mask) != HImode) - mask = gen_rtx_SUBREG (HImode, mask, 0); - - /* If merge is 0 then we're about to emit z-masked variant. */ - if (const0_operand (merge, mode)) - emit_insn (fcn_maskz (target, accum, wide_reg, mem, merge, mask)); - /* If merge is the same as accum then emit merge-masked variant. */ - else if (CALL_EXPR_ARG (exp, 6) == CALL_EXPR_ARG (exp, 4)) - { - merge = force_reg (mode, merge); - emit_insn (fcn_mask (target, wide_reg, mem, merge, mask)); - } - /* Merge with something unknown might happen if we z-mask w/ -O0. */ - else - { - target = gen_reg_rtx (mode); - emit_move_insn (target, merge); - emit_insn (fcn_mask (target, wide_reg, mem, target, mask)); - } - } - return target; - } - - case IX86_BUILTIN_4FNMASS: - fcn = gen_avx5124fmaddps_4fnmaddss; - masked = 0; - goto s4fma_expand; - - case IX86_BUILTIN_4FMASS: - fcn = gen_avx5124fmaddps_4fmaddss; - masked = 0; - goto s4fma_expand; - - case IX86_BUILTIN_4FNMASS_MASK: - fcn_mask = gen_avx5124fmaddps_4fnmaddss_mask; - fcn_maskz = gen_avx5124fmaddps_4fnmaddss_maskz; - goto s4fma_expand; - - case IX86_BUILTIN_4FMASS_MASK: - { - tree args[4]; - rtx ops[4]; - rtx wide_reg; - rtx accum; - rtx addr; - rtx mem; - - fcn_mask = gen_avx5124fmaddps_4fmaddss_mask; - fcn_maskz = gen_avx5124fmaddps_4fmaddss_maskz; - -s4fma_expand: - mode = V4SFmode; - wide_reg = gen_reg_rtx (V64SFmode); - for (i = 0; i < 4; i++) - { - rtx tmp; - args[i] = CALL_EXPR_ARG (exp, i); - ops[i] = expand_normal (args[i]); - - tmp = gen_reg_rtx (SFmode); - emit_move_insn (tmp, gen_rtx_SUBREG (SFmode, ops[i], 0)); - - emit_move_insn (gen_rtx_SUBREG (V16SFmode, wide_reg, i * 64), - gen_rtx_SUBREG (V16SFmode, tmp, 0)); - } - - accum = expand_normal (CALL_EXPR_ARG (exp, 4)); - accum = force_reg (V4SFmode, accum); - - addr = expand_normal (CALL_EXPR_ARG (exp, 5)); - addr = force_reg (Pmode, addr); - - mem = gen_rtx_MEM (V4SFmode, addr); - - target = gen_reg_rtx (V4SFmode); - - emit_move_insn (target, accum); - - if (! masked) - emit_insn (fcn (target, accum, wide_reg, mem)); - else - { - rtx merge, mask; - merge = expand_normal (CALL_EXPR_ARG (exp, 6)); - - mask = expand_normal (CALL_EXPR_ARG (exp, 7)); - - if (CONST_INT_P (mask)) - mask = fixup_modeless_constant (mask, QImode); - - mask = force_reg (QImode, mask); - - if (GET_MODE (mask) != QImode) - mask = gen_rtx_SUBREG (QImode, mask, 0); - - /* If merge is 0 then we're about to emit z-masked variant. */ - if (const0_operand (merge, mode)) - emit_insn (fcn_maskz (target, accum, wide_reg, mem, merge, mask)); - /* If merge is the same as accum then emit merge-masked - variant. */ - else if (CALL_EXPR_ARG (exp, 6) == CALL_EXPR_ARG (exp, 4)) - { - merge = force_reg (mode, merge); - emit_insn (fcn_mask (target, wide_reg, mem, merge, mask)); - } - /* Merge with something unknown might happen if we z-mask - w/ -O0. */ - else - { - target = gen_reg_rtx (mode); - emit_move_insn (target, merge); - emit_insn (fcn_mask (target, wide_reg, mem, target, mask)); - } - } - return target; - } case IX86_BUILTIN_RDPID: return ix86_expand_special_args_builtin (bdesc_args + i, exp, target); @@ -18977,17 +18673,8 @@ ix86_emit_swdivsf (rtx res, rtx a, rtx b, machine_mode mode) /* x0 = rcp(b) estimate */ if (mode == V16SFmode || mode == V8DFmode) { - if (TARGET_AVX512ER) - { - emit_insn (gen_rtx_SET (x0, gen_rtx_UNSPEC (mode, gen_rtvec (1, b), - UNSPEC_RCP28))); - /* res = a * x0 */ - emit_insn (gen_rtx_SET (res, gen_rtx_MULT (mode, a, x0))); - return; - } - else - emit_insn (gen_rtx_SET (x0, gen_rtx_UNSPEC (mode, gen_rtvec (1, b), - UNSPEC_RCP14))); + emit_insn (gen_rtx_SET (x0, gen_rtx_UNSPEC (mode, gen_rtvec (1, b), + UNSPEC_RCP14))); } else emit_insn (gen_rtx_SET (x0, gen_rtx_UNSPEC (mode, gen_rtvec (1, b), @@ -19025,24 +18712,6 @@ ix86_emit_swsqrtsf (rtx res, rtx a, machine_mode mode, bool recip) e2 = gen_reg_rtx (mode); e3 = gen_reg_rtx (mode); - if (TARGET_AVX512ER && mode == V16SFmode) - { - if (recip) - /* res = rsqrt28(a) estimate */ - emit_insn (gen_rtx_SET (res, gen_rtx_UNSPEC (mode, gen_rtvec (1, a), - UNSPEC_RSQRT28))); - else - { - /* x0 = rsqrt28(a) estimate */ - emit_insn (gen_rtx_SET (x0, gen_rtx_UNSPEC (mode, gen_rtvec (1, a), - UNSPEC_RSQRT28))); - /* res = rcp28(x0) estimate */ - emit_insn (gen_rtx_SET (res, gen_rtx_UNSPEC (mode, gen_rtvec (1, x0), - UNSPEC_RCP28))); - } - return; - } - real_from_integer (&r, VOIDmode, -3, SIGNED); mthree = const_double_from_real_value (r, SFmode); diff --git a/gcc/config/i386/i386-isa.def b/gcc/config/i386/i386-isa.def index 9100bc65ecd..61983f86439 100644 --- a/gcc/config/i386/i386-isa.def +++ b/gcc/config/i386/i386-isa.def @@ -58,12 +58,9 @@ DEF_PTA(FXSR) DEF_PTA(XSAVE) DEF_PTA(XSAVEOPT) DEF_PTA(AVX512F) -DEF_PTA(AVX512ER) -DEF_PTA(AVX512PF) DEF_PTA(AVX512CD) DEF_PTA(NO_TUNE) DEF_PTA(SHA) -DEF_PTA(PREFETCHWT1) DEF_PTA(CLFLUSHOPT) DEF_PTA(XSAVEC) DEF_PTA(XSAVES) @@ -77,8 +74,6 @@ DEF_PTA(MWAITX) DEF_PTA(CLZERO) DEF_PTA(NO_80387) DEF_PTA(PKU) -DEF_PTA(AVX5124VNNIW) -DEF_PTA(AVX5124FMAPS) DEF_PTA(AVX512VPOPCNTDQ) DEF_PTA(SGX) DEF_PTA(AVX512VNNI) diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc index ac48b5c61c4..78602a17f7e 100644 --- a/gcc/config/i386/i386-options.cc +++ b/gcc/config/i386/i386-options.cc @@ -115,8 +115,6 @@ along with GCC; see the file COPYING3. If not see #define m_HASWELL (HOST_WIDE_INT_1U< is deprecated; use " "% or %" " instead as appropriate")); - else if (!strcmp (opts->x_ix86_tune_string, "knl")) - warning (OPT_Wdeprecated, - main_args_p - ? G_("%<-mtune=knl%> support will be removed in GCC 15") - : G_("% support will be removed in " - "GCC 15")); - else if (!strcmp (opts->x_ix86_tune_string, "knm")) - warning (OPT_Wdeprecated, - main_args_p - ? G_("%<-mtune=knm%> support will be removed in GCC 15") - : G_("% support will be removed in " - "GCC 15")); } else { @@ -2326,19 +2300,6 @@ ix86_option_override_internal (bool main_args_p, return false; } - if (!strcmp (opts->x_ix86_arch_string, "knl")) - warning (OPT_Wdeprecated, - main_args_p - ? G_("%<-march=knl%> support will be removed in GCC 15") - : G_("% support will be removed in " - "GCC 15")); - else if (!strcmp (opts->x_ix86_arch_string, "knm")) - warning (OPT_Wdeprecated, - main_args_p - ? G_("%<-march=knm%> support will be removed in GCC 15") - : G_("% support will be removed in " - "GCC 15")); - ix86_schedule = processor_alias_table[i].schedule; ix86_arch = processor_alias_table[i].processor; @@ -2631,8 +2592,7 @@ ix86_option_override_internal (bool main_args_p, /* Enable SSE prefetch. */ if (TARGET_SSE_P (opts->x_ix86_isa_flags) || (TARGET_PRFCHW_P (opts->x_ix86_isa_flags) - && !TARGET_3DNOW_P (opts->x_ix86_isa_flags)) - || TARGET_PREFETCHWT1_P (opts->x_ix86_isa_flags)) + && !TARGET_3DNOW_P (opts->x_ix86_isa_flags))) ix86_prefetch_sse = true; /* Enable mwait/monitor instructions for -msse3. */ @@ -2757,15 +2717,6 @@ ix86_option_override_internal (bool main_args_p, opts->x_ix86_isa_flags2 |= avx512_isa_flags2; } - /* Disable AVX512{PF,ER,4VNNIW,4FAMPS} for -mno-evex512. */ - if (!TARGET_EVEX512_P(opts->x_ix86_isa_flags2)) - { - opts->x_ix86_isa_flags - &= ~(OPTION_MASK_ISA_AVX512PF | OPTION_MASK_ISA_AVX512ER); - opts->x_ix86_isa_flags2 - &= ~(OPTION_MASK_ISA2_AVX5124FMAPS | OPTION_MASK_ISA2_AVX5124VNNIW); - } - /* Validate -mpreferred-stack-boundary= value or default it to PREFERRED_STACK_BOUNDARY_DEFAULT. */ ix86_preferred_stack_boundary = PREFERRED_STACK_BOUNDARY_DEFAULT; @@ -2982,7 +2933,6 @@ ix86_option_override_internal (bool main_args_p, sorry ("%<-mcall-ms2sysv-xlogues%> isn%'t currently supported with SEH"); if (!(opts_set->x_target_flags & MASK_VZEROUPPER) - && TARGET_EMIT_VZEROUPPER && flag_expensive_optimizations && !optimize_size) opts->x_target_flags |= MASK_VZEROUPPER; diff --git a/gcc/config/i386/i386-rust.cc b/gcc/config/i386/i386-rust.cc index 00038482fe0..e6173e69db4 100644 --- a/gcc/config/i386/i386-rust.cc +++ b/gcc/config/i386/i386-rust.cc @@ -59,12 +59,8 @@ ix86_rust_target_cpu_info (void) rust_add_target_info ("target_feature", "avx2"); if (TARGET_AVX512F) rust_add_target_info ("target_feature", "avx512f"); - if (TARGET_AVX512ER) - rust_add_target_info ("target_feature", "avx512er"); if (TARGET_AVX512CD) rust_add_target_info ("target_feature", "avx512cd"); - if (TARGET_AVX512PF) - rust_add_target_info ("target_feature", "avx512pf"); if (TARGET_AVX512DQ) rust_add_target_info ("target_feature", "avx512dq"); if (TARGET_AVX512BW) diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc index b4838b7939e..69cd4ae05a7 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -20881,13 +20881,6 @@ ix86_hard_regno_mode_ok (unsigned int regno, machine_mode mode) || VALID_AVX512F_SCALAR_MODE (mode))) return true; - /* For AVX-5124FMAPS or AVX-5124VNNIW - allow V64SF and V64SI modes for special regnos. */ - if ((TARGET_AVX5124FMAPS || TARGET_AVX5124VNNIW) - && (mode == V64SFmode || mode == V64SImode) - && MOD4_SSE_REGNO_P (regno)) - return true; - /* TODO check for QI/HI scalars. */ /* AVX512VL allows sse regs16+ for 128/256 bit modes. */ if (TARGET_AVX512VL diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 529edff93a4..359a8408263 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -447,8 +447,6 @@ extern unsigned char ix86_tune_features[X86_TUNE_LAST]; #define TARGET_ONE_IF_CONV_INSN \ ix86_tune_features[X86_TUNE_ONE_IF_CONV_INSN] #define TARGET_AVOID_MFENCE ix86_tune_features[X86_TUNE_AVOID_MFENCE] -#define TARGET_EMIT_VZEROUPPER \ - ix86_tune_features[X86_TUNE_EMIT_VZEROUPPER] #define TARGET_EXPAND_ABS \ ix86_tune_features[X86_TUNE_EXPAND_ABS] #define TARGET_V2DF_REDUCTION_PREFER_HADDPD \ @@ -2284,8 +2282,6 @@ enum processor_type PROCESSOR_SIERRAFOREST, PROCESSOR_GRANDRIDGE, PROCESSOR_CLEARWATERFOREST, - PROCESSOR_KNL, - PROCESSOR_KNM, PROCESSOR_SKYLAKE, PROCESSOR_SKYLAKE_AVX512, PROCESSOR_CANNONLAKE, @@ -2395,8 +2391,6 @@ constexpr wide_int_bitmask PTA_SAPPHIRERAPIDS = PTA_ICELAKE_SERVER | PTA_MOVDIRI | PTA_MOVDIR64B | PTA_ENQCMD | PTA_CLDEMOTE | PTA_PTWRITE | PTA_WAITPKG | PTA_SERIALIZE | PTA_TSXLDTRK | PTA_AMX_TILE | PTA_AMX_INT8 | PTA_AMX_BF16 | PTA_UINTR | PTA_AVXVNNI | PTA_AVX512FP16 | PTA_AVX512BF16; -constexpr wide_int_bitmask PTA_KNL = PTA_BROADWELL | PTA_AVX512PF - | PTA_AVX512ER | PTA_AVX512F | PTA_AVX512CD | PTA_PREFETCHWT1; constexpr wide_int_bitmask PTA_BONNELL = PTA_CORE2 | PTA_MOVBE; constexpr wide_int_bitmask PTA_SILVERMONT = PTA_WESTMERE | PTA_MOVBE | PTA_RDRND | PTA_PRFCHW; @@ -2426,8 +2420,6 @@ constexpr wide_int_bitmask PTA_CLEARWATERFOREST = PTA_SIERRAFOREST | PTA_AVXVNNIINT16 | PTA_SHA512 | PTA_SM3 | PTA_SM4 | PTA_USER_MSR | PTA_PREFETCHI; constexpr wide_int_bitmask PTA_PANTHERLAKE = PTA_ARROWLAKE_S | PTA_PREFETCHI; -constexpr wide_int_bitmask PTA_KNM = PTA_KNL | PTA_AVX5124VNNIW - | PTA_AVX5124FMAPS | PTA_AVX512VPOPCNTDQ; constexpr wide_int_bitmask PTA_ZNVER1 = PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1 | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_AVX2 | PTA_BMI | PTA_BMI2 diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 764bfe20ff2..e8073f5a200 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -27045,7 +27045,7 @@ [(prefetch (match_operand 0 "address_operand") (match_operand:SI 1 "const_int_operand") (match_operand:SI 2 "const_int_operand"))] - "TARGET_3DNOW || TARGET_PREFETCH_SSE || TARGET_PRFCHW || TARGET_PREFETCHWT1" + "TARGET_3DNOW || TARGET_PREFETCH_SSE || TARGET_PRFCHW" { bool write = operands[1] != const0_rtx; int locality = INTVAL (operands[2]); @@ -27059,9 +27059,7 @@ if (write) { - if (TARGET_PREFETCHWT1) - operands[2] = GEN_INT (MAX (locality, 2)); - else if (TARGET_PRFCHW) + if (TARGET_PRFCHW) operands[2] = GEN_INT (3); else if (TARGET_3DNOW && !TARGET_SSE2) operands[2] = GEN_INT (3); @@ -27110,7 +27108,7 @@ [(prefetch (match_operand 0 "address_operand" "p") (match_operand:SI 1 "const_int_operand") (const_int 3))] - "TARGET_3DNOW || TARGET_PRFCHW || TARGET_PREFETCHWT1" + "TARGET_3DNOW || TARGET_PRFCHW" { if (operands[1] == const0_rtx) return "prefetch\t%a0"; @@ -27122,17 +27120,6 @@ (symbol_ref "memory_address_length (operands[0], false)")) (set_attr "memory" "none")]) -(define_insn "*prefetch_prefetchwt1" - [(prefetch (match_operand 0 "address_operand" "p") - (const_int 1) - (const_int 2))] - "TARGET_PREFETCHWT1" - "prefetchwt1\t%a0"; - [(set_attr "type" "sse") - (set (attr "length_address") - (symbol_ref "memory_address_length (operands[0], false)")) - (set_attr "memory" "none")]) - (define_insn "prefetchi" [(unspec_volatile [(match_operand 0 "local_func_symbolic_operand" "p") (match_operand:SI 1 "const_int_operand")] diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt index d5f793a9e8b..7151fb1b147 100644 --- a/gcc/config/i386/i386.opt +++ b/gcc/config/i386/i386.opt @@ -741,14 +741,6 @@ mavx512f Target Mask(ISA_AVX512F) Var(ix86_isa_flags) Save Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation. -mavx512pf -Target Mask(ISA_AVX512PF) Var(ix86_isa_flags) Save Warn(AVX512PF support will be removed in GCC 15) -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation. - -mavx512er -Target Mask(ISA_AVX512ER) Var(ix86_isa_flags) Save Warn(AVX512ER support will be removed in GCC 15) -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation. - mavx512cd Target Mask(ISA_AVX512CD) Var(ix86_isa_flags) Save Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation. @@ -773,14 +765,6 @@ mavx512vbmi Target Mask(ISA_AVX512VBMI) Var(ix86_isa_flags) Save Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation. -mavx5124fmaps -Target Mask(ISA2_AVX5124FMAPS) Var(ix86_isa_flags2) Save Warn(AVX5124FMAPS support will be removed in GCC 15) -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation. - -mavx5124vnniw -Target Mask(ISA2_AVX5124VNNIW) Var(ix86_isa_flags2) Save Warn(AVX5124VNNIW support will be removed in GCC 15) -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124VNNIW built-in functions and code generation. - mavx512vpopcntdq Target Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VPOPCNTDQ built-in functions and code generation. @@ -972,10 +956,6 @@ mf16c Target Mask(ISA_F16C) Var(ix86_isa_flags) Save Support F16C built-in functions and code generation. -mprefetchwt1 -Target Mask(ISA_PREFETCHWT1) Var(ix86_isa_flags) Save Warn(PREFETCHWT1 support will be removed in GCC 15) -Support PREFETCHWT1 built-in functions and code generation. - mfentry Target Save Var(flag_fentry) Emit profiling counter call at function entry before prologue. diff --git a/gcc/config/i386/immintrin.h b/gcc/config/i386/immintrin.h index b4243dd942a..b1d4cbf9ecd 100644 --- a/gcc/config/i386/immintrin.h +++ b/gcc/config/i386/immintrin.h @@ -54,10 +54,6 @@ #include -#include - -#include - #include #include @@ -78,10 +74,6 @@ #include -#include - -#include - #include #include diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 2391a0101fe..b59c988fc31 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -109,15 +109,6 @@ ;; For embed. rounding feature UNSPEC_EMBEDDED_ROUNDING - ;; For AVX512PF support - UNSPEC_GATHER_PREFETCH - UNSPEC_SCATTER_PREFETCH - - ;; For AVX512ER support - UNSPEC_EXP2 - UNSPEC_RCP28 - UNSPEC_RSQRT28 - ;; For SHA support UNSPEC_SHA1MSG1 UNSPEC_SHA1MSG2 @@ -147,12 +138,6 @@ ;; For AVX512VBMI support UNSPEC_VPMULTISHIFT - ;; For AVX5124FMAPS/AVX5124VNNIW support - UNSPEC_VP4FMADD - UNSPEC_VP4FNMADD - UNSPEC_VP4DPWSSD - UNSPEC_VP4DPWSSDS - ;; For GFNI support UNSPEC_GF2P8AFFINEINV UNSPEC_GF2P8AFFINE @@ -458,10 +443,6 @@ [(V16SF "TARGET_EVEX512") (V8SF "TARGET_AVX512VL") (V4SF "TARGET_AVX512VL") (V8DF "TARGET_EVEX512") (V4DF "TARGET_AVX512VL") (V2DF "TARGET_AVX512VL")]) -;; AVX512ER SF plus 128- and 256-bit SF vector modes -(define_mode_iterator VF1_AVX512ER_128_256 - [(V16SF "TARGET_AVX512ER") (V8SF "TARGET_AVX") V4SF]) - (define_mode_iterator VFH_AVX512VL [(V32HF "TARGET_AVX512FP16 && TARGET_EVEX512") (V16HF "TARGET_AVX512FP16 && TARGET_AVX512VL") @@ -2785,9 +2766,9 @@ (set_attr "mode" "")]) (define_expand "rsqrt2" - [(set (match_operand:VF1_AVX512ER_128_256 0 "register_operand") - (unspec:VF1_AVX512ER_128_256 - [(match_operand:VF1_AVX512ER_128_256 1 "vector_operand")] + [(set (match_operand:VF1_128_256 0 "register_operand") + (unspec:VF1_128_256 + [(match_operand:VF1_128_256 1 "vector_operand")] UNSPEC_RSQRT))] "TARGET_SSE && TARGET_SSE_MATH" { @@ -24869,271 +24850,6 @@ (set_attr "btver2_decode" "vector,vector,vector,vector") (set_attr "mode" "TI")]) -;; Packed float variants -(define_mode_attr GATHER_SCATTER_SF_MEM_MODE - [(V8DI "V8SF") (V16SI "V16SF")]) - -(define_expand "avx512pf_gatherpfsf" - [(unspec - [(match_operand: 0 "register_operand") - (mem: - (match_par_dup 5 - [(match_operand 2 "vsib_address_operand") - (match_operand:VI48_512 1 "register_operand") - (match_operand:SI 3 "const1248_operand")])) - (match_operand:SI 4 "const_2_to_3_operand")] - UNSPEC_GATHER_PREFETCH)] - "TARGET_AVX512PF" -{ - operands[5] - = gen_rtx_UNSPEC (Pmode, gen_rtvec (3, operands[2], operands[1], - operands[3]), UNSPEC_VSIBADDR); -}) - -(define_insn "*avx512pf_gatherpfsf_mask" - [(unspec - [(match_operand: 0 "register_operand" "Yk") - (match_operator: 5 "vsib_mem_operator" - [(unspec:P - [(match_operand:P 2 "vsib_address_operand" "Tv") - (match_operand:VI48_512 1 "register_operand" "v") - (match_operand:SI 3 "const1248_operand")] - UNSPEC_VSIBADDR)]) - (match_operand:SI 4 "const_2_to_3_operand")] - UNSPEC_GATHER_PREFETCH)] - "TARGET_AVX512PF" -{ - switch (INTVAL (operands[4])) - { - case 3: - /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as - gas changed what it requires incompatibly. */ - return "%M2vgatherpf0ps\t{%5%{%0%}|%X5%{%0%}}"; - case 2: - return "%M2vgatherpf1ps\t{%5%{%0%}|%X5%{%0%}}"; - default: - gcc_unreachable (); - } -} - [(set_attr "type" "sse") - (set_attr "prefix" "evex") - (set_attr "mode" "XI")]) - -;; Packed double variants -(define_expand "avx512pf_gatherpfdf" - [(unspec - [(match_operand: 0 "register_operand") - (mem:V8DF - (match_par_dup 5 - [(match_operand 2 "vsib_address_operand") - (match_operand:VI4_256_8_512 1 "register_operand") - (match_operand:SI 3 "const1248_operand")])) - (match_operand:SI 4 "const_2_to_3_operand")] - UNSPEC_GATHER_PREFETCH)] - "TARGET_AVX512PF" -{ - operands[5] - = gen_rtx_UNSPEC (Pmode, gen_rtvec (3, operands[2], operands[1], - operands[3]), UNSPEC_VSIBADDR); -}) - -(define_insn "*avx512pf_gatherpfdf_mask" - [(unspec - [(match_operand: 0 "register_operand" "Yk") - (match_operator:V8DF 5 "vsib_mem_operator" - [(unspec:P - [(match_operand:P 2 "vsib_address_operand" "Tv") - (match_operand:VI4_256_8_512 1 "register_operand" "v") - (match_operand:SI 3 "const1248_operand")] - UNSPEC_VSIBADDR)]) - (match_operand:SI 4 "const_2_to_3_operand")] - UNSPEC_GATHER_PREFETCH)] - "TARGET_AVX512PF" -{ - switch (INTVAL (operands[4])) - { - case 3: - /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as - gas changed what it requires incompatibly. */ - return "%M2vgatherpf0pd\t{%5%{%0%}|%X5%{%0%}}"; - case 2: - return "%M2vgatherpf1pd\t{%5%{%0%}|%X5%{%0%}}"; - default: - gcc_unreachable (); - } -} - [(set_attr "type" "sse") - (set_attr "prefix" "evex") - (set_attr "mode" "XI")]) - -;; Packed float variants -(define_expand "avx512pf_scatterpfsf" - [(unspec - [(match_operand: 0 "register_operand") - (mem: - (match_par_dup 5 - [(match_operand 2 "vsib_address_operand") - (match_operand:VI48_512 1 "register_operand") - (match_operand:SI 3 "const1248_operand")])) - (match_operand:SI 4 "const2367_operand")] - UNSPEC_SCATTER_PREFETCH)] - "TARGET_AVX512PF" -{ - operands[5] - = gen_rtx_UNSPEC (Pmode, gen_rtvec (3, operands[2], operands[1], - operands[3]), UNSPEC_VSIBADDR); -}) - -(define_insn "*avx512pf_scatterpfsf_mask" - [(unspec - [(match_operand: 0 "register_operand" "Yk") - (match_operator: 5 "vsib_mem_operator" - [(unspec:P - [(match_operand:P 2 "vsib_address_operand" "Tv") - (match_operand:VI48_512 1 "register_operand" "v") - (match_operand:SI 3 "const1248_operand")] - UNSPEC_VSIBADDR)]) - (match_operand:SI 4 "const2367_operand")] - UNSPEC_SCATTER_PREFETCH)] - "TARGET_AVX512PF" -{ - switch (INTVAL (operands[4])) - { - case 3: - case 7: - /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as - gas changed what it requires incompatibly. */ - return "%M2vscatterpf0ps\t{%5%{%0%}|%X5%{%0%}}"; - case 2: - case 6: - return "%M2vscatterpf1ps\t{%5%{%0%}|%X5%{%0%}}"; - default: - gcc_unreachable (); - } -} - [(set_attr "type" "sse") - (set_attr "prefix" "evex") - (set_attr "mode" "XI")]) - -;; Packed double variants -(define_expand "avx512pf_scatterpfdf" - [(unspec - [(match_operand: 0 "register_operand") - (mem:V8DF - (match_par_dup 5 - [(match_operand 2 "vsib_address_operand") - (match_operand:VI4_256_8_512 1 "register_operand") - (match_operand:SI 3 "const1248_operand")])) - (match_operand:SI 4 "const2367_operand")] - UNSPEC_SCATTER_PREFETCH)] - "TARGET_AVX512PF" -{ - operands[5] - = gen_rtx_UNSPEC (Pmode, gen_rtvec (3, operands[2], operands[1], - operands[3]), UNSPEC_VSIBADDR); -}) - -(define_insn "*avx512pf_scatterpfdf_mask" - [(unspec - [(match_operand: 0 "register_operand" "Yk") - (match_operator:V8DF 5 "vsib_mem_operator" - [(unspec:P - [(match_operand:P 2 "vsib_address_operand" "Tv") - (match_operand:VI4_256_8_512 1 "register_operand" "v") - (match_operand:SI 3 "const1248_operand")] - UNSPEC_VSIBADDR)]) - (match_operand:SI 4 "const2367_operand")] - UNSPEC_SCATTER_PREFETCH)] - "TARGET_AVX512PF" -{ - switch (INTVAL (operands[4])) - { - case 3: - case 7: - /* %X5 so that we don't emit any *WORD PTR for -masm=intel, as - gas changed what it requires incompatibly. */ - return "%M2vscatterpf0pd\t{%5%{%0%}|%X5%{%0%}}"; - case 2: - case 6: - return "%M2vscatterpf1pd\t{%5%{%0%}|%X5%{%0%}}"; - default: - gcc_unreachable (); - } -} - [(set_attr "type" "sse") - (set_attr "prefix" "evex") - (set_attr "mode" "XI")]) - -(define_expand "exp22" - [(set (match_operand:VF_512 0 "register_operand") - (unspec:VF_512 - [(match_operand:VF_512 1 "vector_operand")] - UNSPEC_EXP2))] - "TARGET_AVX512ER") - -(define_insn "avx512er_exp2" - [(set (match_operand:VF_512 0 "register_operand" "=v") - (unspec:VF_512 - [(match_operand:VF_512 1 "" "")] - UNSPEC_EXP2))] - "TARGET_AVX512ER" - "vexp2\t{%1, %0|%0, %1}" - [(set_attr "prefix" "evex") - (set_attr "type" "sse") - (set_attr "mode" "")]) - -(define_insn "avx512er_rcp28" - [(set (match_operand:VF_512 0 "register_operand" "=v") - (unspec:VF_512 - [(match_operand:VF_512 1 "" "")] - UNSPEC_RCP28))] - "TARGET_AVX512ER" - "vrcp28\t{%1, %0|%0, %1}" - [(set_attr "prefix" "evex") - (set_attr "type" "sse") - (set_attr "mode" "")]) - -(define_insn "avx512er_vmrcp28" - [(set (match_operand:VF_128 0 "register_operand" "=v") - (vec_merge:VF_128 - (unspec:VF_128 - [(match_operand:VF_128 1 "" "")] - UNSPEC_RCP28) - (match_operand:VF_128 2 "register_operand" "v") - (const_int 1)))] - "TARGET_AVX512ER" - "vrcp28\t{%1, %2, %0|%0, %2, %1}" - [(set_attr "length_immediate" "1") - (set_attr "prefix" "evex") - (set_attr "type" "sse") - (set_attr "mode" "")]) - -(define_insn "avx512er_rsqrt28" - [(set (match_operand:VF_512 0 "register_operand" "=v") - (unspec:VF_512 - [(match_operand:VF_512 1 "" "")] - UNSPEC_RSQRT28))] - "TARGET_AVX512ER" - "vrsqrt28\t{%1, %0|%0, %1}" - [(set_attr "prefix" "evex") - (set_attr "type" "sse") - (set_attr "mode" "")]) - -(define_insn "avx512er_vmrsqrt28" - [(set (match_operand:VF_128 0 "register_operand" "=v") - (vec_merge:VF_128 - (unspec:VF_128 - [(match_operand:VF_128 1 "" "")] - UNSPEC_RSQRT28) - (match_operand:VF_128 2 "register_operand" "v") - (const_int 1)))] - "TARGET_AVX512ER" - "vrsqrt28\t{%1, %2, %0|%0, %2, %1}" - [(set_attr "length_immediate" "1") - (set_attr "type" "sse") - (set_attr "prefix" "evex") - (set_attr "mode" "")]) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; XOP instructions @@ -29419,291 +29135,6 @@ (set_attr "prefix" "evex") (set_attr "mode" "")]) -(define_mode_iterator IMOD4 - [(V64SF "TARGET_AVX5124FMAPS") (V64SI "TARGET_AVX5124VNNIW")]) - -(define_mode_attr imod4_narrow - [(V64SF "V16SF") (V64SI "V16SI")]) - -(define_expand "mov" - [(set (match_operand:IMOD4 0 "nonimmediate_operand") - (match_operand:IMOD4 1 "nonimm_or_0_operand"))] - "TARGET_AVX512F" -{ - ix86_expand_vector_move (mode, operands); - DONE; -}) - -(define_insn_and_split "*mov_internal" - [(set (match_operand:IMOD4 0 "nonimmediate_operand" "=v,v ,m") - (match_operand:IMOD4 1 "nonimm_or_0_operand" " C,vm,v"))] - "TARGET_AVX512F - && (register_operand (operands[0], mode) - || register_operand (operands[1], mode))" - "#" - "&& reload_completed" - [(const_int 0)] -{ - rtx op0, op1; - int i; - - for (i = 0; i < 4; i++) - { - op0 = simplify_subreg - (mode, operands[0], mode, i * 64); - op1 = simplify_subreg - (mode, operands[1], mode, i * 64); - emit_move_insn (op0, op1); - } - DONE; -}) - -(define_insn "avx5124fmaddps_4fmaddps" - [(set (match_operand:V16SF 0 "register_operand" "=v") - (unspec:V16SF - [(match_operand:V16SF 1 "register_operand" "0") - (match_operand:V64SF 2 "register_operand" "v") - (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FMADD))] - "TARGET_AVX5124FMAPS" - "v4fmaddps\t{%3, %g2, %0|%0, %g2, %3}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("V16SF"))]) - -(define_insn "avx5124fmaddps_4fmaddps_mask" - [(set (match_operand:V16SF 0 "register_operand" "=v") - (vec_merge:V16SF - (unspec:V16SF - [(match_operand:V64SF 1 "register_operand" "v") - (match_operand:V4SF 2 "memory_operand" "m")] UNSPEC_VP4FMADD) - (match_operand:V16SF 3 "register_operand" "0") - (match_operand:HI 4 "register_operand" "Yk")))] - "TARGET_AVX5124FMAPS" - "v4fmaddps\t{%2, %g1, %0%{%4%}|%0%{%4%}, %g1, %2}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("V16SF"))]) - -(define_insn "avx5124fmaddps_4fmaddps_maskz" - [(set (match_operand:V16SF 0 "register_operand" "=v") - (vec_merge:V16SF - (unspec:V16SF - [(match_operand:V16SF 1 "register_operand" "0") - (match_operand:V64SF 2 "register_operand" "v") - (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FMADD) - (match_operand:V16SF 4 "const0_operand") - (match_operand:HI 5 "register_operand" "Yk")))] - "TARGET_AVX5124FMAPS" - "v4fmaddps\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("V16SF"))]) - -(define_insn "avx5124fmaddps_4fmaddss" - [(set (match_operand:V4SF 0 "register_operand" "=v") - (unspec:V4SF - [(match_operand:V4SF 1 "register_operand" "0") - (match_operand:V64SF 2 "register_operand" "v") - (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FMADD))] - "TARGET_AVX5124FMAPS" - "v4fmaddss\t{%3, %x2, %0|%0, %x2, %3}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("SF"))]) - -(define_insn "avx5124fmaddps_4fmaddss_mask" - [(set (match_operand:V4SF 0 "register_operand" "=v") - (vec_merge:V4SF - (unspec:V4SF - [(match_operand:V64SF 1 "register_operand" "v") - (match_operand:V4SF 2 "memory_operand" "m")] UNSPEC_VP4FMADD) - (match_operand:V4SF 3 "register_operand" "0") - (match_operand:QI 4 "register_operand" "Yk")))] - "TARGET_AVX5124FMAPS" - "v4fmaddss\t{%2, %x1, %0%{%4%}|%0%{%4%}, %x1, %2}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("SF"))]) - -(define_insn "avx5124fmaddps_4fmaddss_maskz" - [(set (match_operand:V4SF 0 "register_operand" "=v") - (vec_merge:V4SF - (unspec:V4SF - [(match_operand:V4SF 1 "register_operand" "0") - (match_operand:V64SF 2 "register_operand" "v") - (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FMADD) - (match_operand:V4SF 4 "const0_operand") - (match_operand:QI 5 "register_operand" "Yk")))] - "TARGET_AVX5124FMAPS" - "v4fmaddss\t{%3, %x2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %x2, %3}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("SF"))]) - -(define_insn "avx5124fmaddps_4fnmaddps" - [(set (match_operand:V16SF 0 "register_operand" "=v") - (unspec:V16SF - [(match_operand:V16SF 1 "register_operand" "0") - (match_operand:V64SF 2 "register_operand" "v") - (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FNMADD))] - "TARGET_AVX5124FMAPS" - "v4fnmaddps\t{%3, %g2, %0|%0, %g2, %3}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("V16SF"))]) - -(define_insn "avx5124fmaddps_4fnmaddps_mask" - [(set (match_operand:V16SF 0 "register_operand" "=v") - (vec_merge:V16SF - (unspec:V16SF - [(match_operand:V64SF 1 "register_operand" "v") - (match_operand:V4SF 2 "memory_operand" "m")] UNSPEC_VP4FNMADD) - (match_operand:V16SF 3 "register_operand" "0") - (match_operand:HI 4 "register_operand" "Yk")))] - "TARGET_AVX5124FMAPS" - "v4fnmaddps\t{%2, %g1, %0%{%4%}|%0%{%4%}, %g1, %2}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("V16SF"))]) - -(define_insn "avx5124fmaddps_4fnmaddps_maskz" - [(set (match_operand:V16SF 0 "register_operand" "=v") - (vec_merge:V16SF - (unspec:V16SF - [(match_operand:V16SF 1 "register_operand" "0") - (match_operand:V64SF 2 "register_operand" "v") - (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FNMADD) - (match_operand:V16SF 4 "const0_operand") - (match_operand:HI 5 "register_operand" "Yk")))] - "TARGET_AVX5124FMAPS" - "v4fnmaddps\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("V16SF"))]) - -(define_insn "avx5124fmaddps_4fnmaddss" - [(set (match_operand:V4SF 0 "register_operand" "=v") - (unspec:V4SF - [(match_operand:V4SF 1 "register_operand" "0") - (match_operand:V64SF 2 "register_operand" "v") - (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FNMADD))] - "TARGET_AVX5124FMAPS" - "v4fnmaddss\t{%3, %x2, %0|%0, %x2, %3}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("SF"))]) - -(define_insn "avx5124fmaddps_4fnmaddss_mask" - [(set (match_operand:V4SF 0 "register_operand" "=v") - (vec_merge:V4SF - (unspec:V4SF - [(match_operand:V64SF 1 "register_operand" "v") - (match_operand:V4SF 2 "memory_operand" "m")] UNSPEC_VP4FNMADD) - (match_operand:V4SF 3 "register_operand" "0") - (match_operand:QI 4 "register_operand" "Yk")))] - "TARGET_AVX5124FMAPS" - "v4fnmaddss\t{%2, %x1, %0%{%4%}|%0%{%4%}, %x1, %2}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("SF"))]) - -(define_insn "avx5124fmaddps_4fnmaddss_maskz" - [(set (match_operand:V4SF 0 "register_operand" "=v") - (vec_merge:V4SF - (unspec:V4SF - [(match_operand:V4SF 1 "register_operand" "0") - (match_operand:V64SF 2 "register_operand" "v") - (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FNMADD) - (match_operand:V4SF 4 "const0_operand") - (match_operand:QI 5 "register_operand" "Yk")))] - "TARGET_AVX5124FMAPS" - "v4fnmaddss\t{%3, %x2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %x2, %3}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("SF"))]) - -(define_insn "avx5124vnniw_vp4dpwssd" - [(set (match_operand:V16SI 0 "register_operand" "=v") - (unspec:V16SI - [(match_operand:V16SI 1 "register_operand" "0") - (match_operand:V64SI 2 "register_operand" "v") - (match_operand:V4SI 3 "memory_operand" "m")] UNSPEC_VP4DPWSSD))] - "TARGET_AVX5124VNNIW" - "vp4dpwssd\t{%3, %g2, %0|%0, %g2, %3}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("TI"))]) - -(define_insn "avx5124vnniw_vp4dpwssd_mask" - [(set (match_operand:V16SI 0 "register_operand" "=v") - (vec_merge:V16SI - (unspec:V16SI - [(match_operand:V64SI 1 "register_operand" "v") - (match_operand:V4SI 2 "memory_operand" "m")] UNSPEC_VP4DPWSSD) - (match_operand:V16SI 3 "register_operand" "0") - (match_operand:HI 4 "register_operand" "Yk")))] - "TARGET_AVX5124VNNIW" - "vp4dpwssd\t{%2, %g1, %0%{%4%}|%0%{%4%}, %g1, %2}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("TI"))]) - -(define_insn "avx5124vnniw_vp4dpwssd_maskz" - [(set (match_operand:V16SI 0 "register_operand" "=v") - (vec_merge:V16SI - (unspec:V16SI - [(match_operand:V16SI 1 "register_operand" "0") - (match_operand:V64SI 2 "register_operand" "v") - (match_operand:V4SI 3 "memory_operand" "m")] UNSPEC_VP4DPWSSD) - (match_operand:V16SI 4 "const0_operand") - (match_operand:HI 5 "register_operand" "Yk")))] - "TARGET_AVX5124VNNIW" - "vp4dpwssd\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("TI"))]) - -(define_insn "avx5124vnniw_vp4dpwssds" - [(set (match_operand:V16SI 0 "register_operand" "=v") - (unspec:V16SI - [(match_operand:V16SI 1 "register_operand" "0") - (match_operand:V64SI 2 "register_operand" "v") - (match_operand:V4SI 3 "memory_operand" "m")] UNSPEC_VP4DPWSSDS))] - "TARGET_AVX5124VNNIW" - "vp4dpwssds\t{%3, %g2, %0|%0, %g2, %3}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("TI"))]) - -(define_insn "avx5124vnniw_vp4dpwssds_mask" - [(set (match_operand:V16SI 0 "register_operand" "=v") - (vec_merge:V16SI - (unspec:V16SI - [(match_operand:V64SI 1 "register_operand" "v") - (match_operand:V4SI 2 "memory_operand" "m")] UNSPEC_VP4DPWSSDS) - (match_operand:V16SI 3 "register_operand" "0") - (match_operand:HI 4 "register_operand" "Yk")))] - "TARGET_AVX5124VNNIW" - "vp4dpwssds\t{%2, %g1, %0%{%4%}|%0%{%4%}, %g1, %2}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("TI"))]) - -(define_insn "avx5124vnniw_vp4dpwssds_maskz" - [(set (match_operand:V16SI 0 "register_operand" "=v") - (vec_merge:V16SI - (unspec:V16SI - [(match_operand:V16SI 1 "register_operand" "0") - (match_operand:V64SI 2 "register_operand" "v") - (match_operand:V4SI 3 "memory_operand" "m")] UNSPEC_VP4DPWSSDS) - (match_operand:V16SI 4 "const0_operand") - (match_operand:HI 5 "register_operand" "Yk")))] - "TARGET_AVX5124VNNIW" - "vp4dpwssds\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}" - [(set_attr ("type") ("ssemuladd")) - (set_attr ("prefix") ("evex")) - (set_attr ("mode") ("TI"))]) - (define_expand "popcount2" [(set (match_operand:VI48_AVX512VL 0 "register_operand") (popcount:VI48_AVX512VL diff --git a/gcc/config/i386/x86-tune-sched.cc b/gcc/config/i386/x86-tune-sched.cc index 578ba57e6b2..f70846e628e 100644 --- a/gcc/config/i386/x86-tune-sched.cc +++ b/gcc/config/i386/x86-tune-sched.cc @@ -44,8 +44,6 @@ ix86_issue_rate (void) case PROCESSOR_LAKEMONT: case PROCESSOR_BONNELL: case PROCESSOR_SILVERMONT: - case PROCESSOR_KNL: - case PROCESSOR_KNM: case PROCESSOR_INTEL: case PROCESSOR_K6: case PROCESSOR_BTVER2: @@ -500,8 +498,6 @@ ix86_adjust_cost (rtx_insn *insn, int dep_type, rtx_insn *dep_insn, int cost, break; case PROCESSOR_SILVERMONT: - case PROCESSOR_KNL: - case PROCESSOR_KNM: case PROCESSOR_INTEL: if (!reload_completed) return cost; diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def index 710009712f6..0fa1484b48d 100644 --- a/gcc/config/i386/x86-tune.def +++ b/gcc/config/i386/x86-tune.def @@ -41,9 +41,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see /* X86_TUNE_SCHEDULE: Enable scheduling. */ DEF_TUNE (X86_TUNE_SCHEDULE, "schedule", m_PENT | m_LAKEMONT | m_PPRO | m_CORE_ALL | m_BONNELL | m_SILVERMONT - | m_INTEL | m_KNL | m_KNM | m_K6_GEODE | m_AMD_MULTIPLE | m_ZHAOXIN - | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID - | m_CORE_ATOM | m_GENERIC) + | m_INTEL | m_K6_GEODE | m_AMD_MULTIPLE | m_ZHAOXIN | m_GOLDMONT + | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM + | m_GENERIC) /* X86_TUNE_PARTIAL_REG_DEPENDENCY: Enable more register renaming on modern chips. Prefer stores affecting whole integer register @@ -52,8 +52,8 @@ DEF_TUNE (X86_TUNE_SCHEDULE, "schedule", DEF_TUNE (X86_TUNE_PARTIAL_REG_DEPENDENCY, "partial_reg_dependency", m_P4_NOCONA | m_CORE2 | m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS | m_INTEL - | m_KNL | m_KNM | m_AMD_MULTIPLE | m_ZHAOXIN | m_TREMONT - | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) + | m_AMD_MULTIPLE | m_ZHAOXIN | m_TREMONT | m_CORE_HYBRID + | m_CORE_ATOM | m_GENERIC) /* X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY: This knob promotes all store destinations to be 128bit to allow register renaming on 128bit SSE units, @@ -112,7 +112,7 @@ DEF_TUNE (X86_TUNE_PARTIAL_FLAG_REG_STALL, "partial_flag_reg_stall", partial dependencies. */ DEF_TUNE (X86_TUNE_MOVX, "movx", m_PPRO | m_P4_NOCONA | m_CORE2 | m_NEHALEM | m_SANDYBRIDGE - | m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_KNL | m_KNM | m_INTEL + | m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_INTEL | m_GOLDMONT_PLUS | m_GEODE | m_AMD_MULTIPLE | m_ZHAOXIN | m_CORE_AVX2 | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) @@ -120,8 +120,8 @@ DEF_TUNE (X86_TUNE_MOVX, "movx", full sized loads. */ DEF_TUNE (X86_TUNE_MEMORY_MISMATCH_STALL, "memory_mismatch_stall", m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_INTEL - | m_KNL | m_KNM | m_GOLDMONT | m_GOLDMONT_PLUS | m_AMD_MULTIPLE - | m_ZHAOXIN | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) + | m_GOLDMONT | m_GOLDMONT_PLUS | m_AMD_MULTIPLE | m_ZHAOXIN + | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) /* X86_TUNE_FUSE_CMP_AND_BRANCH_32: Fuse compare with a subsequent conditional jump instruction for 32 bit TARGET. */ @@ -161,7 +161,7 @@ DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH, "fuse_alu_and_branch", to happen in parallel. */ DEF_TUNE (X86_TUNE_ACCUMULATE_OUTGOING_ARGS, "accumulate_outgoing_args", - m_PPRO | m_P4_NOCONA | m_BONNELL | m_SILVERMONT | m_KNL | m_KNM | m_INTEL + m_PPRO | m_P4_NOCONA | m_BONNELL | m_SILVERMONT | m_INTEL | m_GOLDMONT | m_GOLDMONT_PLUS | m_ATHLON_K8 | m_ZHAOXIN) /* X86_TUNE_PROLOGUE_USING_MOVE: Do not use push/pop in prologues that are @@ -224,8 +224,8 @@ DEF_TUNE (X86_TUNE_PAD_RETURNS, "pad_returns", /* X86_TUNE_FOUR_JUMP_LIMIT: Some CPU cores are not able to predict more than 4 branch instructions in the 16 byte window. */ DEF_TUNE (X86_TUNE_FOUR_JUMP_LIMIT, "four_jump_limit", - m_PPRO | m_P4_NOCONA | m_BONNELL | m_SILVERMONT | m_KNL | m_KNM - | m_GOLDMONT | m_GOLDMONT_PLUS | m_INTEL | m_ATHLON_K8 | m_AMDFAM10) + m_PPRO | m_P4_NOCONA | m_BONNELL | m_SILVERMONT | m_GOLDMONT + | m_GOLDMONT_PLUS | m_INTEL | m_ATHLON_K8 | m_AMDFAM10) /*****************************************************************************/ /* Integer instruction selection tuning */ @@ -253,7 +253,7 @@ DEF_TUNE (X86_TUNE_READ_MODIFY, "read_modify", ~(m_PENT | m_LAKEMONT | m_PPRO)) done by GCC generated code. */ DEF_TUNE (X86_TUNE_USE_INCDEC, "use_incdec", ~(m_P4_NOCONA | m_CORE2 | m_NEHALEM | m_SANDYBRIDGE - | m_BONNELL | m_SILVERMONT | m_INTEL | m_KNL | m_KNM | m_GOLDMONT + | m_BONNELL | m_SILVERMONT | m_INTEL | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_ZHAOXIN | m_GENERIC)) @@ -261,19 +261,18 @@ DEF_TUNE (X86_TUNE_USE_INCDEC, "use_incdec", for DFmode copies */ DEF_TUNE (X86_TUNE_INTEGER_DFMODE_MOVES, "integer_dfmode_moves", ~(m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT - | m_KNL | m_KNM | m_INTEL | m_GEODE | m_AMD_MULTIPLE | m_ZHAOXIN - | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID - | m_CORE_ATOM | m_GENERIC)) + | m_INTEL | m_GEODE | m_AMD_MULTIPLE | m_ZHAOXIN | m_GOLDMONT + | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM + | m_GENERIC)) /* X86_TUNE_OPT_AGU: Optimize for Address Generation Unit. This flag will impact LEA instruction selection. */ -DEF_TUNE (X86_TUNE_OPT_AGU, "opt_agu", m_BONNELL | m_SILVERMONT | m_KNL - | m_KNM | m_GOLDMONT | m_GOLDMONT_PLUS | m_INTEL | m_ZHAOXIN) +DEF_TUNE (X86_TUNE_OPT_AGU, "opt_agu", m_BONNELL | m_SILVERMONT | m_GOLDMONT + | m_GOLDMONT_PLUS | m_INTEL | m_ZHAOXIN) /* X86_TUNE_AVOID_LEA_FOR_ADDR: Avoid lea for address computation. */ DEF_TUNE (X86_TUNE_AVOID_LEA_FOR_ADDR, "avoid_lea_for_addr", - m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS - | m_KNL | m_KNM) + m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS) /* X86_TUNE_SLOW_IMUL_IMM32_MEM: Imul of 32-bit constant and memory is vector path on AMD machines. @@ -290,8 +289,7 @@ DEF_TUNE (X86_TUNE_SLOW_IMUL_IMM8, "slow_imul_imm8", /* X86_TUNE_AVOID_MEM_OPND_FOR_CMOVE: Try to avoid memory operands for a conditional move. */ DEF_TUNE (X86_TUNE_AVOID_MEM_OPND_FOR_CMOVE, "avoid_mem_opnd_for_cmove", - m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS | m_KNL - | m_KNM | m_INTEL) + m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS | m_INTEL) /* X86_TUNE_SINGLE_STRINGOP: Enable use of single string operations, such as MOVS and STOS (without a REP prefix) to move/set sequences of bytes. */ @@ -316,22 +314,21 @@ DEF_TUNE (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES, /* X86_TUNE_USE_SAHF: Controls use of SAHF. */ DEF_TUNE (X86_TUNE_USE_SAHF, "use_sahf", - m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT - | m_KNL | m_KNM | m_INTEL | m_K6_GEODE | m_K8 | m_AMDFAM10 | m_BDVER - | m_BTVER | m_ZNVER | m_ZHAOXIN | m_GOLDMONT | m_GOLDMONT_PLUS - | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) + m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT + | m_INTEL | m_K6_GEODE | m_K8 | m_AMDFAM10 | m_BDVER | m_BTVER + | m_ZNVER | m_ZHAOXIN | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT + | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) /* X86_TUNE_USE_CLTD: Controls use of CLTD and CTQO instructions. */ DEF_TUNE (X86_TUNE_USE_CLTD, "use_cltd", - ~(m_PENT | m_LAKEMONT | m_BONNELL | m_SILVERMONT | m_KNL | m_KNM | m_INTEL + ~(m_PENT | m_LAKEMONT | m_BONNELL | m_SILVERMONT | m_INTEL | m_K6 | m_GOLDMONT | m_GOLDMONT_PLUS)) /* X86_TUNE_USE_BT: Enable use of BT (bit test) instructions. */ DEF_TUNE (X86_TUNE_USE_BT, "use_bt", - m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_KNL | m_KNM | m_INTEL - | m_LAKEMONT | m_AMD_MULTIPLE | m_ZHAOXIN | m_GOLDMONT - | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM - | m_GENERIC) + m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_INTEL | m_LAKEMONT + | m_AMD_MULTIPLE | m_ZHAOXIN | m_GOLDMONT | m_GOLDMONT_PLUS + | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC) /* X86_TUNE_AVOID_FALSE_DEP_FOR_BMI: Avoid false dependency for bit-manipulation instructions. */ @@ -349,9 +346,8 @@ DEF_TUNE (X86_TUNE_ADJUST_UNROLL, "adjust_unroll_factor", m_BDVER3 | m_BDVER4) /* X86_TUNE_ONE_IF_CONV_INSNS: Restrict a number of cmov insns in if-converted sequence to one. */ DEF_TUNE (X86_TUNE_ONE_IF_CONV_INSN, "one_if_conv_insn", - m_SILVERMONT | m_KNL | m_KNM | m_INTEL | m_CORE_ALL | m_GOLDMONT - | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM - | m_ZHAOXIN | m_GENERIC) + m_SILVERMONT | m_INTEL | m_CORE_ALL | m_GOLDMONT | m_GOLDMONT_PLUS + | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_ZHAOXIN | m_GENERIC) /* X86_TUNE_AVOID_MFENCE: Use lock prefixed instructions instead of mfence. */ DEF_TUNE (X86_TUNE_AVOID_MFENCE, "avoid_mfence", @@ -362,8 +358,7 @@ DEF_TUNE (X86_TUNE_AVOID_MFENCE, "avoid_mfence", generating instructions for abs (x) = (((signed) x >> (W-1) ^ x) - (signed) x >> (W-1)) instead of cmove or SSE max/abs instructions. */ DEF_TUNE (X86_TUNE_EXPAND_ABS, "expand_abs", - m_CORE_ALL | m_SILVERMONT | m_KNL | m_KNM | m_GOLDMONT - | m_GOLDMONT_PLUS | m_ZHAOXIN) + m_CORE_ALL | m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS | m_ZHAOXIN) /*****************************************************************************/ /* 387 instruction selection tuning */ @@ -379,9 +374,9 @@ DEF_TUNE (X86_TUNE_USE_HIMODE_FIOP, "use_himode_fiop", integer operand. */ DEF_TUNE (X86_TUNE_USE_SIMODE_FIOP, "use_simode_fiop", ~(m_PENT | m_LAKEMONT | m_PPRO | m_CORE_ALL | m_BONNELL - | m_SILVERMONT | m_KNL | m_KNM | m_INTEL | m_AMD_MULTIPLE - | m_ZHAOXIN | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT - | m_CORE_HYBRID | m_CORE_ATOM | m_GENERIC)) + | m_SILVERMONT | m_INTEL | m_AMD_MULTIPLE | m_ZHAOXIN | m_GOLDMONT + | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM + | m_GENERIC)) /* X86_TUNE_USE_FFREEP: Use freep instruction instead of fstp. */ DEF_TUNE (X86_TUNE_USE_FFREEP, "use_ffreep", m_AMD_MULTIPLE | m_ZHAOXIN) @@ -389,9 +384,9 @@ DEF_TUNE (X86_TUNE_USE_FFREEP, "use_ffreep", m_AMD_MULTIPLE | m_ZHAOXIN) /* X86_TUNE_EXT_80387_CONSTANTS: Use fancy 80387 constants, such as PI. */ DEF_TUNE (X86_TUNE_EXT_80387_CONSTANTS, "ext_80387_constants", m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT - | m_KNL | m_KNM | m_INTEL | m_K6_GEODE | m_ATHLON_K8 | m_ZHAOXIN - | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID - | m_CORE_ATOM | m_GENERIC) + | m_INTEL | m_K6_GEODE | m_ATHLON_K8 | m_ZHAOXIN | m_GOLDMONT + | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM + | m_GENERIC) /*****************************************************************************/ /* SSE instruction selection tuning */ @@ -405,15 +400,15 @@ DEF_TUNE (X86_TUNE_GENERAL_REGS_SSE_SPILL, "general_regs_sse_spill", /* X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL: Use movups for misaligned loads instead of a sequence loading registers by parts. */ DEF_TUNE (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL, "sse_unaligned_load_optimal", - m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_SILVERMONT | m_KNL | m_KNM - | m_INTEL | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID + m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_SILVERMONT | m_INTEL + | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_AMDFAM10 | m_BDVER | m_BTVER | m_ZNVER | m_ZHAOXIN | m_GENERIC) /* X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL: Use movups for misaligned stores instead of a sequence loading registers by parts. */ DEF_TUNE (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL, "sse_unaligned_store_optimal", - m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_SILVERMONT | m_KNL | m_KNM + m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_SILVERMONT | m_INTEL | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_CORE_HYBRID | m_CORE_ATOM | m_BDVER | m_ZNVER | m_ZHAOXIN | m_GENERIC) @@ -457,8 +452,7 @@ DEF_TUNE (X86_TUNE_INTER_UNIT_CONVERSIONS, "inter_unit_conversions", /* X86_TUNE_SPLIT_MEM_OPND_FOR_FP_CONVERTS: Try to split memory operand for fp converts to destination register. */ DEF_TUNE (X86_TUNE_SPLIT_MEM_OPND_FOR_FP_CONVERTS, "split_mem_opnd_for_fp_converts", - m_SILVERMONT | m_KNL | m_KNM | m_GOLDMONT | m_GOLDMONT_PLUS - | m_INTEL) + m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS | m_INTEL) /* X86_TUNE_USE_VECTOR_FP_CONVERTS: Prefer vector packed SSE conversion from FP to FP. This form of instructions avoids partial write to the @@ -472,8 +466,7 @@ DEF_TUNE (X86_TUNE_USE_VECTOR_CONVERTS, "use_vector_converts", m_AMDFAM10) /* X86_TUNE_SLOW_SHUFB: Indicates tunings with slow pshufb instruction. */ DEF_TUNE (X86_TUNE_SLOW_PSHUFB, "slow_pshufb", - m_BONNELL | m_SILVERMONT | m_KNL | m_KNM | m_GOLDMONT - | m_GOLDMONT_PLUS | m_INTEL) + m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS | m_INTEL) /* X86_TUNE_AVOID_4BYTE_PREFIXES: Avoid instructions requiring 4+ bytes of prefixes. */ DEF_TUNE (X86_TUNE_AVOID_4BYTE_PREFIXES, "avoid_4byte_prefixes", @@ -708,10 +701,6 @@ DEF_TUNE (X86_TUNE_QIMODE_MATH, "qimode_math", m_ALL) is usually used for RISC targets. */ DEF_TUNE (X86_TUNE_PROMOTE_QI_REGS, "promote_qi_regs", m_NONE) -/* X86_TUNE_EMIT_VZEROUPPER: This enables vzeroupper instruction insertion - before a transfer of control flow out of the function. */ -DEF_TUNE (X86_TUNE_EMIT_VZEROUPPER, "emit_vzeroupper", ~m_KNL) - /* X86_TUNE_SLOW_STC: This disables use of stc, clc and cmc carry flag modifications on architectures where theses operations are slow. */ DEF_TUNE (X86_TUNE_SLOW_STC, "slow_stc", m_PENT4) diff --git a/gcc/config/i386/xmmintrin.h b/gcc/config/i386/xmmintrin.h index 9e20f262839..87515ecb218 100644 --- a/gcc/config/i386/xmmintrin.h +++ b/gcc/config/i386/xmmintrin.h @@ -40,7 +40,6 @@ enum _mm_hint _MM_HINT_IT1 = 18, /* _MM_HINT_ET is _MM_HINT_T with set 3rd bit. */ _MM_HINT_ET0 = 7, - _MM_HINT_ET1 = 6, _MM_HINT_T0 = 3, _MM_HINT_T1 = 2, _MM_HINT_T2 = 1, diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 267fccd1512..8786249fb6f 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -6945,16 +6945,6 @@ Enable/disable the generation of the AVX instructions. @itemx no-avx2 Enable/disable the generation of the AVX2 instructions. -@cindex @code{target("avx5124fmaps")} function attribute, x86 -@item avx5124fmaps -@itemx no-avx5124fmaps -Enable/disable the generation of the AVX5124FMAPS instructions. - -@cindex @code{target("avx5124vnniw")} function attribute, x86 -@item avx5124vnniw -@itemx no-avx5124vnniw -Enable/disable the generation of the AVX5124VNNIW instructions. - @cindex @code{target("avx512bitalg")} function attribute, x86 @item avx512bitalg @itemx no-avx512bitalg @@ -6990,11 +6980,6 @@ Enable/disable the generation of the AVX512F instructions. @itemx no-avx512ifma Enable/disable the generation of the AVX512IFMA instructions. -@cindex @code{target("avx512pf")} function attribute, x86 -@item avx512pf -@itemx no-avx512pf -Enable/disable the generation of the AVX512PF instructions. - @cindex @code{target("avx512vbmi")} function attribute, x86 @item avx512vbmi @itemx no-avx512vbmi @@ -7160,11 +7145,6 @@ Enable/disable the generation of the PKU instructions. @itemx no-popcnt Enable/disable the generation of the POPCNT instruction. -@cindex @code{target("prefetchwt1")} function attribute, x86 -@item prefetchwt1 -@itemx no-prefetchwt1 -Enable/disable the generation of the PREFETCHWT1 instructions. - @cindex @code{target("prfchw")} function attribute, x86 @item prfchw @itemx no-prfchw @@ -26167,12 +26147,6 @@ Intel Atom Grand Ridge CPU. @item clearwaterforest Intel Atom Clearwater Forest CPU. -@item knl -Intel Knights Landing CPU. - -@item knm -Intel Knights Mill CPU. - @item lujiazui ZHAOXIN lujiazui CPU. @@ -26301,18 +26275,10 @@ AVX512BW instructions. AVX512DQ instructions. @item avx512cd AVX512CD instructions. -@item avx512er -AVX512ER instructions. -@item avx512pf -AVX512PF instructions. @item avx512vbmi AVX512VBMI instructions. @item avx512ifma AVX512IFMA instructions. -@item avx5124vnniw -AVX5124VNNIW instructions. -@item avx5124fmaps -AVX5124FMAPS instructions. @item avx512vpopcntdq AVX512VPOPCNTDQ instructions. @item avx512vbmi2 diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 70e8004a71b..218901c0b20 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -1459,17 +1459,17 @@ See RS/6000 and PowerPC Options. -mmove-max=@var{bits} -mstore-max=@var{bits} -mnoreturn-no-callee-saved-registers -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -msse4 -mavx --mavx2 -mavx512f -mavx512pf -mavx512er -mavx512cd -mavx512vl +-mavx2 -mavx512f -mavx512cd -mavx512vl -mavx512bw -mavx512dq -mavx512ifma -mavx512vbmi -msha -maes -mpclmul -mfsgsbase -mrdrnd -mf16c -mfma -mpconfig -mwbnoinvd --mptwrite -mprefetchwt1 -mclflushopt -mclwb -mxsavec -mxsaves +-mptwrite -mclflushopt -mclwb -mxsavec -mxsaves -msse4a -m3dnow -m3dnowa -mpopcnt -mabm -mbmi -mtbm -mfma4 -mxop -madx -mlzcnt -mbmi2 -mfxsr -mxsave -mxsaveopt -mrtm -mhle -mlwp -mmwaitx -mclzero -mpku -mthreads -mgfni -mvaes -mwaitpkg -mshstk -mmanual-endbr -mcet-switch -mforce-indirect-call -mavx512vbmi2 -mavx512bf16 -menqcmd -mvpclmulqdq -mavx512bitalg -mmovdiri -mmovdir64b -mavx512vpopcntdq --mavx5124fmaps -mavx512vnni -mavx5124vnniw -mprfchw -mrdpid +-mavx512vnni -mprfchw -mrdpid -mrdseed -msgx -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -muintr -mhreset -mavxvnni -mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 @@ -34475,19 +34475,6 @@ LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, ENQCMD, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, USER_MSR and PREFETCHI instruction set support. -@item knl -Intel Knight's Landing CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, -SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, -RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, -AVX512PF, AVX512ER, AVX512F, AVX512CD and PREFETCHWT1 instruction set support. - -@item knm -Intel Knights Mill CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, -SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, -RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, -AVX512PF, AVX512ER, AVX512F, AVX512CD and PREFETCHWT1, AVX5124VNNIW, -AVX5124FMAPS and AVX512VPOPCNTDQ instruction set support. - @item skylake-avx512 Intel Skylake Server CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, @@ -35249,12 +35236,6 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @opindex mavx512f @itemx -mavx512f @need 200 -@opindex mavx512pf -@itemx -mavx512pf -@need 200 -@opindex mavx512er -@itemx -mavx512er -@need 200 @opindex mavx512cd @itemx -mavx512cd @need 200 @@ -35318,9 +35299,6 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @opindex mrdpid @itemx -mrdpid @need 200 -@opindex mprefetchwt1 -@itemx -mprefetchwt1 -@need 200 @opindex mrdseed @itemx -mrdseed @need 200 @@ -35434,18 +35412,12 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @opindex mavx512vp2intersect @itemx -mavx512vp2intersect @need 200 -@opindex mavx5124fmaps -@itemx -mavx5124fmaps -@need 200 @opindex mavx512vnni @itemx -mavx512vnni @need 200 @opindex mavxvnni @itemx -mavxvnni @need 200 -@opindex mavx5124vnniw -@itemx -mavx5124vnniw -@need 200 @opindex mcldemote @itemx -mcldemote @need 200 @@ -35520,18 +35492,17 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}. @opindex mavx10.1-512 @itemx -mavx10.1-512 These switches enable the use of instructions in the MMX, SSE, -AVX512ER, AVX512CD, AVX512VL, AVX512BW, AVX512DQ, AVX512IFMA, AVX512VBMI, SHA, -AES, PCLMUL, CLFLUSHOPT, CLWB, FSGSBASE, PTWRITE, RDRND, F16C, FMA, PCONFIG, -WBNOINVD, FMA4, PREFETCHW, RDPID, PREFETCHWT1, RDSEED, SGX, XOP, LWP, -3DNow!@:, enhanced 3DNow!@:, POPCNT, ABM, ADX, BMI, BMI2, LZCNT, FXSR, XSAVE, -XSAVEOPT, XSAVEC, XSAVES, RTM, HLE, TBM, MWAITX, CLZERO, PKU, AVX512VBMI2, -GFNI, VAES, WAITPKG, VPCLMULQDQ, AVX512BITALG, MOVDIRI, MOVDIR64B, AVX512BF16, -ENQCMD, AVX512VPOPCNTDQ, AVX5124FMAPS, AVX512VNNI, AVX5124VNNIW, SERIALIZE, -UINTR, HRESET, AMXTILE, AMXINT8, AMXBF16, KL, WIDEKL, AVXVNNI, AVX512-FP16, -AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AMX-FP16, PREFETCHI, RAOINT, -AMX-COMPLEX, AVXVNNIINT16, SM3, SHA512, SM4, APX_F, USER_MSR, AVX10.1 or -CLDEMOTE extended instruction sets. Each has a corresponding @option{-mno-} -option to disable use of these instructions. +AVX512CD, AVX512VL, AVX512BW, AVX512DQ, AVX512IFMA, AVX512VBMI, SHA, AES, +PCLMUL, CLFLUSHOPT, CLWB, FSGSBASE, PTWRITE, RDRND, F16C, FMA, PCONFIG, +WBNOINVD, FMA4, PREFETCHW, RDPID, RDSEED, SGX, XOP, LWP, 3DNow!@:, +enhanced 3DNow!@:, POPCNT, ABM, ADX, BMI, BMI2, LZCNT, FXSR, XSAVE, XSAVEOPT, +XSAVEC, XSAVES, RTM, HLE, TBM, MWAITX, CLZERO, PKU, AVX512VBMI2, GFNI, VAES, +WAITPKG, VPCLMULQDQ, AVX512BITALG, MOVDIRI, MOVDIR64B, AVX512BF16, ENQCMD, +AVX512VPOPCNTDQ, AVX512VNNI, SERIALIZE, UINTR, HRESET, AMXTILE, AMXINT8, +AMXBF16, KL, WIDEKL, AVXVNNI, AVX512-FP16, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, +CMPCCXADD, AMX-FP16, PREFETCHI, RAOINT, AMX-COMPLEX, AVXVNNIINT16, SM3, SHA512, +SM4, APX_F, USER_MSR, AVX10.1 or CLDEMOTE extended instruction sets. Each has +a corresponding @option{-mno-} option to disable use of these instructions. These extensions are also available as built-in functions: see @ref{x86 Built-in Functions}, for details of the functions enabled and diff --git a/gcc/testsuite/g++.dg/other/i386-2.C b/gcc/testsuite/g++.dg/other/i386-2.C index b1c59579455..3f3df902b56 100644 --- a/gcc/testsuite/g++.dg/other/i386-2.C +++ b/gcc/testsuite/g++.dg/other/i386-2.C @@ -1,10 +1,5 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ -/* { dg-options "-O -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 -mavx512dq -mavx512bw -mavx512vl -mavx512ifma -mavx512vbmi -mavx512vbmi2 -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd -mavx512bf16 -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX5124FMAPS support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX5124VNNIW support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "PREFETCHWT1 support will be removed in GCC 15" "" { target *-*-* } 0 } */ +/* { dg-options "-O -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 -mavx512cd -msha -mxsavec -mxsaves -mclflushopt -mavx512dq -mavx512bw -mavx512vl -mavx512ifma -mavx512vbmi -mavx512vbmi2 -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd -mavx512bf16 -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4" } */ /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h, xopintrin.h, abmintrin.h, bmiintrin.h, tbmintrin.h, lwpintrin.h, diff --git a/gcc/testsuite/g++.dg/other/i386-3.C b/gcc/testsuite/g++.dg/other/i386-3.C index f7b6d18a20e..50df2d71715 100644 --- a/gcc/testsuite/g++.dg/other/i386-3.C +++ b/gcc/testsuite/g++.dg/other/i386-3.C @@ -1,10 +1,5 @@ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ -/* { dg-options "-O -fkeep-inline-functions -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 -mavx512vbmi2 -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd -mavx512bf16 -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX5124FMAPS support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX5124VNNIW support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "PREFETCHWT1 support will be removed in GCC 15" "" { target *-*-* } 0 } */ +/* { dg-options "-O -fkeep-inline-functions -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 -mavx512cd -msha -mxsavec -mxsaves -mclflushopt -mavx512dq -mavx512bw -mavx512vl -mavx512ifma -mavx512vbmi -mavx512vbmi2 -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd -mavx512bf16 -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4" } */ /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h, xopintrin.h, abmintrin.h, bmiintrin.h, tbmintrin.h, lwpintrin.h, diff --git a/gcc/testsuite/g++.target/i386/mv28.C b/gcc/testsuite/g++.target/i386/mv28.C index adc53962ee5..9a0419c058d 100644 --- a/gcc/testsuite/g++.target/i386/mv28.C +++ b/gcc/testsuite/g++.target/i386/mv28.C @@ -5,12 +5,8 @@ void __attribute__ ((target("avx512vl"))) foo () {} /* { dg-error "ISA '\[^\n\r\ void __attribute__ ((target("avx512bw"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */ void __attribute__ ((target("avx512dq"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */ void __attribute__ ((target("avx512cd"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */ -void __attribute__ ((target("avx512er"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */ -void __attribute__ ((target("avx512pf"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */ void __attribute__ ((target("avx512vbmi"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */ void __attribute__ ((target("avx512ifma"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */ -void __attribute__ ((target("avx5124vnniw"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */ -void __attribute__ ((target("avx5124fmaps"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */ void __attribute__ ((target("avx512vpopcntdq"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */ void __attribute__ ((target("avx512vbmi2"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */ void __attribute__ ((target("gfni"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */ diff --git a/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddps-1.c b/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddps-1.c deleted file mode 100644 index 3c3c9f619ad..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddps-1.c +++ /dev/null @@ -1,19 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mavx5124fmaps" } */ -/* { dg-warning "AVX5124FMAPS support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "v4fmaddps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "v4fmaddps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "v4fmaddps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -__m512 a, b, c, d, e, f, g, x1, x2, x3; -__m128 *mem; -__mmask16 m; - -int foo () -{ - x1 = _mm512_4fmadd_ps (a, b, c, d, e, mem); - x2 = _mm512_mask_4fmadd_ps (a, m, b, c, d, e, mem); - x3 = _mm512_maskz_4fmadd_ps (m, a, b, c, d, e, mem); -} diff --git a/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddps-2.c b/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddps-2.c deleted file mode 100644 index ad453975b38..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddps-2.c +++ /dev/null @@ -1,71 +0,0 @@ -/* { dg-do run } */ -/* { dg-options "-O2 -mavx5124fmaps" } */ -/* { dg-require-effective-target avx5124fmaps } */ -/* { dg-warning "AVX5124FMAPS support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#define ESP_FLOAT 1.0 - -#define AVX5124FMAPS -#include "avx512f-helper.h" - -#define SIZE (AVX512F_LEN / 32) - -#include "avx512f-mask-type.h" - -void -CALC (float *src1, float* src2, float *src3, - float *src4, float* prev_dst, float *mult, float *dst) -{ - int i; - - for (i = 0; i < SIZE; i++) - { - dst[i] = (double)prev_dst[i] - + (double)src1[i] * (double)mult[0] - + (double)src2[i] * (double)mult[1] - + (double)src3[i] * (double)mult[2] - + (double)src4[i] * (double)mult[3]; - } -} - -void -TEST (void) -{ - int i, sign; - UNION_TYPE (AVX512F_LEN,) src1, src2, src3, src4, src5, dst, res1, res2, res3; - UNION_TYPE (128,) mult; - MASK_TYPE mask = MASK_VALUE; - float res_ref[SIZE]; - - sign = -1; - for (i = 0; i < SIZE; i++) - { - src1.a[i] = 1.5 + 34.67 * i * sign; - src2.a[i] = -22.17 * i * sign; - src3.a[i] = src1.a[i] * src1.a[i]; - src4.a[i] = src2.a[i] * src2.a[i]; - sign = sign * -1; - } - for (i = 0; i < 4; i++) - mult.a[i] = 3.1415 + i * 2.71828; - - for (i = 0; i < SIZE; i++) - src5.a[i] = DEFAULT_VALUE; - - CALC (src1.a, src2.a, src3.a, src4.a, src5.a, mult.a, res_ref); - - res1.x = INTRINSIC (_4fmadd_ps) ( src5.x, src1.x, src2.x, src3.x, src4.x, &mult.x); - res2.x = INTRINSIC (_mask_4fmadd_ps) (src5.x, mask, src1.x, src2.x, src3.x, src4.x, &mult.x); - res3.x = INTRINSIC (_maskz_4fmadd_ps) (mask, src5.x, src1.x, src2.x, src3.x, src4.x, &mult.x); - - if (UNION_FP_CHECK (AVX512F_LEN,) (res1, res_ref)) - abort (); - - MASK_MERGE () (res_ref, mask, SIZE); - if (UNION_FP_CHECK (AVX512F_LEN,) (res2, res_ref)) - abort (); - - MASK_ZERO () (res_ref, mask, SIZE); - if (UNION_FP_CHECK (AVX512F_LEN,) (res3, res_ref)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddss-1.c b/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddss-1.c deleted file mode 100644 index 53830420afa..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddss-1.c +++ /dev/null @@ -1,19 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mavx5124fmaps" } */ -/* { dg-warning "AVX5124FMAPS support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "v4fmaddss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "v4fmaddss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "v4fmaddss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -__m128 a, b, c, d, e, f, x1, x2, x3; -__m128 *mem; -__mmask8 m; - -int foo () -{ - x1 = _mm_4fmadd_ss (a, b, c, d, e, mem); - x2 = _mm_mask_4fmadd_ss (a, m, b, c, d, e, mem); - x3 = _mm_maskz_4fmadd_ss (m, a, b, c, d, e, mem); -} diff --git a/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddps-1.c b/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddps-1.c deleted file mode 100644 index acb666b3093..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddps-1.c +++ /dev/null @@ -1,19 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mavx5124fmaps" } */ -/* { dg-warning "AVX5124FMAPS support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "v4fnmaddps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "v4fnmaddps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "v4fnmaddps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -__m512 a, b, c, d, e, f, g, x1, x2, x3; -__m128 *mem; -__mmask16 m; - -int foo () -{ - x1 = _mm512_4fnmadd_ps (a, b, c, d, e, mem); - x2 = _mm512_mask_4fnmadd_ps (a, m, b, c, d, e, mem); - x3 = _mm512_maskz_4fnmadd_ps (m, a, b, c, d, e, mem); -} diff --git a/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddps-2.c b/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddps-2.c deleted file mode 100644 index 5dcdfe48c0a..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddps-2.c +++ /dev/null @@ -1,71 +0,0 @@ -/* { dg-do run } */ -/* { dg-options "-O2 -mavx5124fmaps" } */ -/* { dg-require-effective-target avx5124fmaps } */ -/* { dg-warning "AVX5124FMAPS support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#define ESP_FLOAT 1.0 - -#define AVX5124FMAPS -#include "avx512f-helper.h" - -#define SIZE (AVX512F_LEN / 32) - -#include "avx512f-mask-type.h" - -void -CALC (float *src1, float* src2, float *src3, - float *src4, float* prev_dst, float *mult, float *dst) -{ - int i; - - for (i = 0; i < SIZE; i++) - { - dst[i] = (double)prev_dst[i] - - (double)src1[i] * (double)mult[0] - - (double)src2[i] * (double)mult[1] - - (double)src3[i] * (double)mult[2] - - (double)src4[i] * (double)mult[3]; - } -} - -void -TEST (void) -{ - int i, sign; - UNION_TYPE (AVX512F_LEN,) src1, src2, src3, src4, src5, dst, res1, res2, res3; - UNION_TYPE (128,) mult; - MASK_TYPE mask = MASK_VALUE; - float res_ref[SIZE]; - - sign = -1; - for (i = 0; i < SIZE; i++) - { - src1.a[i] = 1.5 + 34.67 * i * sign; - src2.a[i] = -22.17 * i * sign; - src3.a[i] = src1.a[i] * src1.a[i]; - src4.a[i] = src2.a[i] * src2.a[i]; - sign = sign * -1; - } - for (i = 0; i < 4; i++) - mult.a[i] = 3.1415 + i * 2.71828; - - for (i = 0; i < SIZE; i++) - src5.a[i] = DEFAULT_VALUE; - - CALC (src1.a, src2.a, src3.a, src4.a, src5.a, mult.a, res_ref); - - res1.x = INTRINSIC (_4fnmadd_ps) ( src5.x, src1.x, src2.x, src3.x, src4.x, &mult.x); - res2.x = INTRINSIC (_mask_4fnmadd_ps) (src5.x, mask, src1.x, src2.x, src3.x, src4.x, &mult.x); - res3.x = INTRINSIC (_maskz_4fnmadd_ps) (mask, src5.x, src1.x, src2.x, src3.x, src4.x, &mult.x); - - if (UNION_FP_CHECK (AVX512F_LEN,) (res1, res_ref)) - abort (); - - MASK_MERGE () (res_ref, mask, SIZE); - if (UNION_FP_CHECK (AVX512F_LEN,) (res2, res_ref)) - abort (); - - MASK_ZERO () (res_ref, mask, SIZE); - if (UNION_FP_CHECK (AVX512F_LEN,) (res3, res_ref)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddss-1.c b/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddss-1.c deleted file mode 100644 index bfeb46dc9a1..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddss-1.c +++ /dev/null @@ -1,20 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mavx5124fmaps" } */ -/* { dg-warning "AVX5124FMAPS support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "v4fnmaddss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "v4fnmaddss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "v4fnmaddss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - - -#include - -__m128 a, b, c, d, e, f, x1, x2, x3; -__m128 *mem; -__mmask8 m; - -int foo () -{ - x1 = _mm_4fnmadd_ss (a, b, c, d, e, mem); - x2 = _mm_mask_4fnmadd_ss (a, m, b, c, d, e, mem); - x3 = _mm_maskz_4fnmadd_ss (m, a, b, c, d, e, mem); -} diff --git a/gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-1.c b/gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-1.c deleted file mode 100644 index bcabfac416f..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-1.c +++ /dev/null @@ -1,19 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mavx5124vnniw" } */ -/* { dg-warning "AVX5124VNNIW support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vp4dpwssd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vp4dpwssd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vp4dpwssd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -__m512i a, b, c, d, e, f, g, x1, x2, x3; -__m128i *mem; -__mmask16 m; - -int foo () -{ - x1 = _mm512_4dpwssd_epi32 (a, b, c, d, e, mem); - x2 = _mm512_mask_4dpwssd_epi32 (a, m, b, c, d, e, mem); - x3 = _mm512_maskz_4dpwssd_epi32 (m, a, b, c, d, e, mem); -} diff --git a/gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-2.c b/gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-2.c deleted file mode 100644 index 9044ce5ea19..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-2.c +++ /dev/null @@ -1,80 +0,0 @@ -/* { dg-do run } */ -/* { dg-options "-O2 -mavx5124vnniw" } */ -/* { dg-require-effective-target avx5124vnniw } */ -/* { dg-warning "AVX5124VNNIW support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#define AVX5124VNNIW -#include "avx512f-helper.h" - -#define SIZE (AVX512F_LEN / 32) - -#include "avx512f-mask-type.h" - -void -CALC (short *src1, short* src2, short *src3, - short *src4, int* prev_dst, short *mult, int *dst) -{ - int i; - - for (i = 0; i < SIZE; i++) - { - int p1dword, p2dword; - dst[i] = prev_dst[i]; - p1dword = (int)(src1[2*i ]) * (int)(mult[0]); - p2dword = (int)(src1[2*i+1]) * (int)(mult[1]); - dst[i] += p1dword + p2dword; - - p1dword = (int)(src2[2*i ]) * (int)(mult[2]); - p2dword = (int)(src2[2*i+1]) * (int)(mult[3]); - dst[i] += p1dword + p2dword; - - p1dword = (int)(src3[2*i ]) * (int)(mult[4]); - p2dword = (int)(src3[2*i+1]) * (int)(mult[5]); - dst[i] += p1dword + p2dword; - - p1dword = (int)(src4[2*i ]) * (int)(mult[6]); - p2dword = (int)(src4[2*i+1]) * (int)(mult[7]); - dst[i] += p1dword + p2dword; - } -} - -void -TEST (void) -{ - int i; - UNION_TYPE (AVX512F_LEN, i_w) src1, src2, src3, src4; - UNION_TYPE (AVX512F_LEN, i_d) src5, dst, res1, res2, res3; - UNION_TYPE (128, i_w) mult; - MASK_TYPE mask = MASK_VALUE; - int res_ref[SIZE]; - - for (i = 0; i < SIZE * 2; i++) - { - src1.a[i] = 2 + 7 * i % 291; - src2.a[i] = 3 + 11 * (i % 377) * i; - src3.a[i] = src1.a[i] * src1.a[i]; - src4.a[i] = src2.a[i] * src2.a[i]; - } - for (i = 0; i < 8; i++) - mult.a[i] = 3 + i * 2; - - for (i = 0; i < SIZE; i++) - src5.a[i] = DEFAULT_VALUE; - - CALC (src1.a, src2.a, src3.a, src4.a, src5.a, mult.a, res_ref); - - res1.x = INTRINSIC (_4dpwssd_epi32) ( src5.x, src1.x, src2.x, src3.x, src4.x, &mult.x); - res2.x = INTRINSIC (_mask_4dpwssd_epi32) (src5.x, mask, src1.x, src2.x, src3.x, src4.x, &mult.x); - res3.x = INTRINSIC (_maskz_4dpwssd_epi32) (mask, src5.x, src1.x, src2.x, src3.x, src4.x, &mult.x); - - if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) - abort (); - - MASK_MERGE (i_d) (res_ref, mask, SIZE); - if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) - abort (); - - MASK_ZERO (i_d) (res_ref, mask, SIZE); - if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-1.c b/gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-1.c deleted file mode 100644 index e3e46c53368..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-1.c +++ /dev/null @@ -1,19 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -mavx5124vnniw" } */ -/* { dg-warning "AVX5124VNNIW support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vp4dpwssds\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vp4dpwssds\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vp4dpwssds\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -__m512i a, b, c, d, e, f, g, x1, x2, x3; -__m128i *mem; -__mmask16 m; - -int foo () -{ - x1 = _mm512_4dpwssds_epi32 (a, b, c, d, e, mem); - x2 = _mm512_mask_4dpwssds_epi32 (a, m, b, c, d, e, mem); - x3 = _mm512_maskz_4dpwssds_epi32 (m, a, b, c, d, e, mem); -} diff --git a/gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-2.c b/gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-2.c deleted file mode 100644 index 193477c9864..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-2.c +++ /dev/null @@ -1,99 +0,0 @@ -/* { dg-do run } */ -/* { dg-options "-O2 -mavx5124vnniw" } */ -/* { dg-require-effective-target avx5124vnniw } */ -/* { dg-warning "AVX5124VNNIW support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#define DEFAULT_VALUE 0x7ffffffe - -#define AVX5124VNNIW -#include "avx512f-helper.h" - -#define SIZE (AVX512F_LEN / 32) - -#include "avx512f-mask-type.h" - -void -CALC (short *src1, short* src2, short *src3, - short *src4, int* prev_dst, short *mult, int *dst) -{ - int i; - - for (i = 0; i < SIZE; i++) - { - int p1dword, p2dword; - long long int tmp; - dst[i] = prev_dst[i]; - p1dword = (int)(src1[2*i ]) * (int)(mult[0]); - p2dword = (int)(src1[2*i+1]) * (int)(mult[1]); - tmp = (long long)dst[i] + p1dword + p2dword; - if (tmp > 0x7fffffff) - dst[i] = 0x7fffffff; - else - dst[i] += p1dword + p2dword; - - p1dword = (int)(src2[2*i ]) * (int)(mult[2]); - p2dword = (int)(src2[2*i+1]) * (int)(mult[3]); - tmp = (long long)dst[i] + p1dword + p2dword; - if (tmp > 0x7fffffff) - dst[i] = 0x7fffffff; - else - dst[i] += p1dword + p2dword; - - p1dword = (int)(src3[2*i ]) * (int)(mult[4]); - p2dword = (int)(src3[2*i+1]) * (int)(mult[5]); - tmp = (long long)dst[i] + p1dword + p2dword; - if (tmp > 0x7fffffff) - dst[i] = 0x7fffffff; - else - dst[i] += p1dword + p2dword; - - p1dword = (int)(src4[2*i ]) * (int)(mult[6]); - p2dword = (int)(src4[2*i+1]) * (int)(mult[7]); - tmp = (long long)dst[i] + p1dword + p2dword; - if (tmp > 0x7fffffff) - dst[i] = 0x7fffffff; - else - dst[i] += p1dword + p2dword; - } -} - -void -TEST (void) -{ - int i; - UNION_TYPE (AVX512F_LEN, i_w) src1, src2, src3, src4; - UNION_TYPE (AVX512F_LEN, i_d) src5, dst, res1, res2, res3; - UNION_TYPE (128, i_w) mult; - MASK_TYPE mask = MASK_VALUE; - int res_ref[SIZE]; - - for (i = 0; i < SIZE * 2; i++) - { - src1.a[i] = 2 + 7 * i % 291; - src2.a[i] = 3 + 11 * (i % 377) * i; - src3.a[i] = src1.a[i] * src1.a[i]; - src4.a[i] = src2.a[i] * src2.a[i]; - } - for (i = 0; i < 8; i++) - mult.a[i] = 3 + i * 2; - - for (i = 0; i < SIZE; i++) - src5.a[i] = DEFAULT_VALUE; - - CALC (src1.a, src2.a, src3.a, src4.a, src5.a, mult.a, res_ref); - - res1.x = INTRINSIC (_4dpwssds_epi32) ( src5.x, src1.x, src2.x, src3.x, src4.x, &mult.x); - res2.x = INTRINSIC (_mask_4dpwssds_epi32) (src5.x, mask, src1.x, src2.x, src3.x, src4.x, &mult.x); - res3.x = INTRINSIC (_maskz_4dpwssds_epi32) (mask, src5.x, src1.x, src2.x, src3.x, src4.x, &mult.x); - - if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref)) - abort (); - - MASK_MERGE (i_d) (res_ref, mask, SIZE); - if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref)) - abort (); - - MASK_ZERO (i_d) (res_ref, mask, SIZE); - if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-check.h b/gcc/testsuite/gcc.target/i386/avx512er-check.h deleted file mode 100644 index eb44c2f7ade..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-check.h +++ /dev/null @@ -1,3 +0,0 @@ -#define AVX512ER -#define avx512er_test test_512 -#include "avx512f-helper.h" diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c deleted file mode 100644 index 93766d87451..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512er -O2" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vexp2pd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vexp2pd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vexp2pd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vexp2pd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\[^\{\]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vexp2pd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vexp2pd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -volatile __m512d x; -volatile __mmask8 m; - -void extern -avx512er_test (void) -{ - x = _mm512_exp2a23_pd (x); - x = _mm512_mask_exp2a23_pd (x, m, x); - x = _mm512_maskz_exp2a23_pd (m, x); - x = _mm512_exp2a23_round_pd (x, _MM_FROUND_NO_EXC); - x = _mm512_mask_exp2a23_round_pd (x, m, x, _MM_FROUND_NO_EXC); - x = _mm512_maskz_exp2a23_round_pd (m, x, _MM_FROUND_NO_EXC); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c deleted file mode 100644 index 20457e1fcd2..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c +++ /dev/null @@ -1,49 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-check.h" -#include "avx512f-mask-type.h" -#include "avx512f-helper.h" -#include - -void static -compute_vexp2pd (double *s, double *r) -{ - int i; - for (i = 0; i < 8; i++) - r[i] = pow (2.0, s[i]); -} - -void static -avx512er_test (void) -{ - union512d src, res1, res2, res3; - __mmask8 mask = MASK_VALUE; - double res_ref[8]; - int i; - - for (i = 0; i < 8; i++) - { - src.a[i] = 179.345 - 6.5645 * i; - res2.a[i] = DEFAULT_VALUE; - } - - res1.x = _mm512_exp2a23_pd (src.x); - res2.x = _mm512_mask_exp2a23_pd (res2.x, mask, src.x); - res3.x = _mm512_maskz_exp2a23_pd (mask, src.x); - - compute_vexp2pd (src.a, res_ref); - - if (check_rough_union512d (res1, res_ref, 0.0001)) - abort (); - - MASK_MERGE (d) (res_ref, mask, 8); - if (check_rough_union512d (res2, res_ref, 0.0001)) - abort (); - - MASK_ZERO (d) (res_ref, mask, 8); - if (check_rough_union512d (res3, res_ref, 0.0001)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-1.c deleted file mode 100644 index 130a2e001c7..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-1.c +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512er -O2" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vexp2ps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vexp2ps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vexp2ps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vexp2ps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\[^\{\]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vexp2ps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vexp2ps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -volatile __m512 x; -volatile __mmask16 m; - -void extern -avx512er_test (void) -{ - x = _mm512_exp2a23_ps (x); - x = _mm512_mask_exp2a23_ps (x, m, x); - x = _mm512_maskz_exp2a23_ps (m, x); - x = _mm512_exp2a23_round_ps (x, _MM_FROUND_NO_EXC); - x = _mm512_mask_exp2a23_round_ps (x, m, x, _MM_FROUND_NO_EXC); - x = _mm512_maskz_exp2a23_round_ps (m, x, _MM_FROUND_NO_EXC); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-2.c deleted file mode 100644 index 6294dfffee7..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-2.c +++ /dev/null @@ -1,49 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-check.h" -#include "avx512f-mask-type.h" -#include "avx512f-helper.h" -#include - -void static -compute_vexp2ps (float *s, float *r) -{ - int i; - for (i = 0; i < 16; i++) - r[i] = pow (2.0, s[i]); -} - -void static -avx512er_test (void) -{ - union512 src, res1, res2, res3; - __mmask16 mask = MASK_VALUE; - float res_ref[16]; - int i; - - for (i = 0; i < 16; i++) - { - src.a[i] = 79.345 - 6.5645 * i; - res2.a[i] = DEFAULT_VALUE; - } - - res1.x = _mm512_exp2a23_ps (src.x); - res2.x = _mm512_mask_exp2a23_ps (res2.x, mask, src.x); - res3.x = _mm512_maskz_exp2a23_ps (mask, src.x); - - compute_vexp2ps (src.a, res_ref); - - if (check_rough_union512 (res1, res_ref, 0.0001)) - abort (); - - MASK_MERGE ()(res_ref, mask, 16); - if (check_rough_union512 (res2, res_ref, 0.0001)) - abort (); - - MASK_ZERO ()(res_ref, mask, 16); - if (check_rough_union512 (res3, res_ref, 0.0001)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-1.c deleted file mode 100644 index 8959c0544a2..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-1.c +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512er -O2" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vrcp28pd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28pd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28pd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28pd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\[^\{\]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28pd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28pd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -volatile __m512d x; -volatile __mmask8 m; - -void extern -avx512er_test (void) -{ - x = _mm512_rcp28_pd (x); - x = _mm512_mask_rcp28_pd (x, m, x); - x = _mm512_maskz_rcp28_pd (m, x); - x = _mm512_rcp28_round_pd (x, _MM_FROUND_NO_EXC); - x = _mm512_mask_rcp28_round_pd (x, m, x, _MM_FROUND_NO_EXC); - x = _mm512_maskz_rcp28_round_pd (m, x, _MM_FROUND_NO_EXC); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-2.c deleted file mode 100644 index aaab1dc0eb2..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-2.c +++ /dev/null @@ -1,48 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-check.h" -#include "avx512f-mask-type.h" -#include "avx512f-helper.h" - -void static -compute_vrcp28pd (double *s, double *r) -{ - int i; - for (i = 0; i < 8; i++) - r[i] = 1.0 / s[i]; -} - -void static -avx512er_test (void) -{ - union512d src, res1, res2, res3; - __mmask8 mask = MASK_VALUE; - double res_ref[8]; - int i; - - for (i = 0; i < 8; i++) - { - src.a[i] = 179.345 - 6.5645 * i; - res2.a[i] = DEFAULT_VALUE; - } - - res1.x = _mm512_rcp28_pd (src.x); - res2.x = _mm512_mask_rcp28_pd (res2.x, mask, src.x); - res3.x = _mm512_maskz_rcp28_pd (mask, src.x); - - compute_vrcp28pd (src.a, res_ref); - - if (check_rough_union512d (res1, res_ref, 0.0001)) - abort (); - - MASK_MERGE (d) (res_ref, mask, 8); - if (check_rough_union512d (res2, res_ref, 0.0001)) - abort (); - - MASK_ZERO (d) (res_ref, mask, 8); - if (check_rough_union512d (res3, res_ref, 0.0001)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-1.c deleted file mode 100644 index f0da889361d..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-1.c +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512er -O2" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vrcp28ps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28ps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28ps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28ps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\[^\{\]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28ps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28ps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -volatile __m512 x; -volatile __mmask16 m; - -void extern -avx512er_test (void) -{ - x = _mm512_rcp28_ps (x); - x = _mm512_mask_rcp28_ps (x, m, x); - x = _mm512_maskz_rcp28_ps (m, x); - x = _mm512_rcp28_round_ps (x, _MM_FROUND_NO_EXC); - x = _mm512_mask_rcp28_round_ps (x, m, x, _MM_FROUND_NO_EXC); - x = _mm512_maskz_rcp28_round_ps (m, x, _MM_FROUND_NO_EXC); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-2.c deleted file mode 100644 index 241327143e0..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-2.c +++ /dev/null @@ -1,48 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-check.h" -#include "avx512f-mask-type.h" -#include "avx512f-helper.h" - -void static -compute_vrcp28ps (float *s, float *r) -{ - int i; - for (i = 0; i < 16; i++) - r[i] = 1.0 / s[i]; -} - -void static -avx512er_test (void) -{ - union512 src, res1, res2, res3; - __mmask16 mask = MASK_VALUE; - float res_ref[16]; - int i; - - for (i = 0; i < 16; i++) - { - src.a[i] = 179.345 - 6.5645 * i; - res2.a[i] = DEFAULT_VALUE; - } - - res1.x = _mm512_rcp28_ps (src.x); - res2.x = _mm512_mask_rcp28_ps (res2.x, mask, src.x); - res3.x = _mm512_maskz_rcp28_ps (mask, src.x); - - compute_vrcp28ps (src.a, res_ref); - - if (check_rough_union512 (res1, res_ref, 0.0001)) - abort (); - - MASK_MERGE ()(res_ref, mask, 16); - if (check_rough_union512 (res2, res_ref, 0.0001)) - abort (); - - MASK_ZERO ()(res_ref, mask, 16); - if (check_rough_union512 (res3, res_ref, 0.0001)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-3.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-3.c deleted file mode 100644 index 1e68926a318..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-3.c +++ /dev/null @@ -1,52 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-check.h" - -#define MAX 1000 -#define EPS 0.00001 - -__attribute__ ((noinline, optimize (0))) -void static -compute_rcp_ref (float *a, float *b, float *r) -{ - for (int i = 0; i < MAX; i++) - r[i] = a[i] / b[i]; -} - -__attribute__ ((noinline)) -void static -compute_rcp_exp (float *a, float *b, float *r) -{ - for (int i = 0; i < MAX; i++) - r[i] = a[i] / b[i]; -} - -void static -avx512er_test (void) -{ - float a[MAX]; - float b[MAX]; - float ref[MAX]; - float exp[MAX]; - - for (int i = 0; i < MAX; i++) - { - a[i] = 179.345 - 6.5645 * i; - b[i] = 8765.987 - 8.6756 * i; - } - - compute_rcp_ref (a, b, ref); - compute_rcp_exp (a, b, exp); - -#pragma GCC novector - for (int i = 0; i < MAX; i++) - { - float rel_err = (ref[i] - exp[i]) / ref[i]; - rel_err = rel_err > 0.0 ? rel_err : -rel_err; - if (rel_err > EPS) - abort (); - } -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-4.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-4.c deleted file mode 100644 index b042849cba4..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-4.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-vrcp28ps-3.c" - -/* { dg-final { scan-assembler-times "vrcp28ps\[^\n\r\]*zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28sd-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28sd-1.c deleted file mode 100644 index f70042580b6..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28sd-1.c +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512er -O2" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vrcp28sd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28sd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+\[^\{\]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28sd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28sd\[ \\t\]+\[^\n\]*\{sae\}\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28sd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28sd\[ \\t\]+\[^\n\]*\{sae\}\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -volatile __m128d x, y, z; -volatile __mmask8 m; - -void extern -avx512er_test (void) -{ - x = _mm_rcp28_sd (x, y); - x = _mm_rcp28_round_sd (x, y, _MM_FROUND_NO_EXC); - x = _mm_mask_rcp28_sd (z, m, x, y); - x = _mm_mask_rcp28_round_sd (z, m, x, y, _MM_FROUND_NO_EXC); - x = _mm_maskz_rcp28_sd (m, x, y); - x = _mm_maskz_rcp28_round_sd (m, x, y, _MM_FROUND_NO_EXC); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28sd-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28sd-2.c deleted file mode 100644 index b434c3c26d9..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28sd-2.c +++ /dev/null @@ -1,59 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-check.h" -#include "avx512f-mask-type.h" -#include "avx512f-helper.h" -#include - -#define IMM 0x23 - -void static -avx512er_test (void) -{ - union128d src1, src2, res, res1, res2, res3, res4; - double res_ref[2]; - MASK_TYPE mask = MASK_VALUE; - int i; - - for (i = 0; i < 2; i++) - { - src1.a[i] = 179.345 - 6.5645 * i; - src2.a[i] = 204179.345 + 6.5645 * i; - res_ref[i] = src1.a[i]; - } - - res_ref[0] = 1.0 / src2.a[0]; - - res.x = _mm_rcp28_round_sd (src1.x, src2.x, _MM_FROUND_NO_EXC); - res1.x = _mm_mask_rcp28_sd (src1.x, IMM, src1.x, src2.x); - res2.x = _mm_mask_rcp28_round_sd (src1.x, IMM, src1.x, src2.x, - _MM_FROUND_TO_NEAREST_INT - | _MM_FROUND_NO_EXC); - res3.x = _mm_maskz_rcp28_sd (IMM, src1.x, src2.x); - res4.x = _mm_maskz_rcp28_round_sd (IMM, src1.x, src2.x, - _MM_FROUND_TO_NEAREST_INT - | _MM_FROUND_NO_EXC); - - - if (checkVd (res.a, res_ref, 2)) - abort (); - - MASK_MERGE (d) (res_ref, mask, 1); - - if (checkVd (res1.a, res_ref, 2)) - abort (); - - if (checkVd (res2.a, res_ref, 2)) - abort (); - - MASK_ZERO (d) (res_ref, mask, 1); - - if (checkVd (res3.a, res_ref, 2)) - abort (); - - if (checkVd (res4.a, res_ref, 2)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ss-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ss-1.c deleted file mode 100644 index c819c1abdae..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ss-1.c +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512er -O2" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vrcp28ss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28ss\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+\[^\{\]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28ss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28ss\[ \\t\]+\[^\n\]*\{sae\}\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28ss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28ss\[ \\t\]+\[^\n\]*\{sae\}\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -volatile __m128 x, y, z; -volatile __mmask8 m; - -void extern -avx512er_test (void) -{ - x = _mm_rcp28_ss (x, y); - x = _mm_rcp28_round_ss (x, y, _MM_FROUND_NO_EXC); - x = _mm_mask_rcp28_ss (z, m, x, y); - x = _mm_mask_rcp28_round_ss (z, m, x, y, _MM_FROUND_NO_EXC); - x = _mm_maskz_rcp28_ss (m, x, y); - x = _mm_maskz_rcp28_round_ss (m, x, y, _MM_FROUND_NO_EXC); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ss-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ss-2.c deleted file mode 100644 index f3b894b2f47..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrcp28ss-2.c +++ /dev/null @@ -1,58 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-check.h" -#include "avx512f-mask-type.h" -#include "avx512f-helper.h" -#include - -#define IMM 0x23 - -void static -avx512er_test (void) -{ - union128 src1, src2, res, res1, res2, res3, res4; - float res_ref[4]; - MASK_TYPE mask = MASK_VALUE; - int i; - - for (i = 0; i < 4; i++) - { - src1.a[i] = 179.345 - 6.5645 * i; - src2.a[i] = 179345.006 + 6.5645 * i; - res_ref[i] = src1.a[i]; - } - - res_ref[0] = 1.0 / src2.a[0]; - - res.x = _mm_rcp28_round_ss (src1.x, src2.x, _MM_FROUND_NO_EXC); - res1.x = _mm_mask_rcp28_ss (src1.x, IMM, src1.x, src2.x); - res2.x = _mm_mask_rcp28_round_ss (src1.x, IMM, src1.x, src2.x, - _MM_FROUND_TO_NEAREST_INT - | _MM_FROUND_NO_EXC); - res3.x = _mm_maskz_rcp28_ss (IMM, src1.x, src2.x); - res4.x = _mm_maskz_rcp28_round_ss (IMM, src1.x, src2.x, - _MM_FROUND_TO_NEAREST_INT - | _MM_FROUND_NO_EXC); - - if (checkVf (res.a, res_ref, 4)) - abort (); - - MASK_MERGE () (res_ref, mask, 1); - - if (checkVf (res1.a, res_ref, 2)) - abort (); - - if (checkVf (res2.a, res_ref, 2)) - abort (); - - MASK_ZERO () (res_ref, mask, 1); - - if (checkVf (res3.a, res_ref, 2)) - abort (); - - if (checkVf (res4.a, res_ref, 2)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-1.c deleted file mode 100644 index 67822d15296..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-1.c +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512er -O2" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vrsqrt28pd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28pd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28pd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28pd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\[^\{\]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28pd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28pd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -volatile __m512d x; -volatile __mmask8 m; - -void extern -avx512er_test (void) -{ - x = _mm512_rsqrt28_pd (x); - x = _mm512_mask_rsqrt28_pd (x, m, x); - x = _mm512_maskz_rsqrt28_pd (m, x); - x = _mm512_rsqrt28_round_pd (x, _MM_FROUND_NO_EXC); - x = _mm512_mask_rsqrt28_round_pd (x, m, x, _MM_FROUND_NO_EXC); - x = _mm512_maskz_rsqrt28_round_pd (m, x, _MM_FROUND_NO_EXC); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-2.c deleted file mode 100644 index 3227df84b2e..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-2.c +++ /dev/null @@ -1,49 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-check.h" -#include "avx512f-mask-type.h" -#include "avx512f-helper.h" -#include - -void static -compute_vrsqrt28pd (double *s, double *r) -{ - int i; - for (i = 0; i < 8; i++) - r[i] = 1.0 / sqrt (s[i]); -} - -void static -avx512er_test (void) -{ - union512d src, res1, res2, res3; - __mmask8 mask = MASK_VALUE; - double res_ref[8]; - int i; - - for (i = 0; i < 8; i++) - { - src.a[i] = 179.345 - 6.5645 * i; - res2.a[i] = DEFAULT_VALUE; - } - - res1.x = _mm512_rsqrt28_pd (src.x); - res2.x = _mm512_mask_rsqrt28_pd (res2.x, mask, src.x); - res3.x = _mm512_maskz_rsqrt28_pd (mask, src.x); - - compute_vrsqrt28pd (src.a, res_ref); - - if (check_rough_union512d (res1, res_ref, 0.0001)) - abort (); - - MASK_MERGE (d) (res_ref, mask, 8); - if (check_rough_union512d (res2, res_ref, 0.0001)) - abort (); - - MASK_ZERO (d) (res_ref, mask, 8); - if (check_rough_union512d (res3, res_ref, 0.0001)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-1.c deleted file mode 100644 index 63ff4eab724..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-1.c +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512er -O2" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\[^\{\]*(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -volatile __m512 x; -volatile __mmask16 m; - -void extern -avx512er_test (void) -{ - x = _mm512_rsqrt28_ps (x); - x = _mm512_mask_rsqrt28_ps (x, m, x); - x = _mm512_maskz_rsqrt28_ps (m, x); - x = _mm512_rsqrt28_round_ps (x, _MM_FROUND_NO_EXC); - x = _mm512_mask_rsqrt28_round_ps (x, m, x, _MM_FROUND_NO_EXC); - x = _mm512_maskz_rsqrt28_round_ps (m, x, _MM_FROUND_NO_EXC); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-2.c deleted file mode 100644 index 911683f5e54..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-2.c +++ /dev/null @@ -1,49 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-check.h" -#include "avx512f-mask-type.h" -#include "avx512f-helper.h" -#include - -void static -compute_vrsqrt28ps (float *s, float *r) -{ - int i; - for (i = 0; i < 16; i++) - r[i] = 1.0 / sqrt (s[i]); -} - -void static -avx512er_test (void) -{ - union512 src, res1, res2, res3; - __mmask16 mask = MASK_VALUE; - float res_ref[16]; - int i; - - for (i = 0; i < 16; i++) - { - src.a[i] = 179.345 - 6.5645 * i; - res2.a[i] = DEFAULT_VALUE; - } - - res1.x = _mm512_rsqrt28_ps (src.x); - res2.x = _mm512_mask_rsqrt28_ps (res2.x, mask, src.x); - res3.x = _mm512_maskz_rsqrt28_ps (mask, src.x); - - compute_vrsqrt28ps (src.a, res_ref); - - if (check_rough_union512 (res1, res_ref, 0.0001)) - abort (); - - MASK_MERGE ()(res_ref, mask, 16); - if (check_rough_union512 (res2, res_ref, 0.0001)) - abort (); - - MASK_ZERO ()(res_ref, mask, 16); - if (check_rough_union512 (res3, res_ref, 0.0001)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-3.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-3.c deleted file mode 100644 index b922fa285b5..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-3.c +++ /dev/null @@ -1,49 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include -#include "avx512er-check.h" - -#define MAX 1000 -#define EPS 0.00001 - -__attribute__ ((noinline, optimize (1, "-fno-fast-math"))) -void static -compute_rsqrt_ref (float *a, float *r) -{ - for (int i = 0; i < MAX; i++) - r[i] = 1.0 / sqrtf (a[i]); -} - -__attribute__ ((noinline)) -void static -compute_rsqrt_exp (float *a, float *r) -{ - for (int i = 0; i < MAX; i++) - r[i] = 1.0 / sqrtf (a[i]); -} - -void static -avx512er_test (void) -{ - float in[MAX]; - float ref[MAX]; - float exp[MAX]; - - for (int i = 0; i < MAX; i++) - in[i] = 8765.987 - 8.6756 * i; - - compute_rsqrt_ref (in, ref); - compute_rsqrt_exp (in, exp); - -#pragma GCC novector - for (int i = 0; i < MAX; i++) - { - float rel_err = (ref[i] - exp[i]) / ref[i]; - rel_err = rel_err > 0.0 ? rel_err : -rel_err; - if (rel_err > EPS) - abort (); - } -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-4.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-4.c deleted file mode 100644 index 4a793a6b0ae..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-4.c +++ /dev/null @@ -1,8 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-vrsqrt28ps-3.c" - -/* { dg-final { scan-assembler-times "vrsqrt28ps\[^\n\r\]*zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-not "vrcp28ps\[^\n\r\]*zmm\[0-9\]+(?:\n|\[ \\t\]+#)" } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-5.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-5.c deleted file mode 100644 index 3c0066f7ea4..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-5.c +++ /dev/null @@ -1,49 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include -#include "avx512er-check.h" - -#define MAX 1000 -#define EPS 0.00001 - -__attribute__ ((noinline, optimize (1, "-fno-fast-math"))) -void static -compute_sqrt_ref (float *a, float *r) -{ - for (int i = 0; i < MAX; i++) - r[i] = sqrtf (a[i]); -} - -__attribute__ ((noinline)) -void static -compute_sqrt_exp (float *a, float *r) -{ - for (int i = 0; i < MAX; i++) - r[i] = sqrtf (a[i]); -} - -void static -avx512er_test (void) -{ - float in[MAX]; - float ref[MAX]; - float exp[MAX]; - - for (int i = 0; i < MAX; i++) - in[i] = 8765.987 - 8.6756 * i; - - compute_sqrt_ref (in, ref); - compute_sqrt_exp (in, exp); - -#pragma GCC novector - for (int i = 0; i < MAX; i++) - { - float rel_err = (ref[i] - exp[i]) / ref[i]; - rel_err = rel_err > 0.0 ? rel_err : -rel_err; - if (rel_err > EPS) - abort (); - } -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-6.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-6.c deleted file mode 100644 index f1f013572f7..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-6.c +++ /dev/null @@ -1,8 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -ffast-math -ftree-vectorize -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-vrsqrt28ps-5.c" - -/* { dg-final { scan-assembler-times "vrsqrt28ps\[^\n\r\]*zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrcp28ps\[^\n\r\]*zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-1.c deleted file mode 100644 index 28f6b193b3b..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-1.c +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512er -O2" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vrsqrt28sd\[ \\t\]+\[^\{^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28sd\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28sd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28sd\[ \\t\]+\[^\n\]*\{sae\}\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28sd\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28sd\[ \\t\]+\[^\n\]*\{sae\}\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -volatile __m128d x, y, z; -volatile __mmask8 m; - -void extern -avx512er_test (void) -{ - x = _mm_rsqrt28_sd (x, y); - x = _mm_rsqrt28_round_sd (x, y, _MM_FROUND_NO_EXC); - x = _mm_mask_rsqrt28_sd (z, m, x, y); - x = _mm_mask_rsqrt28_round_sd (z, m, x, y, _MM_FROUND_NO_EXC); - x = _mm_maskz_rsqrt28_sd (m, x, y); - x = _mm_maskz_rsqrt28_round_sd (m, x, y, _MM_FROUND_NO_EXC); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-2.c deleted file mode 100644 index 31910210571..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-2.c +++ /dev/null @@ -1,58 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-check.h" -#include "avx512f-mask-type.h" -#include "avx512f-helper.h" -#include - -#define IMM 0x23 - -void static -avx512er_test (void) -{ - union128d src1, src2, res, res1, res2, res3, res4; - double res_ref[2]; - MASK_TYPE mask = MASK_VALUE; - int i; - - for (i = 0; i < 2; i++) - { - src1.a[i] = 179.345 - 6.5645 * i; - src2.a[i] = 45 - 6.5645 * i; - res_ref[i] = src1.a[i]; - } - - res_ref[0] = 1.0 / sqrt (src2.a[0]); - - res.x = _mm_rsqrt28_round_sd (src1.x, src2.x, _MM_FROUND_NO_EXC); - res1.x = _mm_mask_rsqrt28_sd (src1.x, IMM, src1.x, src2.x); - res2.x = _mm_mask_rsqrt28_round_sd (src1.x, IMM, src1.x, src2.x, - _MM_FROUND_TO_NEAREST_INT - | _MM_FROUND_NO_EXC); - res3.x = _mm_maskz_rsqrt28_sd (IMM, src1.x, src2.x); - res4.x = _mm_maskz_rsqrt28_round_sd (IMM, src1.x, src2.x, - _MM_FROUND_TO_NEAREST_INT - | _MM_FROUND_NO_EXC); - - if (checkVd (res.a, res_ref, 2)) - abort (); - - MASK_MERGE (d) (res_ref, mask, 1); - - if (checkVd (res1.a, res_ref, 2)) - abort (); - - if (checkVd (res2.a, res_ref, 2)) - abort (); - - MASK_ZERO (d) (res_ref, mask, 1); - - if (checkVd (res3.a, res_ref, 2)) - abort (); - - if (checkVd (res4.a, res_ref, 2)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-1.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-1.c deleted file mode 100644 index 29a9736f89c..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-1.c +++ /dev/null @@ -1,25 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512er -O2" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vrsqrt28ss\[ \\t\]+\[^\{^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28ss\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28ss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28ss\[ \\t\]+\[^\n\]*\{sae\}\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28ss\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ -/* { dg-final { scan-assembler-times "vrsqrt28ss\[ \\t\]+\[^\n\]*\{sae\}\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */ - -#include - -volatile __m128 x, y, z; -volatile __mmask8 m; - -void extern -avx512er_test (void) -{ - x = _mm_rsqrt28_ss (x, y); - x = _mm_rsqrt28_round_ss (x, y, _MM_FROUND_NO_EXC); - x = _mm_mask_rsqrt28_ss (z, m, x, y); - x = _mm_mask_rsqrt28_round_ss (z, m, x, y, _MM_FROUND_NO_EXC); - x = _mm_maskz_rsqrt28_ss (m, x, y); - x = _mm_maskz_rsqrt28_round_ss (m, x, y, _MM_FROUND_NO_EXC); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-2.c b/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-2.c deleted file mode 100644 index f9c4488facc..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-2.c +++ /dev/null @@ -1,58 +0,0 @@ -/* { dg-do run } */ -/* { dg-require-effective-target avx512er } */ -/* { dg-options "-O2 -mavx512er" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "avx512er-check.h" -#include "avx512f-mask-type.h" -#include "avx512f-helper.h" -#include - -#define IMM 0x23 - -void static -avx512er_test (void) -{ - union128 src1, src2, res, res1, res2, res3, res4; - float res_ref[4]; - MASK_TYPE mask = MASK_VALUE; - int i; - - for (i = 0; i < 4; i++) - { - src1.a[i] = 179.345 - 6.5645 * i; - src2.a[i] = 179221345 + 6.5645 * i; - res_ref[i] = src1.a[i]; - } - - res_ref[0] = 1.0 / sqrt (src2.a[0]); - - res.x = _mm_rsqrt28_round_ss (src1.x, src2.x, _MM_FROUND_NO_EXC); - res1.x = _mm_mask_rsqrt28_ss (src1.x, IMM, src1.x, src2.x); - res2.x = _mm_mask_rsqrt28_round_ss (src1.x, IMM, src1.x, src2.x, - _MM_FROUND_TO_NEAREST_INT - | _MM_FROUND_NO_EXC); - res3.x = _mm_maskz_rsqrt28_ss (IMM, src1.x, src2.x); - res4.x = _mm_maskz_rsqrt28_round_ss (IMM, src1.x, src2.x, - _MM_FROUND_TO_NEAREST_INT - | _MM_FROUND_NO_EXC); - - if (checkVf (res.a, res_ref, 4)) - abort (); - - MASK_MERGE () (res_ref, mask, 1); - - if (checkVf (res1.a, res_ref, 2)) - abort (); - - if (checkVf (res2.a, res_ref, 2)) - abort (); - - MASK_ZERO () (res_ref, mask, 1); - - if (checkVf (res3.a, res_ref, 2)) - abort (); - - if (checkVf (res4.a, res_ref, 2)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dpd-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dpd-1.c deleted file mode 100644 index f694f2188dd..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dpd-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vgatherpf0dpd\[ \\t\]+\[^\{\n\]*\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m256i idx; -volatile __mmask8 m8; -void *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i32gather_pd (idx, base, 8, _MM_HINT_T0); - _mm512_mask_prefetch_i32gather_pd (idx, m8, base, 8, _MM_HINT_T0); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dps-1.c deleted file mode 100644 index 9376c1d6f38..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dps-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vgatherpf0dps\[ \\t\]+\[^\{\n\]*\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m512i idx; -volatile __mmask16 m16; -int *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i32gather_ps (idx, base, 8, _MM_HINT_T0); - _mm512_mask_prefetch_i32gather_ps (idx, m16, base, 8, _MM_HINT_T0); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qpd-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qpd-1.c deleted file mode 100644 index 13cfac5c7e6..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qpd-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vgatherpf0qpd\[ \\t\]+\[^\{\n\]*\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m512i idx; -volatile __mmask8 m8; -int *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i64gather_pd (idx, base, 8, _MM_HINT_T0); - _mm512_mask_prefetch_i64gather_pd (idx, m8, base, 8, _MM_HINT_T0); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qps-1.c deleted file mode 100644 index 79fc548619d..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qps-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vgatherpf0qps\[ \\t\]+\[^\{\n\]*\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m512i idx; -volatile __mmask8 m8; -int *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i64gather_ps (idx, base, 8, _MM_HINT_T0); - _mm512_mask_prefetch_i64gather_ps (idx, m8, base, 8, _MM_HINT_T0); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dpd-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dpd-1.c deleted file mode 100644 index 1949fe16f69..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dpd-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vgatherpf1dpd\[ \\t\]+\[^\{\n\]*\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m256i idx; -volatile __mmask8 m8; -int *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i32gather_pd (idx, base, 8, _MM_HINT_T1); - _mm512_mask_prefetch_i32gather_pd (idx, m8, base, 8, _MM_HINT_T1); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dps-1.c deleted file mode 100644 index a0fc183c91e..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dps-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vgatherpf1dps\[ \\t\]+\[^\{\n\]*\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m512i idx; -volatile __mmask16 m16; -int *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i32gather_ps (idx, base, 8, _MM_HINT_T1); - _mm512_mask_prefetch_i32gather_ps (idx, m16, base, 8, _MM_HINT_T1); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qpd-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qpd-1.c deleted file mode 100644 index e3cedbb881c..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qpd-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vgatherpf1qpd\[ \\t\]+\[^\{\n\]*\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m512i idx; -volatile __mmask8 m8; -int *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i64gather_pd (idx, base, 8, _MM_HINT_T1); - _mm512_mask_prefetch_i64gather_pd (idx, m8, base, 8, _MM_HINT_T1); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qps-1.c deleted file mode 100644 index 6ed7297376f..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qps-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vgatherpf1qps\[ \\t\]+\[^\{\n\]*\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m512i idx; -volatile __mmask8 m8; -int *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i64gather_ps (idx, base, 8, _MM_HINT_T1); - _mm512_mask_prefetch_i64gather_ps (idx, m8, base, 8, _MM_HINT_T1); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dpd-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dpd-1.c deleted file mode 100644 index 3fc2c024ef3..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dpd-1.c +++ /dev/null @@ -1,16 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vscatterpf0dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ -#include - -volatile __m256i idx; -volatile __mmask8 m8; -void *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i32scatter_pd (base, idx, 8, _MM_HINT_T0); - _mm512_mask_prefetch_i32scatter_pd (base, m8, idx, 8, _MM_HINT_ET0); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c deleted file mode 100644 index 5689e3a5151..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vscatterpf0dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m512i idx; -volatile __mmask16 m16; -int *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i32scatter_ps (base, idx, 8, _MM_HINT_T0); - _mm512_mask_prefetch_i32scatter_ps (base, m16, idx, 8, _MM_HINT_ET0); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qpd-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qpd-1.c deleted file mode 100644 index cf5596377fe..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qpd-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vscatterpf0qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m512i idx; -volatile __mmask8 m8; -void *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i64scatter_pd (base, idx, 8, _MM_HINT_T0); - _mm512_mask_prefetch_i64scatter_pd (base, m8, idx, 8, _MM_HINT_ET0); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c deleted file mode 100644 index eeb65d42f0f..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vscatterpf0qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m512i idx; -volatile __mmask8 m8; -int *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i64scatter_ps (base, idx, 8, _MM_HINT_T0); - _mm512_mask_prefetch_i64scatter_ps (base, m8, idx, 8, _MM_HINT_ET0); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dpd-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dpd-1.c deleted file mode 100644 index 39b36d1bbe7..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dpd-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vscatterpf1dpd\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m256i idx; -volatile __mmask8 m8; -void *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i32scatter_pd (base, idx, 8, _MM_HINT_T1); - _mm512_mask_prefetch_i32scatter_pd (base, m8, idx, 8, _MM_HINT_ET1); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c deleted file mode 100644 index edcde856d8a..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vscatterpf1dps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m512i idx; -volatile __mmask16 m16; -int *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i32scatter_ps (base, idx, 8, _MM_HINT_T1); - _mm512_mask_prefetch_i32scatter_ps (base, m16, idx, 8, _MM_HINT_ET1); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c deleted file mode 100644 index c4cdaa8c590..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vscatterpf1qpd\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m512i idx; -volatile __mmask8 m8; -int *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i64scatter_pd (base, idx, 8, _MM_HINT_T1); - _mm512_mask_prefetch_i64scatter_pd (base, m8, idx, 8, _MM_HINT_ET1); -} diff --git a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c b/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c deleted file mode 100644 index 95ab72eebe2..00000000000 --- a/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c +++ /dev/null @@ -1,17 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512pf -O2" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-times "vscatterpf1qps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 2 } } */ - -#include - -volatile __m512i idx; -volatile __mmask8 m8; -int *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i64scatter_ps (base, idx, 8, _MM_HINT_T1); - _mm512_mask_prefetch_i64scatter_ps (base, m8, idx, 8, _MM_HINT_ET1); -} diff --git a/gcc/testsuite/gcc.target/i386/builtin_target.c b/gcc/testsuite/gcc.target/i386/builtin_target.c index fff643c13b0..45554d8771d 100644 --- a/gcc/testsuite/gcc.target/i386/builtin_target.c +++ b/gcc/testsuite/gcc.target/i386/builtin_target.c @@ -89,10 +89,6 @@ quick_check () assert (__builtin_cpu_supports ("avx512f") >= 0); - assert (__builtin_cpu_supports ("avx5124vnniw") >= 0); - - assert (__builtin_cpu_supports ("avx5124fmaps") >= 0); - assert (__builtin_cpu_supports ("avx512vpopcntdq") >= 0); assert (__builtin_cpu_supports ("x86-64") >= 0); diff --git a/gcc/testsuite/gcc.target/i386/pr104448.c b/gcc/testsuite/gcc.target/i386/pr104448.c deleted file mode 100644 index 3cf913e94ea..00000000000 --- a/gcc/testsuite/gcc.target/i386/pr104448.c +++ /dev/null @@ -1,10 +0,0 @@ -/* PR target/104448 */ -/* { dg-do compile { target { *-*-linux* && lp64 } } } */ -/* { dg-options "-mavx5124vnniw -mno-xsave -mabi=ms" } */ -/* { dg-warning "AVX5124VNNIW support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -int -main () -{ - return 0; -} diff --git a/gcc/testsuite/gcc.target/i386/pr82941-2.c b/gcc/testsuite/gcc.target/i386/pr82941-2.c deleted file mode 100644 index cafa1bf23ca..00000000000 --- a/gcc/testsuite/gcc.target/i386/pr82941-2.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=knl" } */ -/* { dg-warning "'-march=knl' support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "pr82941-1.c" - -/* { dg-final { scan-assembler-not "vzeroupper" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr82942-2.c b/gcc/testsuite/gcc.target/i386/pr82942-2.c deleted file mode 100644 index 55572b03c9b..00000000000 --- a/gcc/testsuite/gcc.target/i386/pr82942-2.c +++ /dev/null @@ -1,8 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512f -mavx512er -mtune=knl -O2" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "'-mtune=knl' support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "pr82941-1.c" - -/* { dg-final { scan-assembler-not "vzeroupper" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr82990-1.c b/gcc/testsuite/gcc.target/i386/pr82990-1.c deleted file mode 100644 index a87288987c9..00000000000 --- a/gcc/testsuite/gcc.target/i386/pr82990-1.c +++ /dev/null @@ -1,15 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=knl -mvzeroupper" } */ -/* { dg-warning "'-march=knl' support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include - -extern __m512d y, z; - -void -pr82941 () -{ - z = y; -} - -/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr82990-3.c b/gcc/testsuite/gcc.target/i386/pr82990-3.c deleted file mode 100644 index 0c902cdf91b..00000000000 --- a/gcc/testsuite/gcc.target/i386/pr82990-3.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mavx512f -mavx512er -mvzeroupper -O2" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "pr82941-1.c" - -/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr82990-6.c b/gcc/testsuite/gcc.target/i386/pr82990-6.c deleted file mode 100644 index 41fd1cb17b6..00000000000 --- a/gcc/testsuite/gcc.target/i386/pr82990-6.c +++ /dev/null @@ -1,7 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=skylake-avx512 -mtune=knl" } */ -/* { dg-warning "'-mtune=knl' support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#include "pr82941-1.c" - -/* { dg-final { scan-assembler-not "vzeroupper" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr82990-7.c b/gcc/testsuite/gcc.target/i386/pr82990-7.c deleted file mode 100644 index dedde8b854b..00000000000 --- a/gcc/testsuite/gcc.target/i386/pr82990-7.c +++ /dev/null @@ -1,6 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-O2 -march=skylake-avx512 -mtune=generic -mtune-ctrl=^emit_vzeroupper" } */ - -#include "pr82941-1.c" - -/* { dg-final { scan-assembler-not "vzeroupper" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr89523-5.c b/gcc/testsuite/gcc.target/i386/pr89523-5.c deleted file mode 100644 index cdf3190c1b3..00000000000 --- a/gcc/testsuite/gcc.target/i386/pr89523-5.c +++ /dev/null @@ -1,40 +0,0 @@ -/* { dg-do compile { target { ! ia32 } } } */ -/* { dg-require-effective-target maybe_x32 } */ -/* { dg-options "-mx32 -O2 -mavx512pf" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler "\tvgather" } } */ -/* { dg-final { scan-assembler-not "addr32 vgather" } } */ - -typedef int __v8si __attribute__ ((__vector_size__ (32))); -typedef long long __m256i __attribute__ ((__vector_size__ (32), - __may_alias__)); -typedef unsigned char __mmask8; - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_prefetch_i32gather_pd (__m256i __index, void const *__addr, - int __scale, int __hint) -{ - __builtin_ia32_gatherpfdpd ((__mmask8) 0xFF, (__v8si) __index, __addr, - __scale, __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_prefetch_i32gather_pd (__m256i __index, __mmask8 __mask, - void const *__addr, int __scale, int __hint) -{ - __builtin_ia32_gatherpfdpd (__mask, (__v8si) __index, __addr, __scale, - __hint); -} - -volatile __m256i idx; -volatile __mmask8 m8; -void *base; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i32gather_pd (idx, base, 8, 3); - _mm512_mask_prefetch_i32gather_pd (idx, m8, base, 8, 3); -} diff --git a/gcc/testsuite/gcc.target/i386/pr89523-6.c b/gcc/testsuite/gcc.target/i386/pr89523-6.c deleted file mode 100644 index d69206d1115..00000000000 --- a/gcc/testsuite/gcc.target/i386/pr89523-6.c +++ /dev/null @@ -1,39 +0,0 @@ -/* { dg-do compile { target { ! ia32 } } } */ -/* { dg-require-effective-target maybe_x32 } */ -/* { dg-options "-mx32 -O2 -mavx512pf" } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler-not "\tvgather" } } */ -/* { dg-final { scan-assembler "addr32 vgather" } } */ - -typedef int __v8si __attribute__ ((__vector_size__ (32))); -typedef long long __m256i __attribute__ ((__vector_size__ (32), - __may_alias__)); -typedef unsigned char __mmask8; - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_prefetch_i32gather_pd (__m256i __index, void const *__addr, - int __scale, int __hint) -{ - __builtin_ia32_gatherpfdpd ((__mmask8) 0xFF, (__v8si) __index, __addr, - __scale, __hint); -} - -extern __inline void -__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) -_mm512_mask_prefetch_i32gather_pd (__m256i __index, __mmask8 __mask, - void const *__addr, int __scale, int __hint) -{ - __builtin_ia32_gatherpfdpd (__mask, (__v8si) __index, __addr, __scale, - __hint); -} - -volatile __m256i idx; -volatile __mmask8 m8; - -void extern -avx512pf_test (void) -{ - _mm512_prefetch_i32gather_pd (idx, (void *) 0, 8, 3); - _mm512_mask_prefetch_i32gather_pd (idx, m8, (void *) 0, 8, 3); -} diff --git a/gcc/testsuite/gcc.target/i386/pr91033.c b/gcc/testsuite/gcc.target/i386/pr91033.c deleted file mode 100644 index 3b52c66380f..00000000000 --- a/gcc/testsuite/gcc.target/i386/pr91033.c +++ /dev/null @@ -1,16 +0,0 @@ -/* PR tree-optimization/91033 */ -/* { dg-do compile { target pthread } } */ -/* { dg-options "-march=knl -O2 -fopenmp-simd -ftree-parallelize-loops=2" } */ -/* { dg-warning "'-march=knl' support will be removed in GCC 15" "" { target *-*-* } 0 } */ - -#define N 1024 -int a[N]; - -void -foo (void) -{ - int i; - #pragma omp simd simdlen (4) - for (i = 0; i < N; ++i) - a[i] = a[i] + 1; -} diff --git a/gcc/testsuite/gcc.target/i386/prefetchwt1-1.c b/gcc/testsuite/gcc.target/i386/prefetchwt1-1.c deleted file mode 100644 index 742a3203069..00000000000 --- a/gcc/testsuite/gcc.target/i386/prefetchwt1-1.c +++ /dev/null @@ -1,15 +0,0 @@ -/* { dg-do compile } */ -/* { dg-options "-mprefetchwt1 -O2" } */ -/* { dg-warning "PREFETCHWT1 support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-final { scan-assembler "\[ \\t\]+prefetchwt1\[ \\t\]+" } } */ - -#include - -void *p; - -void extern -prefetchw__test (void) -{ - _mm_prefetch (p, _MM_HINT_ET1); -} - diff --git a/gcc/testsuite/gcc.target/i386/sse-12.c b/gcc/testsuite/gcc.target/i386/sse-12.c index 765fd4de778..a14652bab6a 100644 --- a/gcc/testsuite/gcc.target/i386/sse-12.c +++ b/gcc/testsuite/gcc.target/i386/sse-12.c @@ -3,12 +3,7 @@ popcntintrin.h gfniintrin.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 -mavx512vbmi2 -mavx512ifma -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd -mavx512bf16 -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4" } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX5124FMAPS support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX5124VNNIW support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "PREFETCHWT1 support will be removed in GCC 15" "" { target *-*-* } 0 } */ +/* { 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 -mavx512cd -msha -mxsavec -mxsaves -mclflushopt -mavx512bw -mavx512dq -mavx512vl -mavx512vbmi -mavx512vbmi2 -mavx512ifma -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd -mavx512bf16 -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4" } */ #include diff --git a/gcc/testsuite/gcc.target/i386/sse-13.c b/gcc/testsuite/gcc.target/i386/sse-13.c index 2972b9f2544..567c01d7b50 100644 --- a/gcc/testsuite/gcc.target/i386/sse-13.c +++ b/gcc/testsuite/gcc.target/i386/sse-13.c @@ -1,11 +1,6 @@ /* { 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 -mavx512vbmi2 -mavx512ifma -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mavx512vp2intersect -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd -mavx512bf16 -menqcmd -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4" } */ +/* { 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 -mavx512cd -msha -mxsavec -mxsaves -mclflushopt -mavx512vl -mavx512dq -mavx512bw -mavx512vbmi -mavx512vbmi2 -mavx512ifma -mavx512vpopcntdq -mavx512vp2intersect -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mavx512bitalg -mpconfig -mwbnoinvd -mavx512bf16 -menqcmd -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4" } */ /* { dg-add-options bind_pic_locally } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX5124FMAPS support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX5124VNNIW support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "PREFETCHWT1 support will be removed in GCC 15" "" { target *-*-* } 0 } */ #include diff --git a/gcc/testsuite/gcc.target/i386/sse-14.c b/gcc/testsuite/gcc.target/i386/sse-14.c index 1eb369697a3..880633f2413 100644 --- a/gcc/testsuite/gcc.target/i386/sse-14.c +++ b/gcc/testsuite/gcc.target/i386/sse-14.c @@ -1,11 +1,6 @@ /* { 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 -mavx512vbmi2 -mavx5124fmaps -mavx5124vnniw -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -mavx512vl -mavx512bf16 -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4" } */ +/* { 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 -mavx512cd -msha -mxsavec -mxsaves -mclflushopt -mavx512dq -mavx512bw -mavx512vl -mavx512ifma -mavx512vbmi -mavx512vbmi2 -mavx512vpopcntdq -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -mavx512vl -mavx512bf16 -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4" } */ /* { dg-add-options bind_pic_locally } */ -/* { dg-warning "AVX512ER support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX512PF support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX5124FMAPS support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "AVX5124VNNIW support will be removed in GCC 15" "" { target *-*-* } 0 } */ -/* { dg-warning "PREFETCHWT1 support will be removed in GCC 15" "" { target *-*-* } 0 } */ #include @@ -640,44 +635,6 @@ test_4x (_mm_mask_fixupimm_round_ss, __m128, __m128, __mmask8, __m128, __m128i, test_4x (_mm_maskz_fixupimm_round_sd, __m128d, __mmask8, __m128d, __m128d, __m128i, 1, 8) test_4x (_mm_maskz_fixupimm_round_ss, __m128, __mmask8, __m128, __m128, __m128i, 1, 8) -/* avx512pfintrin.h */ -test_2vx (_mm512_prefetch_i32gather_ps, __m512i, void const *, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i32scatter_ps, void const *, __m512i, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i64gather_ps, __m512i, void const *, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i64scatter_ps, void const *, __m512i, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i32gather_pd, __m256i, void const *, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i32scatter_pd, void const *, __m256i, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i64gather_pd, __m512i, void const *, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i64scatter_pd, void const *, __m512i, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i32gather_ps, __m512i, __mmask16, void const *, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i32scatter_ps, void const *, __mmask16, __m512i, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i64gather_ps, __m512i, __mmask8, void const *, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i64scatter_ps, void const *, __mmask8, __m512i, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i32gather_pd, __m256i, __mmask8, void const *, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i32scatter_pd, void const *, __mmask8, __m256i, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i64gather_pd, __m512i, __mmask8, void const *, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i64scatter_pd, void const *, __mmask8, __m512i, 1, _MM_HINT_T0) - -/* avx512erintrin.h */ -test_1 (_mm512_exp2a23_round_pd, __m512d, __m512d, 8) -test_1 (_mm512_exp2a23_round_ps, __m512, __m512, 8) -test_1 (_mm512_rcp28_round_pd, __m512d, __m512d, 8) -test_1 (_mm512_rcp28_round_ps, __m512, __m512, 8) -test_1 (_mm512_rsqrt28_round_pd, __m512d, __m512d, 8) -test_1 (_mm512_rsqrt28_round_ps, __m512, __m512, 8) -test_2 (_mm512_maskz_exp2a23_round_pd, __m512d, __mmask8, __m512d, 8) -test_2 (_mm512_maskz_exp2a23_round_ps, __m512, __mmask16, __m512, 8) -test_2 (_mm512_maskz_rcp28_round_pd, __m512d, __mmask8, __m512d, 8) -test_2 (_mm512_maskz_rcp28_round_ps, __m512, __mmask16, __m512, 8) -test_2 (_mm512_maskz_rsqrt28_round_pd, __m512d, __mmask8, __m512d, 8) -test_2 (_mm512_maskz_rsqrt28_round_ps, __m512, __mmask16, __m512, 8) -test_3 (_mm512_mask_exp2a23_round_pd, __m512d, __m512d, __mmask8, __m512d, 8) -test_3 (_mm512_mask_exp2a23_round_ps, __m512, __m512, __mmask16, __m512, 8) -test_3 (_mm512_mask_rcp28_round_pd, __m512d, __m512d, __mmask8, __m512d, 8) -test_3 (_mm512_mask_rcp28_round_ps, __m512, __m512, __mmask16, __m512, 8) -test_3 (_mm512_mask_rsqrt28_round_pd, __m512d, __m512d, __mmask8, __m512d, 8) -test_3 (_mm512_mask_rsqrt28_round_ps, __m512, __m512, __mmask16, __m512, 8) - /* avx512fp16intrin.h */ test_1 (_mm512_sqrt_round_ph, __m512h, __m512h, 8) test_1 (_mm_reduce_ph, __m128h, __m128h, 123) diff --git a/gcc/testsuite/gcc.target/i386/sse-22.c b/gcc/testsuite/gcc.target/i386/sse-22.c index e6681f7dd12..bd44e851da0 100644 --- a/gcc/testsuite/gcc.target/i386/sse-22.c +++ b/gcc/testsuite/gcc.target/i386/sse-22.c @@ -103,7 +103,7 @@ #ifndef DIFFERENT_PRAGMAS -#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,avx512f,avx512er,avx512cd,avx512pf,sha,prefetchwt1,avx512vl,avx512bw,avx512dq,avx512vbmi,avx512vbmi2,avx512ifma,avx5124fmaps,avx5124vnniw,avx512vpopcntdq,gfni,avx512bitalg,avx512bf16,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avx512fp16,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4") +#pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,avx512f,avx512cd,sha,avx512vl,avx512bw,avx512dq,avx512vbmi,avx512vbmi2,avx512ifma,avx512vpopcntdq,gfni,avx512bitalg,avx512bf16,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avx512fp16,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4") #endif /* Following intrinsics require immediate arguments. They @@ -220,7 +220,7 @@ test_4 (_mm_cmpestrz, int, __m128i, int, __m128i, int, 1) /* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM/AVX512F/SHA) */ #ifdef DIFFERENT_PRAGMAS -#pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,avx512f,avx512er,avx512cd,avx512pf,sha,avx512vl,avx512bw,avx512dq,avx512ifma,avx512vbmi,avx512vbmi2,avx5124fmaps,avx5124vnniw,avx512vpopcntdq,gfni,avx512bitalg,avx512bf16,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avx512fp16,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4") +#pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,avx512f,avx512cd,sha,avx512vl,avx512bw,avx512dq,avx512ifma,avx512vbmi,avx512vbmi2,avx512vpopcntdq,gfni,avx512bitalg,avx512bf16,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avx512fp16,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4") #endif #include test_1 (_cvtss_sh, unsigned short, float, 1) @@ -732,48 +732,6 @@ test_4x (_mm_mask_fixupimm_round_ss, __m128, __m128, __mmask8, __m128, __m128i, test_4x (_mm_maskz_fixupimm_round_sd, __m128d, __mmask8, __m128d, __m128d, __m128i, 1, 8) test_4x (_mm_maskz_fixupimm_round_ss, __m128, __mmask8, __m128, __m128, __m128i, 1, 8) -/* avx512pfintrin.h */ -test_2vx (_mm512_prefetch_i32gather_ps, __m512i, void const *, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i32scatter_ps, void const *, __m512i, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i64gather_ps, __m512i, void const *, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i64scatter_ps, void const *, __m512i, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i32gather_pd, __m256i, void const *, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i32scatter_pd, void const *, __m256i, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i64gather_pd, __m512i, long long *, 1, _MM_HINT_T0) -test_2vx (_mm512_prefetch_i64scatter_pd, void const *, __m512i, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i32gather_ps, __m512i, __mmask16, void const *, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i32scatter_ps, void const *, __mmask16, __m512i, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i64gather_ps, __m512i, __mmask8, void const *, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i64scatter_ps, void const *, __mmask8, __m512i, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i32gather_pd, __m256i, __mmask8, void const *, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i32scatter_pd, void const *, __mmask8, __m256i, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i64gather_pd, __m512i, __mmask8, long long *, 1, _MM_HINT_T0) -test_3vx (_mm512_mask_prefetch_i64scatter_pd, void const *, __mmask8, __m512i, 1, _MM_HINT_T0) - -/* avx512erintrin.h */ -test_1 (_mm512_exp2a23_round_pd, __m512d, __m512d, 8) -test_1 (_mm512_exp2a23_round_ps, __m512, __m512, 8) -test_1 (_mm512_rcp28_round_pd, __m512d, __m512d, 8) -test_1 (_mm512_rcp28_round_ps, __m512, __m512, 8) -test_1 (_mm512_rsqrt28_round_pd, __m512d, __m512d, 8) -test_1 (_mm512_rsqrt28_round_ps, __m512, __m512, 8) -test_2 (_mm512_maskz_exp2a23_round_pd, __m512d, __mmask8, __m512d, 8) -test_2 (_mm512_maskz_exp2a23_round_ps, __m512, __mmask16, __m512, 8) -test_2 (_mm512_maskz_rcp28_round_pd, __m512d, __mmask8, __m512d, 8) -test_2 (_mm512_maskz_rcp28_round_ps, __m512, __mmask16, __m512, 8) -test_2 (_mm512_maskz_rsqrt28_round_pd, __m512d, __mmask8, __m512d, 8) -test_2 (_mm512_maskz_rsqrt28_round_ps, __m512, __mmask16, __m512, 8) -test_3 (_mm512_mask_exp2a23_round_pd, __m512d, __m512d, __mmask8, __m512d, 8) -test_3 (_mm512_mask_exp2a23_round_ps, __m512, __m512, __mmask16, __m512, 8) -test_3 (_mm512_mask_rcp28_round_pd, __m512d, __m512d, __mmask8, __m512d, 8) -test_3 (_mm512_mask_rcp28_round_ps, __m512, __m512, __mmask16, __m512, 8) -test_3 (_mm512_mask_rsqrt28_round_pd, __m512d, __m512d, __mmask8, __m512d, 8) -test_3 (_mm512_mask_rsqrt28_round_ps, __m512, __m512, __mmask16, __m512, 8) -test_2 (_mm_rcp28_round_sd, __m128d, __m128d, __m128d, 8) -test_2 (_mm_rcp28_round_ss, __m128, __m128, __m128, 8) -test_2 (_mm_rsqrt28_round_sd, __m128d, __m128d, __m128d, 8) -test_2 (_mm_rsqrt28_round_ss, __m128, __m128, __m128, 8) - /* avx512fp16intrin.h */ test_1 (_mm512_sqrt_round_ph, __m512h, __m512h, 8) test_1 (_mm_reduce_ph, __m128h, __m128h, 123) diff --git a/gcc/testsuite/gcc.target/i386/sse-23.c b/gcc/testsuite/gcc.target/i386/sse-23.c index 92b1c467d95..8ccc194ef27 100644 --- a/gcc/testsuite/gcc.target/i386/sse-23.c +++ b/gcc/testsuite/gcc.target/i386/sse-23.c @@ -402,32 +402,6 @@ #define __builtin_ia32_cvtsd2ss_mask_round(A, B, C, D, E) __builtin_ia32_cvtsd2ss_mask_round(A, B, C, D, 8) #define __builtin_ia32_cvtss2sd_mask_round(A, B, C, D, E) __builtin_ia32_cvtss2sd_mask_round(A, B, C, D, 8) -/* avx512pfintrin.h */ -#define __builtin_ia32_gatherpfdps(A, B, C, D, E) __builtin_ia32_gatherpfdps(A, B, C, 1, _MM_HINT_T0) -#define __builtin_ia32_gatherpfqps(A, B, C, D, E) __builtin_ia32_gatherpfqps(A, B, C, 1, _MM_HINT_T0) -#define __builtin_ia32_scatterpfdps(A, B, C, D, E) __builtin_ia32_scatterpfdps(A, B, C, 1, _MM_HINT_T0) -#define __builtin_ia32_scatterpfqps(A, B, C, D, E) __builtin_ia32_scatterpfqps(A, B, C, 1, _MM_HINT_T0) -#define __builtin_ia32_gatherpfdpd(A, B, C, D, E) __builtin_ia32_gatherpfdpd(A, B, C, 1, _MM_HINT_T0) -#define __builtin_ia32_gatherpfqpd(A, B, C, D, E) __builtin_ia32_gatherpfqpd(A, B, C, 1, _MM_HINT_T0) -#define __builtin_ia32_scatterpfdpd(A, B, C, D, E) __builtin_ia32_scatterpfdpd(A, B, C, 1, _MM_HINT_T0) -#define __builtin_ia32_scatterpfqpd(A, B, C, D, E) __builtin_ia32_scatterpfqpd(A, B, C, 1, _MM_HINT_T0) - -/* avx512erintrin.h */ -#define __builtin_ia32_exp2pd_mask(A, B, C, D) __builtin_ia32_exp2pd_mask (A, B, C, 8) -#define __builtin_ia32_exp2ps_mask(A, B, C, D) __builtin_ia32_exp2ps_mask (A, B, C, 8) -#define __builtin_ia32_rcp28pd_mask(A, B, C, D) __builtin_ia32_rcp28pd_mask (A, B, C, 8) -#define __builtin_ia32_rcp28ps_mask(A, B, C, D) __builtin_ia32_rcp28ps_mask (A, B, C, 8) -#define __builtin_ia32_rsqrt28pd_mask(A, B, C, D) __builtin_ia32_rsqrt28pd_mask (A, B, C, 8) -#define __builtin_ia32_rsqrt28ps_mask(A, B, C, D) __builtin_ia32_rsqrt28ps_mask (A, B, C, 8) -#define __builtin_ia32_rcp28sd_round(A, B, C) __builtin_ia32_rcp28sd_round(A, B, 8) -#define __builtin_ia32_rcp28ss_round(A, B, C) __builtin_ia32_rcp28ss_round(A, B, 8) -#define __builtin_ia32_rsqrt28sd_round(A, B, C) __builtin_ia32_rsqrt28sd_round(A, B, 8) -#define __builtin_ia32_rsqrt28ss_round(A, B, C) __builtin_ia32_rsqrt28ss_round(A, B, 8) -#define __builtin_ia32_rcp28sd_mask_round(A, B, C, D, E) __builtin_ia32_rcp28sd_mask_round(A, B, C, D, 8) -#define __builtin_ia32_rcp28ss_mask_round(A, B, C, D, E) __builtin_ia32_rcp28ss_mask_round(A, B, C, D, 8) -#define __builtin_ia32_rsqrt28sd_mask_round(A, B, C, D, E) __builtin_ia32_rsqrt28sd_mask_round(A, B, C, D, 8) -#define __builtin_ia32_rsqrt28ss_mask_round(A, B, C, D, E) __builtin_ia32_rsqrt28ss_mask_round(A, B, C, D, 8) - /* shaintrin.h */ #define __builtin_ia32_sha1rnds4(A, B, C) __builtin_ia32_sha1rnds4(A, B, 1) @@ -850,6 +824,6 @@ /* sm3intrin.h */ #define __builtin_ia32_vsm3rnds2(A, B, C, D) __builtin_ia32_vsm3rnds2 (A, B, C, 1) -#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,avx5124fmaps,avx5124vnniw,avx512vpopcntdq,clwb,mwaitx,clzero,pku,sgx,rdpid,gfni,avx512vbmi2,vpclmulqdq,avx512bitalg,pconfig,wbnoinvd,avx512bf16,enqcmd,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avx512fp16,avxifma,avxvnniint8,avxneconvert,cmpccxadd,amx-fp16,prefetchi,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4") +#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,avx512cd,sha,xsavec,xsaves,clflushopt,avx512bw,avx512dq,avx512vl,avx512vbmi,avx512ifma,avx512vpopcntdq,clwb,mwaitx,clzero,pku,sgx,rdpid,gfni,avx512vbmi2,vpclmulqdq,avx512bitalg,pconfig,wbnoinvd,avx512bf16,enqcmd,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avx512fp16,avxifma,avxvnniint8,avxneconvert,cmpccxadd,amx-fp16,prefetchi,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4") #include diff --git a/gcc/testsuite/gcc.target/i386/sse-26.c b/gcc/testsuite/gcc.target/i386/sse-26.c index 5e044b639c4..cc6ec25869f 100644 --- a/gcc/testsuite/gcc.target/i386/sse-26.c +++ b/gcc/testsuite/gcc.target/i386/sse-26.c @@ -1,6 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse2 -mmmx -mno-sse3 -mno-3dnow -mno-fma -mno-fxsr -mno-xsave -mno-rtm -mno-prfchw -mno-rdseed -mno-adx -mno-prefetchwt1 -mno-clflushopt -mno-xsavec -mno-xsaves -mno-clwb -mno-mwaitx -mno-clzero -mno-pku -mno-rdpid -mno-gfni -mno-shstk -mno-vaes -mno-vpclmulqdq" } */ +/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse2 -mmmx -mno-sse3 -mno-3dnow -mno-fma -mno-fxsr -mno-xsave -mno-rtm -mno-prfchw -mno-rdseed -mno-adx -mno-clflushopt -mno-xsavec -mno-xsaves -mno-clwb -mno-mwaitx -mno-clzero -mno-pku -mno-rdpid -mno-gfni -mno-shstk -mno-vaes -mno-vpclmulqdq" } */ /* { dg-add-options bind_pic_locally } */ -/* { dg-warning "PREFETCHWT1 support will be removed in GCC 15" "" { target *-*-* } 0 } */ #include "sse-13.c"