configure.in: Turn on haifa by default for the PA.
authorJeffrey A Law <law@cygnus.com>
Tue, 19 Aug 1997 21:09:22 +0000 (21:09 +0000)
committerJeff Law <law@gcc.gnu.org>
Tue, 19 Aug 1997 21:09:22 +0000 (15:09 -0600)
        * configure.in: Turn on haifa by default for the PA.
        * configure: Rebuilt.
        * pa.c (override_options): Accept -mschedule=7200 option.
        (pa_adjust_cost): No longer need to scale costs for newer
        processors.
        * pa.h (enum processor_type): Add PROCESSOR_7200.
        * pa.md: Revamp scheduling parameters to work better with
        haifa.  Add scheduling parameters for the 7200.

From-SVN: r14850

gcc/ChangeLog
gcc/config/pa/pa.c
gcc/config/pa/pa.h
gcc/config/pa/pa.md
gcc/configure
gcc/configure.in

index 4348398379495b5e155cbbb11d6612040d9f6032..cb3b086572fc521d869d04213e2d547e4771a43e 100644 (file)
@@ -1,5 +1,14 @@
 Tue Aug 19 09:34:57 1997  Jeffrey A Law  (law@cygnus.com)
 
+       * configure.in: Turn on haifa by default for the PA.
+       * configure: Rebuilt.
+       * pa.c (override_options): Accept -mschedule=7200 option.
+       (pa_adjust_cost): No longer need to scale costs for newer
+       processors.
+       * pa.h (enum processor_type): Add PROCESSOR_7200.
+       * pa.md: Revamp scheduling parameters to work better with
+       haifa.  Add scheduling parameters for the 7200.
+
        * haifa-sched.c (move_insn): Reemit notes for SCHED_GROUP_P
        insns too.
        (schedule_block): When adjusting basic_block_{head,end}, account
index a9288fc1ff69ad102b957c12286fda30f9b69e1a..93f7c1d21bee999fa5ced3f641083700cd096d6e 100644 (file)
@@ -99,9 +99,14 @@ override_options ()
       pa_cpu_string = "7100LC";
       pa_cpu = PROCESSOR_7100LC;
     }
+  else if (! strcmp (pa_cpu_string, "7200"))
+    {
+      pa_cpu_string = "7200";
+      pa_cpu = PROCESSOR_7200;
+    }
   else
     {
-      warning ("Unknown -mschedule= option (%s).\nValid options are 700, 7100 and 7100LC\n", pa_cpu_string);
+      warning ("Unknown -mschedule= option (%s).\nValid options are 700, 7100 and 7100LC and 7200\n", pa_cpu_string);
     }
 
   if (flag_pic && TARGET_PORTABLE_RUNTIME)
@@ -3260,8 +3265,8 @@ pa_adjust_cost (insn, link, dep_insn, cost)
                {
                case TYPE_FPLOAD:
                  /* This cost 3 cycles, not 2 as the md says for the
-                    700 and 7100.  Note scaling of cost for 7100.  */
-                 return cost + (pa_cpu == PROCESSOR_700) ? 1 : 2;
+                    700 and 7100.  */
+                 return cost + 1;
 
                case TYPE_FPALU:
                case TYPE_FPMULSGL:
@@ -3272,7 +3277,7 @@ pa_adjust_cost (insn, link, dep_insn, cost)
                case TYPE_FPSQRTDBL:
                  /* In these important cases, we save one cycle compared to
                     when flop instruction feed each other.  */
-                 return cost - (pa_cpu == PROCESSOR_700) ? 1 : 2;
+                 return cost - 1;
 
                default:
                  return cost;
@@ -3320,7 +3325,7 @@ pa_adjust_cost (insn, link, dep_insn, cost)
                     preceding arithmetic operation has finished if
                     the target of the fpload is any of the sources
                     (or destination) of the arithmetic operation.  */
-                 return cost - (pa_cpu == PROCESSOR_700) ? 1 : 2;
+                 return cost - 1;
 
                default:
                  return 0;
@@ -3355,7 +3360,7 @@ pa_adjust_cost (insn, link, dep_insn, cost)
                     preceding divide or sqrt operation has finished if
                     the target of the ALU flop is any of the sources
                     (or destination) of the divide or sqrt operation.  */
-                 return cost - (pa_cpu == PROCESSOR_700) ? 2 : 4;
+                 return cost - 2;
 
                default:
                  return 0;
@@ -3401,7 +3406,7 @@ pa_adjust_cost (insn, link, dep_insn, cost)
                     preceding arithmetic operation has finished if
                     the target of the fpload is the destination of the
                     arithmetic operation.  */
-                 return cost - (pa_cpu == PROCESSOR_700) ? 1 : 2;
+                 return cost - 1;
 
                default:
                  return 0;
@@ -3436,7 +3441,7 @@ pa_adjust_cost (insn, link, dep_insn, cost)
                     preceding divide or sqrt operation has finished if
                     the target of the ALU flop is also the target of
                     of the divide or sqrt operation.  */
-                 return cost - (pa_cpu == PROCESSOR_700) ? 2 : 4;
+                 return cost - 2;
 
                default:
                  return 0;
index daf63c7e24d0641ff24eb459befde053145cd622..1f5e900907f573db663390ec2cf6523cc0f9ac7b 100644 (file)
@@ -39,6 +39,7 @@ enum processor_type
   PROCESSOR_700,
   PROCESSOR_7100,
   PROCESSOR_7100LC,
+  PROCESSOR_7200
 };
 
 #define pa_cpu_attr ((enum attr_cpu)pa_cpu)
