From: Jim Wilson Date: Mon, 1 Dec 1997 22:24:11 +0000 (+0000) Subject: mips.md (fix_truncdfsi2, [...]): Change *. X-Git-Tag: releases/egcs-1.0.0~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=86d7f0480943b33d7ca87c86b158f696913ba07d;p=thirdparty%2Fgcc.git mips.md (fix_truncdfsi2, [...]): Change *. * mips.md (fix_truncdfsi2, fix_truncsfsi2, fix_truncdfdi2, fix_truncsfdi2): Change *. From-SVN: r16875 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f43343cd1492..1ccb9f80efd5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Nov 25 14:08:12 1997 Jim Wilson + + * mips.md (fix_truncdfsi2, fix_truncsfsi2, fix_truncdfdi2, + fix_truncsfdi2): Change *. + Sun Nov 30 19:59:20 1997 Jason Merrill * stmt.c (expand_decl_cleanup): Update thisblock after eh_region_start. diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md index 8bc70b770d8e..3d2b255c74b3 100644 --- a/gcc/config/mips/mips.md +++ b/gcc/config/mips/mips.md @@ -2731,11 +2731,17 @@ move\\t%0,%z4\\n\\ ;; operand zero, because then the address in the move instruction will be ;; clobbered. We mark the scratch register as early clobbered to prevent this. +;; We need the ?X in alternative 1 so that it will be choosen only if the +;; destination is a floating point register. Otherwise, alternative 1 can +;; have lower cost than alternative 0 (because there is one less loser), and +;; can be choosen when it won't work (because integral reloads into FP +;; registers are not supported). + (define_insn "fix_truncdfsi2" [(set (match_operand:SI 0 "general_operand" "=d,*f,R,o") (fix:SI (match_operand:DF 1 "register_operand" "f,*f,f,f"))) (clobber (match_scratch:SI 2 "=d,*d,&d,&d")) - (clobber (match_scratch:DF 3 "=f,*X,f,f"))] + (clobber (match_scratch:DF 3 "=f,?*X,f,f"))] "TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT" "* { @@ -2760,7 +2766,7 @@ move\\t%0,%z4\\n\\ [(set (match_operand:SI 0 "general_operand" "=d,*f,R,o") (fix:SI (match_operand:SF 1 "register_operand" "f,*f,f,f"))) (clobber (match_scratch:SI 2 "=d,*d,&d,&d")) - (clobber (match_scratch:SF 3 "=f,*X,f,f"))] + (clobber (match_scratch:SF 3 "=f,?*X,f,f"))] "TARGET_HARD_FLOAT" "* { @@ -2793,7 +2799,7 @@ move\\t%0,%z4\\n\\ (define_insn "fix_truncdfdi2" [(set (match_operand:DI 0 "general_operand" "=d,*f,R,o") (fix:DI (match_operand:DF 1 "register_operand" "f,*f,f,f"))) - (clobber (match_scratch:DF 2 "=f,*X,f,f"))] + (clobber (match_scratch:DF 2 "=f,?*X,f,f"))] "TARGET_HARD_FLOAT && TARGET_64BIT && TARGET_DOUBLE_FLOAT" "* { @@ -2820,7 +2826,7 @@ move\\t%0,%z4\\n\\ (define_insn "fix_truncsfdi2" [(set (match_operand:DI 0 "general_operand" "=d,*f,R,o") (fix:DI (match_operand:SF 1 "register_operand" "f,*f,f,f"))) - (clobber (match_scratch:DF 2 "=f,*X,f,f"))] + (clobber (match_scratch:DF 2 "=f,?*X,f,f"))] "TARGET_HARD_FLOAT && TARGET_64BIT && TARGET_DOUBLE_FLOAT" "* {