[Patch AArch64] Stop generating BSL for simple integer code

Programming / Compilers / GCC - jgreenhalgh [138bc75d-0d04-0410-961f-82ee72b054a4] - 14 November 2017 14:09 EST

Turn aarch64_simd_bsldi_internal in to an insn_and_split that knows to split back to integer operations if the register allocation falls that way. Do this to avoid having to move between integer and Advanced SIMD register files just for a single BSL.


gcc/

- config/aarch64/aarch64-simd.md (aarch64_simd_bsl_internal): Remove DImode. (*aarch64_simd_bsl_alt): Likewise. (aarch64_simd_bsldi_internal): New. (aarch64_simd_bsldi_alt): Likewise.

gcc/testsuite/

- gcc.target/aarch64/bsl-idiom.c: New.
- gcc.target/aarch64/copysign-bsl.c: New.

6b254488f61 [Patch AArch64] Stop generating BSL for simple integer code
gcc/ChangeLog | 8 ++
gcc/config/aarch64/aarch64-simd.md | 122 +++++++++++++++++++++---
gcc/testsuite/ChangeLog | 5 +
gcc/testsuite/gcc.target/aarch64/bsl-idiom.c | 88 +++++++++++++++++
gcc/testsuite/gcc.target/aarch64/copysign-bsl.c | 13 +++
5 files changed, 222 insertions(+), 14 deletions(-)

Upstream: gcc.gnu.org


  • Share