From ddd8ab482ee9325b3f0cbd62f1b0840e1edac9ad Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Wed, 6 May 1992 21:33:45 +0000 Subject: [PATCH] *** empty log message *** From-SVN: r922 --- gcc/config/mips/mips.c | 10 +++++- gcc/config/mips/mips.md | 66 +++++++++++++++++++++++++++++---------- gcc/config/mips/osfrose.h | 17 +++++----- gcc/config/mips/ultrix.h | 12 +++---- 4 files changed, 74 insertions(+), 31 deletions(-) diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 86f35e4195a..9e8faa992b6 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 d300a0a27d0..4a49fe058ad 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) @@ -233,6 +238,33 @@ (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) + +;; 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 5dce4ac4fb2..4857d218e07 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 7b6d4001365..40f44cdaa64 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*} \ -- 2.30.2