This patch series adds support for the CMPBR extension. It includes the
new `+cmpbr` option and rules to generate the new instructions when
lowering conditional branches.
Changelog:
* v6:
- Correct the constraint string for immediate operands.
- Drop the commit for adding `%j` format specifiers. The suffix for
the `cb` instruction is now calculated by the `cmp_op` code
attribute.
* v5:
- Moved Moved patch 10/10 (adding %j ...) before patch 8/10 (rules for
CMPBR...). Every commit in the series should now produce a correct
compiler.
- Reduce excessive diff context by not passing `--function-context` to
`git format-patch`.
* v4:
- Added a commit to use HS/LO instead of CS/CC mnemonics.
- Rewrite the range checks for immediate RHSes in aarch64.cc: CBGE,
CBHS, CBLE and CBLS have different ranges of allowed immediates than
the other comparisons.
Testing done:
`make bootstrap; make check`
Karl Meakin (9):
AArch64: place branch instruction rules together
AArch64: reformat branch instruction rules
AArch64: rename branch instruction rules
AArch64: add constants for branch displacements
AArch64: make `far_branch` attribute a boolean
AArch64: recognize `+cmpbr` option
AArch64: precommit test for CMPBR instructions
AArch64: rules for CMPBR instructions
AArch64: make rules for CBZ/TBZ higher priority
.../aarch64/aarch64-option-extensions.def | 2 +
gcc/config/aarch64/aarch64-protos.h | 2 +
gcc/config/aarch64/aarch64-simd.md | 2 +-
gcc/config/aarch64/aarch64-sme.md | 2 +-
gcc/config/aarch64/aarch64.cc | 37 +-
gcc/config/aarch64/aarch64.h | 3 +
gcc/config/aarch64/aarch64.md | 563 +++---
gcc/config/aarch64/constraints.md | 18 +
gcc/config/aarch64/iterators.md | 19 +
gcc/config/aarch64/predicates.md | 15 +
gcc/doc/invoke.texi | 3 +
gcc/testsuite/gcc.target/aarch64/cmpbr.c | 1667 +++++++++++++++++
gcc/testsuite/lib/target-supports.exp | 14 +-
13 files changed, 2123 insertions(+), 224 deletions(-)
create mode 100644 gcc/testsuite/gcc.target/aarch64/cmpbr.c
--
2.45.2