aboutsummaryrefslogtreecommitdiff
path: root/gcc/c
diff options
context:
space:
mode:
authorSudi Das <sudi.das@arm.com>2020-09-18 15:47:46 +0100
committerOmar Tahir <omar.tahir@arm.com>2020-09-18 17:03:39 +0100
commitc2bb84be4a6e581bbf45891457ee632a07416982 (patch)
treeef187c78b259df5dc5a7fee70d7b35ef0c90b383 /gcc/c
parent3c7c5f1d4a4b8328fb4c07483cdbfe4ea7762155 (diff)
downloadgcc-c2bb84be4a6e581bbf45891457ee632a07416982.zip
gcc-c2bb84be4a6e581bbf45891457ee632a07416982.tar.gz
gcc-c2bb84be4a6e581bbf45891457ee632a07416982.tar.bz2
[PATCH 2/5][Arm] New pattern for CSINV instructions
This patch adds a new pattern, *thumb2_csinv, for generating CSINV nstructions. This pattern relies on a few general changes that will be used throughout the following patches: - A new macro, TARGET_COND_ARITH, which is only true on 8.1-M Mainline and represents the existence of these conditional instructions. - A change to the cond exec hook, arm_have_conditional_execution, which now returns false if TARGET_COND_ARITH before reload. This allows for some ifcvt transformations when they would usually be disabled. I've written a rather verbose comment (with the risk of over-explaining) as it's a bit of a confusing change. - One new predicate. - *thumb2_movcond has been restricted to only match if !TARGET_COND_ARITH, otherwise it triggers undesirable combines. gcc/ChangeLog: * config/arm/arm.h (TARGET_COND_ARITH): New macro. * config/arm/arm.c (arm_have_conditional_execution): Return false if TARGET_COND_ARITH before reload. * config/arm/predicates.md (arm_comparison_operation): Returns true if comparing CC_REGNUM with constant zero. * config/arm/thumb2.md (*thumb2_csinv): New. (*thumb2_movcond): Don't match if TARGET_COND_ARITH. gcc/testsuite/ChangeLog: * gcc.target/arm/csinv-1.c: New test. Co-authored-by: Omar Tahir <omar.tahir@arm.com>
Diffstat (limited to 'gcc/c')
0 files changed, 0 insertions, 0 deletions