diff options
author | Michael Meissner <meissner@gcc.gnu.org> | 1995-12-20 17:05:26 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 1995-12-20 17:05:26 +0000 |
commit | 8e3f41e725238fdc0f7d8ba1a5ef6f1a27be72e3 (patch) | |
tree | 776a076a6433332dd1b12ef32987743ca0c530de | |
parent | 39dffea3c7e295b6e847f6709605de5ff2aff038 (diff) | |
download | gcc-8e3f41e725238fdc0f7d8ba1a5ef6f1a27be72e3.zip gcc-8e3f41e725238fdc0f7d8ba1a5ef6f1a27be72e3.tar.gz gcc-8e3f41e725238fdc0f7d8ba1a5ef6f1a27be72e3.tar.bz2 |
Make AIX4 use -mcpu=common by default; add -mtune=
From-SVN: r10820
-rw-r--r-- | gcc/config/rs6000/aix3newas.h | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/aix41.h | 59 | ||||
-rw-r--r-- | gcc/config/rs6000/eabiaix.h | 8 | ||||
-rw-r--r-- | gcc/config/rs6000/eabile.h | 8 | ||||
-rw-r--r-- | gcc/config/rs6000/lynx.h | 27 | ||||
-rw-r--r-- | gcc/config/rs6000/netware.h | 31 | ||||
-rw-r--r-- | gcc/config/rs6000/powerpc.h | 14 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 65 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 43 | ||||
-rw-r--r-- | gcc/config/rs6000/sysv4.h | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/sysv4le.h | 2 | ||||
-rw-r--r-- | gcc/config/rs6000/t-newas | 29 | ||||
-rw-r--r-- | gcc/config/rs6000/t-xnewas | 57 | ||||
-rw-r--r-- | gcc/config/rs6000/t-xrs6000 | 28 |
14 files changed, 318 insertions, 65 deletions
diff --git a/gcc/config/rs6000/aix3newas.h b/gcc/config/rs6000/aix3newas.h index 2d9b653..b790bb3 100644 --- a/gcc/config/rs6000/aix3newas.h +++ b/gcc/config/rs6000/aix3newas.h @@ -35,7 +35,9 @@ Boston, MA 02111-1307, USA. */ %{!mno-power: %{mpowerpc*: -m601}} \ %{!mno-power: %{!mpowerpc*: %{!mpower2: -mpwr}}}} \ %{mcpu=common: -mcom} \ +%{mcpu=rs6000: -mpwr} \ %{mcpu=power: -mpwr} \ +%{mcpu=power2: -mpwrx} \ %{mcpu=powerpc: -mppc} \ %{mcpu=rios: -mpwr} \ %{mcpu=rios1: -mpwr} \ @@ -44,9 +46,11 @@ Boston, MA 02111-1307, USA. */ %{mcpu=rsc1: -mpwr} \ %{mcpu=403: -mppc} \ %{mcpu=601: -m601} \ +%{mcpu=602: -mppc} \ %{mcpu=603: -mppc} \ %{mcpu=603e: -mppc} \ -%{mcpu=604: -mppc}" +%{mcpu=604: -mppc} \ +%{mcpu=620: -mppc}" /* Define the options for the binder: Start text at 512, align all segments to 512 bytes, and warn if there is text relocation. diff --git a/gcc/config/rs6000/aix41.h b/gcc/config/rs6000/aix41.h index a35b3fa..fa8d168 100644 --- a/gcc/config/rs6000/aix41.h +++ b/gcc/config/rs6000/aix41.h @@ -26,14 +26,15 @@ Boston, MA 02111-1307, USA. */ #undef ASM_SPEC #define ASM_SPEC "-u \ %{!mcpu*: \ - %{mpower: %{!mpowerpc*: %{!mpower2: -mpwr}}} \ %{mpower2: -mpwrx} \ - %{mno-power: %{mpowerpc*: -mppc}} \ - %{mno-power: %{!mpowerpc*: -mcom}} \ - %{!mno-power: %{mpowerpc*: -m601}} \ - %{!mno-power: %{!mpowerpc*: %{!mpower2: -mpwr}}}} \ + %{mpowerpc*: %{!mpower: -mppc}} \ + %{mpower: %{!mpower2: -mpwr}} \ + %{mpowerpc*: %{mpower: -m601}} \ + %{!mpowerpc*: %{!mpower*: -mcom}}} \ %{mcpu=common: -mcom} \ +%{mcpu=rs6000: -mpwr} \ %{mcpu=power: -mpwr} \ +%{mcpu=power2: -mpwrx} \ %{mcpu=powerpc: -mppc} \ %{mcpu=rios: -mpwr} \ %{mcpu=rios1: -mpwr} \ @@ -42,9 +43,55 @@ Boston, MA 02111-1307, USA. */ %{mcpu=rsc1: -mpwr} \ %{mcpu=403: -mppc} \ %{mcpu=601: -m601} \ +%{mcpu=602: -mppc} \ %{mcpu=603: -mppc} \ %{mcpu=603e: -mppc} \ -%{mcpu=604: -mppc}" +%{mcpu=604: -mppc} \ +%{mcpu=620: -mppc}" + +#undef CPP_PREDEFINES +#define CPP_PREDEFINES "-D_IBMR2 -D_POWER -D_AIX -D_AIX32 \ +-Asystem(unix) -Asystem(aix)" + +#undef CPP_SPEC +#define CPP_SPEC "\ +%{posix: -D_POSIX_SOURCE} \ +%{!mcpu*: \ + %{mpower: %{!mpower2: -D_ARCH_PWR}} \ + %{mpower2: -D_ARCH_PWR2} \ + %{mpowerpc*: -D_ARCH_PPC} \ + %{!mpower*: -D_ARCH_COM}} \ +%{mcpu=common: -D_ARCH_COM} \ +%{mcpu=rs6000: -D_ARCH_PWR} \ +%{mcpu=power: -D_ARCH_PWR} \ +%{mcpu=power2: -D_ARCH_PWR2} \ +%{mcpu=powerpc: -D_ARCH_PPC} \ +%{mcpu=rios: -D_ARCH_PWR} \ +%{mcpu=rios1: -D_ARCH_PWR} \ +%{mcpu=rios2: -D_ARCH_PWR2} \ +%{mcpu=rsc: -D_ARCH_PWR} \ +%{mcpu=rsc1: -D_ARCH_PWR} \ +%{mcpu=403: -D_ARCH_PPC} \ +%{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \ +%{mcpu=6*: -D_ARCH_PPC}" + +#undef TARGET_DEFAULT +#define TARGET_DEFAULT MASK_NEW_MNEMONICS + +#undef PROCESSOR_DEFAULT +#define PROCESSOR_DEFAULT PROCESSOR_PPC601 + +/* Define this macro as a C expression for the initializer of an + array of string to tell the driver program which options are + defaults for this target and thus do not need to be handled + specially when using `MULTILIB_OPTIONS'. + + Do not define this macro if `MULTILIB_OPTIONS' is not defined in + the target makefile fragment or if none of the options listed in + `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ + +#undef MULTILIB_DEFAULTS +#define MULTILIB_DEFAULTS { "mcpu=common" } /* These are not necessary when we pass -u to the assembler, and undefining them saves a great deal of space in object files. */ diff --git a/gcc/config/rs6000/eabiaix.h b/gcc/config/rs6000/eabiaix.h index c07f6d6..dcb00c7 100644 --- a/gcc/config/rs6000/eabiaix.h +++ b/gcc/config/rs6000/eabiaix.h @@ -42,7 +42,9 @@ Boston, MA 02111-1307, USA. */ %{mno-powerpc: %{!mpower: %{!mpower2: -D_ARCH_COM}}} \ %{!mno-powerpc: -D_ARCH_PPC}} \ %{mcpu=common: -D_ARCH_COM} \ +%{mcpu=rs6000: -D_ARCH_PWR} \ %{mcpu=power: -D_ARCH_PWR} \ +%{mcpu=power2: -D_ARCH_PWR2} \ %{mcpu=powerpc: -D_ARCH_PPC} \ %{mcpu=rios: -D_ARCH_PWR} \ %{mcpu=rios1: -D_ARCH_PWR} \ @@ -51,11 +53,7 @@ Boston, MA 02111-1307, USA. */ %{mcpu=rsc1: -D_ARCH_PWR} \ %{mcpu=403: -D_ARCH_PPC} \ %{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \ -%{mcpu=602: -D_ARCH_PPC} \ -%{mcpu=603: -D_ARCH_PPC} \ -%{mcpu=603e: -D_ARCH_PPC} \ -%{mcpu=604: -D_ARCH_PPC} \ -%{mcpu=620: -D_ARCH_PPC}" +%{mcpu=6*: -D_ARCH_PPC}" /* Define this macro as a C expression for the initializer of an array of string to tell the driver program which options are diff --git a/gcc/config/rs6000/eabile.h b/gcc/config/rs6000/eabile.h index 430660b..06f8b1e 100644 --- a/gcc/config/rs6000/eabile.h +++ b/gcc/config/rs6000/eabile.h @@ -43,7 +43,9 @@ Boston, MA 02111-1307, USA. */ %{mno-powerpc: %{!mpower: %{!mpower2: -D_ARCH_COM}}} \ %{!mno-powerpc: -D_ARCH_PPC}} \ %{mcpu=common: -D_ARCH_COM} \ +%{mcpu=rs6000: -D_ARCH_PWR} \ %{mcpu=power: -D_ARCH_PWR} \ +%{mcpu=power2: -D_ARCH_PWR2} \ %{mcpu=powerpc: -D_ARCH_PPC} \ %{mcpu=rios: -D_ARCH_PWR} \ %{mcpu=rios1: -D_ARCH_PWR} \ @@ -52,11 +54,7 @@ Boston, MA 02111-1307, USA. */ %{mcpu=rsc1: -D_ARCH_PWR} \ %{mcpu=403: -D_ARCH_PPC} \ %{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \ -%{mcpu=602: -D_ARCH_PPC} \ -%{mcpu=603: -D_ARCH_PPC} \ -%{mcpu=603e: -D_ARCH_PPC} \ -%{mcpu=604: -D_ARCH_PPC} \ -%{mcpu=620: -D_ARCH_PPC}" +%{mcpu=6*: -D_ARCH_PPC}" /* Define this macro as a C expression for the initializer of an array of string to tell the driver program which options are diff --git a/gcc/config/rs6000/lynx.h b/gcc/config/rs6000/lynx.h index 53b3ebfc..ac16a4c 100644 --- a/gcc/config/rs6000/lynx.h +++ b/gcc/config/rs6000/lynx.h @@ -72,7 +72,32 @@ Boston, MA 02111-1307, USA. */ /* This can become more refined as we have more powerpc options. */ #undef ASM_SPEC -#define ASM_SPEC "-u %{m601:-m601} %{power*:-m601}" +#define ASM_SPEC "\ +-u \ +%{!mcpu*: \ + %{mpower2: -mpwrx} \ + %{mpowerpc*: %{!mpower: -mppc}} \ + %{mno-powerpc: %{!mpower: %{!mpower2: -mcom}}} \ + %{mno-powerpc: %{mpower: %{!mpower2: -mpwr}}} \ + %{!mno-powerpc: %{mpower: -m601}} \ + %{!mno-powerpc: %{!mpower: -mppc}}} \ +%{mcpu=common: -mcom} \ +%{mcpu=rs6000: -mpwr} \ +%{mcpu=power: -mpwr} \ +%{mcpu=power2: -mpwrx} \ +%{mcpu=powerpc: -mppc} \ +%{mcpu=rios: -mpwr} \ +%{mcpu=rios1: -mpwr} \ +%{mcpu=rios2: -mpwrx} \ +%{mcpu=rsc: -mpwr} \ +%{mcpu=rsc1: -mpwr} \ +%{mcpu=403: -mppc} \ +%{mcpu=601: -m601} \ +%{mcpu=602: -mppc} \ +%{mcpu=603: -mppc} \ +%{mcpu=603e: -mppc} \ +%{mcpu=604: -mppc} \ +%{mcpu=620: -mppc}" #undef SUBTARGET_SWITCHES #define SUBTARGET_SWITCHES \ diff --git a/gcc/config/rs6000/netware.h b/gcc/config/rs6000/netware.h index 7d5bbaa..e4ea1ca 100644 --- a/gcc/config/rs6000/netware.h +++ b/gcc/config/rs6000/netware.h @@ -181,11 +181,34 @@ toc_section () \ #define ASM_OUTPUT_INTERNAL_LABEL_PREFIX(FILE,PREFIX) \ fprintf (FILE, ".%s", PREFIX) -/* Pass -m601 to the assembler, since that is what powerpc.h currently - implies. */ #undef ASM_SPEC -#define ASM_SPEC \ - "-u -m601 %{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}" +#define ASM_SPEC "\ +-u \ +%{!mcpu*: \ + %{mpower2: -mpwrx} \ + %{mpowerpc*: %{!mpower: -mppc}} \ + %{mno-powerpc: %{!mpower: %{!mpower2: -mcom}}} \ + %{mno-powerpc: %{mpower: %{!mpower2: -mpwr}}} \ + %{!mno-powerpc: %{mpower: -m601}} \ + %{!mno-powerpc: %{!mpower: -mppc}}} \ +%{mcpu=common: -mcom} \ +%{mcpu=rs6000: -mpwr} \ +%{mcpu=power: -mpwr} \ +%{mcpu=power2: -mpwrx} \ +%{mcpu=powerpc: -mppc} \ +%{mcpu=rios: -mpwr} \ +%{mcpu=rios1: -mpwr} \ +%{mcpu=rios2: -mpwrx} \ +%{mcpu=rsc: -mpwr} \ +%{mcpu=rsc1: -mpwr} \ +%{mcpu=403: -mppc} \ +%{mcpu=601: -m601} \ +%{mcpu=602: -mppc} \ +%{mcpu=603: -mppc} \ +%{mcpu=603e: -mppc} \ +%{mcpu=604: -mppc} \ +%{mcpu=620: -mppc} \ +%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}" /* This is the end of what might become sysv4.h. */ /* Enable output of DBX (stabs) debugging information when asked for it. */ diff --git a/gcc/config/rs6000/powerpc.h b/gcc/config/rs6000/powerpc.h index 96e15d7..0e9f957 100644 --- a/gcc/config/rs6000/powerpc.h +++ b/gcc/config/rs6000/powerpc.h @@ -33,7 +33,9 @@ Boston, MA 02111-1307, USA. */ %{!mno-powerpc: %{mpower: -m601}} \ %{!mno-powerpc: %{!mpower: -mppc}}} \ %{mcpu=common: -mcom} \ +%{mcpu=rs6000: -mpwr} \ %{mcpu=power: -mpwr} \ +%{mcpu=power2: -mpwrx} \ %{mcpu=powerpc: -mppc} \ %{mcpu=rios: -mpwr} \ %{mcpu=rios1: -mpwr} \ @@ -42,9 +44,11 @@ Boston, MA 02111-1307, USA. */ %{mcpu=rsc1: -mpwr} \ %{mcpu=403: -mppc} \ %{mcpu=601: -m601} \ +%{mcpu=602: -mppc} \ %{mcpu=603: -mppc} \ %{mcpu=603e: -mppc} \ -%{mcpu=604: -mppc}" +%{mcpu=604: -mppc} \ +%{mcpu=620: -mppc}" #undef CPP_PREDEFINES #define CPP_PREDEFINES "-D_IBMR2 -D_POWER -D_AIX -D_AIX32 \ @@ -60,7 +64,9 @@ Boston, MA 02111-1307, USA. */ %{mno-powerpc: %{!mpower: %{!mpower2: -D_ARCH_COM}}} \ %{!mno-powerpc: -D_ARCH_PPC}} \ %{mcpu=common: -D_ARCH_COM} \ +%{mcpu=rs6000: -D_ARCH_PWR} \ %{mcpu=power: -D_ARCH_PWR} \ +%{mcpu=power2: -D_ARCH_PWR2} \ %{mcpu=powerpc: -D_ARCH_PPC} \ %{mcpu=rios: -D_ARCH_PWR} \ %{mcpu=rios1: -D_ARCH_PWR} \ @@ -69,11 +75,7 @@ Boston, MA 02111-1307, USA. */ %{mcpu=rsc1: -D_ARCH_PWR} \ %{mcpu=403: -D_ARCH_PPC} \ %{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \ -%{mcpu=602: -D_ARCH_PPC} \ -%{mcpu=603: -D_ARCH_PPC} \ -%{mcpu=603e: -D_ARCH_PPC} \ -%{mcpu=604: -D_ARCH_PPC} \ -%{mcpu=620: -D_ARCH_PPC}" +%{mcpu=6*: -D_ARCH_PPC}" #undef TARGET_DEFAULT #define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS) diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 6715ddd..d2e3898 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -46,7 +46,13 @@ extern int profile_block_flag; /* Target cpu type */ enum processor_type rs6000_cpu; -char *rs6000_cpu_string; +struct rs6000_cpu_select rs6000_select[3] = +{ + /* switch name, tune arch */ + { (char *)0, "--enbable-cpu=", 1, 0 }, + { (char *)0, "-mcpu=", 1, 1 }, + { (char *)0, "-mtune=", 1, 0 }, +}; /* Set to non-zero by "fix" operation to indicate that itrunc and uitrunc must be defined. */ @@ -171,8 +177,9 @@ output_options (file, f_options, f_len, W_options, W_len) } } - if (rs6000_cpu_string != (char *)0) - pos = output_option (file, "-mcpu=", rs6000_cpu_string, pos); + for (j = 0; j < sizeof (rs6000_select) / sizeof(rs6000_select[0]); j++) + if (rs6000_select[j].string != (char *)0) + pos = output_option (file, rs6000_select[j].name, rs6000_select[j].string, pos); fputs ("\n\n", file); } @@ -182,9 +189,11 @@ output_options (file, f_options, f_len, W_options, W_len) type and sometimes adjust other TARGET_ options. */ void -rs6000_override_options () +rs6000_override_options (default_cpu) + char *default_cpu; { - int i; + int i, j; + struct rs6000_cpu_select *ptr; /* Simplify the entries below by making a mask for any POWER variant and any PowerPC variant. */ @@ -202,9 +211,15 @@ rs6000_override_options () int target_disable; /* Target flags to disable. */ } processor_target_table[] = {{"common", PROCESSOR_COMMON, 0, POWER_MASKS | POWERPC_MASKS}, + {"rs6000", PROCESSOR_POWER, + MASK_POWER | MASK_MULTIPLE | MASK_STRING, + MASK_POWER2 | POWERPC_MASKS | MASK_NEW_MNEMONICS}, {"power", PROCESSOR_POWER, MASK_POWER | MASK_MULTIPLE | MASK_STRING, MASK_POWER2 | POWERPC_MASKS | MASK_NEW_MNEMONICS}, + {"power2", PROCESSOR_POWER, + MASK_POWER | MASK_POWER2 | MASK_MULTIPLE | MASK_STRING, + POWERPC_MASKS | MASK_NEW_MNEMONICS}, {"powerpc", PROCESSOR_POWERPC, MASK_POWERPC | MASK_NEW_MNEMONICS, POWER_MASKS | POWERPC_OPT_MASKS | MASK_POWERPC64}, @@ -253,24 +268,32 @@ rs6000_override_options () profile_block_flag = 0; /* Identify the processor type */ - if (rs6000_cpu_string == 0) - rs6000_cpu = PROCESSOR_DEFAULT; - else - { - for (i = 0; i < ptt_size; i++) - if (! strcmp (rs6000_cpu_string, processor_target_table[i].name)) - { - rs6000_cpu = processor_target_table[i].processor; - target_flags |= processor_target_table[i].target_enable; - target_flags &= ~processor_target_table[i].target_disable; - break; - } + rs6000_select[0].string = default_cpu; + rs6000_cpu = PROCESSOR_DEFAULT; + if (rs6000_cpu == PROCESSOR_PPC403) + target_flags |= MASK_SOFT_FLOAT; - if (i == ptt_size) + for (i = 0; i < sizeof (rs6000_select) / sizeof (rs6000_select[0]); i++) + { + ptr = &rs6000_select[i]; + if (ptr->string != (char *)0 && ptr->string[0] != '\0') { - error ("bad value (%s) for -mcpu= switch", rs6000_cpu_string); - rs6000_cpu_string = "default"; - rs6000_cpu = PROCESSOR_DEFAULT; + for (j = 0; j < ptt_size; j++) + if (! strcmp (ptr->string, processor_target_table[j].name)) + { + if (ptr->set_tune_p) + rs6000_cpu = processor_target_table[j].processor; + + if (ptr->set_arch_p) + { + target_flags |= processor_target_table[j].target_enable; + target_flags &= ~processor_target_table[j].target_disable; + } + break; + } + + if (i == ptt_size) + error ("bad value (%s) for %s switch", ptr->string, ptr->name); } } diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 5de0451..db669be 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -32,6 +32,11 @@ Boston, MA 02111-1307, USA. */ /* Print subsidiary information on the compiler version in use. */ #define TARGET_VERSION ; +/* Default string to use for cpu if not specified. */ +#ifndef TARGET_CPU_DEFAULT +#define TARGET_CPU_DEFAULT ((char *)0) +#endif + /* Tell the assembler to assume that all undefined names are external. Don't do this until the fixed IBM assembler is more generally available. @@ -54,7 +59,9 @@ Boston, MA 02111-1307, USA. */ %{mno-power: %{!mpowerpc*: -D_ARCH_COM}} \ %{!mno-power: %{!mpower2: -D_ARCH_PWR}}} \ %{mcpu=common: -D_ARCH_COM} \ +%{mcpu=rs6000: -D_ARCH_PWR} \ %{mcpu=power: -D_ARCH_PWR} \ +%{mcpu=power2: -D_ARCH_PWR2} \ %{mcpu=powerpc: -D_ARCH_PPC} \ %{mcpu=rios: -D_ARCH_PWR} \ %{mcpu=rios1: -D_ARCH_PWR} \ @@ -63,11 +70,11 @@ Boston, MA 02111-1307, USA. */ %{mcpu=rsc1: -D_ARCH_PWR} \ %{mcpu=403: -D_ARCH_PPC} \ %{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \ -%{mcpu=602: -D_ARCH_PPC} \ -%{mcpu=603: -D_ARCH_PPC} \ -%{mcpu=603e: -D_ARCH_PPC} \ -%{mcpu=604: -D_ARCH_PPC} \ -%{mcpu=620: -D_ARCH_PPC}" +%{mcpu=602: -mppc} \ +%{mcpu=603: -mppc} \ +%{mcpu=603e: -mppc} \ +%{mcpu=604: -mppc} \ +%{mcpu=620: -mppc}" /* Define the options for the binder: Start text at 512, align all segments to 512 bytes, and warn if there is text relocation. @@ -285,9 +292,9 @@ extern enum processor_type rs6000_cpu; #define rs6000_cpu_attr ((enum attr_cpu)rs6000_cpu) /* Define generic processor types based upon current deployment. */ -#define PROCESSOR_COMMON PROCESSOR_PPC604 +#define PROCESSOR_COMMON PROCESSOR_PPC601 #define PROCESSOR_POWER PROCESSOR_RIOS1 -#define PROCESSOR_POWERPC PROCESSOR_PPC601 +#define PROCESSOR_POWERPC PROCESSOR_PPC604 /* Define the default processor. This is overridden by other tm.h files. */ #define PROCESSOR_DEFAULT PROCESSOR_RIOS1 @@ -318,13 +325,23 @@ extern enum processor_type rs6000_cpu; #define SUBTARGET_OPTIONS #endif -#define TARGET_OPTIONS \ -{ \ - {"cpu=", &rs6000_cpu_string} \ - SUBTARGET_OPTIONS \ +#define TARGET_OPTIONS \ +{ \ + {"cpu=", &rs6000_select[1].string}, \ + {"tune=", &rs6000_select[2].string}, \ + SUBTARGET_OPTIONS \ } -extern char *rs6000_cpu_string; +/* rs6000_select[0] is reserved for the default cpu defined via --enable-cpu */ +struct rs6000_cpu_select +{ + char *string; + char *name; + int set_tune_p; + int set_arch_p; +}; + +extern struct rs6000_cpu_select rs6000_select[]; /* Sometimes certain combinations of command options do not make sense on a particular target machine. You can define a macro @@ -334,7 +351,7 @@ extern char *rs6000_cpu_string; On the RS/6000 this is used to define the target cpu type. */ -#define OVERRIDE_OPTIONS rs6000_override_options () +#define OVERRIDE_OPTIONS rs6000_override_options (TARGET_CPU_DEFAULT) /* Show we can debug even without a frame pointer. */ #define CAN_DEBUG_WITHOUT_FP diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h index d7e8af0..d2d13eda 100644 --- a/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h @@ -435,7 +435,9 @@ extern int rs6000_pic_labelno; %{!mno-powerpc: %{mpower: -m601}} \ %{!mno-powerpc: %{!mpower: -mppc}}} \ %{mcpu=common: -mcom} \ +%{mcpu=rs6000: -mpwr} \ %{mcpu=power: -mpwr} \ +%{mcpu=power2: -mpwrx} \ %{mcpu=powerpc: -mppc} \ %{mcpu=rios: -mpwr} \ %{mcpu=rios1: -mpwr} \ @@ -444,9 +446,11 @@ extern int rs6000_pic_labelno; %{mcpu=rsc1: -mpwr} \ %{mcpu=403: -mppc} \ %{mcpu=601: -m601} \ +%{mcpu=602: -mppc} \ %{mcpu=603: -mppc} \ %{mcpu=603e: -mppc} \ %{mcpu=604: -mppc} \ +%{mcpu=620: -mppc} \ %{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \ %{mrelocatable} %{mrelocatable-lib} %{memb} \ %{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian}" @@ -620,7 +624,9 @@ do { \ %{mno-powerpc: %{!mpower: %{!mpower2: -D_ARCH_COM}}} \ %{!mno-powerpc: -D_ARCH_PPC}} \ %{mcpu=common: -D_ARCH_COM} \ +%{mcpu=rs6000: -D_ARCH_PWR} \ %{mcpu=power: -D_ARCH_PWR} \ +%{mcpu=power2: -D_ARCH_PWR2} \ %{mcpu=powerpc: -D_ARCH_PPC} \ %{mcpu=rios: -D_ARCH_PWR} \ %{mcpu=rios1: -D_ARCH_PWR} \ diff --git a/gcc/config/rs6000/sysv4le.h b/gcc/config/rs6000/sysv4le.h index 7a2e55b..e9cf5bc 100644 --- a/gcc/config/rs6000/sysv4le.h +++ b/gcc/config/rs6000/sysv4le.h @@ -43,7 +43,9 @@ Boston, MA 02111-1307, USA. */ %{mno-powerpc: %{!mpower: %{!mpower2: -D_ARCH_COM}}} \ %{!mno-powerpc: -D_ARCH_PPC}} \ %{mcpu=common: -D_ARCH_COM} \ +%{mcpu=rs6000: -D_ARCH_PWR} \ %{mcpu=power: -D_ARCH_PWR} \ +%{mcpu=power2: -D_ARCH_PWR2} \ %{mcpu=powerpc: -D_ARCH_PPC} \ %{mcpu=rios: -D_ARCH_PWR} \ %{mcpu=rios1: -D_ARCH_PWR} \ diff --git a/gcc/config/rs6000/t-newas b/gcc/config/rs6000/t-newas index 382d15b..9778b2b 100644 --- a/gcc/config/rs6000/t-newas +++ b/gcc/config/rs6000/t-newas @@ -13,10 +13,33 @@ fp-bit.c: $(srcdir)/config/fp-bit.c echo '#define FLOAT' > fp-bit.c cat $(srcdir)/config/fp-bit.c >> fp-bit.c -# Build the libraries for both hard and soft floating point +# Build the libraries for both hard and soft floating point and all of the +# different processor models -MULTILIB_OPTIONS = msoft-float mcpu=common -MULTILIB_DIRNAMES = soft-float common +MULTILIB_OPTIONS = msoft-float \ + mcpu=common/mcpu=power/mcpu=powerpc/mcpu=601/mcpu=power2 + +MULTILIB_DIRNAMES = soft-float \ + common power powerpc 601 power2 + +MULTILIB_MATCHES = msoft-float=mcpu?403 \ + mcpu?power=mpower \ + mcpu?power=mrios1 \ + mcpu?power=mcpu=rios1 \ + mcpu?power2=mpower2 \ + mcpu?power2=mrios2 \ + mcpu?power2=mcpu=rios2 \ + mcpu?powerpc=mcpu?602 \ + mcpu?powerpc=mcpu?603 \ + mcpu?powerpc=mcpu?603e \ + mcpu?powerpc=mcpu?604 \ + mcpu?powerpc=mcpu?620 \ + mcpu?powerpc=mcpu?403 \ + mcpu?powerpc=mpowerpc \ + mcpu?powerpc=mpowerpc-gpopt \ + mcpu?powerpc=mpowerpc-gfxopt \ + mcpu?601=mcpu?rsc \ + mcpu?601=mcpu?rsc1 LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib diff --git a/gcc/config/rs6000/t-xnewas b/gcc/config/rs6000/t-xnewas new file mode 100644 index 0000000..ba97287 --- /dev/null +++ b/gcc/config/rs6000/t-xnewas @@ -0,0 +1,57 @@ +# Same as t-newas, except don't build libgcc1-test. This is because +# the compiler emits code to call external functions to save the +# arguments that are in libc, but since libgcc1-test is linked without +# libc, they will show up as errors. +LIBGCC1_TEST = + +# Do not build libgcc1. +LIBGCC1 = +CROSS_LIBGCC1 = + +# These are really part of libgcc1, but this will cause them to be +# built correctly, so... [taken from t-sparclite] +LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c + +dp-bit.c: $(srcdir)/config/fp-bit.c + cat $(srcdir)/config/fp-bit.c > dp-bit.c + +fp-bit.c: $(srcdir)/config/fp-bit.c + echo '#define FLOAT' > fp-bit.c + cat $(srcdir)/config/fp-bit.c >> fp-bit.c + +# Build the libraries for both hard and soft floating point and all of the +# different processor models + +MULTILIB_OPTIONS = msoft-float \ + mcpu=common/mcpu=power/mcpu=powerpc/mcpu=601/mcpu=power2 + +MULTILIB_DIRNAMES = soft-float \ + common power powerpc 601 power2 + +MULTILIB_MATCHES = msoft-float=mcpu?403 \ + mcpu?power=mpower \ + mcpu?power=mrios1 \ + mcpu?power=mcpu=rios1 \ + mcpu?power2=mpower2 \ + mcpu?power2=mrios2 \ + mcpu?power2=mcpu=rios2 \ + mcpu?powerpc=mcpu?602 \ + mcpu?powerpc=mcpu?603 \ + mcpu?powerpc=mcpu?603e \ + mcpu?powerpc=mcpu?604 \ + mcpu?powerpc=mcpu?620 \ + mcpu?powerpc=mcpu?403 \ + mcpu?powerpc=mpowerpc \ + mcpu?powerpc=mpowerpc-gpopt \ + mcpu?powerpc=mpowerpc-gfxopt \ + mcpu?601=mcpu?rsc \ + mcpu?601=mcpu?rsc1 + +LIBGCC = stmp-multilib +INSTALL_LIBGCC = install-multilib + +# Aix 3.2.x needs milli.exp for -mcpu=common +EXTRA_PARTS = milli.exp +milli.exp: $(srcdir)/config/rs6000/milli.exp + rm -f milli.exp + cp $(srcdir)/config/rs6000/milli.exp ./milli.exp diff --git a/gcc/config/rs6000/t-xrs6000 b/gcc/config/rs6000/t-xrs6000 new file mode 100644 index 0000000..f5d34d6 --- /dev/null +++ b/gcc/config/rs6000/t-xrs6000 @@ -0,0 +1,28 @@ +# Same as t-rs6000, except don't build libgcc1-test. This is because +# the compiler emits code to call external functions to save the +# arguments that are in libc, but since libgcc1-test is linked without +# libc, they will show up as errors. +LIBGCC1_TEST = + +# Do not build libgcc1. +LIBGCC1 = +CROSS_LIBGCC1 = + +# These are really part of libgcc1, but this will cause them to be +# built correctly, so... [taken from t-sparclite] +LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c + +dp-bit.c: $(srcdir)/config/fp-bit.c + cat $(srcdir)/config/fp-bit.c > dp-bit.c + +fp-bit.c: $(srcdir)/config/fp-bit.c + echo '#define FLOAT' > fp-bit.c + cat $(srcdir)/config/fp-bit.c >> fp-bit.c + +# Build the libraries for both hard and soft floating point + +MULTILIB_OPTIONS = msoft-float +MULTILIB_DIRNAMES = soft-float + +LIBGCC = stmp-multilib +INSTALL_LIBGCC = install-multilib |