aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorJeff Law <jeffreyalaw@gmail.com>2022-10-01 00:42:15 -0400
committerJeff Law <jeffreyalaw@gmail.com>2022-10-01 00:49:55 -0400
commit2555071c954aa5796eb3432c15739dcaae457bc3 (patch)
tree7727cc058c0692134cc2038dd0aa602e7e74bebe /libgcc
parentdd9c8f644f0f1ac2000108ac369b991664946304 (diff)
downloadgcc-2555071c954aa5796eb3432c15739dcaae457bc3.zip
gcc-2555071c954aa5796eb3432c15739dcaae457bc3.tar.gz
gcc-2555071c954aa5796eb3432c15739dcaae457bc3.tar.bz2
Improve Z flag handling on H8
This patch improves handling of the Z bit in the status register in a variety of ways to improve either the code size or code speed on various H8 subtargets. For example, we can test the zero/nonzero status of the upper byte of a 16 bit register using mov.b, we can move the Z or an inverted Z into a QImode register profitably on some subtargets. We can move Z or an inverted Z into the sign bit on the H8/SX profitably, etc. gcc/ * config/h8300/h8300.md (HSI2): New iterator. (eqne_invert): Similarly. * config/h8300/testcompare.md (testhi_upper_z): New pattern. (cmpqi_z, cmphi_z, cmpsi_z): Likewise. (store_z_qi, store_z_i_qi, store_z_hi, store_z_hi_sb): New define_insn_and_splits and/or define_insns. (store_z_hi_neg, store_z_hi_and, store_z_<mode>): Likewise. (store_z_<mode>_neg, store_z_<mode>_and, store_z): Likewise.
Diffstat (limited to 'libgcc')
0 files changed, 0 insertions, 0 deletions