+2015-01-15 Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
+
+ * config/arm/arm.md (generic_sched): Specify xgene1 in 'no' list.
+ Include xgene1.md.
+ * config/arm/arm.c (arm_issue_rate): Specify 4 for xgene1.
+ * config/arm/arm-cores.def (xgene1): New entry.
+ * config/arm/arm-tables.opt: Regenerate.
+ * config/arm/arm-tune.md: Regenerate.
+ * config/arm/bpabi.h (BE8_LINK_SPEC): Specify mcpu=xgene1.
+
2015-01-15 Yuri Rumyantsev <ysrumyan@gmail.com>
* tree-if-conv.c: Include hash-map.h.
/* V8 Architecture Processors */
ARM_CORE("cortex-a53", cortexa53, cortexa53, 8A, FL_LDSCHED | FL_CRC32, cortex_a53)
ARM_CORE("cortex-a57", cortexa57, cortexa15, 8A, FL_LDSCHED | FL_CRC32, cortex_a57)
+ARM_CORE("xgene1", xgene1, xgene1, 8A, FL_LDSCHED, xgene1)
/* V8 big.LITTLE implementations */
ARM_CORE("cortex-a57.cortex-a53", cortexa57cortexa53, cortexa53, 8A, FL_LDSCHED | FL_CRC32, cortex_a57)
EnumValue
Enum(processor_type) String(cortex-a57) Value(cortexa57)
+EnumValue
+Enum(processor_type) String(xgene1) Value(xgene1)
+
EnumValue
Enum(processor_type) String(cortex-a57.cortex-a53) Value(cortexa57cortexa53)
cortexr4f,cortexr5,cortexr7,
cortexm7,cortexm4,cortexm3,
marvell_pj4,cortexa15cortexa7,cortexa17cortexa7,
- cortexa53,cortexa57,cortexa57cortexa53"
+ cortexa53,cortexa57,xgene1,
+ cortexa57cortexa53"
(const (symbol_ref "((enum attr_tune) arm_tune)")))
ARM_FUSE_MOVW_MOVT /* Fuseable pairs of instructions. */
};
+const struct tune_params arm_xgene1_tune =
+{
+ arm_9e_rtx_costs,
+ &xgene1_extra_costs,
+ NULL, /* Scheduler cost adjustment. */
+ 1, /* Constant limit. */
+ 2, /* Max cond insns. */
+ ARM_PREFETCH_NOT_BENEFICIAL,
+ false, /* Prefer constant pool. */
+ arm_default_branch_cost,
+ true, /* Prefer LDRD/STRD. */
+ {true, true}, /* Prefer non short circuit. */
+ &arm_default_vec_cost, /* Vectorizer costs. */
+ false, /* Prefer Neon for 64-bits bitops. */
+ true, true, /* Prefer 32-bit encodings. */
+ false, /* Prefer Neon for stringops. */
+ 32 /* Maximum insns to inline memset. */
+};
+
/* Branches can be dual-issued on Cortex-A5, so conditional execution is
less appealing. Set max_insns_skipped to a low value. */
{
switch (arm_tune)
{
+ case xgene1:
+ return 4;
+
case cortexa15:
case cortexa57:
return 3;
;; given instruction does not shift one of its input operands.
(define_attr "shift" "" (const_int 0))
+;; [For compatibility with AArch64 in pipeline models]
+;; Attribute that specifies whether or not the instruction touches fp
+;; registers.
+(define_attr "fp" "no,yes" (const_string "no"))
+
; Floating Point Unit. If we only have floating point emulation, then there
; is no point in scheduling the floating point insns. (Well, for best
; performance we should try and group them together).
arm926ejs,arm1020e,arm1026ejs,arm1136js,\
arm1136jfs,cortexa5,cortexa7,cortexa8,\
cortexa9,cortexa12,cortexa15,cortexa17,\
- cortexa53,cortexm4,cortexm7,marvell_pj4")
+ cortexa53,cortexm4,cortexm7,marvell_pj4,\
+ xgene1")
(eq_attr "tune_cortexr4" "yes"))
(const_string "no")
(const_string "yes"))))
(and (eq_attr "fpu" "vfp")
(eq_attr "tune" "!arm1020e,arm1022e,cortexa5,cortexa7,\
cortexa8,cortexa9,cortexa53,cortexm4,\
- cortexm7,marvell_pj4")
+ cortexm7,marvell_pj4,xgene1")
(eq_attr "tune_cortexr4" "no"))
(const_string "yes")
(const_string "no"))))
(include "cortex-m4-fpu.md")
(include "vfp11.md")
(include "marvell-pj4.md")
+(include "xgene1.md")
\f
;;---------------------------------------------------------------------------
|mcpu=cortex-a53 \
|mcpu=cortex-a57 \
|mcpu=cortex-a57.cortex-a53 \
+ |mcpu=xgene1 \
|mcpu=cortex-m1.small-multiply \
|mcpu=cortex-m0.small-multiply \
|mcpu=cortex-m0plus.small-multiply \
|mcpu=cortex-a53 \
|mcpu=cortex-a57 \
|mcpu=cortex-a57.cortex-a53 \
+ |mcpu=xgene1 \
|mcpu=cortex-m1.small-multiply \
|mcpu=cortex-m0.small-multiply \
|mcpu=cortex-m0plus.small-multiply \
$(srcdir)/config/arm/cortex-a9.md \
$(srcdir)/config/arm/cortex-a9-neon.md \
$(srcdir)/config/arm/cortex-a53.md \
+ $(srcdir)/config/arm/xgene1.md \
$(srcdir)/config/arm/cortex-m4-fpu.md \
$(srcdir)/config/arm/cortex-m4.md \
$(srcdir)/config/arm/cortex-r4f.md \
@samp{marvell-pj4},
@samp{xscale}, @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312},
@samp{fa526}, @samp{fa626},
-@samp{fa606te}, @samp{fa626te}, @samp{fmp626}, @samp{fa726te}.
+@samp{fa606te}, @samp{fa626te}, @samp{fmp626}, @samp{fa726te},
+@samp{xgene1}.
Additionally, this option can specify that GCC should tune the performance
of the code for a big.LITTLE system. Permissible names are: