diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/cris/cris.c | 8 | ||||
-rw-r--r-- | gcc/config/cris/cris.md | 2 |
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))] |