diff options
Diffstat (limited to 'gcc/config/i386')
-rw-r--r-- | gcc/config/i386/i386-expand.cc | 3 | ||||
-rw-r--r-- | gcc/config/i386/i386-options.cc | 40 | ||||
-rw-r--r-- | gcc/config/i386/i386-options.h | 1 | ||||
-rw-r--r-- | gcc/config/i386/i386.h | 17 | ||||
-rw-r--r-- | gcc/config/i386/i386.opt | 3 | ||||
-rw-r--r-- | gcc/config/i386/x86-tune.def | 10 |
6 files changed, 10 insertions, 64 deletions
diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc index b0b9e6d..c6f4227 100644 --- a/gcc/config/i386/i386-expand.cc +++ b/gcc/config/i386/i386-expand.cc @@ -13915,8 +13915,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget, char *opts = ix86_target_string (bisa, bisa2, 0, 0, NULL, NULL, (enum fpmath_unit) 0, (enum prefer_vector_width) 0, - PVW_NONE, PVW_NONE, - false, add_abi_p); + PVW_NONE, false, add_abi_p); if (!opts) error ("%qE needs unknown isa option", fndecl); else diff --git a/gcc/config/i386/i386-options.cc b/gcc/config/i386/i386-options.cc index abb5dd7..cad4019 100644 --- a/gcc/config/i386/i386-options.cc +++ b/gcc/config/i386/i386-options.cc @@ -401,7 +401,6 @@ ix86_target_string (HOST_WIDE_INT isa, HOST_WIDE_INT isa2, enum fpmath_unit fpmath, enum prefer_vector_width pvw, enum prefer_vector_width move_max, - enum prefer_vector_width store_max, bool add_nl_p, bool add_abi_p) { /* Flag options. */ @@ -611,10 +610,6 @@ ix86_target_string (HOST_WIDE_INT isa, HOST_WIDE_INT isa2, if (move_max) add_vector_width (move_max, "-mmove-max="); - /* Add -mstore-max= option. */ - if (store_max) - add_vector_width (store_max, "-mstore-max="); - /* Any options? */ if (num == 0) return NULL; @@ -680,8 +675,7 @@ ix86_debug_options (void) target_flags, ix86_target_flags, ix86_arch_string, ix86_tune_string, ix86_fpmath, prefer_vector_width_type, - ix86_move_max, ix86_store_max, - true, true); + ix86_move_max, true, true); if (opts) { @@ -956,8 +950,7 @@ ix86_function_specific_print (FILE *file, int indent, ptr->x_target_flags, ptr->x_ix86_target_flags, NULL, NULL, ptr->x_ix86_fpmath, ptr->x_prefer_vector_width_type, - ptr->x_ix86_move_max, ptr->x_ix86_store_max, - false, true); + ptr->x_ix86_move_max, false, true); gcc_assert (ptr->arch < PROCESSOR_max); fprintf (file, "%*sarch = %d (%s)\n", @@ -1410,8 +1403,6 @@ ix86_valid_target_attribute_tree (tree fndecl, tree args, enum prefer_vector_width orig_pvw_set = opts_set->x_prefer_vector_width_type; enum prefer_vector_width orig_ix86_move_max_set = opts_set->x_ix86_move_max; - enum prefer_vector_width orig_ix86_store_max_set - = opts_set->x_ix86_store_max; int orig_tune_defaulted = ix86_tune_defaulted; int orig_arch_specified = ix86_arch_specified; char *option_strings[IX86_FUNCTION_SPECIFIC_MAX] = { NULL, NULL }; @@ -1492,7 +1483,6 @@ ix86_valid_target_attribute_tree (tree fndecl, tree args, opts_set->x_ix86_fpmath = orig_fpmath_set; opts_set->x_prefer_vector_width_type = orig_pvw_set; opts_set->x_ix86_move_max = orig_ix86_move_max_set; - opts_set->x_ix86_store_max = orig_ix86_store_max_set; opts->x_ix86_excess_precision = orig_ix86_excess_precision; opts->x_ix86_unsafe_math_optimizations = orig_ix86_unsafe_math_optimizations; @@ -2940,32 +2930,6 @@ ix86_option_override_internal (bool main_args_p, } } - if (opts_set->x_ix86_store_max == PVW_NONE) - { - /* Set the maximum number of bits can be stored to memory - efficiently. */ - if (opts_set->x_prefer_vector_width_type != PVW_NONE) - opts->x_ix86_store_max = opts->x_prefer_vector_width_type; - else if (ix86_tune_features[X86_TUNE_AVX512_STORE_BY_PIECES]) - opts->x_ix86_store_max = PVW_AVX512; - else if (ix86_tune_features[X86_TUNE_AVX256_STORE_BY_PIECES]) - opts->x_ix86_store_max = PVW_AVX256; - else - { - opts->x_ix86_store_max = opts->x_prefer_vector_width_type; - if (opts_set->x_ix86_store_max == PVW_NONE) - { - if (TARGET_AVX512F_P (opts->x_ix86_isa_flags)) - opts->x_ix86_store_max = PVW_AVX512; - /* Align with vectorizer to avoid potential STLF issue. */ - else if (TARGET_AVX_P (opts->x_ix86_isa_flags)) - opts->x_ix86_store_max = PVW_AVX256; - else - opts->x_ix86_store_max = PVW_AVX128; - } - } - } - if (opts->x_ix86_recip_name) { char *p = ASTRDUP (opts->x_ix86_recip_name); diff --git a/gcc/config/i386/i386-options.h b/gcc/config/i386/i386-options.h index 0499c08..5686899 100644 --- a/gcc/config/i386/i386-options.h +++ b/gcc/config/i386/i386-options.h @@ -28,7 +28,6 @@ char *ix86_target_string (HOST_WIDE_INT isa, HOST_WIDE_INT isa2, enum fpmath_unit fpmath, enum prefer_vector_width pvw, enum prefer_vector_width move_max, - enum prefer_vector_width store_max, bool add_nl_p, bool add_abi_p); extern enum attr_cpu ix86_schedule; diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index ac0ce68..f4c89f0 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -1916,13 +1916,9 @@ typedef struct ix86_args { MOVE_MAX_PIECES defaults to MOVE_MAX. */ #define MOVE_MAX \ - ((TARGET_AVX512F \ - && (ix86_move_max == PVW_AVX512 \ - || ix86_store_max == PVW_AVX512)) \ + ((TARGET_AVX512F && ix86_move_max == PVW_AVX512) \ ? 64 \ - : ((TARGET_AVX \ - && (ix86_move_max >= PVW_AVX256 \ - || ix86_store_max >= PVW_AVX256)) \ + : ((TARGET_AVX && ix86_move_max >= PVW_AVX256) \ ? 32 \ : ((TARGET_SSE2 \ && TARGET_SSE_UNALIGNED_LOAD_OPTIMAL \ @@ -1935,15 +1931,14 @@ typedef struct ix86_args { store_by_pieces of 16/32/64 bytes. */ #define STORE_MAX_PIECES \ (TARGET_INTER_UNIT_MOVES_TO_VEC \ - ? ((TARGET_AVX512F && ix86_store_max == PVW_AVX512) \ + ? ((TARGET_AVX512F && ix86_move_max == PVW_AVX512) \ ? 64 \ - : ((TARGET_AVX \ - && ix86_store_max >= PVW_AVX256) \ + : ((TARGET_AVX && ix86_move_max >= PVW_AVX256) \ ? 32 \ : ((TARGET_SSE2 \ && TARGET_SSE_UNALIGNED_STORE_OPTIMAL) \ - ? 16 : UNITS_PER_WORD))) \ - : UNITS_PER_WORD) + ? 16 : UNITS_PER_WORD))) \ + : UNITS_PER_WORD) /* If a memory-to-memory move would take MOVE_RATIO or more simple move-instruction pairs, we will do a cpymem or libcall instead. diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt index 6bda22f..1192176 100644 --- a/gcc/config/i386/i386.opt +++ b/gcc/config/i386/i386.opt @@ -644,8 +644,7 @@ Target RejectNegative Joined Var(ix86_move_max) Enum(prefer_vector_width) Init(P Maximum number of bits that can be moved from memory to memory efficiently. mstore-max= -Target RejectNegative Joined Var(ix86_store_max) Enum(prefer_vector_width) Init(PVW_NONE) Save -Maximum number of bits that can be stored to memory efficiently. +Target RejectNegative Joined Uncoumented Var(ix86_move_max) Enum(prefer_vector_width) Init(PVW_NONE) Warn(%<-mstore-max=%> is deprecated; use %<-mmove-max=%> instead) mnoreturn-no-callee-saved-registers Target Var(ix86_noreturn_no_callee_saved_registers) diff --git a/gcc/config/i386/x86-tune.def b/gcc/config/i386/x86-tune.def index 255ea4a..3627312 100644 --- a/gcc/config/i386/x86-tune.def +++ b/gcc/config/i386/x86-tune.def @@ -619,21 +619,11 @@ DEF_TUNE (X86_TUNE_AVX512_SPLIT_REGS, "avx512_split_regs", m_ZNVER4) DEF_TUNE (X86_TUNE_AVX256_MOVE_BY_PIECES, "avx256_move_by_pieces", m_CORE_HYBRID | m_CORE_AVX2 | m_ZNVER1 | m_ZNVER2 | m_ZNVER3) -/* X86_TUNE_AVX256_STORE_BY_PIECES: Optimize store_by_pieces with 256-bit - AVX instructions. */ -DEF_TUNE (X86_TUNE_AVX256_STORE_BY_PIECES, "avx256_store_by_pieces", - m_CORE_HYBRID | m_CORE_AVX2 | m_ZNVER1 | m_ZNVER2 | m_ZNVER3) - /* X86_TUNE_AVX512_MOVE_BY_PIECES: Optimize move_by_pieces with 512-bit AVX instructions. */ DEF_TUNE (X86_TUNE_AVX512_MOVE_BY_PIECES, "avx512_move_by_pieces", m_ZNVER4 | m_ZNVER5) -/* X86_TUNE_AVX512_STORE_BY_PIECES: Optimize store_by_pieces with 512-bit - AVX instructions. */ -DEF_TUNE (X86_TUNE_AVX512_STORE_BY_PIECES, "avx512_store_by_pieces", - m_ZNVER4 | m_ZNVER5) - /* X86_TUNE_AVX512_TWO_EPILOGUES: Use two vector epilogues for 512-bit vectorized loops. */ DEF_TUNE (X86_TUNE_AVX512_TWO_EPILOGUES, "avx512_two_epilogues", |