diff options
author | Jan Hubicka <jh@suse.cz> | 2001-06-06 14:57:31 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2001-06-06 12:57:31 +0000 |
commit | ef6257cdab743c387b512bfaec9d8fa7db79d6c8 (patch) | |
tree | 670901c9a6689cc4d8ee69e5505e146e4e0b394c /gcc/final.c | |
parent | 3b8fd08f822157da91aa63c77f44e7bd0960c7d7 (diff) | |
download | gcc-ef6257cdab743c387b512bfaec9d8fa7db79d6c8.zip gcc-ef6257cdab743c387b512bfaec9d8fa7db79d6c8.tar.gz gcc-ef6257cdab743c387b512bfaec9d8fa7db79d6c8.tar.bz2 |
i386.md (floatdi?f): Avoid usinf of SSE instructions if TARGET_64BIT is false.
* i386.md (floatdi?f): Avoid usinf of SSE instructions
if TARGET_64BIT is false.
(floatdi?f_i386_only): New insn.
(floatdi?f_i386): Disable for !TARGET_64BIT.
* (min?f, max?f splitters): Handle case where
operands are cross-matched.
* i386.h (HI_REGISTER_NAMES): Remove redundant definition
(MMX_REGISTER_NAMES): Kill.
(PRINT_OPERAND): Fix comment.
(PRINT_REG): Likewise.
* i386.c (print_reg): Kill support for 'm' CODE; simplify.
(print_operand): Update comment; kill 'm'.
* i386.c (x86_branch_hints): New global variable
(print_operand): Support outputting of branch prediction hints.
* i386.md (conditional jump patterns): Add branch prediction hints
to the template.
* i386.h (x86_branch_hints): Declare
(TARGET_BRANCH_PREDICTION_HINTS): New macro.
(PRINT_OPERAND_FUNCT_VALID_P): New.
* final.c (final_forward_branch_p): New function.
From-SVN: r42945
Diffstat (limited to 'gcc/final.c')
-rw-r--r-- | gcc/final.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/final.c b/gcc/final.c index 64a4241..7b36b1b 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -4086,6 +4086,25 @@ leaf_function_p () return 1; } +/* Return 1 if branch is an forward branch. + Uses insn_shuid array, so it works only in the final pass. May be used by + output templates to customary add branch prediction hints. + */ +int +final_forward_branch_p (insn) + rtx insn; +{ + int insn_id, label_id; + if (!uid_shuid) + abort (); + insn_id = INSN_SHUID (insn); + label_id = INSN_SHUID (JUMP_LABEL (insn)); + /* We've hit some insns that does not have id information available. */ + if (!insn_id || !label_id) + abort (); + return insn_id < label_id; +} + /* On some machines, a function with no call insns can run faster if it doesn't create its own register window. When output, the leaf function should use only the "output" |