rs6000: New insns setbc and setbcr
authorSegher Boessenkool <segher@kernel.crashing.org>
Thu, 7 May 2020 23:25:44 +0000 (18:25 -0500)
committerBill Schmidt <wschmidt@linux.ibm.com>
Thu, 7 May 2020 23:25:44 +0000 (18:25 -0500)
commit98329e3f5b85acc50d08c3f0680a30f6e728c033
treed858bf4ba9d33d252334ec151cd063f65721cef3
parentf5fb834c96ee4dc828299f984c46608814c9f0a2
rs6000: New insns setbc and setbcr

New instructions setbc and setbcr.  setbc sets a GPR to 1 if some
condition register bit is set, and 0 otherwise; setbcr does it the
other way around.

2020-05-07  Segher Boessenkool  <segher@kernel.crashing.org>

* config/rs6000/rs6000.md (setbc_<un>signed_<GPR:mode>): New
define_insn.
(*setbcr_<un>signed_<GPR:mode>): Likewise.
(cstore<mode>4): Use setbc[r] if available.
(<code><GPR:mode><GPR2:mode>2_isel): Avoid for TARGET_FUTURE.
(eq<mode>3): Use setbc for TARGET_FUTURE.
(*eq<mode>3): Avoid for TARGET_FUTURE.
(ne<mode>3): Replace :P with :GPR; use setbc for TARGET_FUTURE;
else for non-Pmode, use gen_eq and gen_xor.
(*ne<mode>3): Avoid for TARGET_FUTURE.
(*eqsi3_ext<mode>): Avoid for TARGET_FUTURE; fix missing && 1.
gcc/ChangeLog
gcc/config/rs6000/rs6000.md