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 100b145ecf843f603ddc3deab27b7f8bd3904765..26304ecd795059c825552a93d9c3bb0687c4b2f3 100644 (file)
@@ -1,3 +1,8 @@
+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".
index 073ee6b6fa3420932fd0ed077e50fbf4663ed90e..4284535304a9244331340ac0f1606a0c37c7e69d 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")]
 )