index 848567a5175f65ac2835ff48faa011d287bc55d7..df71400502d96ca81f1bdcc6841acd97be42223c 100644 (file)
@@ -44,7 +44,7 @@
 ;;
 ;; FIXME: Add 800 scheduling for completeness?
 
-(define_attr "cpu" "700,7100,7100LC" (const (symbol_ref "pa_cpu_attr")))
+(define_attr "cpu" "700,7100,7100LC,7200" (const (symbol_ref "pa_cpu_attr")))
 
 ;; Length (in # of insns).
 (define_attr "length" ""
 ;; floating point computations with non-floating point computations (fp loads
 ;; and stores are not fp computations).
 ;;
-;; As with the alpha we multiply the ready delay by two to encourage
-;; schedules which will allow the 7100/7150 to dual issue as many instructions
-;; as possible.
 
 ;; Memory. Disregarding Cache misses, memory loads take two cycles; stores also
 ;; take two cycles, during which no Dcache operations should be scheduled.
 ;; all have the same memory characteristics if one disregards cache misses.
 (define_function_unit "pa7100memory" 1 0
   (and (eq_attr "type" "load,fpload")
-       (eq_attr "cpu" "7100,7100LC")) 4 0)
+       (eq_attr "cpu" "7100,7100LC")) 2 0)
 (define_function_unit "pa7100memory" 1 0 
   (and (eq_attr "type" "store,fpstore")
-       (eq_attr "cpu" "7100,7100LC")) 4 4)
+       (eq_attr "cpu" "7100,7100LC")) 2 2)
 
 ;; The 7100/7150 has three floating-point units: ALU, MUL, and DIV.
 ;; Timings:
 
 (define_function_unit "pa7100fp_alu" 1 0
   (and (eq_attr "type" "fpcc,fpalu")
-       (eq_attr "cpu" "7100")) 4 2)
+       (eq_attr "cpu" "7100")) 2 1)
 (define_function_unit "pa7100fp_mpy" 1 0
   (and (eq_attr "type" "fpmulsgl,fpmuldbl")
-       (eq_attr "cpu" "7100")) 4 2)
+       (eq_attr "cpu" "7100")) 2 1)
 (define_function_unit "pa7100fp_div" 1 0
   (and (eq_attr "type" "fpdivsgl,fpsqrtsgl")
-       (eq_attr "cpu" "7100")) 16 16)
+       (eq_attr "cpu" "7100")) 8 8)
 (define_function_unit "pa7100fp_div" 1 0
   (and (eq_attr "type" "fpdivdbl,fpsqrtdbl")
-       (eq_attr "cpu" "7100")) 30 30)
+       (eq_attr "cpu" "7100")) 15 15)
 
 ;; To encourage dual issue we define function units corresponding to
 ;; the instructions which can be dual issued.    This is a rather crude
 (define_function_unit "pa7100flop" 1 1
   (and
     (eq_attr "type" "fpcc,fpalu,fpmulsgl,fpmuldbl,fpdivsgl,fpsqrtsgl,fpdivdbl,fpsqrtdbl")
-    (eq_attr "cpu" "7100,7100LC")) 2 2)
+    (eq_attr "cpu" "7100")) 1 1)
 
 (define_function_unit "pa7100nonflop" 1 1
   (and
     (eq_attr "type" "!fpcc,fpalu,fpmulsgl,fpmuldbl,fpdivsgl,fpsqrtsgl,fpdivdbl,fpsqrtdbl")
-    (eq_attr "cpu" "7100")) 2 2)
+    (eq_attr "cpu" "7100")) 1 1)
 
 
 ;; Memory subsystem works just like 7100/7150 (except for cache miss times which
 
 (define_function_unit "pa7100LCfp_alu" 1 0
   (and (eq_attr "type" "fpcc,fpalu")
-       (eq_attr "cpu" "7100LC")) 4 2)
+       (eq_attr "cpu" "7100LC,7200")) 2 1)
 (define_function_unit "pa7100LCfp_mpy" 1 0
   (and (eq_attr "type" "fpmulsgl")
-       (eq_attr "cpu" "7100LC")) 4 2)
+       (eq_attr "cpu" "7100LC,7200")) 2 1)
 (define_function_unit "pa7100LCfp_mpy" 1 0
   (and (eq_attr "type" "fpmuldbl")
-       (eq_attr "cpu" "7100LC")) 6 4)
+       (eq_attr "cpu" "7100LC,7200")) 3 2)
 (define_function_unit "pa7100LCfp_div" 1 0
   (and (eq_attr "type" "fpdivsgl,fpsqrtsgl")
-       (eq_attr "cpu" "7100LC")) 16 16)
+       (eq_attr "cpu" "7100LC,7200")) 8 8)
 (define_function_unit "pa7100LCfp_div" 1 0
   (and (eq_attr "type" "fpdivdbl,fpsqrtdbl")
-       (eq_attr "cpu" "7100LC")) 30 30)
+       (eq_attr "cpu" "7100LC,7200")) 15 15)
 
 ;; Define the various functional units for dual-issue.
