aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Cox <coxs@gnu.org>1996-05-03 17:17:42 +0000
committerStan Cox <coxs@gnu.org>1996-05-03 17:17:42 +0000
commit3a0433fd4d7b371aa2b11f0861d79b2b83cc30ff (patch)
tree2fb9535ece8ae296d9461ce2cd6e903b05f04644
parente5cb57e8b5c8666de8242f3c0be4a807f2d8be46 (diff)
downloadgcc-3a0433fd4d7b371aa2b11f0861d79b2b83cc30ff.zip
gcc-3a0433fd4d7b371aa2b11f0861d79b2b83cc30ff.tar.gz
gcc-3a0433fd4d7b371aa2b11f0861d79b2b83cc30ff.tar.bz2
(TARGET_PENTIUMPRO, TARGET_CMOVE, BRANCH_COST,
From-SVN: r11916
-rw-r--r--gcc/config/i386/i386.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 3a419f7..b0431b3 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -145,6 +145,7 @@ extern int target_flags;
#define TARGET_386 (ix86_cpu == PROCESSOR_I386)
#define TARGET_486 (ix86_cpu == PROCESSOR_I486)
#define TARGET_PENTIUM (ix86_cpu == PROCESSOR_PENTIUM)
+#define TARGET_PENTIUMPRO (ix86_cpu == PROCESSOR_PENTIUMPRO)
#define TARGET_USE_LEAVE (ix86_cpu == PROCESSOR_I386)
#define TARGET_PUSH_MEMORY (ix86_cpu == PROCESSOR_I386)
#define TARGET_ZERO_EXTEND_WITH_AND (ix86_cpu != PROCESSOR_I386)
@@ -153,6 +154,8 @@ extern int target_flags;
#define TARGET_UNROLL_STRLEN (ix86_cpu != PROCESSOR_I386)
#define TARGET_USE_Q_REG (ix86_cpu == PROCESSOR_PENTIUM)
#define TARGET_USE_ANY_REG (ix86_cpu == PROCESSOR_I486)
+#define TARGET_CMOVE (ix86_isa == PROCESSOR_PENTIUMPRO)
+#define TARGET_DEEP_BRANCH_PREDICTION (ix86_isa == PROCESSOR_PENTIUMPRO)
#define TARGET_SWITCHES \
{ { "80387", MASK_80387 }, \
@@ -207,6 +210,8 @@ enum processor_type
extern enum processor_type ix86_cpu;
+extern int ix86_isa;
+
/* Define generic processor types based upon current deployment. */
#define PROCESSOR_COMMON PROCESSOR_I386
#define PROCESSOR_COMMON_STRING PROCESSOR_I386_STRING
@@ -240,7 +245,7 @@ extern enum processor_type ix86_cpu;
by appending `-m' to the specified name. */
#define TARGET_OPTIONS \
{ { "cpu=", &ix86_cpu_string}, \
- { "arch=", &ix86_isa_string}, \
+ { "isa=", &ix86_isa_string}, \
{ "reg-alloc=", &i386_reg_alloc_order }, \
{ "regparm=", &i386_regparm_string }, \
{ "align-loops=", &i386_align_loops_string }, \
@@ -512,6 +517,9 @@ extern enum processor_type ix86_cpu;
#define MODES_TIEABLE_P(MODE1, MODE2) ((MODE1) == (MODE2))
+/* Provide the cost of a branch. Exact meaning under development. */
+#define BRANCH_COST (TARGET_PENTIUMPRO ? 5 : 1)
+
/* Specify the registers used for certain standard purposes.
The values of these macros are register numbers. */
@@ -936,6 +944,14 @@ typedef struct i386_args {
#define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) \
(function_arg_partial_nregs (&CUM, MODE, TYPE, NAMED))
+/* This macro is invoked just before the start of a function.
+ It is used here to output code for -fpic that will load the
+ return address into %ebx. */
+
+#undef ASM_OUTPUT_FUNCTION_PREFIX
+#define ASM_OUTPUT_FUNCTION_PREFIX(FILE, FNNAME) \
+ asm_output_function_prefix (FILE, FNNAME)
+
/* This macro generates the assembly code for function entry.
FILE is a stdio stream to output the code to.
SIZE is an int: how many units of temporary storage to allocate.