[AArch64] Add SVE mul_highpart patterns
authorRichard Sandiford <richard.sandiford@linaro.org>
Tue, 13 Mar 2018 15:12:14 +0000 (15:12 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 13 Mar 2018 15:12:14 +0000 (15:12 +0000)
commit11e9443f49729ae4ddfc9dda63b5ad7f65f33170
treebca5ae159b99940d6448ecc1c33e26fca91d47f6
parentc9b39302efd79e2ef9c8f922b3068633edd40e76
[AArch64] Add SVE mul_highpart patterns

One advantage of the new permute handling compared to the old way is
that we can now easily take advantage of the vectoriser's divmod patterns
for SVE.

2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
(UNSPEC_UMUL_HIGHPART): New constants.
(MUL_HIGHPART): New int iteraor.
(su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
* config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
define_expand.
(*<su>mul<mode>3_highpart): New define_insn.

gcc/testsuite/
* gcc.target/aarch64/sve/mul_highpart_1.c: New test.
* gcc.target/aarch64/sve/mul_highpart_1_run.c: Likewise.

From-SVN: r258487
gcc/ChangeLog
gcc/config/aarch64/aarch64-sve.md
gcc/config/aarch64/iterators.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/mul_highpart_1_run.c [new file with mode: 0644]