aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.md
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2001-01-13 08:57:29 +0000
committerJan Hubicka <jh@suse.cz>2001-01-13 08:57:29 +0000
commit3ce57820e2fa85748e1ddfe2a5661bdc4017e6de (patch)
treec70ae326ad613b614bd7ef8b4da3a8ae9e7fabd0 /gcc/config/i386/i386.md
parent9aee224e1840cf3dc1497da3da5e83e4e674a047 (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.md15
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