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
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. */
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;
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)
{
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",
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 };
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;
}
}
- 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);
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;
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 \
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.
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)
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",
// { dg-do compile }
-// { dg-options "-O2 -march=haswell -mtune-ctrl=avx256_store_by_pieces" }
+// { dg-options "-O2 -march=haswell -mtune-ctrl=avx256_move_by_pieces" }
// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
#include <cstring>
/* { dg-do compile { target ia32 } } */
-/* { dg-options "-O2 -mavx2 -mmove-max=128 -mstore-max=128" } */
+/* { dg-options "-O2 -mavx2 -mmove-max=128" } */
int foo(char *a)
{
/* { dg-do compile } */
-/* { dg-options "-O2 -march=sapphirerapids -mmove-max=128 -mstore-max=128" } */
+/* { dg-options "-O2 -march=sapphirerapids -mmove-max=128" } */
extern char *dst, *src;
/* { dg-do compile } */
-/* { dg-options "-O2 -march=sapphirerapids -mmove-max=256 -mstore-max=256" } */
+/* { dg-options "-O2 -march=sapphirerapids -mmove-max=256" } */
extern char *dst, *src;
/* { dg-do compile } */
-/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -mno-avx512f -mavx2 -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -mno-avx512f -mavx2 -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -mno-avx512f -mavx2 -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -mno-avx512f -mavx2 -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -mno-avx512f -mavx2 -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -mno-avx512f -mavx2 -mtune-ctrl=avx256_move_by_pieces" } */
void
foo (int a1, int a2, int a3, int a4, int a5, int a6, int x, char *dst)
/* { dg-do compile } */
-/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -march=x86-64 -mavx512f -mtune-ctrl=avx512_store_by_pieces" } */
+/* { dg-options "-O2 -march=x86-64 -mavx512f -mtune-ctrl=avx512_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
/* { dg-options "-O2 -march=sapphirerapids -mstore-max=128" } */
+/* { dg-warning ".-mstore-max=. is deprecated; use .-mmove-max=. instead" "" { target *-*-* } 0 } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -march=sapphirerapids -mstore-max=256" } */
+/* { dg-options "-O2 -march=sapphirerapids -mmove-max=256" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile { target int128 } } */
-/* { dg-options "-O3 -march=skylake -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O3 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
extern __int128 array[16];
/* { dg-do compile } */
-/* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
/* { dg-additional-options "-fno-PIE" { target ia32 } } */
extern char array[64];
/* { dg-do compile } */
-/* { dg-options "-O2 -mavx -mmove-max=256 -mstore-max=256 -fno-stack-protector" } */
+/* { dg-options "-O2 -mavx -mmove-max=256 -fno-stack-protector" } */
/* { dg-final { scan-assembler-times {(?n)vptest.*ymm} 1 } } */
/* { dg-final { scan-assembler-times {sete} 1 } } */
/* { dg-final { scan-assembler-not {(?n)je.*L[0-9]} } } */
/* { dg-do compile } */
-/* { dg-options "-O2 -march=x86-64 -mavx512f -mstore-max=128" } */
+/* { dg-options "-O2 -march=x86-64 -mavx512f -mmove-max=128" } */
extern unsigned _BitInt(3719) a;
extern _BitInt(465) g;
/* { dg-do compile } */
-/* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;
/* { dg-do compile } */
-/* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_store_by_pieces" } */
+/* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
extern char *dst;