aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@redhat.co.uk>2000-09-19 15:33:16 +0000
committerBernd Schmidt <crux@gcc.gnu.org>2000-09-19 15:33:16 +0000
commit0f8056066331197225c8790f7223050382ff8419 (patch)
treebff688c288d9277af919f019a5eb7e62581daf65
parent0d97fd9ebe4aa55afbec7e3b7899b54c00354ba6 (diff)
downloadgcc-0f8056066331197225c8790f7223050382ff8419.zip
gcc-0f8056066331197225c8790f7223050382ff8419.tar.gz
gcc-0f8056066331197225c8790f7223050382ff8419.tar.bz2
Some sh.md fixes (fallout from earlier changes)
From-SVN: r36535
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config/sh/sh.md25
2 files changed, 22 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f9ac0d7..c0a4253 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2000-09-19 Bernd Schmidt <bernds@redhat.co.uk>
+
+ Fix misapplied earlier patch:
+ * config/sh/sh.md (floatsisf_ie): Reenable. Remove explicit reference
+ to fpul.
+ (floatsisf2): Generate floatsisf_ie by default.
+ (floatsisf_i4): Conditional on TARGET_SH4.
+
+ (floatsisf2, floatsidf2, extendsfdf2): Also use reg_no_subreg_operand
+ predicate for the expanders.
+
2000-09-19 Richard Henderson <rth@cygnus.com>
* config/i386/i386.h (CPP_CPU_SPEC): Define i586 and i686 symbols
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index 59ec818..70510bd 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -4219,9 +4219,8 @@ else
(set_attr "fp_mode" "single")])
(define_expand "floatsisf2"
- [(parallel [(set (match_operand:SF 0 "arith_reg_operand" "")
- (float:SF (match_operand:SI 1 "arith_reg_operand" "")))
- (use (match_dup 2))])]
+ [(set (match_operand:SF 0 "arith_reg_operand" "")
+ (float:SF (match_operand:SI 1 "reg_no_subreg_operand" "")))]
"TARGET_SH3E"
"
{
@@ -4230,25 +4229,23 @@ else
emit_sf_insn (gen_floatsisf2_i4 (operands[0], operands[1], get_fpscr_rtx ()));
DONE;
}
- operands[2] = get_fpscr_rtx ();
}")
(define_insn "floatsisf2_i4"
[(set (match_operand:SF 0 "arith_reg_operand" "=f")
(float:SF (match_operand:SI 1 "reg_no_subreg_operand" "y")))
(use (match_operand:PSI 2 "fpscr_operand" "c"))]
- "TARGET_SH3E"
+ "TARGET_SH4"
"float %1,%0"
[(set_attr "type" "fp")
(set_attr "fp_mode" "single")])
-;; ??? This pattern is used nowhere. floatsisf always expands to floatsisf_i4.
-;; (define_insn "*floatsisf2_ie"
-;; [(set (match_operand:SF 0 "arith_reg_operand" "=f")
-;; (float:SF (reg:SI 22)))]
-;; "TARGET_SH3E && ! TARGET_SH4"
-;; "float fpul,%0"
-;; [(set_attr "type" "fp")])
+(define_insn "*floatsisf2_ie"
+ [(set (match_operand:SF 0 "arith_reg_operand" "=f")
+ (float:SF (match_operand:SI 1 "reg_no_subreg_operand" "y")))]
+ "TARGET_SH3E && ! TARGET_SH4"
+ "float %1,%0"
+ [(set_attr "type" "fp")])
(define_expand "fix_truncsfsi2"
[(set (match_operand:SI 0 "register_operand" "=y")
@@ -4480,7 +4477,7 @@ else
(define_expand "floatsidf2"
[(match_operand:DF 0 "arith_reg_operand" "")
- (match_operand:SI 1 "arith_reg_operand" "")]
+ (match_operand:SI 1 "reg_no_subreg_operand" "")]
"TARGET_SH4"
"
{
@@ -4624,7 +4621,7 @@ else
(define_expand "extendsfdf2"
[(match_operand:DF 0 "arith_reg_operand" "")
- (match_operand:SF 1 "arith_reg_operand" "")]
+ (match_operand:SF 1 "reg_no_subreg_operand" "")]
"TARGET_SH4"
"
{