From e14b50cef771802f70fa720e700569dd47aa1a9d Mon Sep 17 00:00:00 2001 From: Jerry Quinn Date: Wed, 17 Mar 1999 19:46:37 +0000 Subject: [PATCH] pa.h (processor_type): Add PROCESSOR_8000 symbol. * pa.h (processor_type): Add PROCESSOR_8000 symbol. (ISSUE_RATE): Revamp, including PA8000 support. * pa.c (override_options): Add 8000 as -mschedule= option. Do not call strcmp if pa_cpu_string is null. * pa.md (attr cpu): Add 8000. * invoke.texi: Add documentation for PA8000 scheduling. Co-Authored-By: Jeffrey A Law From-SVN: r25828 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/pa/pa.c | 13 +++++++++---- gcc/config/pa/pa.h | 14 +++++++++++--- gcc/config/pa/pa.md | 12 +++++++++++- gcc/invoke.texi | 2 +- 5 files changed, 42 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 17611fcbdc3..7a1d7bb74e6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +Wed Mar 17 20:38:08 1999 Jerry Quinn + Jeff Law + + * pa.h (processor_type): Add PROCESSOR_8000 symbol. + (ISSUE_RATE): Revamp, including PA8000 support. + * pa.c (override_options): Add 8000 as -mschedule= option. + Do not call strcmp if pa_cpu_string is null. + * pa.md (attr cpu): Add 8000. + * invoke.texi: Add documentation for PA8000 scheduling. + Wed Mar 17 18:20:24 1999 David S. Miller * config/sparc/sparc.h (TARGET_SWITCHES, TARGET_OPTIONS): diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index cb178ca1d79..6eb4ea7b789 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -97,12 +97,12 @@ void override_options () { /* Default to 7100LC scheduling. */ - if (! strcmp (pa_cpu_string, "7100")) + if (pa_cpu_string && ! strcmp (pa_cpu_string, "7100")) { pa_cpu_string = "7100"; pa_cpu = PROCESSOR_7100; } - else if (! strcmp (pa_cpu_string, "700")) + else if (pa_cpu_string && ! strcmp (pa_cpu_string, "700")) { pa_cpu_string = "700"; pa_cpu = PROCESSOR_700; @@ -113,14 +113,19 @@ override_options () pa_cpu_string = "7100LC"; pa_cpu = PROCESSOR_7100LC; } - else if (! strcmp (pa_cpu_string, "7200")) + else if (pa_cpu_string && ! strcmp (pa_cpu_string, "7200")) { pa_cpu_string = "7200"; pa_cpu = PROCESSOR_7200; } + else if (pa_cpu_string && ! strcmp (pa_cpu_string, "8000")) + { + pa_cpu_string = "8000"; + pa_cpu = PROCESSOR_8000; + } else { - warning ("Unknown -mschedule= option (%s).\nValid options are 700, 7100 and 7100LC and 7200\n", pa_cpu_string); + warning ("Unknown -mschedule= option (%s).\nValid options are 700, 7100, 7100LC, 7200, and 8000\n", pa_cpu_string); } if (flag_pic && TARGET_PORTABLE_RUNTIME) diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h index 955fb93d33f..3eaacf77da2 100644 --- a/gcc/config/pa/pa.h +++ b/gcc/config/pa/pa.h @@ -39,7 +39,8 @@ enum processor_type PROCESSOR_700, PROCESSOR_7100, PROCESSOR_7100LC, - PROCESSOR_7200 + PROCESSOR_7200, + PROCESSOR_8000 }; /* For -mschedule= option. */ @@ -49,8 +50,15 @@ extern enum processor_type pa_cpu; #define pa_cpu_attr ((enum attr_cpu)pa_cpu) /* The 700 can only issue a single insn at a time. - The 7XXX processors can issue two insns at a time. */ -#define ISSUE_RATE (pa_cpu == PROCESSOR_700 ? 1 : 2) + The 7XXX processors can issue two insns at a time. + The 8000 can issue 4 insns at a time. */ +#define ISSUE_RATE \ + (pa_cpu == PROCESSOR_700 ? 1 \ + : pa_cpu == PROCESSOR_7100 ? 2 \ + : pa_cpu == PROCESSOR_7100LC ? 2 \ + : pa_cpu == PROCESSOR_7200 ? 2 \ + : pa_cpu == PROCESSOR_8000 ? 4 \ + : 2) /* Print subsidiary information on the compiler version in use. */ diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 568863ebaa3..e1d0661b657 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -43,7 +43,7 @@ ;; ;; FIXME: Add 800 scheduling for completeness? -(define_attr "cpu" "700,7100,7100LC,7200" (const (symbol_ref "pa_cpu_attr"))) +(define_attr "cpu" "700,7100,7100LC,7200,8000" (const (symbol_ref "pa_cpu_attr"))) ;; Length (in # of insns). (define_attr "length" "" @@ -350,6 +350,16 @@ ;; treat it just like the 7100LC pipeline. ;; Similarly for the multi-issue fake units. +;; PA8000 scheduling +;; +;; HP recommends against latency scheduling on the PA8000. +;; +;; For now we do not actually define any scheduling parameters for the PA8000. +;; +;; -msched=8000 is mostly so that we can retune the code sequences to improve +;; performance on the PA8000 class machines. +;; + ;; Compare instructions. ;; This controls RTL generation and register allocation. diff --git a/gcc/invoke.texi b/gcc/invoke.texi index 5ea74bfed4d..8a90238204e 100644 --- a/gcc/invoke.texi +++ b/gcc/invoke.texi @@ -5190,7 +5190,7 @@ Enable the use of assembler directives only GAS understands. @item -mschedule=@var{cpu type} Schedule code according to the constraints for the machine type @var{cpu type}. The choices for @var{cpu type} are @samp{700} -@samp{7100}, @samp{7100LC}, and @samp{7200}. Refer to +@samp{7100}, @samp{7100LC}, @samp{7200}, and @samp{8000}. Refer to @file{/usr/lib/sched.models} on an HP-UX system to determine the proper scheduling option for your machine. -- 2.30.2