-;; The 7100LC shares the generic "flop" unit specification with the 7100/7150.
 
-;; The 7100LC has two basic integer which allow dual issue of most integer
-;; instructions.  This needs further refinement to deal with the nullify,
-;; carry/borrow possible the ldw/ldw stw/stw special dual issue cases, and
-;; of course it needs to know about hte 2nd alu.
-(define_function_unit "pa7100LCnonflop" 1 1
+;; There's only one floating point unit.
+(define_function_unit "pa7100LCflop" 1 1
   (and
-    (eq_attr "type" "!fpcc,fpalu,fpmulsgl,fpmuldbl,fpdivsgl,fpsqrtsgl,fpdivdbl,fpsqrtdbl,load,fpload,store,fpstore,shift,nullshift")
-    (eq_attr "cpu" "7100LC")) 2 2)
+    (eq_attr "type" "fpcc,fpalu,fpmulsgl,fpmuldbl,fpdivsgl,fpsqrtsgl,fpdivdbl,fpsqrtdbl")
+    (eq_attr "cpu" "7100LC,7200")) 1 1)
 
-(define_function_unit "pa7100LCshifter" 1 1
+;; Shifts and memory ops actually execute in one of the integer
+;; ALUs, but we can't really model that.
+(define_function_unit "pa7100LCshiftmem" 1 1
   (and
-    (eq_attr "type" "shift,nullshift")
-    (eq_attr "cpu" "7100LC")) 2 2)
+    (eq_attr "type" "shift,nullshift,load,fpload,store,fpstore")
+    (eq_attr "cpu" "7100LC,7200")) 1 1)
 
-(define_function_unit "pa7100LCmem" 1 1
+;; We have two basic ALUs.
+(define_function_unit "pa7100LCalu" 2 2
   (and
-    (eq_attr "type" "load,fpload,store,fpstore")
-    (eq_attr "cpu" "7100LC")) 2 2)
+    (eq_attr "type" "!fpcc,fpalu,fpmulsgl,fpmuldbl,fpdivsgl,fpsqrtsgl,fpdivdbl,fpsqrtdbl,load,fpload,store,fpstore,shift,nullshift")
+   (eq_attr "cpu" "7100LC,7200")) 1 1)
+
+;; I don't have complete information on the PA7200; however, most of
+;; what I've heard makes it look like a 7100LC without the store-store
+;; penalty.  So that's how we'll model it.
+
+;; Memory. Disregarding Cache misses, memory loads and stores take
+;; two cycles.  Any special cases are handled in pa_adjust_cost.
+(define_function_unit "pa7200memory" 1 0
+  (and (eq_attr "type" "load,fpload,store,fpstore")
+       (eq_attr "cpu" "7200")) 2 0)
+
+;; I don't have detailed information on the PA7200 FP pipeline, so I
+;; treat it just like the 7100LC pipeline.
+;; Similarly for the multi-issue fake units.
 
 \f
 ;; Compare instructions.
index 0db313f2d55d82a77720e54c378c20e3534afec3..95ec01ef129046c088de045da0d240ccd24841f4 100755 (executable)
@@ -1790,36 +1790,57 @@ for machine in $build $host $target; do
                float_format=i32
                ;;
        hppa1.1-*-pro*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                tm_file="pa/pa-pro.h ${tm_file} pa/pa-pro-end.h libgloss.h"
                xm_file=pa/xm-papro.h
                tmake_file=pa/t-pro
                ;;
        hppa1.1-*-osf*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                tm_file="${tm_file} pa/pa-osf.h"
                use_collect2=yes
                fixincludes=Makefile.in
                ;;
        hppa1.1-*-rtems*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                tm_file="pa/pa-pro.h ${tm_file} pa/pa-pro-end.h libgloss.h pa/rtems.h"
                xm_file=pa/xm-papro.h
                tmake_file=pa/t-pro
                ;;
        hppa1.0-*-osf*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                tm_file="${tm_file} pa/pa-osf.h"
                use_collect2=yes
                fixincludes=Makefile.in
                ;;
        hppa1.1-*-bsd*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                use_collect2=yes
                fixincludes=Makefile.in
                ;;
        hppa1.0-*-bsd*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                use_collect2=yes
                fixincludes=Makefile.in
                ;;
        hppa1.0-*-hpux7*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                tm_file="pa/pa-oldas.h ${tm_file} pa/pa-hpux7.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
