+
+ case IS_DISPATCH_ON:
+ return true;
+
+ case IS_CMP:
+ return is_cmp_insn (insn);
+
+ case DISPATCH_VIOLATION:
+ return current_dispatch_window->has_violation ();
+
+ case FITS_DISPATCH_WINDOW:
+ return current_dispatch_window->fits_dispatch_window (insn);
+ }
+ return false;
+}
\ No newline at end of file
diff --git a/gcc/config/aarch64/aarch64-sched-dispatch.h
b/gcc/config/aarch64/aarch64-sched-dispatch.h
new file mode 100644
index 00000000000..1e0dc420139
--- /dev/null
+++ b/gcc/config/aarch64/aarch64-sched-dispatch.h
@@ -0,0 +1,66 @@
+/* Dispatch scheduling hooks for AArch64.
+ Copyright The GNU Toolchain Authors.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3. If not see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef GCC_AARCH64_SCHED_DISPATCH_H
+#define GCC_AARCH64_SCHED_DISPATCH_H
+
+void aarch64_sched_dispatch_do (rtx_insn *, int);
+bool aarch64_sched_dispatch (rtx_insn *, int);
+bool is_cmp_insn (rtx_insn *);
+
+/* Describes one dispatch constraint in terms of a callback function
+ and a number of slots per dispatch window. */
+class dispatch_constraint
+{
+public:
+ dispatch_constraint (const char *, const int, int (*) (rtx_insn *));
+ bool can_fit_insn (rtx_insn *) const;
+ bool add_insn_without_violation (rtx_insn *);
+ void reset_slots ();
+ void print_dispatch_constraint (FILE *) const;
+
+private:
+ int num_occupied_slots (rtx_insn *) const;
+
+ const char *m_name;
+ int (*m_callback) (rtx_insn *);
+ const int m_max_slots;
+ int m_free_slots;
+};
+
+/* Describes a dispatch window and keeps track of the dispatch constraints. */
+class dispatch_window
+{
+public:
+ dispatch_window (dispatch_constraint *constraints, int num_constraints);
+
+ bool fits_dispatch_window (rtx_insn *) const;
+ void add_insn_to_window (rtx_insn *);
+ bool has_violation () const;
+ void print_dispatch_window (FILE *) const;
+
+private:
+ void reset_constraints ();
+
+ dispatch_constraint *m_constraints;
+ const int m_num_constraints;
+ bool m_violation;
+};
+
+#endif /* GCC_AARCH64_SCHED_DISPATCH_H */
diff --git a/gcc/config/aarch64/aarch64-tuning-flags.def
b/gcc/config/aarch64/aarch64-tuning-flags.def
index dd91324e9c8..9c9af451b8e 100644
--- a/gcc/config/aarch64/aarch64-tuning-flags.def
+++ b/gcc/config/aarch64/aarch64-tuning-flags.def
@@ -69,4 +69,7 @@ AARCH64_EXTRA_TUNING_OPTION ("cheap_fpmr_write",
CHEAP_FPMR_WRITE)
#define AARCH64_EXTRA_TUNE_BASE (AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND
\
| AARCH64_EXTRA_TUNE_FULLY_PIPELINED_FMA)
+/* Enables dispatch scheduling. */
+AARCH64_EXTRA_TUNING_OPTION ("dispatch_sched", DISPATCH_SCHED)
+
#undef AARCH64_EXTRA_TUNING_OPTION
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index 2c5b6173d83..6cd95d41136 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -98,6 +98,7 @@
#include "ipa-prop.h"
#include "ipa-fnsummary.h"
#include "hash-map.h"
+#include "aarch64-sched-dispatch.h"
/* This file should be included last. */
#include "target-def.h"
@@ -19078,6 +19079,13 @@ aarch64_override_options_internal (struct gcc_options
*opts)
SET_OPTION_IF_UNSET (opts, &global_options_set, param_fully_pipelined_fma,
1);
+ /* If dispatch scheduling is enabled, dispatch_constraints and
+ num_dispatch_constraints in the tune_params struct must be defined. */
+ if (aarch64_tune_params.extra_tuning_flags
+ & AARCH64_EXTRA_TUNE_DISPATCH_SCHED)
+ gcc_assert (aarch64_tune_params.dispatch_constraints != NULL
+ && aarch64_tune_params.num_dispatch_constraints > 0);
+
/* TODO: SME codegen without SVE2 is not supported, once this support is
added
remove this 'sorry' and the implicit enablement of SVE2 in the checks for
streaming mode above in this function. */
@@ -32244,6 +32252,12 @@ aarch64_libgcc_floating_mode_supported_p
#undef TARGET_SCHED_REASSOCIATION_WIDTH
#define TARGET_SCHED_REASSOCIATION_WIDTH aarch64_reassociation_width
+#undef TARGET_SCHED_DISPATCH
+#define TARGET_SCHED_DISPATCH aarch64_sched_dispatch
+
+#undef TARGET_SCHED_DISPATCH_DO
+#define TARGET_SCHED_DISPATCH_DO aarch64_sched_dispatch_do
+
#undef TARGET_DWARF_FRAME_REG_MODE
#define TARGET_DWARF_FRAME_REG_MODE aarch64_dwarf_frame_reg_mode
diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64
index 38a8c063725..40c70a90d13 100644
--- a/gcc/config/aarch64/t-aarch64
+++ b/gcc/config/aarch64/t-aarch64
@@ -208,6 +208,14 @@ aarch64-ldp-fusion.o:
$(srcdir)/config/aarch64/aarch64-ldp-fusion.cc \
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(srcdir)/config/aarch64/aarch64-ldp-fusion.cc
+aarch64-sched-dispatch.o: $(srcdir)/config/aarch64/aarch64-sched-dispatch.cc \
+ $(CONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(BACKEND_H) $(RTL_H) \
+ $(INSN_ATTR_H) $(REGSET_H) sched-int.h $(DUMPFILE_H) \
+ $(srcdir)/config/aarch64/aarch64-protos.h \
+ $(srcdir)/config/aarch64/aarch64-sched-dispatch.h
+ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ $(srcdir)/config/aarch64/aarch64-sched-dispatch.cc
+
comma=,
MULTILIB_OPTIONS = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst
$(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG))))
MULTILIB_DIRNAMES = $(subst $(comma), ,$(TM_MULTILIB_CONFIG))
diff --git a/gcc/config/aarch64/tuning_models/a64fx.h
b/gcc/config/aarch64/tuning_models/a64fx.h
index 2622cd80346..29ef4a1d33c 100644
--- a/gcc/config/aarch64/tuning_models/a64fx.h
+++ b/gcc/config/aarch64/tuning_models/a64fx.h
@@ -165,7 +165,9 @@ static const struct tune_params a64fx_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&a64fx_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_A64FX. */
diff --git a/gcc/config/aarch64/tuning_models/ampere1.h
b/gcc/config/aarch64/tuning_models/ampere1.h
index f033016d010..ed4f2068d12 100644
--- a/gcc/config/aarch64/tuning_models/ampere1.h
+++ b/gcc/config/aarch64/tuning_models/ampere1.h
@@ -105,7 +105,9 @@ static const struct tune_params ampere1_tunings =
| AARCH64_EXTRA_TUNE_FULLY_PIPELINED_FMA), /* tune_flags. */
&ere1_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALIGNED, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALIGNED /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALIGNED, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_AMPERE1. */
diff --git a/gcc/config/aarch64/tuning_models/ampere1a.h
b/gcc/config/aarch64/tuning_models/ampere1a.h
index 41481a7f077..6aada99913e 100644
--- a/gcc/config/aarch64/tuning_models/ampere1a.h
+++ b/gcc/config/aarch64/tuning_models/ampere1a.h
@@ -57,7 +57,9 @@ static const struct tune_params ampere1a_tunings =
| AARCH64_EXTRA_TUNE_FULLY_PIPELINED_FMA), /* tune_flags. */
&ere1_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALIGNED, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALIGNED /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALIGNED, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_AMPERE1A. */
diff --git a/gcc/config/aarch64/tuning_models/ampere1b.h
b/gcc/config/aarch64/tuning_models/ampere1b.h
index 2ad6003d65c..b0e49a32d88 100644
--- a/gcc/config/aarch64/tuning_models/ampere1b.h
+++ b/gcc/config/aarch64/tuning_models/ampere1b.h
@@ -106,7 +106,9 @@ static const struct tune_params ampere1b_tunings =
| AARCH64_EXTRA_TUNE_AVOID_CROSS_LOOP_FMA), /* tune_flags. */
&ere1b_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALIGNED, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALIGNED /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALIGNED, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_AMPERE1B */
diff --git a/gcc/config/aarch64/tuning_models/cortexa35.h
b/gcc/config/aarch64/tuning_models/cortexa35.h
index 56168c8ebc6..a3294634bb4 100644
--- a/gcc/config/aarch64/tuning_models/cortexa35.h
+++ b/gcc/config/aarch64/tuning_models/cortexa35.h
@@ -56,7 +56,9 @@ static const struct tune_params cortexa35_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&generic_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_CORTEXA35. */
diff --git a/gcc/config/aarch64/tuning_models/cortexa53.h
b/gcc/config/aarch64/tuning_models/cortexa53.h
index 83daae4d38c..ed62ccf0a2a 100644
--- a/gcc/config/aarch64/tuning_models/cortexa53.h
+++ b/gcc/config/aarch64/tuning_models/cortexa53.h
@@ -65,7 +65,9 @@ static const struct tune_params cortexa53_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&generic_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_CORTEXA53. */
diff --git a/gcc/config/aarch64/tuning_models/cortexa57.h
b/gcc/config/aarch64/tuning_models/cortexa57.h
index 8da7fa9d80d..dfca057c71c 100644
--- a/gcc/config/aarch64/tuning_models/cortexa57.h
+++ b/gcc/config/aarch64/tuning_models/cortexa57.h
@@ -102,7 +102,9 @@ static const struct tune_params cortexa57_tunings =
(AARCH64_EXTRA_TUNE_RENAME_FMA_REGS), /* tune_flags. */
&generic_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_CORTEXA57. */
diff --git a/gcc/config/aarch64/tuning_models/cortexa72.h
b/gcc/config/aarch64/tuning_models/cortexa72.h
index f9a330f4a18..953104cade3 100644
--- a/gcc/config/aarch64/tuning_models/cortexa72.h
+++ b/gcc/config/aarch64/tuning_models/cortexa72.h
@@ -54,7 +54,9 @@ static const struct tune_params cortexa72_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&generic_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_CORTEXA72. */
diff --git a/gcc/config/aarch64/tuning_models/cortexa73.h
b/gcc/config/aarch64/tuning_models/cortexa73.h
index 038fd0896b9..dcd2a0ac286 100644
--- a/gcc/config/aarch64/tuning_models/cortexa73.h
+++ b/gcc/config/aarch64/tuning_models/cortexa73.h
@@ -55,7 +55,9 @@ static const struct tune_params cortexa73_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&generic_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
diff --git a/gcc/config/aarch64/tuning_models/cortexx925.h b/gcc/config/aarch64/tuning_models/cortexx925.h
index f448493b1bc..cbd572cd424 100644
--- a/gcc/config/aarch64/tuning_models/cortexx925.h
+++ b/gcc/config/aarch64/tuning_models/cortexx925.h
@@ -226,7 +226,9 @@ static const struct tune_params cortexx925_tunings =
| AARCH64_EXTRA_TUNE_AVOID_LDAPUR), /* tune_flags. */
&generic_armv9a_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_CORTEXX925. */
diff --git a/gcc/config/aarch64/tuning_models/emag.h
b/gcc/config/aarch64/tuning_models/emag.h
index 264a2810299..ccb68e471aa 100644
--- a/gcc/config/aarch64/tuning_models/emag.h
+++ b/gcc/config/aarch64/tuning_models/emag.h
@@ -54,7 +54,9 @@ static const struct tune_params emag_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&xgene1_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_EMAG. */
diff --git a/gcc/config/aarch64/tuning_models/exynosm1.h
b/gcc/config/aarch64/tuning_models/exynosm1.h
index 71876df7785..6ae27f65866 100644
--- a/gcc/config/aarch64/tuning_models/exynosm1.h
+++ b/gcc/config/aarch64/tuning_models/exynosm1.h
@@ -138,7 +138,9 @@ static const struct tune_params exynosm1_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&exynosm1_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_EXYNOSM1. */
diff --git a/gcc/config/aarch64/tuning_models/fujitsu_monaka.h
b/gcc/config/aarch64/tuning_models/fujitsu_monaka.h
index 5dc40243fe3..041e907d38f 100644
--- a/gcc/config/aarch64/tuning_models/fujitsu_monaka.h
+++ b/gcc/config/aarch64/tuning_models/fujitsu_monaka.h
@@ -58,7 +58,9 @@ static const struct tune_params fujitsu_monaka_tunings =
| AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT), /* tune_flags. */
&generic_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_FUJITSU_MONAKA. */
diff --git a/gcc/config/aarch64/tuning_models/generic.h
b/gcc/config/aarch64/tuning_models/generic.h
index a822c055fe9..a962f8f72ac 100644
--- a/gcc/config/aarch64/tuning_models/generic.h
+++ b/gcc/config/aarch64/tuning_models/generic.h
@@ -186,7 +186,9 @@ static const struct tune_params generic_tunings =
(AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS), /* tune_flags. */
&generic_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_GENERIC. */
diff --git a/gcc/config/aarch64/tuning_models/generic_armv8_a.h
b/gcc/config/aarch64/tuning_models/generic_armv8_a.h
index 01080cade46..e7d512a4423 100644
--- a/gcc/config/aarch64/tuning_models/generic_armv8_a.h
+++ b/gcc/config/aarch64/tuning_models/generic_armv8_a.h
@@ -186,7 +186,9 @@ static const struct tune_params generic_armv8_a_tunings =
| AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT), /* tune_flags. */
&generic_armv8_a_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_GENERIC_ARMV8_A. */
diff --git a/gcc/config/aarch64/tuning_models/generic_armv9_a.h
b/gcc/config/aarch64/tuning_models/generic_armv9_a.h
index f76a2506f38..cff40882cfd 100644
--- a/gcc/config/aarch64/tuning_models/generic_armv9_a.h
+++ b/gcc/config/aarch64/tuning_models/generic_armv9_a.h
@@ -254,7 +254,9 @@ static const struct tune_params generic_armv9_a_tunings =
| AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT), /* tune_flags. */
&generic_armv9a_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_GENERIC_ARMV9_A. */
diff --git a/gcc/config/aarch64/tuning_models/neoverse512tvb.h
b/gcc/config/aarch64/tuning_models/neoverse512tvb.h
index 964b4ac284a..8c4ec3ac733 100644
--- a/gcc/config/aarch64/tuning_models/neoverse512tvb.h
+++ b/gcc/config/aarch64/tuning_models/neoverse512tvb.h
@@ -161,7 +161,9 @@ static const struct tune_params neoverse512tvb_tunings =
| AARCH64_EXTRA_TUNE_AVOID_PRED_RMW), /* tune_flags. */
&generic_armv9a_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_NEOVERSE512TVB. */
diff --git a/gcc/config/aarch64/tuning_models/neoversen1.h
b/gcc/config/aarch64/tuning_models/neoversen1.h
index 9dc37bd7fd6..d5425d5bf99 100644
--- a/gcc/config/aarch64/tuning_models/neoversen1.h
+++ b/gcc/config/aarch64/tuning_models/neoversen1.h
@@ -54,7 +54,9 @@ static const struct tune_params neoversen1_tunings =
(AARCH64_EXTRA_TUNE_BASE), /* tune_flags. */
&generic_armv9a_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_NEOVERSEN1. */
diff --git a/gcc/config/aarch64/tuning_models/neoversen2.h
b/gcc/config/aarch64/tuning_models/neoversen2.h
index 9fbc059ea12..d52b0404ec5 100644
--- a/gcc/config/aarch64/tuning_models/neoversen2.h
+++ b/gcc/config/aarch64/tuning_models/neoversen2.h
@@ -223,7 +223,9 @@ static const struct tune_params neoversen2_tunings =
| AARCH64_EXTRA_TUNE_AVOID_PRED_RMW), /* tune_flags. */
&generic_armv9a_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_NEOVERSEN2. */
diff --git a/gcc/config/aarch64/tuning_models/neoversen3.h
b/gcc/config/aarch64/tuning_models/neoversen3.h
index 78177e78e07..ce5cef6fb24 100644
--- a/gcc/config/aarch64/tuning_models/neoversen3.h
+++ b/gcc/config/aarch64/tuning_models/neoversen3.h
@@ -222,7 +222,9 @@ static const struct tune_params neoversen3_tunings =
| AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT), /* tune_flags. */
&generic_armv9a_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_NEOVERSEN3. */
diff --git a/gcc/config/aarch64/tuning_models/neoversev1.h
b/gcc/config/aarch64/tuning_models/neoversev1.h
index f1ec7dcdda7..2f224bfb2ca 100644
--- a/gcc/config/aarch64/tuning_models/neoversev1.h
+++ b/gcc/config/aarch64/tuning_models/neoversev1.h
@@ -232,7 +232,9 @@ static const struct tune_params neoversev1_tunings =
| AARCH64_EXTRA_TUNE_AVOID_PRED_RMW), /* tune_flags. */
&generic_armv9a_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
diff --git a/gcc/config/aarch64/tuning_models/neoversev2.h b/gcc/config/aarch64/tuning_models/neoversev2.h
index 266d8f190a2..faf06d8e7ed 100644
--- a/gcc/config/aarch64/tuning_models/neoversev2.h
+++ b/gcc/config/aarch64/tuning_models/neoversev2.h
@@ -224,7 +224,9 @@ static const struct tune_params neoversev2_tunings =
| AARCH64_EXTRA_TUNE_AVOID_LDAPUR), /* tune_flags. */
&generic_armv9a_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_NEOVERSEV2. */
diff --git a/gcc/config/aarch64/tuning_models/neoversev3.h
b/gcc/config/aarch64/tuning_models/neoversev3.h
index f5566d270da..19281096006 100644
--- a/gcc/config/aarch64/tuning_models/neoversev3.h
+++ b/gcc/config/aarch64/tuning_models/neoversev3.h
@@ -224,7 +224,9 @@ static const struct tune_params neoversev3_tunings =
| AARCH64_EXTRA_TUNE_AVOID_LDAPUR), /* tune_flags. */
&generic_armv9a_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_NEOVERSEV3. */
diff --git a/gcc/config/aarch64/tuning_models/neoversev3ae.h
b/gcc/config/aarch64/tuning_models/neoversev3ae.h
index 5796e52a266..329e004eab8 100644
--- a/gcc/config/aarch64/tuning_models/neoversev3ae.h
+++ b/gcc/config/aarch64/tuning_models/neoversev3ae.h
@@ -224,7 +224,9 @@ static const struct tune_params neoversev3ae_tunings =
| AARCH64_EXTRA_TUNE_AVOID_LDAPUR), /* tune_flags. */
&generic_armv9a_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_NEOVERSEV3AE. */
diff --git a/gcc/config/aarch64/tuning_models/olympus.h
b/gcc/config/aarch64/tuning_models/olympus.h
index 268789db019..6f471a1c5b7 100644
--- a/gcc/config/aarch64/tuning_models/olympus.h
+++ b/gcc/config/aarch64/tuning_models/olympus.h
@@ -204,7 +204,9 @@ static struct tune_params olympus_tunings =
| AARCH64_EXTRA_TUNE_AVOID_PRED_RMW), /* tune_flags. */
&olympus_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_OLYMPUS. */
diff --git a/gcc/config/aarch64/tuning_models/qdf24xx.h
b/gcc/config/aarch64/tuning_models/qdf24xx.h
index 583d30a4d17..6ef115a0882 100644
--- a/gcc/config/aarch64/tuning_models/qdf24xx.h
+++ b/gcc/config/aarch64/tuning_models/qdf24xx.h
@@ -130,7 +130,9 @@ static const struct tune_params qdf24xx_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&qdf24xx_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_QDF24XX. */
diff --git a/gcc/config/aarch64/tuning_models/saphira.h
b/gcc/config/aarch64/tuning_models/saphira.h
index 684f3951a60..c37a731649d 100644
--- a/gcc/config/aarch64/tuning_models/saphira.h
+++ b/gcc/config/aarch64/tuning_models/saphira.h
@@ -56,7 +56,9 @@ static const struct tune_params saphira_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&generic_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_SAPHIRA. */
diff --git a/gcc/config/aarch64/tuning_models/thunderx.h
b/gcc/config/aarch64/tuning_models/thunderx.h
index d79c1391b8c..f94ef397bdc 100644
--- a/gcc/config/aarch64/tuning_models/thunderx.h
+++ b/gcc/config/aarch64/tuning_models/thunderx.h
@@ -111,7 +111,9 @@ static const struct tune_params thunderx_tunings =
(AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND), /* tune_flags. */
&thunderx_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALIGNED, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALIGNED /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALIGNED, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_THUNDERX. */
diff --git a/gcc/config/aarch64/tuning_models/thunderx2t99.h
b/gcc/config/aarch64/tuning_models/thunderx2t99.h
index 513c6158084..ea5cc39f0e4 100644
--- a/gcc/config/aarch64/tuning_models/thunderx2t99.h
+++ b/gcc/config/aarch64/tuning_models/thunderx2t99.h
@@ -131,7 +131,9 @@ static const struct tune_params thunderx2t99_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&thunderx2t99_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_THUNDERX2T99. */
diff --git a/gcc/config/aarch64/tuning_models/thunderx3t110.h
b/gcc/config/aarch64/tuning_models/thunderx3t110.h
index a2547b8e54d..a3a3d72ce43 100644
--- a/gcc/config/aarch64/tuning_models/thunderx3t110.h
+++ b/gcc/config/aarch64/tuning_models/thunderx3t110.h
@@ -130,7 +130,9 @@ static const struct tune_params thunderx3t110_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&thunderx3t110_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_THUNDERX3T110. */
diff --git a/gcc/config/aarch64/tuning_models/thunderxt88.h
b/gcc/config/aarch64/tuning_models/thunderxt88.h
index 6be5c526fc1..85b06e96233 100644
--- a/gcc/config/aarch64/tuning_models/thunderxt88.h
+++ b/gcc/config/aarch64/tuning_models/thunderxt88.h
@@ -66,7 +66,9 @@ static const struct tune_params thunderxt88_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&thunderxt88_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALIGNED, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALIGNED /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALIGNED, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_THUNDERXT88. */
diff --git a/gcc/config/aarch64/tuning_models/tsv110.h
b/gcc/config/aarch64/tuning_models/tsv110.h
index 458286e0e80..450f13390d0 100644
--- a/gcc/config/aarch64/tuning_models/tsv110.h
+++ b/gcc/config/aarch64/tuning_models/tsv110.h
@@ -131,7 +131,9 @@ static const struct tune_params tsv110_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&tsv110_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_TSV110. */
diff --git a/gcc/config/aarch64/tuning_models/xgene1.h
b/gcc/config/aarch64/tuning_models/xgene1.h
index b4f01ee92f5..f69a5de6fe2 100644
--- a/gcc/config/aarch64/tuning_models/xgene1.h
+++ b/gcc/config/aarch64/tuning_models/xgene1.h
@@ -139,7 +139,9 @@ static const struct tune_params xgene1_tunings =
(AARCH64_EXTRA_TUNE_NONE), /* tune_flags. */
&xgene1_prefetch_tune,
AARCH64_LDP_STP_POLICY_ALWAYS, /* ldp_policy_model. */
- AARCH64_LDP_STP_POLICY_ALWAYS /* stp_policy_model. */
+ AARCH64_LDP_STP_POLICY_ALWAYS, /* stp_policy_model. */
+ nullptr, /* dispatch_constraints. */
+ 0 /* num_dispatch_constraints. */
};
#endif /* GCC_AARCH64_H_XGENE1. */