diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2019-08-14 11:00:45 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2019-08-14 11:00:45 +0000 |
commit | d113ece60450b2efb07e9057b6d2732b08fee2c4 (patch) | |
tree | 7cb08921e0414ae8773c1c4a22a4dfa895f4611f /gcc/builtins.c | |
parent | c5e16983cd1bd6dd6eca1b939c3c8859f0c6c866 (diff) | |
download | gcc-d113ece60450b2efb07e9057b6d2732b08fee2c4.zip gcc-d113ece60450b2efb07e9057b6d2732b08fee2c4.tar.gz gcc-d113ece60450b2efb07e9057b6d2732b08fee2c4.tar.bz2 |
[AArch64] Use SVE UXT[BHW] as a form of predicated AND
UXTB, UXTH and UXTW are equivalent to predicated ANDs with the constants
0xff, 0xffff and 0xffffffff respectively. This patch uses them in the
patterns for IFN_COND_AND.
2019-08-14 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* config/aarch64/aarch64.c (aarch64_print_operand): Allow %e to
take the equivalent mask, as well as a bit count.
* config/aarch64/predicates.md (aarch64_sve_uxtb_immediate)
(aarch64_sve_uxth_immediate, aarch64_sve_uxt_immediate)
(aarch64_sve_pred_and_operand): New predicates.
* config/aarch64/iterators.md (sve_pred_int_rhs2_operand): New
code attribute.
* config/aarch64/aarch64-sve.md
(cond_<SVE_INT_BINARY:optab><SVE_I:mode>): Use it.
(*cond_uxt<mode>_2, *cond_uxt<mode>_any): New patterns.
gcc/testsuite/
* gcc.target/aarch64/sve/cond_uxt_1.c: New test.
* gcc.target/aarch64/sve/cond_uxt_1_run.c: Likewise.
* gcc.target/aarch64/sve/cond_uxt_2.c: Likewise.
* gcc.target/aarch64/sve/cond_uxt_2_run.c: Likewise.
* gcc.target/aarch64/sve/cond_uxt_3.c: Likewise.
* gcc.target/aarch64/sve/cond_uxt_3_run.c: Likewise.
* gcc.target/aarch64/sve/cond_uxt_4.c: Likewise.
* gcc.target/aarch64/sve/cond_uxt_4_run.c: Likewise.
From-SVN: r274479
Diffstat (limited to 'gcc/builtins.c')
0 files changed, 0 insertions, 0 deletions