re PR target/88837 ([SVE] Poor vector construction code in VL-specific mode)
authorPrathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
Mon, 3 Jun 2019 09:35:37 +0000 (09:35 +0000)
committerPrathamesh Kulkarni <prathamesh3492@gcc.gnu.org>
Mon, 3 Jun 2019 09:35:37 +0000 (09:35 +0000)
commit3a0afad0d212b3ff213b393728e018caf2daa526
treeefddc0e470e94420797801cb9068bc7998629cce
parentbcde3345ea97aef36f5b4e29f09f71bcd41879b2
re PR target/88837 ([SVE] Poor vector construction code in VL-specific mode)

2019-06-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

PR target/88837
* vector-builder.h (vector_builder::count_dups): New method.
* config/aarch64/aarch64-protos.h (aarch64_expand_sve_vector_init):
Declare prototype.
* config/aarch64/aarch64/sve.md (aarch64_sve_rev64<mode>): Use @.
(vec_init<mode><Vel>): New pattern.
* config/aarch64/aarch64.c (emit_insr): New function.
(aarch64_sve_expand_vector_init_handle_trailing_constants): Likewise.
(aarch64_sve_expand_vector_init_insert_elems): Likewise.
(aarch64_sve_expand_vector_init_handle_trailing_same_elem): Likewise.
(aarch64_sve_expand_vector_init): Define two overloaded functions.

testsuite/
* gcc.target/aarch64/sve/init_1.c: New test.
* gcc.target/aarch64/sve/init_1_run.c: Likewise.
* gcc.target/aarch64/sve/init_2.c: Likewise.
* gcc.target/aarch64/sve/init_2_run.c: Likewise.
* gcc.target/aarch64/sve/init_3.c: Likewise.
* gcc.target/aarch64/sve/init_3_run.c: Likewise.
* gcc.target/aarch64/sve/init_4.c: Likewise.
* gcc.target/aarch64/sve/init_4_run.c: Likewise.
* gcc.target/aarch64/sve/init_5.c: Likewise.
* gcc.target/aarch64/sve/init_5_run.c: Likewise.
* gcc.target/aarch64/sve/init_6.c: Likewise.
* gcc.target/aarch64/sve/init_6_run.c: Likewise.
* gcc.target/aarch64/sve/init_7.c: Likewise.
* gcc.target/aarch64/sve/init_7_run.c: Likewise.
* gcc.target/aarch64/sve/init_8.c: Likewise.
* gcc.target/aarch64/sve/init_8_run.c: Likewise.
* gcc.target/aarch64/sve/init_9.c: Likewise.
* gcc.target/aarch64/sve/init_9_run.c: Likewise.
* gcc.target/aarch64/sve/init_10.c: Likewise.
* gcc.target/aarch64/sve/init_10_run.c: Likewise.
* gcc.target/aarch64/sve/init_11.c: Likewise.
* gcc.target/aarch64/sve/init_11_run.c: Likewise.
* gcc.target/aarch64/sve/init_12.c: Likewise.
* gcc.target/aarch64/sve/init_12_run.c: Likewise.

From-SVN: r271857
30 files changed:
gcc/ChangeLog
gcc/config/aarch64/aarch64-protos.h
gcc/config/aarch64/aarch64-sve.md
gcc/config/aarch64/aarch64.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/sve/init_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_10_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_11_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_12.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_12_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_1_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_2_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_3_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_4_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_5_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_6_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_7_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_8_run.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_9.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/init_9_run.c [new file with mode: 0644]
gcc/vector-builder.h