[Patch AArch64] Stop generating BSL for simple integer code
commitaea4b54ac5416359c52092eee347164e5ea99c06
authorJames Greenhalgh <james.greenhalgh@arm.com>
Tue, 14 Nov 2017 14:09:57 +0000 (14 14:09 +0000)
committerJames Greenhalgh <jgreenhalgh@gcc.gnu.org>
Tue, 14 Nov 2017 14:09:57 +0000 (14 14:09 +0000)
treeef79035422c96dff4aca96d83145a4a57504faa6
parentfee234f10fa45066a0a50a3312a642fe8c6c17b5
[Patch AArch64] Stop generating BSL for simple integer code

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<mode>_internal): Remove DImode.
(*aarch64_simd_bsl<mode>_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.

From-SVN: r254727
gcc/ChangeLog
gcc/config/aarch64/aarch64-simd.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/bsl-idiom.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/copysign-bsl.c [new file with mode: 0644]