cris: Enable "neg" to set condition codes.
authorHans-Peter Nilsson <hp@axis.com>
Thu, 6 Feb 2020 17:12:11 +0000 (18:12 +0100)
committerHans-Peter Nilsson <hp@axis.com>
Sat, 9 May 2020 02:22:20 +0000 (04:22 +0200)
commita33649e66640b35fc69f7f7f47346614a12b12d9
tree9fae7681a3be4ef5bc66a9aecc6908b22243b848
parentb73bf8a14dd77531d72426beec22c8e4b80a22a7
cris: Enable "neg" to set condition codes.

While gcc seems to prefer transforming tests on the result of
reversible operations, into tests on the original, it also can
work with the destination, if allocated to the same register as
it commonly-enough is.  The re-use is easily covered in a
test-case.  (N.B.: the value 0x80000000 appears to be considered
invalid and unimportant.)  Spotted as a "microregression" in
libgcc when comparing to the cc0 version.

gcc:
* 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".
gcc/ChangeLog
gcc/config/cris/cris.c
gcc/config/cris/cris.md