Commit e14b50ce by Jerry Quinn Committed by Jeff Law

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 <law@cygnus.com>

From-SVN: r25828
parent 14f45d6b
Wed Mar 17 20:38:08 1999 Jerry Quinn <jquinn@nortelnetworks.com>
Jeff Law <law@cygnus.com>
* 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 <davem@redhat.com> Wed Mar 17 18:20:24 1999 David S. Miller <davem@redhat.com>
* config/sparc/sparc.h (TARGET_SWITCHES, TARGET_OPTIONS): * config/sparc/sparc.h (TARGET_SWITCHES, TARGET_OPTIONS):
......
...@@ -97,12 +97,12 @@ void ...@@ -97,12 +97,12 @@ void
override_options () override_options ()
{ {
/* Default to 7100LC scheduling. */ /* 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_string = "7100";
pa_cpu = PROCESSOR_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_string = "700";
pa_cpu = PROCESSOR_700; pa_cpu = PROCESSOR_700;
...@@ -113,14 +113,19 @@ override_options () ...@@ -113,14 +113,19 @@ override_options ()
pa_cpu_string = "7100LC"; pa_cpu_string = "7100LC";
pa_cpu = PROCESSOR_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_string = "7200";
pa_cpu = PROCESSOR_7200; pa_cpu = PROCESSOR_7200;
} }
else if (pa_cpu_string && ! strcmp (pa_cpu_string, "8000"))
{
pa_cpu_string = "8000";
pa_cpu = PROCESSOR_8000;
}
else 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) if (flag_pic && TARGET_PORTABLE_RUNTIME)
......
...@@ -39,7 +39,8 @@ enum processor_type ...@@ -39,7 +39,8 @@ enum processor_type
PROCESSOR_700, PROCESSOR_700,
PROCESSOR_7100, PROCESSOR_7100,
PROCESSOR_7100LC, PROCESSOR_7100LC,
PROCESSOR_7200 PROCESSOR_7200,
PROCESSOR_8000
}; };
/* For -mschedule= option. */ /* For -mschedule= option. */
...@@ -49,8 +50,15 @@ extern enum processor_type pa_cpu; ...@@ -49,8 +50,15 @@ extern enum processor_type pa_cpu;
#define pa_cpu_attr ((enum attr_cpu)pa_cpu) #define pa_cpu_attr ((enum attr_cpu)pa_cpu)
/* The 700 can only issue a single insn at a time. /* The 700 can only issue a single insn at a time.
The 7XXX processors can issue two insns at a time. */ The 7XXX processors can issue two insns at a time.
#define ISSUE_RATE (pa_cpu == PROCESSOR_700 ? 1 : 2) 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. */ /* Print subsidiary information on the compiler version in use. */
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
;; ;;
;; FIXME: Add 800 scheduling for completeness? ;; 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). ;; Length (in # of insns).
(define_attr "length" "" (define_attr "length" ""
...@@ -350,6 +350,16 @@ ...@@ -350,6 +350,16 @@
;; treat it just like the 7100LC pipeline. ;; treat it just like the 7100LC pipeline.
;; Similarly for the multi-issue fake units. ;; 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. ;; Compare instructions.
;; This controls RTL generation and register allocation. ;; This controls RTL generation and register allocation.
......
...@@ -5190,7 +5190,7 @@ Enable the use of assembler directives only GAS understands. ...@@ -5190,7 +5190,7 @@ Enable the use of assembler directives only GAS understands.
@item -mschedule=@var{cpu type} @item -mschedule=@var{cpu type}
Schedule code according to the constraints for the machine type Schedule code according to the constraints for the machine type
@var{cpu type}. The choices for @var{cpu type} are @samp{700} @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 @file{/usr/lib/sched.models} on an HP-UX system to determine the
proper scheduling option for your machine. proper scheduling option for your machine.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment