HomePhabricator

[ARM] Generate 8.1-m CSINC, CSNEG and CSINV instructions.

Description

[ARM] Generate 8.1-m CSINC, CSNEG and CSINV instructions.

Arm 8.1-M adds a number of related CSEL instructions, including CSINC, CSNEG and CSINV. These choose between two values given the content in CPSR and a condition, performing an increment, negation or inverse of the false value.

This adds some selection for them, either from constant values or patterns. It does not include CSEL directly, which is currently not always making code better. It is still useful, but we will have to check more carefully where it should and shouldn't be used.

Code by Ranjeet Singh and Simon Tatham, with some modifications from me.

Differential revision: https://reviews.llvm.org/D66483

Details

Committed
dmgreenSep 3 2019, 3:53 AM
Differential Revision
D66483: [ARM] Generate 8.1-m CSINC, CSNEG and CSINV instructions.
Parents
rL370738: [ARM] Add csel tests. NFC
Branches
Unknown
Tags
Unknown