aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Quinn <jquinn@nortelnetworks.com>1999-03-17 19:46:37 +0000
committerJeff Law <law@gcc.gnu.org>1999-03-17 12:46:37 -0700
commite14b50cef771802f70fa720e700569dd47aa1a9d (patch)
tree181a040f08e42c47fa29d7a5f2a4f0a404efb6b3
parent14f45d6b9fc14b4dcfb86464cb61536de48023cc (diff)
downloadgcc-e14b50cef771802f70fa720e700569dd47aa1a9d.zip
gcc-e14b50cef771802f70fa720e700569dd47aa1a9d.tar.gz
gcc-e14b50cef771802f70fa720e700569dd47aa1a9d.tar.bz2
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
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/pa/pa.c13
-rw-r--r--gcc/config/pa/pa.h14
-rw-r--r--gcc/config/pa/pa.md12
-rw-r--r--gcc/invoke.texi2
5 files changed, 42 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 17611fc..7a1d7bb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+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):
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index cb178ca..6eb4ea7 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 955fb93..3eaacf7 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 568863e..e1d0661 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 5ea74bf..8a90238 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.