Message ID | 20240509031402.1736908-1-haochen.jiang@intel.com |
---|---|
State | New |
Headers | show |
Series | i386: Remove Xeon Phi ISA support | expand |
On Thu, May 9, 2024 at 11:17 AM Haochen Jiang <haochen.jiang@intel.com> wrote: > > Hi all, > > As mentioned in GCC14, we would like to remove Xeon Phi ISA > support for i386 backend in GCC15. This patch aims to do that. > > Bootstrapped and regtested on x86_64-pc-linux-gnu. Ok for trunk? Ok. > > Thx, > Haochen > > gcc/ChangeLog: > > * common/config/i386/cpuinfo.h > (get_intel_cpu): Remove Xeon Phi cpus. > (get_available_features): Remove Xeon Phi ISAs. > * common/config/i386/i386-common.cc > (OPTION_MASK_ISA_AVX512PF_SET): Removed. > (OPTION_MASK_ISA_AVX512ER_SET): Ditto. > (OPTION_MASK_ISA2_AVX5124FMAPS_SET): Ditto. > (OPTION_MASK_ISA2_AVX5124VNNIW_SET): Ditto. > (OPTION_MASK_ISA_PREFETCHWT1_SET): Ditto. > (OPTION_MASK_ISA_AVX512F_UNSET): Remove AVX512PF and AVX512ER. > (OPTION_MASK_ISA_AVX512PF_UNSET): Removed. > (OPTION_MASK_ISA_AVX512ER_UNSET): Ditto. > (OPTION_MASK_ISA2_AVX5124FMAPS_UNSET): Ditto. > (OPTION_MASK_ISA2_AVX5124VNNIW_UNSET): Ditto. > (OPTION_MASK_ISA_PREFETCHWT1_UNSET): Ditto. > (OPTION_MASK_ISA2_AVX512F_UNSET): Remove AVX5124FMAPS and > AVX5125VNNIW. > (ix86_handle_option): Remove Xeon Phi options. > (processor_names): Remove Xeon Phi cpus. > (processor_alias_table): Ditto. > * common/config/i386/i386-cpuinfo.h > (enum processor_types): Ditto. > (enum processor_features): Remove Xeon Phi ISAs. > * common/config/i386/i386-isas.h: Ditto. > * config.gcc: Remove Xeon Phi cpus and ISAs. > * config/i386/avx5124fmapsintrin.h: Remove intrin support. > * config/i386/avx5124vnniwintrin.h: Ditto. > * config/i386/avx512erintrin.h: Ditto. > * config/i386/avx512pfintrin.h: Ditto. > * config/i386/cpuid.h (bit_AVX512PF): Removed. > (bit_AVX512ER): Ditto. > (bit_PREFETCHWT1): Ditto. > (bit_AVX5124VNNIW): Ditto. > (bit_AVX5124FMAPS): Ditto. > * config/i386/driver-i386.cc > (host_detect_local_cpu): Remove Xeon Phi. > * config/i386/i386-builtin-types.def: Remove unused types. > * config/i386/i386-builtin.def (BDESC): Remove builtins. > * config/i386/i386-builtins.cc (ix86_init_mmx_sse_builtins): Ditto. > * config/i386/i386-c.cc (ix86_target_macros_internal): Remove Xeon > Phi cpus and ISAs. > * config/i386/i386-expand.cc (ix86_expand_builtin): Remove Xeon Phi > related handlers. > (ix86_emit_swdivsf): Ditto. > (ix86_emit_swsqrtsf): Ditto. > * config/i386/i386-isa.def: Remove Xeon Phi ISAs. > * config/i386/i386-options.cc (m_KNL): Removed. > (m_KNM): Ditto. > (isa2_opts): Remove Xeon Phi ISAs. > (isa_opts): Ditto. > (processor_cost_table): Remove Xeon Phi cpus. > (ix86_valid_target_attribute_inner_p): Remove Xeon Phi ISAs. > (ix86_option_override_internal): Remove Xeon Phi related handlers. > * config/i386/i386-rust.cc (ix86_rust_target_cpu_info): Remove Xeon > Phi ISAs. > * config/i386/i386.cc (ix86_hard_regno_mode_ok): Remove Xeon Phi > related handler. > * config/i386/i386.h (TARGET_EMIT_VZEROUPPER): Removed. > (enum processor_type): Remove Xeon Phi cpus. > * config/i386/i386.md (prefetch): Remove PREFETCHWT1. > (*prefetch_3dnow): Ditto. > (*prefetch_prefetchwt1): Removed. > * config/i386/i386.opt: Remove Xeon Phi ISAs. > * config/i386/immintrin.h: Ditto. > * config/i386/sse.md (VF1_AVX512ER_128_256): Removed. > (rsqrt<mode>2): Change iterator from VF1_AVX512ER_128_256 to > VF1_128_256. > (GATHER_SCATTER_SF_MEM_MODE): Removed. > (avx512pf_gatherpf<mode>sf): Ditto. > (*avx512pf_gatherpf<VI48_512:mode>sf_mask): Ditto. > (avx512pf_gatherpf<mode>df): Ditto. > (*avx512pf_gatherpf<VI4_256_8_512:mode>df_mask): Ditto. > (avx512pf_scatterpf<mode>sf): Ditto. > (*avx512pf_scatterpf<VI48_512:mode>sf_mask): Ditto. > (avx512pf_scatterpf<mode>df): Ditto. > (*avx512pf_scatterpf<VI4_256_8_512:mode>df_mask): Ditto. > (exp2<mode>2): Ditto. > (avx512er_exp2<mode><mask_name><round_saeonly_name>): Ditto. > (<mask_codefor>avx512er_rcp28<mode><mask_name><round_saeonly_name>): > Ditto. > (avx512er_vmrcp28<mode><mask_name><round_saeonly_name>): Ditto. > (<mask_codefor>avx512er_rsqrt28<mode><mask_name><round_saeonly_name>): > Ditto. > (avx512er_vmrsqrt28<mode><mask_name><round_saeonly_name>): Ditto. > (IMOD4): Ditto. > (imod4_narrow): Ditto. > (mov<mode>): Ditto. > (*mov<mode>_internal): Ditto. > (avx5124fmaddps_4fmaddps): Ditto. > (avx5124fmaddps_4fmaddps_mask): Ditto. > (avx5124fmaddps_4fmaddps_maskz): Ditto. > (avx5124fmaddps_4fmaddss): Ditto. > (avx5124fmaddps_4fmaddss_mask): Ditto. > (avx5124fmaddps_4fmaddss_maskz): Ditto. > (avx5124fmaddps_4fnmaddps): Ditto. > (avx5124fmaddps_4fnmaddps_mask): Ditto. > (avx5124fmaddps_4fnmaddps_maskz): Ditto. > (avx5124fmaddps_4fnmaddss): Ditto. > (avx5124fmaddps_4fnmaddss_mask): Ditto. > (avx5124fmaddps_4fnmaddss_maskz): Ditto. > (avx5124vnniw_vp4dpwssd): Ditto. > (avx5124vnniw_vp4dpwssd_mask): Ditto. > (avx5124vnniw_vp4dpwssd_maskz): Ditto. > (avx5124vnniw_vp4dpwssds): Ditto. > (avx5124vnniw_vp4dpwssds_mask): Ditto. > (avx5124vnniw_vp4dpwssds_maskz): Ditto. > * config/i386/x86-tune-sched.cc (ix86_issue_rate): Remove Xeon Phi cpus. > (ix86_adjust_cost): Ditto. > * config/i386/x86-tune.def (X86_TUNE_SCHEDULE): Ditto. > (X86_TUNE_PARTIAL_REG_DEPENDENCY): Ditto. > (X86_TUNE_MOVX): Ditto. > (X86_TUNE_MEMORY_MISMATCH_STALL): Ditto. > (X86_TUNE_ACCUMULATE_OUTGOING_ARGS): Ditto. > (X86_TUNE_FOUR_JUMP_LIMIT): Ditto. > (X86_TUNE_USE_INCDEC): Ditto. > (X86_TUNE_INTEGER_DFMODE_MOVES): Ditto. > (X86_TUNE_OPT_AGU): Ditto. > (X86_TUNE_AVOID_LEA_FOR_ADDR): Ditto. > (X86_TUNE_AVOID_MEM_OPND_FOR_CMOVE): Ditto. > (X86_TUNE_USE_SAHF): Ditto. > (X86_TUNE_USE_CLTD): Ditto. > (X86_TUNE_USE_BT): Ditto. > (X86_TUNE_ONE_IF_CONV_INSN): Ditto. > (X86_TUNE_EXPAND_ABS): Ditto. > (X86_TUNE_USE_SIMODE_FIOP): Ditto. > (X86_TUNE_EXT_80387_CONSTANTS): Ditto. > (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL): Ditto. > (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Ditto. > (X86_TUNE_SPLIT_MEM_OPND_FOR_FP_CONVERTS): Ditto. > (X86_TUNE_SLOW_PSHUFB): Ditto. > (X86_TUNE_EMIT_VZEROUPPER): Removed. > * config/i386/xmmintrin.h (enum _mm_hint): Remove _MM_HINT_ET1. > * doc/extend.texi: Remove Xeon Phi. > * doc/invoke.texi: Ditto. > > gcc/testsuite/ChangeLog: > > * g++.dg/other/i386-2.C: Remove Xeon Phi ISAs. > * g++.dg/other/i386-3.C: Ditto. > * g++.target/i386/mv-28.C: Ditto. > * gcc.target/i386/sse-12.c: Ditto. > * gcc.target/i386/sse-13.c: Ditto. > * gcc.target/i386/sse-14.c: Ditto. > * gcc.target/i386/sse-22.c: Ditto. > * gcc.target/i386/sse-23.c: Ditto. > * gcc.target/i386/sse-26.c: Ditto. > * gcc.target/i386/avx5124fmadd-v4fmaddps-1.c: Removed. > * gcc.target/i386/avx5124fmadd-v4fmaddps-2.c: Ditto. > * gcc.target/i386/avx5124fmadd-v4fmaddss-1.c: Ditto. > * gcc.target/i386/avx5124fmadd-v4fnmaddps-1.c: Ditto. > * gcc.target/i386/avx5124fmadd-v4fnmaddps-2.c: Ditto. > * gcc.target/i386/avx5124fmadd-v4fnmaddss-1.c: Ditto. > * gcc.target/i386/avx5124vnniw-vp4dpwssd-1.c: Ditto. > * gcc.target/i386/avx5124vnniw-vp4dpwssd-2.c: Ditto. > * gcc.target/i386/avx5124vnniw-vp4dpwssds-1.c: Ditto. > * gcc.target/i386/avx5124vnniw-vp4dpwssds-2.c: Ditto. > * gcc.target/i386/avx512er-check.h: Ditto. > * gcc.target/i386/avx512er-vexp2pd-1.c: Ditto. > * gcc.target/i386/avx512er-vexp2pd-2.c: Ditto. > * gcc.target/i386/avx512er-vexp2ps-1.c: Ditto. > * gcc.target/i386/avx512er-vexp2ps-2.c: Ditto. > * gcc.target/i386/avx512er-vrcp28pd-1.c: Ditto. > * gcc.target/i386/avx512er-vrcp28pd-2.c: Ditto. > * gcc.target/i386/avx512er-vrcp28ps-1.c: Ditto. > * gcc.target/i386/avx512er-vrcp28ps-2.c: Ditto. > * gcc.target/i386/avx512er-vrcp28ps-3.c: Ditto. > * gcc.target/i386/avx512er-vrcp28ps-4.c: Ditto. > * gcc.target/i386/avx512er-vrcp28sd-1.c: Ditto. > * gcc.target/i386/avx512er-vrcp28sd-2.c: Ditto. > * gcc.target/i386/avx512er-vrcp28ss-1.c: Ditto. > * gcc.target/i386/avx512er-vrcp28ss-2.c: Ditto. > * gcc.target/i386/avx512er-vrsqrt28pd-1.c: Ditto. > * gcc.target/i386/avx512er-vrsqrt28pd-2.c: Ditto. > * gcc.target/i386/avx512er-vrsqrt28ps-1.c: Ditto. > * gcc.target/i386/avx512er-vrsqrt28ps-2.c: Ditto. > * gcc.target/i386/avx512er-vrsqrt28ps-3.c: Ditto. > * gcc.target/i386/avx512er-vrsqrt28ps-4.c: Ditto. > * gcc.target/i386/avx512er-vrsqrt28ps-5.c: Ditto. > * gcc.target/i386/avx512er-vrsqrt28ps-6.c: Ditto. > * gcc.target/i386/avx512er-vrsqrt28sd-1.c: Ditto. > * gcc.target/i386/avx512er-vrsqrt28sd-2.c: Ditto. > * gcc.target/i386/avx512er-vrsqrt28ss-1.c: Ditto. > * gcc.target/i386/avx512er-vrsqrt28ss-2.c: Ditto. > * gcc.target/i386/avx512pf-vgatherpf0dpd-1.c: Ditto. > * gcc.target/i386/avx512pf-vgatherpf0dps-1.c: Ditto. > * gcc.target/i386/avx512pf-vgatherpf0qpd-1.c: Ditto. > * gcc.target/i386/avx512pf-vgatherpf0qps-1.c: Ditto. > * gcc.target/i386/avx512pf-vgatherpf1dpd-1.c: Ditto. > * gcc.target/i386/avx512pf-vgatherpf1dps-1.c: Ditto. > * gcc.target/i386/avx512pf-vgatherpf1qpd-1.c: Ditto. > * gcc.target/i386/avx512pf-vgatherpf1qps-1.c: Ditto. > * gcc.target/i386/avx512pf-vscatterpf0dpd-1.c: Ditto. > * gcc.target/i386/avx512pf-vscatterpf0dps-1.c: Ditto. > * gcc.target/i386/avx512pf-vscatterpf0qpd-1.c: Ditto. > * gcc.target/i386/avx512pf-vscatterpf0qps-1.c: Ditto. > * gcc.target/i386/avx512pf-vscatterpf1dpd-1.c: Ditto. > * gcc.target/i386/avx512pf-vscatterpf1dps-1.c: Ditto. > * gcc.target/i386/avx512pf-vscatterpf1qpd-1.c: Ditto. > * gcc.target/i386/avx512pf-vscatterpf1qps-1.c: Ditto. > * gcc.target/i386/pr104448.c: Ditto. > * gcc.target/i386/pr82941-2.c: Ditto. > * gcc.target/i386/pr82942-2.c: Ditto. > * gcc.target/i386/pr82990-1.c: Ditto. > * gcc.target/i386/pr82990-3.c: Ditto. > * gcc.target/i386/pr82990-6.c: Ditto. > * gcc.target/i386/pr82990-7.c: Ditto. > * gcc.target/i386/pr89523-5.c: Ditto. > * gcc.target/i386/pr89523-6.c: Ditto. > * gcc.target/i386/pr91033.c: Ditto. > * gcc.target/i386/prefetchwt1-1.c: Ditto. > --- > gcc/common/config/i386/cpuinfo.h | 22 - > gcc/common/config/i386/i386-common.cc | 90 --- > gcc/common/config/i386/i386-cpuinfo.h | 17 +- > gcc/common/config/i386/i386-isas.h | 10 - > gcc/config.gcc | 13 +- > gcc/config/i386/avx5124fmapsintrin.h | 194 +----- > gcc/config/i386/avx5124vnniwintrin.h | 110 +--- > gcc/config/i386/avx512erintrin.h | 514 +--------------- > gcc/config/i386/avx512pfintrin.h | 246 +------- > gcc/config/i386/cpuid.h | 5 - > gcc/config/i386/driver-i386.cc | 19 +- > gcc/config/i386/i386-builtin-types.def | 12 - > gcc/config/i386/i386-builtin.def | 31 - > gcc/config/i386/i386-builtins.cc | 26 - > gcc/config/i386/i386-c.cc | 23 - > gcc/config/i386/i386-expand.cc | 337 +--------- > gcc/config/i386/i386-isa.def | 5 - > gcc/config/i386/i386-options.cc | 52 +- > gcc/config/i386/i386-rust.cc | 4 - > gcc/config/i386/i386.cc | 7 - > gcc/config/i386/i386.h | 8 - > gcc/config/i386/i386.md | 19 +- > gcc/config/i386/i386.opt | 20 - > gcc/config/i386/immintrin.h | 8 - > gcc/config/i386/sse.md | 575 +----------------- > gcc/config/i386/x86-tune-sched.cc | 4 - > gcc/config/i386/x86-tune.def | 91 ++- > gcc/config/i386/xmmintrin.h | 1 - > gcc/doc/extend.texi | 34 -- > gcc/doc/invoke.texi | 57 +- > gcc/testsuite/g++.dg/other/i386-2.C | 7 +- > gcc/testsuite/g++.dg/other/i386-3.C | 7 +- > gcc/testsuite/g++.target/i386/mv28.C | 4 - > .../i386/avx5124fmadd-v4fmaddps-1.c | 19 - > .../i386/avx5124fmadd-v4fmaddps-2.c | 71 --- > .../i386/avx5124fmadd-v4fmaddss-1.c | 19 - > .../i386/avx5124fmadd-v4fnmaddps-1.c | 19 - > .../i386/avx5124fmadd-v4fnmaddps-2.c | 71 --- > .../i386/avx5124fmadd-v4fnmaddss-1.c | 20 - > .../i386/avx5124vnniw-vp4dpwssd-1.c | 19 - > .../i386/avx5124vnniw-vp4dpwssd-2.c | 80 --- > .../i386/avx5124vnniw-vp4dpwssds-1.c | 19 - > .../i386/avx5124vnniw-vp4dpwssds-2.c | 99 --- > .../gcc.target/i386/avx512er-check.h | 3 - > .../gcc.target/i386/avx512er-vexp2pd-1.c | 25 - > .../gcc.target/i386/avx512er-vexp2pd-2.c | 49 -- > .../gcc.target/i386/avx512er-vexp2ps-1.c | 25 - > .../gcc.target/i386/avx512er-vexp2ps-2.c | 49 -- > .../gcc.target/i386/avx512er-vrcp28pd-1.c | 25 - > .../gcc.target/i386/avx512er-vrcp28pd-2.c | 48 -- > .../gcc.target/i386/avx512er-vrcp28ps-1.c | 25 - > .../gcc.target/i386/avx512er-vrcp28ps-2.c | 48 -- > .../gcc.target/i386/avx512er-vrcp28ps-3.c | 52 -- > .../gcc.target/i386/avx512er-vrcp28ps-4.c | 7 - > .../gcc.target/i386/avx512er-vrcp28sd-1.c | 25 - > .../gcc.target/i386/avx512er-vrcp28sd-2.c | 59 -- > .../gcc.target/i386/avx512er-vrcp28ss-1.c | 25 - > .../gcc.target/i386/avx512er-vrcp28ss-2.c | 58 -- > .../gcc.target/i386/avx512er-vrsqrt28pd-1.c | 25 - > .../gcc.target/i386/avx512er-vrsqrt28pd-2.c | 49 -- > .../gcc.target/i386/avx512er-vrsqrt28ps-1.c | 25 - > .../gcc.target/i386/avx512er-vrsqrt28ps-2.c | 49 -- > .../gcc.target/i386/avx512er-vrsqrt28ps-3.c | 49 -- > .../gcc.target/i386/avx512er-vrsqrt28ps-4.c | 8 - > .../gcc.target/i386/avx512er-vrsqrt28ps-5.c | 49 -- > .../gcc.target/i386/avx512er-vrsqrt28ps-6.c | 8 - > .../gcc.target/i386/avx512er-vrsqrt28sd-1.c | 25 - > .../gcc.target/i386/avx512er-vrsqrt28sd-2.c | 58 -- > .../gcc.target/i386/avx512er-vrsqrt28ss-1.c | 25 - > .../gcc.target/i386/avx512er-vrsqrt28ss-2.c | 58 -- > .../i386/avx512pf-vgatherpf0dpd-1.c | 17 - > .../i386/avx512pf-vgatherpf0dps-1.c | 17 - > .../i386/avx512pf-vgatherpf0qpd-1.c | 17 - > .../i386/avx512pf-vgatherpf0qps-1.c | 17 - > .../i386/avx512pf-vgatherpf1dpd-1.c | 17 - > .../i386/avx512pf-vgatherpf1dps-1.c | 17 - > .../i386/avx512pf-vgatherpf1qpd-1.c | 17 - > .../i386/avx512pf-vgatherpf1qps-1.c | 17 - > .../i386/avx512pf-vscatterpf0dpd-1.c | 16 - > .../i386/avx512pf-vscatterpf0dps-1.c | 17 - > .../i386/avx512pf-vscatterpf0qpd-1.c | 17 - > .../i386/avx512pf-vscatterpf0qps-1.c | 17 - > .../i386/avx512pf-vscatterpf1dpd-1.c | 17 - > .../i386/avx512pf-vscatterpf1dps-1.c | 17 - > .../i386/avx512pf-vscatterpf1qpd-1.c | 17 - > .../i386/avx512pf-vscatterpf1qps-1.c | 17 - > .../gcc.target/i386/builtin_target.c | 4 - > gcc/testsuite/gcc.target/i386/pr104448.c | 10 - > gcc/testsuite/gcc.target/i386/pr82941-2.c | 7 - > gcc/testsuite/gcc.target/i386/pr82942-2.c | 8 - > gcc/testsuite/gcc.target/i386/pr82990-1.c | 15 - > gcc/testsuite/gcc.target/i386/pr82990-3.c | 7 - > gcc/testsuite/gcc.target/i386/pr82990-6.c | 7 - > gcc/testsuite/gcc.target/i386/pr82990-7.c | 6 - > gcc/testsuite/gcc.target/i386/pr89523-5.c | 40 -- > gcc/testsuite/gcc.target/i386/pr89523-6.c | 39 -- > gcc/testsuite/gcc.target/i386/pr91033.c | 16 - > gcc/testsuite/gcc.target/i386/prefetchwt1-1.c | 15 - > gcc/testsuite/gcc.target/i386/sse-12.c | 7 +- > gcc/testsuite/gcc.target/i386/sse-13.c | 7 +- > gcc/testsuite/gcc.target/i386/sse-14.c | 45 +- > gcc/testsuite/gcc.target/i386/sse-22.c | 46 +- > gcc/testsuite/gcc.target/i386/sse-23.c | 28 +- > gcc/testsuite/gcc.target/i386/sse-26.c | 3 +- > 104 files changed, 96 insertions(+), 4444 deletions(-) > delete mode 100644 gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddps-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fmaddss-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddps-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx5124fmadd-v4fnmaddss-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-check.h > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vexp2pd-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vexp2ps-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28pd-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-3.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28ps-4.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28sd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28sd-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28ss-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrcp28ss-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28pd-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-3.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-4.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-5.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ps-6.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28sd-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512er-vrsqrt28ss-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dpd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qpd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0qps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dpd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1dps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qpd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf1qps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dpd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qpd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dpd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/pr104448.c > delete mode 100644 gcc/testsuite/gcc.target/i386/pr82941-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/pr82942-2.c > delete mode 100644 gcc/testsuite/gcc.target/i386/pr82990-1.c > delete mode 100644 gcc/testsuite/gcc.target/i386/pr82990-3.c > delete mode 100644 gcc/testsuite/gcc.target/i386/pr82990-6.c > delete mode 100644 gcc/testsuite/gcc.target/i386/pr82990-7.c > delete mode 100644 gcc/testsuite/gcc.target/i386/pr89523-5.c > delete mode 100644 gcc/testsuite/gcc.target/i386/pr89523-6.c > delete mode 100644 gcc/testsuite/gcc.target/i386/pr91033.c > delete mode 100644 gcc/testsuite/gcc.target/i386/prefetchwt1-1.c > > 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 95c91ee02be..a2731b4c491 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 > <http://www.gnu.org/licenses/>. */ > > -#if !defined _IMMINTRIN_H_INCLUDED > -# error "Never use <avx5124fmapsintrin.h> directly; include <x86intrin.h> 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 > <http://www.gnu.org/licenses/>. */ > > -#if !defined _IMMINTRIN_H_INCLUDED > -# error "Never use <avx5124vnniwintrin.h> directly; include <x86intrin.h> 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 > <http://www.gnu.org/licenses/>. */ > > -#ifndef _IMMINTRIN_H_INCLUDED > -#error "Never use <avx512erintrin.h> directly; include <immintrin.h> 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 > <http://www.gnu.org/licenses/>. */ > > -#ifndef _IMMINTRIN_H_INCLUDED > -#error "Never use <avx512pfintrin.h> directly; include <immintrin.h> 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..e9b8182635b 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 ab73e20121a..db679ae8c1e 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 a6132911e6a..7fe590132a9 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<<PROCESSOR_HASWELL) > #define m_BONNELL (HOST_WIDE_INT_1U<<PROCESSOR_BONNELL) > #define m_SILVERMONT (HOST_WIDE_INT_1U<<PROCESSOR_SILVERMONT) > -#define m_KNL (HOST_WIDE_INT_1U<<PROCESSOR_KNL) > -#define m_KNM (HOST_WIDE_INT_1U<<PROCESSOR_KNM) > #define m_SKYLAKE (HOST_WIDE_INT_1U<<PROCESSOR_SKYLAKE) > #define m_SKYLAKE_AVX512 (HOST_WIDE_INT_1U<<PROCESSOR_SKYLAKE_AVX512) > #define m_CANNONLAKE (HOST_WIDE_INT_1U<<PROCESSOR_CANNONLAKE) > @@ -224,8 +222,6 @@ static struct ix86_target_opts isa2_opts[] = > { "-mwbnoinvd", OPTION_MASK_ISA2_WBNOINVD }, > { "-mavx512vp2intersect", OPTION_MASK_ISA2_AVX512VP2INTERSECT }, > { "-msgx", OPTION_MASK_ISA2_SGX }, > - { "-mavx5124vnniw", OPTION_MASK_ISA2_AVX5124VNNIW }, > - { "-mavx5124fmaps", OPTION_MASK_ISA2_AVX5124FMAPS }, > { "-mhle", OPTION_MASK_ISA2_HLE }, > { "-mmovbe", OPTION_MASK_ISA2_MOVBE }, > { "-mclzero", OPTION_MASK_ISA2_CLZERO }, > @@ -278,8 +274,6 @@ static struct ix86_target_opts isa_opts[] = > { "-mavx512vl", OPTION_MASK_ISA_AVX512VL }, > { "-mavx512bw", OPTION_MASK_ISA_AVX512BW }, > { "-mavx512dq", OPTION_MASK_ISA_AVX512DQ }, > - { "-mavx512er", OPTION_MASK_ISA_AVX512ER }, > - { "-mavx512pf", OPTION_MASK_ISA_AVX512PF }, > { "-mavx512cd", OPTION_MASK_ISA_AVX512CD }, > { "-mavx512f", OPTION_MASK_ISA_AVX512F }, > { "-mavx2", OPTION_MASK_ISA_AVX2 }, > @@ -306,7 +300,6 @@ static struct ix86_target_opts isa_opts[] = > { "-mprfchw", OPTION_MASK_ISA_PRFCHW }, > { "-mrdseed", OPTION_MASK_ISA_RDSEED }, > { "-madx", OPTION_MASK_ISA_ADX }, > - { "-mprefetchwt1", OPTION_MASK_ISA_PREFETCHWT1 }, > { "-mclflushopt", OPTION_MASK_ISA_CLFLUSHOPT }, > { "-mxsaves", OPTION_MASK_ISA_XSAVES }, > { "-mxsavec", OPTION_MASK_ISA_XSAVEC }, > @@ -781,8 +774,6 @@ static const struct processor_costs *processor_cost_table[] = > &alderlake_cost, > &alderlake_cost, > &alderlake_cost, > - &slm_cost, > - &slm_cost, > &skylake_cost, > &skylake_cost, > &icelake_cost, > @@ -1030,8 +1021,6 @@ ix86_valid_target_attribute_inner_p (tree fndecl, tree args, char *p_strings[], > IX86_ATTR_ISA ("pconfig", OPT_mpconfig), > IX86_ATTR_ISA ("wbnoinvd", OPT_mwbnoinvd), > IX86_ATTR_ISA ("sgx", OPT_msgx), > - IX86_ATTR_ISA ("avx5124fmaps", OPT_mavx5124fmaps), > - IX86_ATTR_ISA ("avx5124vnniw", OPT_mavx5124vnniw), > IX86_ATTR_ISA ("avx512vpopcntdq", OPT_mavx512vpopcntdq), > IX86_ATTR_ISA ("avx512vbmi2", OPT_mavx512vbmi2), > IX86_ATTR_ISA ("avx512vnni", OPT_mavx512vnni), > @@ -1043,8 +1032,6 @@ ix86_valid_target_attribute_inner_p (tree fndecl, tree args, char *p_strings[], > IX86_ATTR_ISA ("avx512vl", OPT_mavx512vl), > IX86_ATTR_ISA ("avx512bw", OPT_mavx512bw), > IX86_ATTR_ISA ("avx512dq", OPT_mavx512dq), > - IX86_ATTR_ISA ("avx512er", OPT_mavx512er), > - IX86_ATTR_ISA ("avx512pf", OPT_mavx512pf), > IX86_ATTR_ISA ("avx512cd", OPT_mavx512cd), > IX86_ATTR_ISA ("avx512f", OPT_mavx512f), > IX86_ATTR_ISA ("avx2", OPT_mavx2), > @@ -1071,7 +1058,6 @@ ix86_valid_target_attribute_inner_p (tree fndecl, tree args, char *p_strings[], > IX86_ATTR_ISA ("prfchw", OPT_mprfchw), > IX86_ATTR_ISA ("rdseed", OPT_mrdseed), > IX86_ATTR_ISA ("adx", OPT_madx), > - IX86_ATTR_ISA ("prefetchwt1", OPT_mprefetchwt1), > IX86_ATTR_ISA ("clflushopt", OPT_mclflushopt), > IX86_ATTR_ISA ("xsaves", OPT_mxsaves), > IX86_ATTR_ISA ("xsavec", OPT_mxsavec), > @@ -2103,18 +2089,6 @@ ix86_option_override_internal (bool main_args_p, > : G_("%<target(\"tune=x86-64\")%> is deprecated; use " > "%<target(\"tune=k8\")%> or %<target(\"tune=generic\")%>" > " 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_("%<target(\"tune=knl\")%> 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_("%<target(\"tune=knm\")%> 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_("%<target(\"arch=knl\")%> 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_("%<target(\"arch=knm\")%> 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 e67e5f62533..decc3269c1e 100644 > --- a/gcc/config/i386/i386.cc > +++ b/gcc/config/i386/i386.cc > @@ -20882,13 +20882,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 <avx512fintrin.h> > > -#include <avx512erintrin.h> > - > -#include <avx512pfintrin.h> > - > #include <avx512cdintrin.h> > > #include <avx512vlintrin.h> > @@ -78,10 +74,6 @@ > > #include <avx512vbmivlintrin.h> > > -#include <avx5124fmapsintrin.h> > - > -#include <avx5124vnniwintrin.h> > - > #include <avx512vpopcntdqintrin.h> > > #include <avx512vbmi2intrin.h> > diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md > index 1bf50726e83..272538c30ec 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" "<ssescalarmode>")]) > > (define_expand "rsqrt<mode>2" > - [(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_gatherpf<mode>sf" > - [(unspec > - [(match_operand:<avx512fmaskmode> 0 "register_operand") > - (mem:<GATHER_SCATTER_SF_MEM_MODE> > - (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_gatherpf<VI48_512:mode>sf_mask" > - [(unspec > - [(match_operand:<avx512fmaskmode> 0 "register_operand" "Yk") > - (match_operator:<GATHER_SCATTER_SF_MEM_MODE> 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 "%M2vgatherpf0<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}"; > - case 2: > - return "%M2vgatherpf1<ssemodesuffix>ps\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_gatherpf<mode>df" > - [(unspec > - [(match_operand:<avx512fmaskmode> 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_gatherpf<VI4_256_8_512:mode>df_mask" > - [(unspec > - [(match_operand:<avx512fmaskmode> 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 "%M2vgatherpf0<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; > - case 2: > - return "%M2vgatherpf1<ssemodesuffix>pd\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_scatterpf<mode>sf" > - [(unspec > - [(match_operand:<avx512fmaskmode> 0 "register_operand") > - (mem:<GATHER_SCATTER_SF_MEM_MODE> > - (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_scatterpf<VI48_512:mode>sf_mask" > - [(unspec > - [(match_operand:<avx512fmaskmode> 0 "register_operand" "Yk") > - (match_operator:<GATHER_SCATTER_SF_MEM_MODE> 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 "%M2vscatterpf0<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}"; > - case 2: > - case 6: > - return "%M2vscatterpf1<ssemodesuffix>ps\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_scatterpf<mode>df" > - [(unspec > - [(match_operand:<avx512fmaskmode> 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_scatterpf<VI4_256_8_512:mode>df_mask" > - [(unspec > - [(match_operand:<avx512fmaskmode> 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 "%M2vscatterpf0<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; > - case 2: > - case 6: > - return "%M2vscatterpf1<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; > - default: > - gcc_unreachable (); > - } > -} > - [(set_attr "type" "sse") > - (set_attr "prefix" "evex") > - (set_attr "mode" "XI")]) > - > -(define_expand "exp2<mode>2" > - [(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<mode><mask_name><round_saeonly_name>" > - [(set (match_operand:VF_512 0 "register_operand" "=v") > - (unspec:VF_512 > - [(match_operand:VF_512 1 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>")] > - UNSPEC_EXP2))] > - "TARGET_AVX512ER" > - "vexp2<ssemodesuffix>\t{<round_saeonly_mask_op2>%1, %0<mask_operand2>|%0<mask_operand2>, %1<round_saeonly_mask_op2>}" > - [(set_attr "prefix" "evex") > - (set_attr "type" "sse") > - (set_attr "mode" "<MODE>")]) > - > -(define_insn "<mask_codefor>avx512er_rcp28<mode><mask_name><round_saeonly_name>" > - [(set (match_operand:VF_512 0 "register_operand" "=v") > - (unspec:VF_512 > - [(match_operand:VF_512 1 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>")] > - UNSPEC_RCP28))] > - "TARGET_AVX512ER" > - "vrcp28<ssemodesuffix>\t{<round_saeonly_mask_op2>%1, %0<mask_operand2>|%0<mask_operand2>, %1<round_saeonly_mask_op2>}" > - [(set_attr "prefix" "evex") > - (set_attr "type" "sse") > - (set_attr "mode" "<MODE>")]) > - > -(define_insn "avx512er_vmrcp28<mode><mask_name><round_saeonly_name>" > - [(set (match_operand:VF_128 0 "register_operand" "=v") > - (vec_merge:VF_128 > - (unspec:VF_128 > - [(match_operand:VF_128 1 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>")] > - UNSPEC_RCP28) > - (match_operand:VF_128 2 "register_operand" "v") > - (const_int 1)))] > - "TARGET_AVX512ER" > - "vrcp28<ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%1, %2, %0<mask_operand3>|<mask_operand3>%0, %2, %<iptr>1<round_saeonly_mask_op3>}" > - [(set_attr "length_immediate" "1") > - (set_attr "prefix" "evex") > - (set_attr "type" "sse") > - (set_attr "mode" "<MODE>")]) > - > -(define_insn "<mask_codefor>avx512er_rsqrt28<mode><mask_name><round_saeonly_name>" > - [(set (match_operand:VF_512 0 "register_operand" "=v") > - (unspec:VF_512 > - [(match_operand:VF_512 1 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>")] > - UNSPEC_RSQRT28))] > - "TARGET_AVX512ER" > - "vrsqrt28<ssemodesuffix>\t{<round_saeonly_mask_op2>%1, %0<mask_operand2>|%0<mask_operand2>, %1<round_saeonly_mask_op2>}" > - [(set_attr "prefix" "evex") > - (set_attr "type" "sse") > - (set_attr "mode" "<MODE>")]) > - > -(define_insn "avx512er_vmrsqrt28<mode><mask_name><round_saeonly_name>" > - [(set (match_operand:VF_128 0 "register_operand" "=v") > - (vec_merge:VF_128 > - (unspec:VF_128 > - [(match_operand:VF_128 1 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>")] > - UNSPEC_RSQRT28) > - (match_operand:VF_128 2 "register_operand" "v") > - (const_int 1)))] > - "TARGET_AVX512ER" > - "vrsqrt28<ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%1, %2, %0<mask_operand3>|<mask_operand3>%0, %2, %<iptr>1<round_saeonly_mask_op3>}" > - [(set_attr "length_immediate" "1") > - (set_attr "type" "sse") > - (set_attr "prefix" "evex") > - (set_attr "mode" "<MODE>")]) > - > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > ;; > ;; XOP instructions > @@ -29419,291 +29135,6 @@ > (set_attr "prefix" "evex") > (set_attr "mode" "<sseinsnmode>")]) > > -(define_mode_iterator IMOD4 > - [(V64SF "TARGET_AVX5124FMAPS") (V64SI "TARGET_AVX5124VNNIW")]) > - > -(define_mode_attr imod4_narrow > - [(V64SF "V16SF") (V64SI "V16SI")]) > - > -(define_expand "mov<mode>" > - [(set (match_operand:IMOD4 0 "nonimmediate_operand") > - (match_operand:IMOD4 1 "nonimm_or_0_operand"))] > - "TARGET_AVX512F" > -{ > - ix86_expand_vector_move (<MODE>mode, operands); > - DONE; > -}) > - > -(define_insn_and_split "*mov<mode>_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>mode) > - || register_operand (operands[1], <MODE>mode))" > - "#" > - "&& reload_completed" > - [(const_int 0)] > -{ > - rtx op0, op1; > - int i; > - > - for (i = 0; i < 4; i++) > - { > - op0 = simplify_subreg > - (<imod4_narrow>mode, operands[0], <MODE>mode, i * 64); > - op1 = simplify_subreg > - (<imod4_narrow>mode, operands[1], <MODE>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 "popcount<mode>2" > [(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..dd3389cdbac 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. */ > @@ -317,21 +315,20 @@ 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_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 71b9955b843..f84546c188e 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 dc4c5a3189d..c6a9bb2f8b3 100644 > --- a/gcc/doc/invoke.texi > +++ b/gcc/doc/invoke.texi > @@ -1457,17 +1457,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 > @@ -34409,19 +34409,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, > @@ -35183,12 +35170,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 > @@ -35252,9 +35233,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 > @@ -35368,18 +35346,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 > @@ -35454,18 +35426,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 <x86intrin.h> > - > -__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 <x86intrin.h> > - > -__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 <x86intrin.h> > - > -__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 <x86intrin.h> > - > -__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 <x86intrin.h> > - > -__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 <x86intrin.h> > - > -__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 <immintrin.h> > - > -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 <math.h> > - > -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 <immintrin.h> > - > -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 <math.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <math.h> > - > -#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 <immintrin.h> > - > -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 <math.h> > - > -#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 <immintrin.h> > - > -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 <math.h> > - > -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 <immintrin.h> > - > -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 <math.h> > - > -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 <math.h> > -#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 <math.h> > -#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 <immintrin.h> > - > -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 <math.h> > - > -#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 <immintrin.h> > - > -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 <math.h> > - > -#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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <immintrin.h> > - > -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 <x86intrin.h> > - > -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 <x86intrin.h> > > 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 <mm_malloc.h> > > 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 <mm_malloc.h> > > @@ -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 <immintrin.h> > 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 <x86intrin.h> > 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" > -- > 2.31.1 >
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 95c91ee02be..a2731b4c491 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 <http://www.gnu.org/licenses/>. */ -#if !defined _IMMINTRIN_H_INCLUDED -# error "Never use <avx5124fmapsintrin.h> directly; include <x86intrin.h> 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 <http://www.gnu.org/licenses/>. */ -#if !defined _IMMINTRIN_H_INCLUDED -# error "Never use <avx5124vnniwintrin.h> directly; include <x86intrin.h> 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 <http://www.gnu.org/licenses/>. */ -#ifndef _IMMINTRIN_H_INCLUDED -#error "Never use <avx512erintrin.h> directly; include <immintrin.h> 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 <http://www.gnu.org/licenses/>. */ -#ifndef _IMMINTRIN_H_INCLUDED -#error "Never use <avx512pfintrin.h> directly; include <immintrin.h> 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..e9b8182635b 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 ab73e20121a..db679ae8c1e 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 a6132911e6a..7fe590132a9 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<<PROCESSOR_HASWELL) #define m_BONNELL (HOST_WIDE_INT_1U<<PROCESSOR_BONNELL) #define m_SILVERMONT (HOST_WIDE_INT_1U<<PROCESSOR_SILVERMONT) -#define m_KNL (HOST_WIDE_INT_1U<<PROCESSOR_KNL) -#define m_KNM (HOST_WIDE_INT_1U<<PROCESSOR_KNM) #define m_SKYLAKE (HOST_WIDE_INT_1U<<PROCESSOR_SKYLAKE) #define m_SKYLAKE_AVX512 (HOST_WIDE_INT_1U<<PROCESSOR_SKYLAKE_AVX512) #define m_CANNONLAKE (HOST_WIDE_INT_1U<<PROCESSOR_CANNONLAKE) @@ -224,8 +222,6 @@ static struct ix86_target_opts isa2_opts[] = { "-mwbnoinvd", OPTION_MASK_ISA2_WBNOINVD }, { "-mavx512vp2intersect", OPTION_MASK_ISA2_AVX512VP2INTERSECT }, { "-msgx", OPTION_MASK_ISA2_SGX }, - { "-mavx5124vnniw", OPTION_MASK_ISA2_AVX5124VNNIW }, - { "-mavx5124fmaps", OPTION_MASK_ISA2_AVX5124FMAPS }, { "-mhle", OPTION_MASK_ISA2_HLE }, { "-mmovbe", OPTION_MASK_ISA2_MOVBE }, { "-mclzero", OPTION_MASK_ISA2_CLZERO }, @@ -278,8 +274,6 @@ static struct ix86_target_opts isa_opts[] = { "-mavx512vl", OPTION_MASK_ISA_AVX512VL }, { "-mavx512bw", OPTION_MASK_ISA_AVX512BW }, { "-mavx512dq", OPTION_MASK_ISA_AVX512DQ }, - { "-mavx512er", OPTION_MASK_ISA_AVX512ER }, - { "-mavx512pf", OPTION_MASK_ISA_AVX512PF }, { "-mavx512cd", OPTION_MASK_ISA_AVX512CD }, { "-mavx512f", OPTION_MASK_ISA_AVX512F }, { "-mavx2", OPTION_MASK_ISA_AVX2 }, @@ -306,7 +300,6 @@ static struct ix86_target_opts isa_opts[] = { "-mprfchw", OPTION_MASK_ISA_PRFCHW }, { "-mrdseed", OPTION_MASK_ISA_RDSEED }, { "-madx", OPTION_MASK_ISA_ADX }, - { "-mprefetchwt1", OPTION_MASK_ISA_PREFETCHWT1 }, { "-mclflushopt", OPTION_MASK_ISA_CLFLUSHOPT }, { "-mxsaves", OPTION_MASK_ISA_XSAVES }, { "-mxsavec", OPTION_MASK_ISA_XSAVEC }, @@ -781,8 +774,6 @@ static const struct processor_costs *processor_cost_table[] = &alderlake_cost, &alderlake_cost, &alderlake_cost, - &slm_cost, - &slm_cost, &skylake_cost, &skylake_cost, &icelake_cost, @@ -1030,8 +1021,6 @@ ix86_valid_target_attribute_inner_p (tree fndecl, tree args, char *p_strings[], IX86_ATTR_ISA ("pconfig", OPT_mpconfig), IX86_ATTR_ISA ("wbnoinvd", OPT_mwbnoinvd), IX86_ATTR_ISA ("sgx", OPT_msgx), - IX86_ATTR_ISA ("avx5124fmaps", OPT_mavx5124fmaps), - IX86_ATTR_ISA ("avx5124vnniw", OPT_mavx5124vnniw), IX86_ATTR_ISA ("avx512vpopcntdq", OPT_mavx512vpopcntdq), IX86_ATTR_ISA ("avx512vbmi2", OPT_mavx512vbmi2), IX86_ATTR_ISA ("avx512vnni", OPT_mavx512vnni), @@ -1043,8 +1032,6 @@ ix86_valid_target_attribute_inner_p (tree fndecl, tree args, char *p_strings[], IX86_ATTR_ISA ("avx512vl", OPT_mavx512vl), IX86_ATTR_ISA ("avx512bw", OPT_mavx512bw), IX86_ATTR_ISA ("avx512dq", OPT_mavx512dq), - IX86_ATTR_ISA ("avx512er", OPT_mavx512er), - IX86_ATTR_ISA ("avx512pf", OPT_mavx512pf), IX86_ATTR_ISA ("avx512cd", OPT_mavx512cd), IX86_ATTR_ISA ("avx512f", OPT_mavx512f), IX86_ATTR_ISA ("avx2", OPT_mavx2), @@ -1071,7 +1058,6 @@ ix86_valid_target_attribute_inner_p (tree fndecl, tree args, char *p_strings[], IX86_ATTR_ISA ("prfchw", OPT_mprfchw), IX86_ATTR_ISA ("rdseed", OPT_mrdseed), IX86_ATTR_ISA ("adx", OPT_madx), - IX86_ATTR_ISA ("prefetchwt1", OPT_mprefetchwt1), IX86_ATTR_ISA ("clflushopt", OPT_mclflushopt), IX86_ATTR_ISA ("xsaves", OPT_mxsaves), IX86_ATTR_ISA ("xsavec", OPT_mxsavec), @@ -2103,18 +2089,6 @@ ix86_option_override_internal (bool main_args_p, : G_("%<target(\"tune=x86-64\")%> is deprecated; use " "%<target(\"tune=k8\")%> or %<target(\"tune=generic\")%>" " 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_("%<target(\"tune=knl\")%> 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_("%<target(\"tune=knm\")%> 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_("%<target(\"arch=knl\")%> 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_("%<target(\"arch=knm\")%> 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 e67e5f62533..decc3269c1e 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -20882,13 +20882,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 <avx512fintrin.h> -#include <avx512erintrin.h> - -#include <avx512pfintrin.h> - #include <avx512cdintrin.h> #include <avx512vlintrin.h> @@ -78,10 +74,6 @@ #include <avx512vbmivlintrin.h> -#include <avx5124fmapsintrin.h> - -#include <avx5124vnniwintrin.h> - #include <avx512vpopcntdqintrin.h> #include <avx512vbmi2intrin.h> diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 1bf50726e83..272538c30ec 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" "<ssescalarmode>")]) (define_expand "rsqrt<mode>2" - [(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_gatherpf<mode>sf" - [(unspec - [(match_operand:<avx512fmaskmode> 0 "register_operand") - (mem:<GATHER_SCATTER_SF_MEM_MODE> - (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_gatherpf<VI48_512:mode>sf_mask" - [(unspec - [(match_operand:<avx512fmaskmode> 0 "register_operand" "Yk") - (match_operator:<GATHER_SCATTER_SF_MEM_MODE> 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 "%M2vgatherpf0<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}"; - case 2: - return "%M2vgatherpf1<ssemodesuffix>ps\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_gatherpf<mode>df" - [(unspec - [(match_operand:<avx512fmaskmode> 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_gatherpf<VI4_256_8_512:mode>df_mask" - [(unspec - [(match_operand:<avx512fmaskmode> 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 "%M2vgatherpf0<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; - case 2: - return "%M2vgatherpf1<ssemodesuffix>pd\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_scatterpf<mode>sf" - [(unspec - [(match_operand:<avx512fmaskmode> 0 "register_operand") - (mem:<GATHER_SCATTER_SF_MEM_MODE> - (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_scatterpf<VI48_512:mode>sf_mask" - [(unspec - [(match_operand:<avx512fmaskmode> 0 "register_operand" "Yk") - (match_operator:<GATHER_SCATTER_SF_MEM_MODE> 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 "%M2vscatterpf0<ssemodesuffix>ps\t{%5%{%0%}|%X5%{%0%}}"; - case 2: - case 6: - return "%M2vscatterpf1<ssemodesuffix>ps\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_scatterpf<mode>df" - [(unspec - [(match_operand:<avx512fmaskmode> 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_scatterpf<VI4_256_8_512:mode>df_mask" - [(unspec - [(match_operand:<avx512fmaskmode> 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 "%M2vscatterpf0<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; - case 2: - case 6: - return "%M2vscatterpf1<ssemodesuffix>pd\t{%5%{%0%}|%X5%{%0%}}"; - default: - gcc_unreachable (); - } -} - [(set_attr "type" "sse") - (set_attr "prefix" "evex") - (set_attr "mode" "XI")]) - -(define_expand "exp2<mode>2" - [(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<mode><mask_name><round_saeonly_name>" - [(set (match_operand:VF_512 0 "register_operand" "=v") - (unspec:VF_512 - [(match_operand:VF_512 1 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>")] - UNSPEC_EXP2))] - "TARGET_AVX512ER" - "vexp2<ssemodesuffix>\t{<round_saeonly_mask_op2>%1, %0<mask_operand2>|%0<mask_operand2>, %1<round_saeonly_mask_op2>}" - [(set_attr "prefix" "evex") - (set_attr "type" "sse") - (set_attr "mode" "<MODE>")]) - -(define_insn "<mask_codefor>avx512er_rcp28<mode><mask_name><round_saeonly_name>" - [(set (match_operand:VF_512 0 "register_operand" "=v") - (unspec:VF_512 - [(match_operand:VF_512 1 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>")] - UNSPEC_RCP28))] - "TARGET_AVX512ER" - "vrcp28<ssemodesuffix>\t{<round_saeonly_mask_op2>%1, %0<mask_operand2>|%0<mask_operand2>, %1<round_saeonly_mask_op2>}" - [(set_attr "prefix" "evex") - (set_attr "type" "sse") - (set_attr "mode" "<MODE>")]) - -(define_insn "avx512er_vmrcp28<mode><mask_name><round_saeonly_name>" - [(set (match_operand:VF_128 0 "register_operand" "=v") - (vec_merge:VF_128 - (unspec:VF_128 - [(match_operand:VF_128 1 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>")] - UNSPEC_RCP28) - (match_operand:VF_128 2 "register_operand" "v") - (const_int 1)))] - "TARGET_AVX512ER" - "vrcp28<ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%1, %2, %0<mask_operand3>|<mask_operand3>%0, %2, %<iptr>1<round_saeonly_mask_op3>}" - [(set_attr "length_immediate" "1") - (set_attr "prefix" "evex") - (set_attr "type" "sse") - (set_attr "mode" "<MODE>")]) - -(define_insn "<mask_codefor>avx512er_rsqrt28<mode><mask_name><round_saeonly_name>" - [(set (match_operand:VF_512 0 "register_operand" "=v") - (unspec:VF_512 - [(match_operand:VF_512 1 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>")] - UNSPEC_RSQRT28))] - "TARGET_AVX512ER" - "vrsqrt28<ssemodesuffix>\t{<round_saeonly_mask_op2>%1, %0<mask_operand2>|%0<mask_operand2>, %1<round_saeonly_mask_op2>}" - [(set_attr "prefix" "evex") - (set_attr "type" "sse") - (set_attr "mode" "<MODE>")]) - -(define_insn "avx512er_vmrsqrt28<mode><mask_name><round_saeonly_name>" - [(set (match_operand:VF_128 0 "register_operand" "=v") - (vec_merge:VF_128 - (unspec:VF_128 - [(match_operand:VF_128 1 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>")] - UNSPEC_RSQRT28) - (match_operand:VF_128 2 "register_operand" "v") - (const_int 1)))] - "TARGET_AVX512ER" - "vrsqrt28<ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%1, %2, %0<mask_operand3>|<mask_operand3>%0, %2, %<iptr>1<round_saeonly_mask_op3>}" - [(set_attr "length_immediate" "1") - (set_attr "type" "sse") - (set_attr "prefix" "evex") - (set_attr "mode" "<MODE>")]) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; XOP instructions @@ -29419,291 +29135,6 @@ (set_attr "prefix" "evex") (set_attr "mode" "<sseinsnmode>")]) -(define_mode_iterator IMOD4 - [(V64SF "TARGET_AVX5124FMAPS") (V64SI "TARGET_AVX5124VNNIW")]) - -(define_mode_attr imod4_narrow - [(V64SF "V16SF") (V64SI "V16SI")]) - -(define_expand "mov<mode>" - [(set (match_operand:IMOD4 0 "nonimmediate_operand") - (match_operand:IMOD4 1 "nonimm_or_0_operand"))] - "TARGET_AVX512F" -{ - ix86_expand_vector_move (<MODE>mode, operands); - DONE; -}) - -(define_insn_and_split "*mov<mode>_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>mode) - || register_operand (operands[1], <MODE>mode))" - "#" - "&& reload_completed" - [(const_int 0)] -{ - rtx op0, op1; - int i; - - for (i = 0; i < 4; i++) - { - op0 = simplify_subreg - (<imod4_narrow>mode, operands[0], <MODE>mode, i * 64); - op1 = simplify_subreg - (<imod4_narrow>mode, operands[1], <MODE>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 "popcount<mode>2" [(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..dd3389cdbac 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. */ @@ -317,21 +315,20 @@ 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_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 71b9955b843..f84546c188e 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 dc4c5a3189d..c6a9bb2f8b3 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -1457,17 +1457,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 @@ -34409,19 +34409,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, @@ -35183,12 +35170,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 @@ -35252,9 +35233,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 @@ -35368,18 +35346,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 @@ -35454,18 +35426,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 <x86intrin.h> - -__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 <x86intrin.h> - -__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 <x86intrin.h> - -__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 <x86intrin.h> - -__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 <x86intrin.h> - -__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 <x86intrin.h> - -__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 <immintrin.h> - -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 <math.h> - -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 <immintrin.h> - -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 <math.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <math.h> - -#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 <immintrin.h> - -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 <math.h> - -#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 <immintrin.h> - -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 <math.h> - -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 <immintrin.h> - -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 <math.h> - -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 <math.h> -#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 <math.h> -#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 <immintrin.h> - -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 <math.h> - -#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 <immintrin.h> - -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 <math.h> - -#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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <immintrin.h> - -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 <x86intrin.h> - -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 <x86intrin.h> 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 <mm_malloc.h> 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 <mm_malloc.h> @@ -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 <immintrin.h> 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 <x86intrin.h> 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"