aarch64: Enable aarch64_load to use UNSPEC_PRED_X loads
authorAndre Simoes Dias Vieira <andsim01@hw-a20-6.euhpc2.arm.com>
Mon, 17 May 2021 14:43:53 +0000 (15:43 +0100)
committerAndre Vieira <andre.simoesdiasvieira@arm.com>
Wed, 19 May 2021 13:02:51 +0000 (14:02 +0100)
commit7bb4b7a5ca984f7d860f33c9b791f425b264a71f
tree0e7f4b8ba45ae3d984c6df81ca31ae07204e362d
parent35a16e4b38eb9faf212de9814f17a5215fa5538a
aarch64: Enable aarch64_load to use UNSPEC_PRED_X loads

This patch will enable the use of loads using the UNSPEC_PRED_X enum in the
aarch64_load pattern, thus enabling combine to combine such loads with extends.

gcc/ChangeLog:
2021-05-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>

* config/aarch64/iterators.md (SVE_PRED_LOAD): New iterator.
(pred_load): New int attribute.
* config/aarch64/aarch64-sve.md
(aarch64_load_<ANY_EXTEND:optab><SVE_HSDI:mode><SVE_PARTIAL_I:mode>): Use
SVE_PRED_LOAD enum iterator and corresponding pred_load attribute.
* config/aarch64/aarch64-sve-builtins-base.cc (expand): Update call to
code_for_aarch64_load.

gcc/testsuite/ChangeLog:
2021-05-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>

* gcc.target/aarch64/sve/logical_unpacked_and_2.c: Change
scan-assembly-times to scan-assembly not for superfluous uxtb.
* gcc.target/aarch64/sve/logical_unpacked_and_3.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_and_4.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_and_6.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_and_7.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_eor_2.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_eor_3.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_eor_4.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_eor_6.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_eor_7.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_orr_2.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_orr_3.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_orr_4.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_orr_6.c: Likewise.
* gcc.target/aarch64/sve/logical_unpacked_orr_7.c: Likewise.
* gcc.target/aarch64/sve/ld1_extend.c: New test.
19 files changed:
gcc/config/aarch64/aarch64-sve-builtins-base.cc
gcc/config/aarch64/aarch64-sve.md
gcc/config/aarch64/iterators.md
gcc/testsuite/gcc.target/aarch64/sve/ld1_extend.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_and_2.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_and_3.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_and_4.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_and_6.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_and_7.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_eor_2.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_eor_3.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_eor_4.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_eor_6.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_eor_7.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_orr_2.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_orr_3.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_orr_4.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_orr_6.c
gcc/testsuite/gcc.target/aarch64/sve/logical_unpacked_orr_7.c