AArch64: Implement vstrq_p128 intrinsic

This patch implements the missing vstrq_p128 intrinsic.
It just performs a store of the poly128_t argument to a memory location.

Bootstrapped and tested on aarch64-none-linux-gnu.

gcc/
	PR target/71233
	* config/aarch64/arm_neon.h (vstrq_p128): Define.

gcc/testsuite/
	PR target/71233
	* gcc.target/aarch64/simd/vstrq_p128_1.c: New test.
This commit is contained in:
Kyrylo Tkachov 2020-09-23 10:29:17 +01:00
parent 5253b3e6de
commit d23ea1e865
2 changed files with 19 additions and 0 deletions

View File

@ -30167,6 +30167,13 @@ vst4q_p64 (poly64_t * __a, poly64x2x4_t __val)
__builtin_aarch64_st4v2di ((__builtin_aarch64_simd_di *) __a, __o);
}
__extension__ extern __inline void
__attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
vstrq_p128 (poly128_t * __ptr, poly128_t __val)
{
*__ptr = __val;
}
/* vsub */
__extension__ extern __inline int64_t

View File

@ -0,0 +1,12 @@
/* { dg-do compile } */
/* { dg-options "-O" } */
#include <arm_neon.h>
void
test (poly128_t *ptr, poly128_t a)
{
vstrq_p128 (ptr, a);
}
/* { dg-final { scan-assembler-times {stp.*x2,.*x3,.*[x0]} 1 } } */