diff options
author | Jan Hubicka <jh@suse.cz> | 2001-01-13 08:57:29 +0000 |
---|---|---|
committer | Jan Hubicka <jh@suse.cz> | 2001-01-13 08:57:29 +0000 |
commit | 3ce57820e2fa85748e1ddfe2a5661bdc4017e6de (patch) | |
tree | c70ae326ad613b614bd7ef8b4da3a8ae9e7fabd0 /gcc/config/i386/i386.md | |
parent | 9aee224e1840cf3dc1497da3da5e83e4e674a047 (diff) |
* i386.c (ix86_fp_comparison_arithmetics_cost,
ix86_fp_comparison_fcomi_cost, ix86_fp_comparison_sahf_cost,
ix86_fp_comparison_cost): New functions.
(ix86_expand_fp_compare): Use the costs to choose best bethod; add
two new parameters SECOND_TEST and BYPASS_TEST; allow generating
two-branch sequences; make static.
(ix86_use_fcomi_compare): Do decision according to the costs.
(split_fp_branch): New.
* i386.md (compare-and-branch patterns): Use split_fp_branch.
* i386-protos.h (ix86_expand_fp_compare): Remove
(ix86_split_fp_branch): Declare.
* i386.h (PREDICATE_CODES): Update codes from fcmov_comparison_operand
and ix86_comparison_operator.
* i386.c (ix86_prepare_fp_compare_args): Try to rearange the comparison
to make it cheaper.
* i386.c (put_condition_code): Output properly the unordered/ordered
compares in fp case.
(ix86_expand_fp_movcc): Use ix86_expand_compare infrastructure.
* tm.texi (REVERSE_CONDITION): Document.
* i386.c (ix86_fp_compare_mode): Simplify; return always CCFPmode
in -ffast-math mode.
* i386.h (REVERSE_CONDITION, REVERSIBLE_CC_MODE): New macro.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@38979 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r-- | gcc/config/i386/i386.md | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 836edc5b3d9..12d7e39de2a 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -9304,14 +9304,12 @@ (clobber (reg:CCFP 18)) (clobber (reg:CCFP 17))] "reload_completed" - [(set (pc) - (if_then_else (match_dup 5) - (match_dup 3) - (match_dup 4)))] + [(const_int 0)] " { - operands[5] = ix86_expand_fp_compare (GET_CODE (operands[0]), operands[1], - operands[2], NULL_RTX); + ix86_split_fp_branch (operands[0], operands[1], operands[2], + operands[3], operands[4], NULL_RTX); + DONE; }") (define_split @@ -9331,8 +9329,9 @@ (match_dup 4)))] " { - operands[6] = ix86_expand_fp_compare (GET_CODE (operands[0]), operands[1], - operands[2], operands[5]); + ix86_split_fp_branch (operands[0], operands[1], operands[2], + operands[3], operands[4], operands[5]); + DONE; }") ;; Unconditional and other jump instructions |