arm: Implement vceqq_p64, vceqz_p64 and vceqzq_p64 intrinsics
authorChristophe Lyon <christophe.lyon@linaro.org>
Thu, 15 Oct 2020 17:13:59 +0000 (17:13 +0000)
committerChristophe Lyon <christophe.lyon@linaro.org>
Fri, 15 Jan 2021 14:11:07 +0000 (14:11 +0000)
commit63999d751df9bcde4ab9107edb4c635d274b248d
treed7ba8a98614c88ae7a1fe717442f7635461515cb
parentf1d054017ef196644526def7070f20899da52e48
arm: Implement vceqq_p64, vceqz_p64 and vceqzq_p64 intrinsics

This patch adds implementations for vceqq_p64, vceqz_p64 and
vceqzq_p64 intrinsics.

vceqq_p64 uses the existing vceq_p64 after splitting the input vectors
into their high and low halves.

vceqz[q] simply call the vceq and vceqq with a second argument equal
to zero.

The added (executable) testcases make sure that the poly64x2_t
variants have results with one element of all zeroes (false) and the
other element with all bits set to one (true).

2021-01-15  Christophe Lyon  <christophe.lyon@linaro.org>

gcc/
PR target/71233
* config/arm/arm_neon.h (vceqz_p64, vceqq_p64, vceqzq_p64): New.

gcc/testsuite/
PR target/71233
* gcc.target/aarch64/advsimd-intrinsics/p64_p128.c: Add tests for
vceqz_p64, vceqq_p64 and vceqzq_p64.
* gcc.target/arm/simd/vceqz_p64.c: New test.
* gcc.target/arm/simd/vceqzq_p64.c: New test.
gcc/config/arm/arm_neon.h
gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/p64_p128.c
gcc/testsuite/gcc.target/arm/simd/vceqz_p64.c [new file with mode: 0644]
gcc/testsuite/gcc.target/arm/simd/vceqzq_p64.c [new file with mode: 0644]