@@ -1831,6 +1852,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux8.0[0-2]*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                tm_file="${tm_file} pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
@@ -1844,6 +1868,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.1-*-hpux8.0[0-2]*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                tm_file="${tm_file} pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
@@ -1858,6 +1885,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.1-*-hpux8*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                tm_file="${tm_file} pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
@@ -1870,6 +1900,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux8*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                tm_file="${tm_file} pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
@@ -1881,6 +1914,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.1-*-hpux10*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux10.h"
                xm_file=pa/xm-pahpux.h
@@ -1893,6 +1929,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux10*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux10.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
@@ -1904,6 +1943,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.1-*-hpux*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux9.h"
                xm_file=pa/xm-pahpux.h
@@ -1916,6 +1958,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux9.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
@@ -1927,6 +1972,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.1-*-hiux*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                tm_file="${tm_file} pa/pa-hpux.h pa/pa-hiux.h"
                xm_file=pa/xm-pahpux.h
@@ -1939,6 +1987,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hiux*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                tm_file="${tm_file} pa/pa-hpux.h pa/pa-hiux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
@@ -1950,6 +2001,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa*-*-lites*)
+               if [ x$enable_haifa != xno ]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                use_collect2=yes
                fixincludes=Makefile.in
index 562d3e48bc67f85bb681dc826ddc693c61d13c99..e906ae90b30053eab8d5530b0f5ebafa51832422 100644 (file)
@@ -456,36 +456,57 @@ for machine in $build $host $target; do
                float_format=i32
                ;;
        hppa1.1-*-pro*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                tm_file="pa/pa-pro.h ${tm_file} pa/pa-pro-end.h libgloss.h"
                xm_file=pa/xm-papro.h
                tmake_file=pa/t-pro
                ;;
        hppa1.1-*-osf*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                tm_file="${tm_file} pa/pa-osf.h"
                use_collect2=yes
                fixincludes=Makefile.in
                ;;
        hppa1.1-*-rtems*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                tm_file="pa/pa-pro.h ${tm_file} pa/pa-pro-end.h libgloss.h pa/rtems.h"
                xm_file=pa/xm-papro.h
                tmake_file=pa/t-pro
                ;;
        hppa1.0-*-osf*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                tm_file="${tm_file} pa/pa-osf.h"
                use_collect2=yes
                fixincludes=Makefile.in
                ;;
        hppa1.1-*-bsd*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                use_collect2=yes
                fixincludes=Makefile.in
                ;;
        hppa1.0-*-bsd*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                use_collect2=yes
                fixincludes=Makefile.in
                ;;
        hppa1.0-*-hpux7*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                tm_file="pa/pa-oldas.h ${tm_file} pa/pa-hpux7.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
@@ -497,6 +518,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux8.0[[0-2]]*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                tm_file="${tm_file} pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
@@ -510,6 +534,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.1-*-hpux8.0[[0-2]]*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                tm_file="${tm_file} pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
@@ -524,6 +551,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.1-*-hpux8*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                tm_file="${tm_file} pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
@@ -536,6 +566,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux8*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                tm_file="${tm_file} pa/pa-hpux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
@@ -547,6 +580,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.1-*-hpux10*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux10.h"
                xm_file=pa/xm-pahpux.h
@@ -559,6 +595,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux10*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux10.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
@@ -570,6 +609,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.1-*-hpux*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux9.h"
                xm_file=pa/xm-pahpux.h
@@ -582,6 +624,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hpux*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux9.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
@@ -593,6 +638,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.1-*-hiux*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                tm_file="${tm_file} pa/pa-hpux.h pa/pa-hiux.h"
                xm_file=pa/xm-pahpux.h
@@ -605,6 +653,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa1.0-*-hiux*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                tm_file="${tm_file} pa/pa-hpux.h pa/pa-hiux.h"
                xm_file=pa/xm-pahpux.h
                xmake_file=pa/x-pa-hpux
@@ -616,6 +667,9 @@ for machine in $build $host $target; do
                use_collect2=yes
                ;;
        hppa*-*-lites*)
+               if [[ x$enable_haifa != xno ]]; then
+                       enable_haifa=yes
+               fi
                target_cpu_default=1
                use_collect2=yes
                fixincludes=Makefile.in