diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2020-09-23 10:32:42 +0100 |
---|---|---|
committer | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2020-09-23 10:32:42 +0100 |
commit | f2868e4bcff2c7b882d01231f039459c00e59d7b (patch) | |
tree | a682154ebbf8b1ffad569b271bebe3fb0c359414 /gcc | |
parent | d23ea1e865301cd45f14ccbdb0bca49251fde9e1 (diff) | |
download | gcc-f2868e4bcff2c7b882d01231f039459c00e59d7b.zip gcc-f2868e4bcff2c7b882d01231f039459c00e59d7b.tar.gz gcc-f2868e4bcff2c7b882d01231f039459c00e59d7b.tar.bz2 |
AArch64: Implement vldrq_p128 intrinsic
This patch implements the missing vldrq_p128 intrinsic that just loads from the appropriate pointer.
Bootstrapped and tested on aarch64-none-linux-gnu.
gcc/
PR target/71233
* config/aarch64/arm_neon.h (vldrq_p128): Define.
gcc/testsuite/
PR target/71233
* gcc.target/aarch64/simd/vldrq_p128_1.c: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/aarch64/arm_neon.h | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/simd/vldrq_p128_1.c | 13 |
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h index fe1ab0d..32b0877 100644 --- a/gcc/config/aarch64/arm_neon.h +++ b/gcc/config/aarch64/arm_neon.h @@ -19676,6 +19676,13 @@ vld4q_p64 (const poly64_t * __a) return ret; } +__extension__ extern __inline poly128_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +vldrq_p128 (const poly128_t * __ptr) +{ + return *__ptr; +} + /* vldn_dup */ __extension__ extern __inline int8x8x2_t diff --git a/gcc/testsuite/gcc.target/aarch64/simd/vldrq_p128_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vldrq_p128_1.c new file mode 100644 index 0000000..9c7e01b --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/simd/vldrq_p128_1.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O" } */ + +#include <arm_neon.h> + +poly128_t +test (poly128_t * p) +{ + return vldrq_p128 (p); +} + +/* { dg-final { scan-assembler-times {ldp.*x0,.*x1,.*[x0]} 1 } } */ + |