OSDN Git Service

* mips.md: Define conditional move patterns for floating point
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 4 Oct 1999 09:26:57 +0000 (09:26 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 4 Oct 1999 09:26:57 +0000 (09:26 +0000)
operands and DI mode conditions.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29800 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/mips/mips.md

index 6f3504e..922e736 100644 (file)
@@ -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
index c269bcd..3941294 100644 (file)
@@ -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")