arm.md (mov_scc,mov_negscc,mov_notscc): Convert define_insn into define_insn_and_spli...
authorGreta Yorsh <greta.yorsh@arm.com>
Fri, 12 Apr 2013 15:22:06 +0000 (16:22 +0100)
committerGreta Yorsh <gretay@gcc.gnu.org>
Fri, 12 Apr 2013 15:22:06 +0000 (16:22 +0100)
2013-04-12  Greta Yorsh  <Greta.Yorsh@arm.com>

* config/arm/arm.md (mov_scc,mov_negscc,mov_notscc): Convert
define_insn into define_insn_and_split and emit movsicc patterns.

From-SVN: r197925

gcc/ChangeLog
gcc/config/arm/arm.md

index 100b145..26304ec 100644 (file)
@@ -1,5 +1,10 @@
 2013-04-12  Greta Yorsh  <Greta.Yorsh@arm.com>
 
+       * config/arm/arm.md (mov_scc,mov_negscc,mov_notscc): Convert
+       define_insn into define_insn_and_split and emit movsicc patterns.
+
+2013-04-12  Greta Yorsh  <Greta.Yorsh@arm.com>
+
        * config/arm/arm.c (gen_operands_ldrd_strd): Initialize "base".
 
 2013-04-12  Richard Biener  <rguenther@suse.de>
index 073ee6b..4284535 100644 (file)
    operands[3] = const0_rtx;"
 )
 
-(define_insn "*mov_scc"
+(define_insn_and_split "*mov_scc"
   [(set (match_operand:SI 0 "s_register_operand" "=r")
        (match_operator:SI 1 "arm_comparison_operator"
         [(match_operand 2 "cc_register" "") (const_int 0)]))]
   "TARGET_ARM"
-  "mov%D1\\t%0, #0\;mov%d1\\t%0, #1"
+  "#"   ; "mov%D1\\t%0, #0\;mov%d1\\t%0, #1"
+  "TARGET_ARM"
+  [(set (match_dup 0)
+        (if_then_else:SI (match_dup 1)
+                         (const_int 1)
+                         (const_int 0)))]
+  ""
   [(set_attr "conds" "use")
-   (set_attr "insn" "mov")
    (set_attr "length" "8")]
 )
 
-(define_insn "*mov_negscc"
+(define_insn_and_split "*mov_negscc"
   [(set (match_operand:SI 0 "s_register_operand" "=r")
        (neg:SI (match_operator:SI 1 "arm_comparison_operator"
                 [(match_operand 2 "cc_register" "") (const_int 0)])))]
   "TARGET_ARM"
-  "mov%D1\\t%0, #0\;mvn%d1\\t%0, #0"
+  "#"   ; "mov%D1\\t%0, #0\;mvn%d1\\t%0, #0"
+  "TARGET_ARM"
+  [(set (match_dup 0)
+        (if_then_else:SI (match_dup 1)
+                         (match_dup 3)
+                         (const_int 0)))]
+  {
+    operands[3] = GEN_INT (~0);
+  }
   [(set_attr "conds" "use")
-   (set_attr "insn" "mov")
    (set_attr "length" "8")]
 )
 
-(define_insn "*mov_notscc"
+(define_insn_and_split "*mov_notscc"
   [(set (match_operand:SI 0 "s_register_operand" "=r")
        (not:SI (match_operator:SI 1 "arm_comparison_operator"
                 [(match_operand 2 "cc_register" "") (const_int 0)])))]
   "TARGET_ARM"
-  "mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1"
+  "#"   ; "mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1"
+  "TARGET_ARM"
+  [(set (match_dup 0)
+        (if_then_else:SI (match_dup 1)
+                         (match_dup 3)
+                         (match_dup 4)))]
+  {
+    operands[3] = GEN_INT (~1);
+    operands[4] = GEN_INT (~0);
+  }
   [(set_attr "conds" "use")
-   (set_attr "insn" "mov")
    (set_attr "length" "8")]
 )