summaryrefslogtreecommitdiff
path: root/gcc/config/mn10300/mn10300.h
diff options
context:
space:
mode:
authornickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>2010-10-29 08:53:47 +0000
committernickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>2010-10-29 08:53:47 +0000
commit4879b320cd972df1525bddfc1562cb2cca7a1aa1 (patch)
treee6ae4bf66634186860949005668690b4e9f2d6e5 /gcc/config/mn10300/mn10300.h
parentd86d3e366346f9cc270a1b52fba10d88d5e9a5b7 (diff)
downloadgcc-4879b320cd972df1525bddfc1562cb2cca7a1aa1.tar.gz
* doc/invoke.texi: Document -mam34 and -mtune options.
* config/mn10300/mn10300.c (mn10300_tune_string): New variable. (mn10300_tune_cpu): New variable. (mn10300_handle_option): Handle -mam34 and -mtune options. (mn10300_option_override): Convert tune string into tune cpu variable. (mn10300_legitimate_constant_p): Delete unused local variable. (is_load_insn): New function. (is_store_insn): New function. (mn10300_adjust_schedule_cost): New function. (TARGET_SCHED_ADJUST_COST): Define. * config/mn10300/mn10300.opt (mam34): New option. (mtune): New option. * config/mn10300/mn10300.h (TARGET_CPU_CPP_BUILTINS): Add AM34 support. (enum processor_type): Add AM34. (TARGET_AM34): Define. * config/mn10300/mn10300.md (attr cpu): Add am34. Add pipeline description. (movqi, movhi, movsi, movsf, movdf, movdi): Fix predicates. Remove unneeded alternatives. Add timing attribute. (pop_pic_reg, am33_addsi3, mn10300_addsi3, am33_subsi3, mn10300_subsi3, mulsidi3, umulsidi3, am33_mulsi3, mn10300_mulsi3, udivmodsi4_am33, divmodsi4, am33_andsi3, mn10300_andsi3, am33_iorsi3, mn10300_iorsi3, am33_xorsi3, mn10300_xorsi3, byte_clear, byte_set, bit_clear1, bit_clear2, bit_set, am33_iorqi3, mn10300_iorqi3, test_byte_bitfield, bit_test, subreg_bit_test, cmpsi, am33_cmpsf, am33_subsi3, float_conditional_branch, jump, indirect_jump, tablejump, call_internal, call_value_internal, zero_extendqisi2_am33, zero_extendqisi2_mn10300, zero_extendhisi2_am33, zero_extendhisi2_mn10300, extendqisi2_am33, extendqisi2_mn10300, extendhisi2_am33, extendhisi2_mn10300, am33_ashlsi3, mn10300_ashlsi3, am33_lshrsi3, mn10300_lshrsi3, am33_ashrisi3, mn10300_ashrsi3, abssf2_am33_2, negsf2_am33_2, rsqrtsf2, addsf3_internal, subsf3_internal, mulsf3_internal, divsf3, fmaddsf4, fmsubsf4, fnmaddsf4, fnmsubsf4, return_internal, return_internal_regs, store_movm, return, call_next_insn): Add timing attribute. (am33_subsi3): Add missing clobber of CC_REG. (am33_andsi3, mn10300_andsi3): Fix compile time warnings. (udivmodsi4, udivmodsi4_insn, divmodsi4, test_byte_bitfield, subreg_bit_test, zero_extendqisi2, zero_extendhisi2, extendqisi2): Fix predicates. (call_internal, call_internal_value): Separate alternatives. * config/mn10300/t-mn10300: Add AM34 multilib. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166058 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/mn10300/mn10300.h')
-rw-r--r--gcc/config/mn10300/mn10300.h20
1 files changed, 14 insertions, 6 deletions
diff --git a/gcc/config/mn10300/mn10300.h b/gcc/config/mn10300/mn10300.h
index 58f2719cba9..c9f76f87593 100644
--- a/gcc/config/mn10300/mn10300.h
+++ b/gcc/config/mn10300/mn10300.h
@@ -38,7 +38,12 @@
builtin_assert ("cpu=mn10300"); \
builtin_assert ("machine=mn10300"); \
\
- if (TARGET_AM33_2) \
+ if (TARGET_AM34) \
+ { \
+ builtin_define ("__AM33__=4"); \
+ builtin_define ("__AM34__"); \
+ } \
+ else if (TARGET_AM33_2) \
{ \
builtin_define ("__AM33__=2"); \
builtin_define ("__AM33_2__"); \
@@ -54,13 +59,16 @@ enum processor_type
{
PROCESSOR_MN10300,
PROCESSOR_AM33,
- PROCESSOR_AM33_2
+ PROCESSOR_AM33_2,
+ PROCESSOR_AM34
};
extern enum processor_type mn10300_processor;
+extern enum processor_type mn10300_tune_cpu;
#define TARGET_AM33 (mn10300_processor >= PROCESSOR_AM33)
-#define TARGET_AM33_2 (mn10300_processor == PROCESSOR_AM33_2)
+#define TARGET_AM33_2 (mn10300_processor >= PROCESSOR_AM33_2)
+#define TARGET_AM34 (mn10300_processor >= PROCESSOR_AM34)
#ifndef PROCESSOR_DEFAULT
#define PROCESSOR_DEFAULT PROCESSOR_MN10300
@@ -274,7 +282,7 @@ enum reg_class
/* Give names of register classes as strings for dump file. */
-#define REG_CLASS_NAMES \
+#define REG_CLASS_NAMES \
{ "NO_REGS", "DATA_REGS", "ADDRESS_REGS", \
"SP_REGS", "DATA_OR_ADDRESS_REGS", "SP_OR_ADDRESS_REGS", \
"EXTENDED_REGS", \
@@ -289,7 +297,7 @@ enum reg_class
of length N_REG_CLASSES. */
#define REG_CLASS_CONTENTS \
-{ { 0, 0 }, /* No regs */ \
+{ { 0, 0 }, /* No regs */ \
{ 0x0000000f, 0 }, /* DATA_REGS */ \
{ 0x000001f0, 0 }, /* ADDRESS_REGS */ \
{ 0x00000200, 0 }, /* SP_REGS */ \
@@ -304,7 +312,7 @@ enum reg_class
{ 0x03fc0000, 0 }, /* FP_ACC_REGS */ \
{ 0x00000000, 0x80000 },/* CC_REGS */ \
{ 0x0003fdff, 0 }, /* GENERAL_REGS */ \
- { 0xffffffff, 0xfffff } /* ALL_REGS */ \
+ { 0xffffffff, 0xfffff } /* ALL_REGS */ \
}
/* The following macro defines cover classes for Integrated Register