aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/cris/cris.c8
-rw-r--r--gcc/config/cris/cris.md2
3 files changed, 10 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8f14fdb..178973f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -167,6 +167,11 @@
Handle output of CC_ZnNmode.
("*b<nzcond:code>_reversed<mode>"): Ditto.
+ * config/cris/cris.c (cris_select_cc_mode): Return CC_NZmode for
+ NEG too. Correct comment.
+ * config/cris/cris.md ("<anz>neg<mode>2<setnz>"): Rename from
+ "neg<mode>2".
+
2020-05-08 Vladimir Makarov <vmakarov@redhat.com>
* ira-color.c (update_costs_from_allocno): Remove
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c
index d0807ad..2bad939 100644
--- a/gcc/config/cris/cris.c
+++ b/gcc/config/cris/cris.c
@@ -1531,9 +1531,9 @@ cris_select_cc_mode (enum rtx_code op, rtx x, rtx y)
return CCmode;
/* If we have a comparison that doesn't have to look at V or C, check
- operand x; if it looks like a binary operator, return CC_NZmode,
- else CCmode, so we only use CC_NZmode for the cases where we don't
- actually have both V and C valid. */
+ operand x; if it's a valid operator, return CC_NZmode, else CCmode,
+ so we only use CC_NZmode for the cases where we don't actually have
+ both V and C valid. */
if (op == EQ || op == NE || op == GTU || op == LEU
|| op == LT || op == GE)
{
@@ -1542,7 +1542,7 @@ cris_select_cc_mode (enum rtx_code op, rtx x, rtx y)
/* Mentioning the rtx_code here is required but not sufficient: the
insn also needs to be decorated with <setnz> (and the
anonymization prefix <anz> for a named pattern). */
- return e == PLUS || e == MINUS || e == MULT || e == NOT
+ return e == PLUS || e == MINUS || e == MULT || e == NOT || e == NEG
? CC_NZmode : CCmode;
}
diff --git a/gcc/config/cris/cris.md b/gcc/config/cris/cris.md
index 1e895a3..081041f 100644
--- a/gcc/config/cris/cris.md
+++ b/gcc/config/cris/cris.md
@@ -1734,7 +1734,7 @@
;; No "negdi2" although we could make one up that may be faster than
;; the one in libgcc.
-(define_insn "neg<mode>2"
+(define_insn "<anz>neg<mode>2<setnz>"
[(set (match_operand:BWD 0 "register_operand" "=r")
(neg:BWD (match_operand:BWD 1 "register_operand" "r")))
(clobber (reg:CC CRIS_CC0_REGNUM))]