aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Meissner <meissner@gcc.gnu.org>1992-05-06 21:33:45 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1992-05-06 21:33:45 +0000
commitddd8ab482ee9325b3f0cbd62f1b0840e1edac9ad (patch)
treedcc8d7e7aab6d63e80eddf2abc6ae0c92b6070b3 /gcc
parent4a39264367b95457f73b01dee38aaff729cd81ee (diff)
downloadgcc-ddd8ab482ee9325b3f0cbd62f1b0840e1edac9ad.zip
gcc-ddd8ab482ee9325b3f0cbd62f1b0840e1edac9ad.tar.gz
gcc-ddd8ab482ee9325b3f0cbd62f1b0840e1edac9ad.tar.bz2
*** empty log message ***
From-SVN: r922
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/mips/mips.c10
-rw-r--r--gcc/config/mips/mips.md66
-rw-r--r--gcc/config/mips/osfrose.h17
-rw-r--r--gcc/config/mips/ultrix.h12
4 files changed, 74 insertions, 31 deletions
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 86f35e4..9e8faa9 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -4248,7 +4248,7 @@ function_epilogue (file, size)
}
fprintf (stderr,
- "%-20s fp=%c leaf=%c alloca=%c setjmp=%c stack=%4ld arg=%3ld reg=%2d/%d delay=%3d/%3dL %3d/%3dJ refs=%3d/%3d/%3d\n",
+ "%-20s fp=%c leaf=%c alloca=%c setjmp=%c stack=%4ld arg=%3ld reg=%2d/%d delay=%3d/%3dL %3d/%3dJ refs=%3d/%3d/%3d",
current_function_name,
(frame_pointer_needed) ? 'y' : 'n',
((current_frame_info.mask & (1 << 31)) != 0) ? 'n' : 'y',
@@ -4260,6 +4260,14 @@ function_epilogue (file, size)
dslots_load_total, dslots_load_filled,
dslots_jump_total, dslots_jump_filled,
num_refs[0], num_refs[1], num_refs[2]);
+
+ if (HALF_PIC_NUMBER_PTRS)
+ fprintf (stderr, " half-pic=%3d", HALF_PIC_NUMBER_PTRS);
+
+ if (HALF_PIC_NUMBER_REFS)
+ fprintf (stderr, " pic-ref=%3d", HALF_PIC_NUMBER_REFS);
+
+ fputc ('\n', stderr);
}
/* Reset state info for each function. */
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index d300a0a..4a49fe0 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -69,14 +69,19 @@
(const_string "yes")
(const_string "no")))
+;; Attribute describing the processor. This attribute must match exactly
+;; with the processor_type enumeration in mips.h.
+
;; Attribute describing the processor
-(define_attr "cpu" "default,r3000,r4000,r6000"
- (const
- (cond [(eq (symbol_ref "mips_cpu") (symbol_ref "PROCESSOR_DEFAULT")) (const_string "default")
- (eq (symbol_ref "mips_cpu") (symbol_ref "PROCESSOR_R3000")) (const_string "r3000")
- (eq (symbol_ref "mips_cpu") (symbol_ref "PROCESSOR_R4000")) (const_string "r4000")
- (eq (symbol_ref "mips_cpu") (symbol_ref "PROCESSOR_R6000")) (const_string "r6000")]
- (const_string "default"))))
+;; (define_attr "cpu" "default,r3000,r6000,r4000"
+;; (const
+;; (cond [(eq (symbol_ref "mips_cpu") (symbol_ref "PROCESSOR_R3000")) (const_string "r3000")
+;; (eq (symbol_ref "mips_cpu") (symbol_ref "PROCESSOR_R4000")) (const_string "r4000")
+;; (eq (symbol_ref "mips_cpu") (symbol_ref "PROCESSOR_R6000")) (const_string "r6000")]
+;; (const_string "default"))))
+
+(define_attr "cpu" "default,r3000,r6000,r4000"
+ (const (symbol_ref "mips_cpu_attr")))
;; Attribute defining whether or not we can use the branch-likely instructions
;; (MIPS ISA level 2)
@@ -131,12 +136,12 @@
(and (eq_attr "type" "load,pic") (eq_attr "cpu" "r3000"))
2 0)
-(define_function_unit "memory" 1 0 (eq_attr "type" "store") 1 0)
+(define_function_unit "memory" 1 0 (eq_attr "type" "store") 1 0)
-(define_function_unit "fp_comp" 1 0 (eq_attr "type" "fcmp") 2 0)
+(define_function_unit "fp_comp" 1 0 (eq_attr "type" "fcmp") 2 0)
-(define_function_unit "transfer" 1 0 (eq_attr "type" "xfer") 2 0)
-(define_function_unit "transfer" 1 0 (eq_attr "type" "hilo") 3 0)
+(define_function_unit "transfer" 1 0 (eq_attr "type" "xfer") 2 0)
+(define_function_unit "transfer" 1 0 (eq_attr "type" "hilo") 3 0)
(define_function_unit "imuldiv" 1 1
(and (eq_attr "type" "imul") (eq_attr "cpu" "!r3000,r4000"))
@@ -174,11 +179,11 @@
(and (eq_attr "type" "fadd") (eq_attr "cpu" "r6000"))
3 6)
-(define_function_unit "fast" 1 1
+(define_function_unit "adder" 1 1
(and (eq_attr "type" "fabs,fneg") (eq_attr "cpu" "!r3000"))
2 4)
-(define_function_unit "fast" 1 1
+(define_function_unit "adder" 1 1
(and (eq_attr "type" "fabs,fneg") (eq_attr "cpu" "r3000"))
1 2)
@@ -234,6 +239,33 @@
(define_function_unit "sqrt" 1 1 (and (eq_attr "type" "fsqrt") (eq_attr "mode" "DF")) 112 224)
+;; The following functional units do not use the cpu type, and use
+;; much less memory in genattrtab.c.
+
+;; (define_function_unit "memory" 1 0 (eq_attr "type" "load,pic") 3 0)
+;; (define_function_unit "memory" 1 0 (eq_attr "type" "store") 1 0)
+;;
+;; (define_function_unit "fp_comp" 1 0 (eq_attr "type" "fcmp") 2 0)
+;;
+;; (define_function_unit "transfer" 1 0 (eq_attr "type" "xfer") 2 0)
+;; (define_function_unit "transfer" 1 0 (eq_attr "type" "hilo") 3 0)
+;;
+;; (define_function_unit "imuldiv" 1 1 (eq_attr "type" "imul") 17 34)
+;; (define_function_unit "imuldiv" 1 1 (eq_attr "type" "idiv") 38 76)
+;;
+;; (define_function_unit "adder" 1 1 (eq_attr "type" "fadd") 4 8)
+;; (define_function_unit "adder" 1 1 (eq_attr "type" "fabs,fneg") 2 4)
+;;
+;; (define_function_unit "mult" 1 1 (and (eq_attr "type" "fmul") (eq_attr "mode" "SF")) 7 14)
+;; (define_function_unit "mult" 1 1 (and (eq_attr "type" "fmul") (eq_attr "mode" "DF")) 8 16)
+;;
+;; (define_function_unit "divide" 1 1 (and (eq_attr "type" "fdiv") (eq_attr "mode" "SF")) 23 46)
+;; (define_function_unit "divide" 1 1 (and (eq_attr "type" "fdiv") (eq_attr "mode" "DF")) 36 72)
+;;
+;; (define_function_unit "sqrt" 1 1 (and (eq_attr "type" "fsqrt") (eq_attr "mode" "SF")) 54 108)
+;; (define_function_unit "sqrt" 1 1 (and (eq_attr "type" "fsqrt") (eq_attr "mode" "DF")) 112 224)
+
+
;;
;; ....................
;;
@@ -1833,8 +1865,8 @@ move\\t%0,%z4\\n\\
}")
(define_insn "movsi_internal"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,d,d,d,d,R,m,*d,*fs,*f,*f,*f,*R,*m,*x,*d")
- (match_operand:SI 1 "general_operand" "d,S,IKL,Mnis,R,m,dJ,dJ,*fs,*d,*f,*R,*m,*f,*f,*d,*x"))]
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=d,d,d,d,d,d,R,m,*d,*fz,*f,*f,*f,*R,*m,*x,*d")
+ (match_operand:SI 1 "general_operand" "d,S,IKL,Mnis,R,m,dJ,dJ,*fz,*d,*f,*R,*m,*f,*f,*d,*x"))]
""
"* return mips_move_1word (operands, insn, TRUE);"
[(set_attr "type" "move,pic,arith,arith,load,load,store,store,xfer,xfer,move,load,load,store,store,hilo,hilo")
@@ -1850,7 +1882,7 @@ move\\t%0,%z4\\n\\
(define_insn "movhi"
[(set (match_operand:HI 0 "nonimmediate_operand" "=d,d,d,d,R,m,*d,*f,*f,*x,*d")
- (match_operand:HI 1 "general_operand" "d,IK,R,m,dJ,dJ,*fs,*d,*f,*d,*x"))]
+ (match_operand:HI 1 "general_operand" "d,IK,R,m,dJ,dJ,*fz,*d,*f,*d,*x"))]
""
"* return mips_move_1word (operands, insn, TRUE);"
[(set_attr "type" "move,arith,load,load,store,store,xfer,xfer,move,hilo,hilo")
@@ -1866,7 +1898,7 @@ move\\t%0,%z4\\n\\
(define_insn "movqi"
[(set (match_operand:QI 0 "nonimmediate_operand" "=d,d,d,d,R,m,*d,*f,*f,*x,*d")
- (match_operand:QI 1 "general_operand" "d,IK,R,m,dJ,dJ,*fs,*d,*f,*d,*x"))]
+ (match_operand:QI 1 "general_operand" "d,IK,R,m,dJ,dJ,*fz,*d,*f,*d,*x"))]
""
"* return mips_move_1word (operands, insn, TRUE);"
[(set_attr "type" "move,arith,load,load,store,store,xfer,xfer,move,hilo,hilo")
diff --git a/gcc/config/mips/osfrose.h b/gcc/config/mips/osfrose.h
index 5dce4ac..4857d21 100644
--- a/gcc/config/mips/osfrose.h
+++ b/gcc/config/mips/osfrose.h
@@ -20,7 +20,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#define DECSTATION
#define OSF_OS
-#define HALF_PIC_DEBUG TARGET_DEBUG_B_MODE
+#define HALF_PIC_DEBUG TARGET_DEBUG_B_MODE
+#define HALF_PIC_PREFIX "$Lp."
#include "halfpic.h"
@@ -48,12 +49,14 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
%{.s:%i} %{!.s:%g.s}}}"
#define CPP_SPEC "\
-%{.S: -D__LANGUAGE_ASSEMBLY__ %{!ansi:-DLANGUAGE_ASSEMBLY} -DLANGUAGE_C -D__LANGUAGE_C__} \
-%{.cc: -D__LANGUAGE_C_PLUS_PLUS__} \
-%{.cxx: -D__LANGUAGE_C_PLUS_PLUS__} \
-%{.C: -D__LANGUAGE_C_PLUS_PLUS__} \
-%{.m: -D__LANGUAGE_OBJECTIVE_C__} \
-%{!.S: -D__LANGUAGE_C__ %{!ansi:-DLANGUAGE_C}}"
+#define CPP_SPEC "\
+%{.S: -D__LANGUAGE_ASSEMBLY__ -D__LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY}
+ -ULANGUAGE_C -U__LANGUAGE_C__} \
+%{.cc: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS} \
+%{.cxx: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS} \
+%{.C: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS} \
+%{.m: -D__LANGUAGE_OBJECTIVE_C__ -D__LANGUAGE_OBJECTIVE_C} \
+%{!.S: -D__LANGUAGE_C__ -D__LANGUAGE_C %{!ansi:-DLANGUAGE_C}}"
#define LINK_SPEC "\
%{G*} \
diff --git a/gcc/config/mips/ultrix.h b/gcc/config/mips/ultrix.h
index 7b6d400..40f44cd 100644
--- a/gcc/config/mips/ultrix.h
+++ b/gcc/config/mips/ultrix.h
@@ -34,12 +34,12 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
%{G*}"
#define CPP_SPEC "\
-%{.S: -D__LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY}} \
-%{.cc: -D__LANGUAGE_C_PLUS_PLUS} \
-%{.cxx: -D__LANGUAGE_C_PLUS_PLUS} \
-%{.C: -D__LANGUAGE_C_PLUS_PLUS} \
-%{.m: -D__LANGUAGE_OBJECTIVE_C} \
-%{!.S: -D__LANGUAGE_C %{!ansi:-DLANGUAGE_C}}"
+%{.S: -D__LANGUAGE_ASSEMBLY__ -D__LANGUAGE_ASSEMBLY %{!ansi:-DLANGUAGE_ASSEMBLY}} \
+%{.cc: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS} \
+%{.cxx: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS} \
+%{.C: -D__LANGUAGE_C_PLUS_PLUS__ -D__LANGUAGE_C_PLUS_PLUS} \
+%{.m: -D__LANGUAGE_OBJECTIVE_C__ -D__LANGUAGE_OBJECTIVE_C} \
+%{!.S: -D__LANGUAGE_C__ -D__LANGUAGE_C %{!ansi:-DLANGUAGE_C}}"
#define LINK_SPEC "\
%{G*} \