]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[ARC] Fix arcset* pattern's predicate.
authorClaudiu Zissulescu <claziss@synopsys.com>
Tue, 26 Jan 2016 16:06:16 +0000 (17:06 +0100)
committerClaudiu Zissulescu <claziss@gcc.gnu.org>
Tue, 26 Jan 2016 16:06:16 +0000 (17:06 +0100)
gcc/
2016-01-26  Claudiu Zissulescu  <claziss@synopsys.com>

        * config/arc/arc.md (cstoresi4): Force operand into register.
        (arcset<code>): Fix predicate.
        (arcsetltu): Likewise.
        (arcsetgeu): Likewise.
        (arcsethi): Likewise.
        (arcsetls): Likewise.

From-SVN: r232834

gcc/ChangeLog
gcc/config/arc/arc.md

index 37a3782c20f7549976fc977b4c5ee1f574f9f8a8..6518a3b184139adc46468c832da2fc386846a998 100644 (file)
@@ -1,3 +1,12 @@
+2016-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
+
+        * config/arc/arc.md (cstoresi4): Force operand into register.
+        (arcset<code>): Fix predicate.
+        (arcsetltu): Likewise.
+        (arcsetgeu): Likewise.
+        (arcsethi): Likewise.
+        (arcsetls): Likewise.
+
 2016-01-26  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/69483
index 222a468fc1b2bf974c75ef4f25d27eb74a1c4dde..602cf0b72c751623b64d6924276f7545bcfbbc6b 100644 (file)
 
 (define_expand "cstoresi4"
   [(set (match_operand:SI 0 "dest_reg_operand" "")
-       (match_operator:SI 1 "ordered_comparison_operator" [(match_operand:SI 2 "nonmemory_operand" "")
-                                                           (match_operand:SI 3 "nonmemory_operand" "")]))]
+       (match_operator:SI 1 "ordered_comparison_operator"
+                          [(match_operand:SI 2 "nonmemory_operand" "")
+                           (match_operand:SI 3 "nonmemory_operand" "")]))]
   ""
 {
   if (!TARGET_CODE_DENSITY)
    emit_insn (gen_scc_insn (operands[0], operands[1]));
    DONE;
   }
+  if (!register_operand (operands[2], SImode))
+    operands[2] = force_reg (SImode, operands[2]);
+
 })
 
 (define_mode_iterator SDF [SF DF])
 
 (define_insn "arcset<code>"
   [(set (match_operand:SI 0 "register_operand"                "=r,r,r,r,r,r,r")
-       (arcCC_cond:SI (match_operand:SI 1 "nonmemory_operand" "0,r,0,r,0,0,r")
+       (arcCC_cond:SI (match_operand:SI 1 "register_operand"  "0,r,0,r,0,0,r")
                       (match_operand:SI 2 "nonmemory_operand" "r,r,L,L,I,n,n")))]
   "TARGET_V2 && TARGET_CODE_DENSITY"
   "set<code>%? %0, %1, %2"
 
 (define_insn "arcsetltu"
   [(set (match_operand:SI 0 "register_operand"         "=r,r,r,r,r,  r,  r")
-       (ltu:SI (match_operand:SI 1 "nonmemory_operand" "0,r,0,r,0,  0,  r")
+       (ltu:SI (match_operand:SI 1 "register_operand"  "0,r,0,r,0,  0,  r")
                (match_operand:SI 2 "nonmemory_operand" "r,r,L,L,I,  n,  n")))]
   "TARGET_V2 && TARGET_CODE_DENSITY"
   "setlo%? %0, %1, %2"
 
 (define_insn "arcsetgeu"
   [(set (match_operand:SI 0 "register_operand"         "=r,r,r,r,r,  r,  r")
-       (geu:SI (match_operand:SI 1 "nonmemory_operand" "0,r,0,r,0,  0,  r")
+       (geu:SI (match_operand:SI 1 "register_operand"  "0,r,0,r,0,  0,  r")
                (match_operand:SI 2 "nonmemory_operand" "r,r,L,L,I,  n,  n")))]
   "TARGET_V2 && TARGET_CODE_DENSITY"
   "seths%? %0, %1, %2"
 ;; Special cases of SETCC
 (define_insn_and_split "arcsethi"
   [(set (match_operand:SI 0 "register_operand"         "=r,r,  r,r")
-       (gtu:SI (match_operand:SI 1 "nonmemory_operand" "r,r,  r,r")
+       (gtu:SI (match_operand:SI 1 "register_operand"  "r,r,  r,r")
                (match_operand:SI 2 "nonmemory_operand" "0,r,C62,n")))]
   "TARGET_V2 && TARGET_CODE_DENSITY"
   "setlo%? %0, %2, %1"
 
 (define_insn_and_split "arcsetls"
   [(set (match_operand:SI 0 "register_operand"         "=r,r,  r,r")
-       (leu:SI (match_operand:SI 1 "nonmemory_operand" "r,r,  r,r")
+       (leu:SI (match_operand:SI 1 "register_operand"  "r,r,  r,r")
                (match_operand:SI 2 "nonmemory_operand" "0,r,C62,n")))]
   "TARGET_V2 && TARGET_CODE_DENSITY"
   "seths%? %0, %2, %1"