From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7950 invoked by alias); 19 Jan 2004 21:25:05 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 7924 invoked from network); 19 Jan 2004 21:25:04 -0000 Received: from unknown (HELO vlsi1.ultra.nyu.edu) (128.122.140.213) by sources.redhat.com with SMTP; 19 Jan 2004 21:25:04 -0000 Received: by vlsi1.ultra.nyu.edu (4.1/1.34) id AA02240; Mon, 19 Jan 04 16:27:17 EST Date: Mon, 19 Jan 2004 21:25:00 -0000 From: kenner@vlsi1.ultra.nyu.edu (Richard Kenner) Message-Id: <10401192127.AA02240@vlsi1.ultra.nyu.edu> To: zack@codesourcery.com Subject: Re: Can we speed up the gcc_target structure? Cc: gcc@gcc.gnu.org X-SW-Source: 2004-01/txt/msg01385.txt.bz2 > True for some, but not others. Yes, we have a lot of macros which are > actually functions, but we also have a lot of macros that are just a > half dozen tokens which would have to be converted into a function. Do you have any in particular in mind? If the idea is to eventually convert *all* target macros, then most are in that category (though "half dozen" should probabaly have been "few dozen"). >From alpha.h: #define WORD_SWITCH_TAKES_ARG(STR) \ (!strcmp (STR, "rpath") || DEFAULT_WORD_SWITCH_TAKES_ARG(STR)) #define TARGET_FLOAT_FORMAT \ (TARGET_FLOAT_VAX ? VAX_FLOAT_FORMAT : IEEE_FLOAT_FORMAT) #define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE) \ if (GET_MODE_CLASS (MODE) == MODE_INT \ && GET_MODE_SIZE (MODE) < UNITS_PER_WORD) \ { \ if ((MODE) == SImode) \ (UNSIGNEDP) = 0; \ (MODE) = DImode; \ } #define HARD_REGNO_NREGS(REGNO, MODE) \ ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) #define HARD_REGNO_MODE_OK(REGNO, MODE) \ ((REGNO) >= 32 && (REGNO) <= 62 \ ? (MODE) == SFmode || (MODE) == DFmode || (MODE) == DImode \ : 1) #define VECTOR_MODE_SUPPORTED_P(MODE) \ (TARGET_MAX \ && ((MODE) == V8QImode || (MODE) == V4HImode || (MODE) == V2SImode)) #define MODES_TIEABLE_P(MODE1, MODE2) \ (HARD_REGNO_MODE_OK (32, (MODE1)) \ ? HARD_REGNO_MODE_OK (32, (MODE2)) \ : 1) #define SECONDARY_MEMORY_NEEDED_MODE(MODE) \ (GET_MODE_CLASS (MODE) == MODE_FLOAT ? (MODE) \ : GET_MODE_SIZE (MODE) >= 4 ? (MODE) \ : mode_for_size (BITS_PER_WORD, GET_MODE_CLASS (MODE), 0)) #define CLASS_MAX_NREGS(CLASS, MODE) \ ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD) #define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \ (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \ ? reg_classes_intersect_p (FLOAT_REGS, CLASS) : 0) #define REGISTER_MOVE_COST(MODE, CLASS1, CLASS2) \ (((CLASS1) == FLOAT_REGS) == ((CLASS2) == FLOAT_REGS) \ ? 2 \ : TARGET_FIX ? 3 : 4+2*alpha_memory_latency) #define MEMORY_MOVE_COST(MODE,CLASS,IN) (2*alpha_memory_latency) #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \ ((OFFSET) = alpha_initial_elimination_offset(FROM, TO)) #define FUNCTION_VALUE_REGNO_P(N) \ ((N) == 0 || (N) == 1 || (N) == 32 || (N) == 33) #define FUNCTION_ARG_REGNO_P(N) \ (((N) >= 16 && (N) <= 21) || ((N) >= 16 + 32 && (N) <= 21 + 32)) #define INIT_CUMULATIVE_ARGS(CUM,FNTYPE,LIBNAME,INDIRECT) (CUM) = 0 #define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) \ ((MODE) == TFmode || (MODE) == TCmode) ... and so on ...