aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-10-04 09:26:57 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-10-04 09:26:57 +0000
commitb3a798924e62d98a2a177db14c8cceb8e09781f9 (patch)
tree51473ee40d343b64454994926f4d90e93e9612d0
parentc557501d33029a97f01105f220131e9b2516f0c1 (diff)
downloadgcc-b3a798924e62d98a2a177db14c8cceb8e09781f9.zip
gcc-b3a798924e62d98a2a177db14c8cceb8e09781f9.tar.gz
gcc-b3a798924e62d98a2a177db14c8cceb8e09781f9.tar.bz2
mips.md: Define conditional move patterns for floating point operands and DI mode conditions.
* mips.md: Define conditional move patterns for floating point operands and DI mode conditions. From-SVN: r29800
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/mips/mips.md30
2 files changed, 35 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6f3504e..922e736 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Mon Oct 4 02:31:20 1999 Mark Mitchell <mark@codesourcery.com>
+
+ * mips.md: Define conditional move patterns for floating point
+ operands and DI mode conditions.
+
Mon Oct 4 02:12:41 1999 Mark Mitchell <mark@codesourcery.com>
* tree.c (make_node): Set TREE_SIDE_EFFECTS for expressions that
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index c269bcd..3941294 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -10079,6 +10079,21 @@ move\\t%0,%z4\\n\\
(define_insn ""
[(set (match_operand:SF 0 "register_operand" "=f,f")
(if_then_else:SF
+ (match_operator 4 "equality_op"
+ [(match_operand:DI 1 "se_register_operand" "d,d")
+ (const_int 0)])
+ (match_operand:SF 2 "register_operand" "f,0")
+ (match_operand:SF 3 "register_operand" "0,f")))]
+ "mips_isa >= 4 && TARGET_HARD_FLOAT"
+ "@
+ mov%B4.s\\t%0,%2,%1
+ mov%b4.s\\t%0,%3,%1"
+ [(set_attr "type" "move")
+ (set_attr "mode" "SF")])
+
+(define_insn ""
+ [(set (match_operand:SF 0 "register_operand" "=f,f")
+ (if_then_else:SF
(match_operator 3 "equality_op" [(match_operand:CC 4
"register_operand"
"z,z")
@@ -10110,6 +10125,21 @@ move\\t%0,%z4\\n\\
(define_insn ""
[(set (match_operand:DF 0 "register_operand" "=f,f")
(if_then_else:DF
+ (match_operator 4 "equality_op"
+ [(match_operand:DI 1 "se_register_operand" "d,d")
+ (const_int 0)])
+ (match_operand:DF 2 "register_operand" "f,0")
+ (match_operand:DF 3 "register_operand" "0,f")))]
+ "mips_isa >= 4 && TARGET_HARD_FLOAT && TARGET_DOUBLE_FLOAT"
+ "@
+ mov%B4.d\\t%0,%2,%1
+ mov%b4.d\\t%0,%3,%1"
+ [(set_attr "type" "move")
+ (set_attr "mode" "DF")])
+
+(define_insn ""
+ [(set (match_operand:DF 0 "register_operand" "=f,f")
+ (if_then_else:DF
(match_operator 3 "equality_op" [(match_operand:CC 4
"register_operand"
"z,z")