diff options
Diffstat (limited to 'gcc/config/i386/i386.h')
-rw-r--r-- | gcc/config/i386/i386.h | 248 |
1 files changed, 0 insertions, 248 deletions
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index b4359f1f8c6..32eb8ad6f6f 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -2585,254 +2585,6 @@ do { \ so give the MEM rtx a byte's mode. */ #define FUNCTION_MODE QImode -/* A part of a C `switch' statement that describes the relative costs - of constant RTL expressions. It must contain `case' labels for - expression codes `const_int', `const', `symbol_ref', `label_ref' - and `const_double'. Each case must ultimately reach a `return' - statement to return the relative cost of the use of that kind of - constant value in an expression. The cost may depend on the - precise value of the constant, which is available for examination - in X, and the rtx code of the expression in which it is contained, - found in OUTER_CODE. - - CODE is the expression code--redundant, since it can be obtained - with `GET_CODE (X)'. */ - -#define CONST_COSTS(RTX, CODE, OUTER_CODE) \ - case CONST_INT: \ - case CONST: \ - case LABEL_REF: \ - case SYMBOL_REF: \ - if (TARGET_64BIT && !x86_64_sign_extended_value (RTX)) \ - return 3; \ - if (TARGET_64BIT && !x86_64_zero_extended_value (RTX)) \ - return 2; \ - return flag_pic && SYMBOLIC_CONST (RTX) ? 1 : 0; \ - \ - case CONST_DOUBLE: \ - if (GET_MODE (RTX) == VOIDmode) \ - return 0; \ - switch (standard_80387_constant_p (RTX)) \ - { \ - case 1: /* 0.0 */ \ - return 1; \ - case 2: /* 1.0 */ \ - return 2; \ - default: \ - /* Start with (MEM (SYMBOL_REF)), since that's where \ - it'll probably end up. Add a penalty for size. */ \ - return (COSTS_N_INSNS (1) + (flag_pic != 0) \ - + (GET_MODE (RTX) == SFmode ? 0 \ - : GET_MODE (RTX) == DFmode ? 1 : 2)); \ - } - -/* Delete the definition here when TOPLEVEL_COSTS_N_INSNS gets added to cse.c */ -#define TOPLEVEL_COSTS_N_INSNS(N) \ - do { total = COSTS_N_INSNS (N); goto egress_rtx_costs; } while (0) - -/* Return index of given mode in mult and division cost tables. */ -#define MODE_INDEX(mode) \ - ((mode) == QImode ? 0 \ - : (mode) == HImode ? 1 \ - : (mode) == SImode ? 2 \ - : (mode) == DImode ? 3 \ - : 4) - -/* Like `CONST_COSTS' but applies to nonconstant RTL expressions. - This can be used, for example, to indicate how costly a multiply - instruction is. In writing this macro, you can use the construct - `COSTS_N_INSNS (N)' to specify a cost equal to N fast - instructions. OUTER_CODE is the code of the expression in which X - is contained. - - This macro is optional; do not define it if the default cost - assumptions are adequate for the target machine. */ - -#define RTX_COSTS(X, CODE, OUTER_CODE) \ - case ZERO_EXTEND: \ - /* The zero extensions is often completely free on x86_64, so make \ - it as cheap as possible. */ \ - if (TARGET_64BIT && GET_MODE (X) == DImode \ - && GET_MODE (XEXP (X, 0)) == SImode) \ - { \ - total = 1; goto egress_rtx_costs; \ - } \ - else \ - TOPLEVEL_COSTS_N_INSNS (TARGET_ZERO_EXTEND_WITH_AND ? \ - ix86_cost->add : ix86_cost->movzx); \ - break; \ - case SIGN_EXTEND: \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->movsx); \ - break; \ - case ASHIFT: \ - if (GET_CODE (XEXP (X, 1)) == CONST_INT \ - && (GET_MODE (XEXP (X, 0)) != DImode || TARGET_64BIT)) \ - { \ - HOST_WIDE_INT value = INTVAL (XEXP (X, 1)); \ - if (value == 1) \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->add); \ - if ((value == 2 || value == 3) \ - && !TARGET_DECOMPOSE_LEA \ - && ix86_cost->lea <= ix86_cost->shift_const) \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->lea); \ - } \ - /* fall through */ \ - \ - case ROTATE: \ - case ASHIFTRT: \ - case LSHIFTRT: \ - case ROTATERT: \ - if (!TARGET_64BIT && GET_MODE (XEXP (X, 0)) == DImode) \ - { \ - if (GET_CODE (XEXP (X, 1)) == CONST_INT) \ - { \ - if (INTVAL (XEXP (X, 1)) > 32) \ - TOPLEVEL_COSTS_N_INSNS(ix86_cost->shift_const + 2); \ - else \ - TOPLEVEL_COSTS_N_INSNS(ix86_cost->shift_const * 2); \ - } \ - else \ - { \ - if (GET_CODE (XEXP (X, 1)) == AND) \ - TOPLEVEL_COSTS_N_INSNS(ix86_cost->shift_var * 2); \ - else \ - TOPLEVEL_COSTS_N_INSNS(ix86_cost->shift_var * 6 + 2); \ - } \ - } \ - else \ - { \ - if (GET_CODE (XEXP (X, 1)) == CONST_INT) \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->shift_const); \ - else \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->shift_var); \ - } \ - break; \ - \ - case MULT: \ - if (FLOAT_MODE_P (GET_MODE (X))) \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->fmul); \ - else if (GET_CODE (XEXP (X, 1)) == CONST_INT) \ - { \ - unsigned HOST_WIDE_INT value = INTVAL (XEXP (X, 1)); \ - int nbits = 0; \ - \ - while (value != 0) \ - { \ - nbits++; \ - value >>= 1; \ - } \ - \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->mult_init \ - [MODE_INDEX (GET_MODE (X))] \ - + nbits * ix86_cost->mult_bit); \ - } \ - else /* This is arbitrary */ \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->mult_init \ - [MODE_INDEX (GET_MODE (X))] \ - + 7 * ix86_cost->mult_bit); \ - \ - case DIV: \ - case UDIV: \ - case MOD: \ - case UMOD: \ - if (FLOAT_MODE_P (GET_MODE (X))) \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->fdiv); \ - else \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->divide \ - [MODE_INDEX (GET_MODE (X))]); \ - break; \ - \ - case PLUS: \ - if (FLOAT_MODE_P (GET_MODE (X))) \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->fadd); \ - else if (!TARGET_DECOMPOSE_LEA \ - && INTEGRAL_MODE_P (GET_MODE (X)) \ - && GET_MODE_BITSIZE (GET_MODE (X)) <= GET_MODE_BITSIZE (Pmode)) \ - { \ - if (GET_CODE (XEXP (X, 0)) == PLUS \ - && GET_CODE (XEXP (XEXP (X, 0), 0)) == MULT \ - && GET_CODE (XEXP (XEXP (XEXP (X, 0), 0), 1)) == CONST_INT \ - && CONSTANT_P (XEXP (X, 1))) \ - { \ - HOST_WIDE_INT val = INTVAL (XEXP (XEXP (XEXP (X, 0), 0), 1));\ - if (val == 2 || val == 4 || val == 8) \ - { \ - return (COSTS_N_INSNS (ix86_cost->lea) \ - + rtx_cost (XEXP (XEXP (X, 0), 1), \ - (OUTER_CODE)) \ - + rtx_cost (XEXP (XEXP (XEXP (X, 0), 0), 0), \ - (OUTER_CODE)) \ - + rtx_cost (XEXP (X, 1), (OUTER_CODE))); \ - } \ - } \ - else if (GET_CODE (XEXP (X, 0)) == MULT \ - && GET_CODE (XEXP (XEXP (X, 0), 1)) == CONST_INT) \ - { \ - HOST_WIDE_INT val = INTVAL (XEXP (XEXP (X, 0), 1)); \ - if (val == 2 || val == 4 || val == 8) \ - { \ - return (COSTS_N_INSNS (ix86_cost->lea) \ - + rtx_cost (XEXP (XEXP (X, 0), 0), \ - (OUTER_CODE)) \ - + rtx_cost (XEXP (X, 1), (OUTER_CODE))); \ - } \ - } \ - else if (GET_CODE (XEXP (X, 0)) == PLUS) \ - { \ - return (COSTS_N_INSNS (ix86_cost->lea) \ - + rtx_cost (XEXP (XEXP (X, 0), 0), (OUTER_CODE)) \ - + rtx_cost (XEXP (XEXP (X, 0), 1), (OUTER_CODE)) \ - + rtx_cost (XEXP (X, 1), (OUTER_CODE))); \ - } \ - } \ - /* fall through */ \ - \ - case MINUS: \ - if (FLOAT_MODE_P (GET_MODE (X))) \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->fadd); \ - /* fall through */ \ - \ - case AND: \ - case IOR: \ - case XOR: \ - if (!TARGET_64BIT && GET_MODE (X) == DImode) \ - return (COSTS_N_INSNS (ix86_cost->add) * 2 \ - + (rtx_cost (XEXP (X, 0), (OUTER_CODE)) \ - << (GET_MODE (XEXP (X, 0)) != DImode)) \ - + (rtx_cost (XEXP (X, 1), (OUTER_CODE)) \ - << (GET_MODE (XEXP (X, 1)) != DImode))); \ - /* fall through */ \ - \ - case NEG: \ - if (FLOAT_MODE_P (GET_MODE (X))) \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->fchs); \ - /* fall through */ \ - \ - case NOT: \ - if (!TARGET_64BIT && GET_MODE (X) == DImode) \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->add * 2); \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->add); \ - \ - case FLOAT_EXTEND: \ - if (!TARGET_SSE_MATH \ - || !VALID_SSE_REG_MODE (GET_MODE (X))) \ - TOPLEVEL_COSTS_N_INSNS (0); \ - break; \ - \ - case ABS: \ - if (FLOAT_MODE_P (GET_MODE (X))) \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->fabs); \ - break; \ - \ - case SQRT: \ - if (FLOAT_MODE_P (GET_MODE (X))) \ - TOPLEVEL_COSTS_N_INSNS (ix86_cost->fsqrt); \ - break; \ - \ - egress_rtx_costs: \ - break; - - /* An expression giving the cost of an addressing mode that contains ADDRESS. If not defined, the cost is computed from the ADDRESS expression and the `CONST_COSTS' values. |