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:
* v7:
  - Support far branches and add a test for them.
  - Replace `aarch64_cb_short_operand` with `aarch64_reg_or_zero_operand`.
  - Delete the new predicates that aren't needed anymore.
  - Minor formatting and comment fixes.
* 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.

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                 |   39 +-
 gcc/config/aarch64/aarch64.h                  |    3 +
 gcc/config/aarch64/aarch64.md                 |  564 ++++--
 gcc/config/aarch64/constraints.md             |   18 +
 gcc/config/aarch64/iterators.md               |   30 +
 gcc/doc/invoke.texi                           |    3 +
 gcc/testsuite/gcc.target/aarch64/cmpbr.c      | 1704 +++++++++++++++++
 gcc/testsuite/lib/target-supports.exp         |   14 +-
 12 files changed, 2162 insertions(+), 221 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/aarch64/cmpbr.c

--
2.45.2

Reply via email to