re PR target/70119 (AArch64 should take advantage of implicit truncation of variable...
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Thu, 29 Jun 2017 09:21:57 +0000 (09:21 +0000)
committerMichael Collison <collison@gcc.gnu.org>
Thu, 29 Jun 2017 09:21:57 +0000 (09:21 +0000)
commit7813b280435f2e19c53df9f8b04a3d28bb561aa8
tree98563d3d1aa4ffabc13c0d3178f3f9ad5dfe9233
parent696bafe61327dbf2ce2dee7262af8f18b23fcfa1
re PR target/70119 (AArch64 should take advantage of implicit truncation of variable shift amount without defining SHIFT_COUNT_TRUNCATED)

2017-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
    Michael Collison <michael.collison@arm.com>

PR target/70119
* config/aarch64/aarch64.md (*aarch64_<optab>_reg_<mode>3_mask1):
New pattern.
(*aarch64_reg_<mode>3_neg_mask2): New pattern.
(*aarch64_reg_<mode>3_minus_mask): New pattern.
(*aarch64_<optab>_reg_di3_mask2): New pattern.
* config/aarch64/aarch64.c (aarch64_rtx_costs): Account for cost
of shift when the shift amount is masked with constant equal to
the size of the mode.
* config/aarch64/predicates.md (subreg_lowpart_operator): New
predicate.

2017-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
    Michael Collison <michael.collison@arm.com>

PR target/70119
* gcc.target/aarch64/var_shift_mask_1.c: New test.

Co-Authored-By: Michael Collison <michael.collison@arm.com>
From-SVN: r249774
gcc/ChangeLog
gcc/config/aarch64/aarch64.c
gcc/config/aarch64/aarch64.md
gcc/config/aarch64/predicates.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/var_shift_mask_1.c [new file with mode: 0644]