(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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25828
138bc75d-0d04-0410-961f-
82ee72b054a4
+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>
* config/sparc/sparc.h (TARGET_SWITCHES, TARGET_OPTIONS):
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;
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)
PROCESSOR_700,
PROCESSOR_7100,
PROCESSOR_7100LC,
- PROCESSOR_7200
+ PROCESSOR_7200,
+ PROCESSOR_8000
};
/* For -mschedule= option. */
#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. */
;;
;; 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" ""
;; 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.
+;;
+
\f
;; Compare instructions.
;; This controls RTL generation and register allocation.
@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.