arm: Mve testsuite improvements

Hello all,

this patch improves a number of MVE tests in the testsuite for more
precise and better coverage using check-function-bodies instead of
scan-assembler checks.  Also all intrusctions prescribed in the ACLE[1]
are now checked.

Best Regards

  Andrea

[1] <https://github.com/ARM-software/acle>

gcc/testsuite/ChangeLog:

	* gcc.target/arm/mve/intrinsics/vld1q_f16.c: Use
	check-function-bodies instead of scan-assembler checks.  Use
	extern "C" for C++ testing.
	* gcc.target/arm/mve/intrinsics/vld1q_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_z_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_z_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_z_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_z_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_z_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_z_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_z_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld1q_z_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld4q_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld4q_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld4q_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld4q_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld4q_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld4q_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld4q_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vld4q_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_gather_offset_z_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_z_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_z_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_z_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_z_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_z_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_base_s64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_base_u64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_s64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_u64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_s64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_u64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_s64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_z_u64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_s64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_u64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_s64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrdq_gather_shifted_offset_z_u64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_offset_z_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_gather_shifted_offset_z_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_z_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_z_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_z_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_z_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrhq_z_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_base_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_base_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_base_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_offset_z_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_gather_shifted_offset_z_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst2q_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst2q_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst2q_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst2q_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst2q_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst2q_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst2q_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst2q_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst4q_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst4q_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst4q_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst4q_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst4q_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst4q_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst4q_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vst4q_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_p_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_p_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_p_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_p_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_p_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_p_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_p_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_scatter_offset_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrbq_u8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_p_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_p_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_p_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_p_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_p_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_p_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_offset_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_f16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_p_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_scatter_shifted_offset_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrhq_u32.c: Likewise.
This commit is contained in:
Andrea Corallo 2023-02-28 11:03:18 +01:00 committed by Stam Markianos-Wright
parent b14af30496
commit ebce8ee899
194 changed files with 5171 additions and 1035 deletions

View file

@ -1,20 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
float16x8_t
foo (float16_t const * base)
foo (float16_t const *base)
{
return vld1q_f16 (base);
}
/*
**foo1:
** ...
** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
float16x8_t
foo1 (float16_t const * base)
foo1 (float16_t const *base)
{
return vld1q (base);
}
/* { dg-final { scan-assembler-times "vldrh.16" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,20 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
float32x4_t
foo (float32_t const * base)
foo (float32_t const *base)
{
return vld1q_f32 (base);
}
/*
**foo1:
** ...
** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
float32x4_t
foo1 (float32_t const * base)
foo1 (float32_t const *base)
{
return vld1q (base);
}
/* { dg-final { scan-assembler-times "vldrw.32" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,20 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int16x8_t
foo (int16_t const * base)
foo (int16_t const *base)
{
return vld1q_s16 (base);
}
/*
**foo1:
** ...
** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int16x8_t
foo1 (int16_t const * base)
foo1 (int16_t const *base)
{
return vld1q (base);
}
/* { dg-final { scan-assembler-times "vldrh.16" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,20 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int32x4_t
foo (int32_t const * base)
foo (int32_t const *base)
{
return vld1q_s32 (base);
}
/*
**foo1:
** ...
** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int32x4_t
foo1 (int32_t const * base)
foo1 (int32_t const *base)
{
return vld1q (base);
}
/* { dg-final { scan-assembler-times "vldrw.32" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,20 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int8x16_t
foo (int8_t const * base)
foo (int8_t const *base)
{
return vld1q_s8 (base);
}
/*
**foo1:
** ...
** vldrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int8x16_t
foo1 (int8_t const * base)
foo1 (int8_t const *base)
{
return vld1q (base);
}
/* { dg-final { scan-assembler-times "vldrb.8" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,20 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint16x8_t
foo (uint16_t const * base)
foo (uint16_t const *base)
{
return vld1q_u16 (base);
}
/*
**foo1:
** ...
** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint16x8_t
foo1 (uint16_t const * base)
foo1 (uint16_t const *base)
{
return vld1q (base);
}
/* { dg-final { scan-assembler-times "vldrh.16" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,20 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint32_t const * base)
foo (uint32_t const *base)
{
return vld1q_u32 (base);
}
/*
**foo1:
** ...
** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint32x4_t
foo1 (uint32_t const * base)
foo1 (uint32_t const *base)
{
return vld1q (base);
}
/* { dg-final { scan-assembler-times "vldrw.32" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,20 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint8x16_t
foo (uint8_t const * base)
foo (uint8_t const *base)
{
return vld1q_u8 (base);
}
/*
**foo1:
** ...
** vldrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint8x16_t
foo1 (uint8_t const * base)
foo1 (uint8_t const *base)
{
return vld1q (base);
}
/* { dg-final { scan-assembler-times "vldrb.8" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
float16x8_t
foo (float16_t const * base, mve_pred16_t p)
foo (float16_t const *base, mve_pred16_t p)
{
return vld1q_z_f16 (base, p);
}
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
float16x8_t
foo1 (float16_t const * base, mve_pred16_t p)
foo1 (float16_t const *base, mve_pred16_t p)
{
return vld1q_z (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 2 } } */
/* { dg-final { scan-assembler-times "vldrht.16" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
float32x4_t
foo (float32_t const * base, mve_pred16_t p)
foo (float32_t const *base, mve_pred16_t p)
{
return vld1q_z_f32 (base, p);
}
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
float32x4_t
foo1 (float32_t const * base, mve_pred16_t p)
foo1 (float32_t const *base, mve_pred16_t p)
{
return vld1q_z (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 2 } } */
/* { dg-final { scan-assembler-times "vldrwt.32" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int16x8_t
foo (int16_t const * base, mve_pred16_t p)
foo (int16_t const *base, mve_pred16_t p)
{
return vld1q_z_s16 (base, p);
}
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int16x8_t
foo1 (int16_t const * base, mve_pred16_t p)
foo1 (int16_t const *base, mve_pred16_t p)
{
return vld1q_z (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 2 } } */
/* { dg-final { scan-assembler-times "vldrht.16" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int32x4_t
foo (int32_t const * base, mve_pred16_t p)
foo (int32_t const *base, mve_pred16_t p)
{
return vld1q_z_s32 (base, p);
}
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int32x4_t
foo1 (int32_t const * base, mve_pred16_t p)
foo1 (int32_t const *base, mve_pred16_t p)
{
return vld1q_z (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 2 } } */
/* { dg-final { scan-assembler-times "vldrwt.32" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int8x16_t
foo (int8_t const * base, mve_pred16_t p)
foo (int8_t const *base, mve_pred16_t p)
{
return vld1q_z_s8 (base, p);
}
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int8x16_t
foo1 (int8_t const * base, mve_pred16_t p)
foo1 (int8_t const *base, mve_pred16_t p)
{
return vld1q_z (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 2 } } */
/* { dg-final { scan-assembler-times "vldrbt.8" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint16x8_t
foo (uint16_t const * base, mve_pred16_t p)
foo (uint16_t const *base, mve_pred16_t p)
{
return vld1q_z_u16 (base, p);
}
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint16x8_t
foo1 (uint16_t const * base, mve_pred16_t p)
foo1 (uint16_t const *base, mve_pred16_t p)
{
return vld1q_z (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 2 } } */
/* { dg-final { scan-assembler-times "vldrht.16" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint32_t const * base, mve_pred16_t p)
foo (uint32_t const *base, mve_pred16_t p)
{
return vld1q_z_u32 (base, p);
}
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrwt.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint32x4_t
foo1 (uint32_t const * base, mve_pred16_t p)
foo1 (uint32_t const *base, mve_pred16_t p)
{
return vld1q_z (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 2 } } */
/* { dg-final { scan-assembler-times "vldrwt.32" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint8x16_t
foo (uint8_t const * base, mve_pred16_t p)
foo (uint8_t const *base, mve_pred16_t p)
{
return vld1q_z_u8 (base, p);
}
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint8x16_t
foo1 (uint8_t const * base, mve_pred16_t p)
foo1 (uint8_t const *base, mve_pred16_t p)
{
return vld1q_z (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 2 } } */
/* { dg-final { scan-assembler-times "vldrbt.8" 2 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,24 +1,47 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vld40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
float16x8x4_t
foo (float16_t const * addr)
foo (float16_t const *addr)
{
return vld4q_f16 (addr);
}
/* { dg-final { scan-assembler "vld40.16" } } */
/* { dg-final { scan-assembler "vld41.16" } } */
/* { dg-final { scan-assembler "vld42.16" } } */
/* { dg-final { scan-assembler "vld43.16" } } */
/*
**foo1:
** ...
** vld40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
float16x8x4_t
foo1 (float16_t const * addr)
foo1 (float16_t const *addr)
{
return vld4q (addr);
}
/* { dg-final { scan-assembler "vld40.16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,24 +1,47 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vld40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
float32x4x4_t
foo (float32_t const * addr)
foo (float32_t const *addr)
{
return vld4q_f32 (addr);
}
/* { dg-final { scan-assembler "vld40.32" } } */
/* { dg-final { scan-assembler "vld41.32" } } */
/* { dg-final { scan-assembler "vld42.32" } } */
/* { dg-final { scan-assembler "vld43.32" } } */
/*
**foo1:
** ...
** vld40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
float32x4x4_t
foo1 (float32_t const * addr)
foo1 (float32_t const *addr)
{
return vld4q (addr);
}
/* { dg-final { scan-assembler "vld40.32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,24 +1,47 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vld40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
int16x8x4_t
foo (int16_t const * addr)
foo (int16_t const *addr)
{
return vld4q_s16 (addr);
}
/* { dg-final { scan-assembler "vld40.16" } } */
/* { dg-final { scan-assembler "vld41.16" } } */
/* { dg-final { scan-assembler "vld42.16" } } */
/* { dg-final { scan-assembler "vld43.16" } } */
/*
**foo1:
** ...
** vld40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
int16x8x4_t
foo1 (int16_t const * addr)
foo1 (int16_t const *addr)
{
return vld4q (addr);
}
/* { dg-final { scan-assembler "vld40.16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,24 +1,47 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vld40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
int32x4x4_t
foo (int32_t const * addr)
foo (int32_t const *addr)
{
return vld4q_s32 (addr);
}
/* { dg-final { scan-assembler "vld40.32" } } */
/* { dg-final { scan-assembler "vld41.32" } } */
/* { dg-final { scan-assembler "vld42.32" } } */
/* { dg-final { scan-assembler "vld43.32" } } */
/*
**foo1:
** ...
** vld40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
int32x4x4_t
foo1 (int32_t const * addr)
foo1 (int32_t const *addr)
{
return vld4q (addr);
}
/* { dg-final { scan-assembler "vld40.32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,24 +1,47 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vld40.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
int8x16x4_t
foo (int8_t const * addr)
foo (int8_t const *addr)
{
return vld4q_s8 (addr);
}
/* { dg-final { scan-assembler "vld40.8" } } */
/* { dg-final { scan-assembler "vld41.8" } } */
/* { dg-final { scan-assembler "vld42.8" } } */
/* { dg-final { scan-assembler "vld43.8" } } */
/*
**foo1:
** ...
** vld40.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
int8x16x4_t
foo1 (int8_t const * addr)
foo1 (int8_t const *addr)
{
return vld4q (addr);
}
/* { dg-final { scan-assembler "vld40.8" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,24 +1,47 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vld40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
uint16x8x4_t
foo (uint16_t const * addr)
foo (uint16_t const *addr)
{
return vld4q_u16 (addr);
}
/* { dg-final { scan-assembler "vld40.16" } } */
/* { dg-final { scan-assembler "vld41.16" } } */
/* { dg-final { scan-assembler "vld42.16" } } */
/* { dg-final { scan-assembler "vld43.16" } } */
/*
**foo1:
** ...
** vld40.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.16 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
uint16x8x4_t
foo1 (uint16_t const * addr)
foo1 (uint16_t const *addr)
{
return vld4q (addr);
}
/* { dg-final { scan-assembler "vld40.16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,24 +1,47 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vld40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
uint32x4x4_t
foo (uint32_t const * addr)
foo (uint32_t const *addr)
{
return vld4q_u32 (addr);
}
/* { dg-final { scan-assembler "vld40.32" } } */
/* { dg-final { scan-assembler "vld41.32" } } */
/* { dg-final { scan-assembler "vld42.32" } } */
/* { dg-final { scan-assembler "vld43.32" } } */
/*
**foo1:
** ...
** vld40.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.32 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
uint32x4x4_t
foo1 (uint32_t const * addr)
foo1 (uint32_t const *addr)
{
return vld4q (addr);
}
/* { dg-final { scan-assembler "vld40.32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,24 +1,47 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vld40.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
uint8x16x4_t
foo (uint8_t const * addr)
foo (uint8_t const *addr)
{
return vld4q_u8 (addr);
}
/* { dg-final { scan-assembler "vld40.8" } } */
/* { dg-final { scan-assembler "vld41.8" } } */
/* { dg-final { scan-assembler "vld42.8" } } */
/* { dg-final { scan-assembler "vld43.8" } } */
/*
**foo1:
** ...
** vld40.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld41.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld42.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** vld43.8 {q[0-9+], q[0-9+], q[0-9+], q[0-9+]}, \[r[0-9+]\]
** ...
*/
uint8x16x4_t
foo1 (uint8_t const * addr)
foo1 (uint8_t const *addr)
{
return vld4q (addr);
}
/* { dg-final { scan-assembler "vld40.8" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.s16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int16x8_t
foo (int8_t const * base, uint16x8_t offset)
foo (int8_t const *base, uint16x8_t offset)
{
return vldrbq_gather_offset_s16 (base, offset);
}
/* { dg-final { scan-assembler "vldrb.s16" } } */
/*
**foo1:
** ...
** vldrb.s16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int16x8_t
foo1 (int8_t const * base, uint16x8_t offset)
foo1 (int8_t const *base, uint16x8_t offset)
{
return vldrbq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrb.s16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int32x4_t
foo (int8_t const * base, uint32x4_t offset)
foo (int8_t const *base, uint32x4_t offset)
{
return vldrbq_gather_offset_s32 (base, offset);
}
/* { dg-final { scan-assembler "vldrb.s32" } } */
/*
**foo1:
** ...
** vldrb.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int32x4_t
foo1 (int8_t const * base, uint32x4_t offset)
foo1 (int8_t const *base, uint32x4_t offset)
{
return vldrbq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrb.s32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int8x16_t
foo (int8_t const * base, uint8x16_t offset)
foo (int8_t const *base, uint8x16_t offset)
{
return vldrbq_gather_offset_s8 (base, offset);
}
/* { dg-final { scan-assembler "vldrb.u8" } } */
/*
**foo1:
** ...
** vldrb.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int8x16_t
foo1 (int8_t const * base, uint8x16_t offset)
foo1 (int8_t const *base, uint8x16_t offset)
{
return vldrbq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrb.u8" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint16x8_t
foo (uint8_t const * base, uint16x8_t offset)
foo (uint8_t const *base, uint16x8_t offset)
{
return vldrbq_gather_offset_u16 (base, offset);
}
/* { dg-final { scan-assembler "vldrb.u16" } } */
/*
**foo1:
** ...
** vldrb.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint16x8_t
foo1 (uint8_t const * base, uint16x8_t offset)
foo1 (uint8_t const *base, uint16x8_t offset)
{
return vldrbq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrb.u16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint8_t const * base, uint32x4_t offset)
foo (uint8_t const *base, uint32x4_t offset)
{
return vldrbq_gather_offset_u32 (base, offset);
}
/* { dg-final { scan-assembler "vldrb.u32" } } */
/*
**foo1:
** ...
** vldrb.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint32x4_t
foo1 (uint8_t const * base, uint32x4_t offset)
foo1 (uint8_t const *base, uint32x4_t offset)
{
return vldrbq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrb.u32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint8x16_t
foo (uint8_t const * base, uint8x16_t offset)
foo (uint8_t const *base, uint8x16_t offset)
{
return vldrbq_gather_offset_u8 (base, offset);
}
/* { dg-final { scan-assembler "vldrb.u8" } } */
/*
**foo1:
** ...
** vldrb.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint8x16_t
foo1 (uint8_t const * base, uint8x16_t offset)
foo1 (uint8_t const *base, uint8x16_t offset)
{
return vldrbq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrb.u8" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.s16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int16x8_t
foo (int8_t const * base, uint16x8_t offset, mve_pred16_t p)
foo (int8_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrbq_gather_offset_z_s16 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrbt.s16" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.s16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int16x8_t
foo1 (int8_t const * base, uint16x8_t offset, mve_pred16_t p)
foo1 (int8_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrbq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrbt.s16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int32x4_t
foo (int8_t const * base, uint32x4_t offset, mve_pred16_t p)
foo (int8_t const *base, uint32x4_t offset, mve_pred16_t p)
{
return vldrbq_gather_offset_z_s32 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrbt.s32" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int32x4_t
foo1 (int8_t const * base, uint32x4_t offset, mve_pred16_t p)
foo1 (int8_t const *base, uint32x4_t offset, mve_pred16_t p)
{
return vldrbq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrbt.s32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int8x16_t
foo (int8_t const * base, uint8x16_t offset, mve_pred16_t p)
foo (int8_t const *base, uint8x16_t offset, mve_pred16_t p)
{
return vldrbq_gather_offset_z_s8 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrbt.u8" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int8x16_t
foo1 (int8_t const * base, uint8x16_t offset, mve_pred16_t p)
foo1 (int8_t const *base, uint8x16_t offset, mve_pred16_t p)
{
return vldrbq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrbt.u8" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint16x8_t
foo (uint8_t const * base, uint16x8_t offset, mve_pred16_t p)
foo (uint8_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrbq_gather_offset_z_u16 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrbt.u16" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint16x8_t
foo1 (uint8_t const * base, uint16x8_t offset, mve_pred16_t p)
foo1 (uint8_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrbq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrbt.u16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint8_t const * base, uint32x4_t offset, mve_pred16_t p)
foo (uint8_t const *base, uint32x4_t offset, mve_pred16_t p)
{
return vldrbq_gather_offset_z_u32 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrbt.u32" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint32x4_t
foo1 (uint8_t const * base, uint32x4_t offset, mve_pred16_t p)
foo1 (uint8_t const *base, uint32x4_t offset, mve_pred16_t p)
{
return vldrbq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrbt.u32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint8x16_t
foo (uint8_t const * base, uint8x16_t offset, mve_pred16_t p)
foo (uint8_t const *base, uint8x16_t offset, mve_pred16_t p)
{
return vldrbq_gather_offset_z_u8 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrbt.u8" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.u8 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint8x16_t
foo1 (uint8_t const * base, uint8x16_t offset, mve_pred16_t p)
foo1 (uint8_t const *base, uint8x16_t offset, mve_pred16_t p)
{
return vldrbq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrbt.u8" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.s16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int16x8_t
foo (int8_t const * base)
foo (int8_t const *base)
{
return vldrbq_s16 (base);
}
/* { dg-final { scan-assembler "vldrb.s16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int32x4_t
foo (int8_t const * base)
foo (int8_t const *base)
{
return vldrbq_s32 (base);
}
/* { dg-final { scan-assembler "vldrb.s32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,14 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int8x16_t
foo (int8_t const * base)
foo (int8_t const *base)
{
return vldrbq_s8 (base);
}
/* { dg-final { scan-assembler-times "vldrb.8" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint16x8_t
foo (uint8_t const * base)
foo (uint8_t const *base)
{
return vldrbq_u16 (base);
}
/* { dg-final { scan-assembler "vldrb.u16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint8_t const * base)
foo (uint8_t const *base)
{
return vldrbq_u32 (base);
}
/* { dg-final { scan-assembler "vldrb.u32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,14 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrb.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint8x16_t
foo (uint8_t const * base)
foo (uint8_t const *base)
{
return vldrbq_u8 (base);
}
/* { dg-final { scan-assembler-times "vldrb.8" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.s16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int16x8_t
foo (int8_t const * base, mve_pred16_t p)
foo (int8_t const *base, mve_pred16_t p)
{
return vldrbq_z_s16 (base, p);
}
/* { dg-final { scan-assembler "vldrbt.s16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int32x4_t
foo (int8_t const * base, mve_pred16_t p)
foo (int8_t const *base, mve_pred16_t p)
{
return vldrbq_z_s32 (base, p);
}
/* { dg-final { scan-assembler "vldrbt.s32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,15 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int8x16_t
foo (int8_t const * base, mve_pred16_t p)
foo (int8_t const *base, mve_pred16_t p)
{
return vldrbq_z_s8 (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 1 } } */
/* { dg-final { scan-assembler-times "vldrbt.8" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint16x8_t
foo (uint8_t const * base, mve_pred16_t p)
foo (uint8_t const *base, mve_pred16_t p)
{
return vldrbq_z_u16 (base, p);
}
/* { dg-final { scan-assembler "vldrbt.u16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint8_t const * base, mve_pred16_t p)
foo (uint8_t const *base, mve_pred16_t p)
{
return vldrbq_z_u32 (base, p);
}
/* { dg-final { scan-assembler "vldrbt.u32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,15 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrbt.8 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint8x16_t
foo (uint8_t const * base, mve_pred16_t p)
foo (uint8_t const *base, mve_pred16_t p)
{
return vldrbq_z_u8 (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 1 } } */
/* { dg-final { scan-assembler-times "vldrbt.8" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrd.64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|)
** ...
*/
int64x2_t
foo (uint64x2_t addr)
{
return vldrdq_gather_base_s64 (addr, 8);
return vldrdq_gather_base_s64 (addr, 0);
}
/* { dg-final { scan-assembler "vldrd.64" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrd.64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|)
** ...
*/
uint64x2_t
foo (uint64x2_t addr)
{
return vldrdq_gather_base_u64 (addr, 8);
return vldrdq_gather_base_u64 (addr, 0);
}
/* { dg-final { scan-assembler "vldrd.64" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,16 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrd.64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|)
** ...
*/
int64x2_t
foo (uint64x2_t * addr)
foo (uint64x2_t *addr)
{
return vldrdq_gather_base_wb_s64 (addr, 8);
return vldrdq_gather_base_wb_s64 (addr, 0);
}
/* { dg-final { scan-assembler "vldrd.64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
/* { dg-final { scan-assembler-times "vldrw.u32" 1 } } */
/* { dg-final { scan-assembler-times "vstrw.32" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,16 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrd.64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|)
** ...
*/
uint64x2_t
foo (uint64x2_t * addr)
foo (uint64x2_t *addr)
{
return vldrdq_gather_base_wb_u64 (addr, 8);
return vldrdq_gather_base_wb_u64 (addr, 0);
}
/* { dg-final { scan-assembler "vldrd.64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
/* { dg-final { scan-assembler-times "vldrw.u32" 1 } } */
/* { dg-final { scan-assembler-times "vstrw.32" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,15 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
int64x2_t foo (uint64x2_t * addr, mve_pred16_t p)
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|)
** ...
*/
int64x2_t
foo (uint64x2_t *addr, mve_pred16_t p)
{
return vldrdq_gather_base_wb_z_s64 (addr, 1016, p);
return vldrdq_gather_base_wb_z_s64 (addr, 0, p);
}
/* { dg-final { scan-assembler "vpst" } } */
/* { dg-final { scan-assembler "vldrdt.u64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
/* { dg-final { scan-assembler-times "vldrw.u32" 1 } } */
/* { dg-final { scan-assembler-times "vstrw.32" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,15 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
uint64x2_t foo (uint64x2_t * addr, mve_pred16_t p)
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|)
** ...
*/
uint64x2_t
foo (uint64x2_t *addr, mve_pred16_t p)
{
return vldrdq_gather_base_wb_z_u64 (addr, 8, p);
return vldrdq_gather_base_wb_z_u64 (addr, 0, p);
}
/* { dg-final { scan-assembler "vpst" } } */
/* { dg-final { scan-assembler "vldrdt.u64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
/* { dg-final { scan-assembler-times "vldrw.u32" 1 } } */
/* { dg-final { scan-assembler-times "vstrw.32" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|)
** ...
*/
int64x2_t
foo (uint64x2_t addr, mve_pred16_t p)
{
return vldrdq_gather_base_z_s64 (addr, 8, p);
return vldrdq_gather_base_z_s64 (addr, 0, p);
}
/* { dg-final { scan-assembler "vldrdt.u64" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrdt.u64 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|)
** ...
*/
uint64x2_t
foo (uint64x2_t addr, mve_pred16_t p)
{
return vldrdq_gather_base_z_u64 (addr, 8, p);
return vldrdq_gather_base_z_u64 (addr, 0, p);
}
/* { dg-final { scan-assembler "vldrdt.u64" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int64x2_t
foo (int64_t const * base, uint64x2_t offset)
foo (int64_t const *base, uint64x2_t offset)
{
return vldrdq_gather_offset_s64 (base, offset);
}
/* { dg-final { scan-assembler "vldrd.u64" } } */
/*
**foo1:
** ...
** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int64x2_t
foo1 (int64_t const * base, uint64x2_t offset)
foo1 (int64_t const *base, uint64x2_t offset)
{
return vldrdq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrd.u64" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint64x2_t
foo (uint64_t const * base, uint64x2_t offset)
foo (uint64_t const *base, uint64x2_t offset)
{
return vldrdq_gather_offset_u64 (base, offset);
}
/* { dg-final { scan-assembler "vldrd.u64" } } */
/*
**foo1:
** ...
** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint64x2_t
foo1 (uint64_t const * base, uint64x2_t offset)
foo1 (uint64_t const *base, uint64x2_t offset)
{
return vldrdq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrd.u64" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int64x2_t
foo (int64_t const * base, uint64x2_t offset, mve_pred16_t p)
foo (int64_t const *base, uint64x2_t offset, mve_pred16_t p)
{
return vldrdq_gather_offset_z_s64 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrdt.u64" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int64x2_t
foo1 (int64_t const * base, uint64x2_t offset, mve_pred16_t p)
foo1 (int64_t const *base, uint64x2_t offset, mve_pred16_t p)
{
return vldrdq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrdt.u64" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint64x2_t
foo (uint64_t const * base, uint64x2_t offset, mve_pred16_t p)
foo (uint64_t const *base, uint64x2_t offset, mve_pred16_t p)
{
return vldrdq_gather_offset_z_u64 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrdt.u64" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint64x2_t
foo1 (uint64_t const * base, uint64x2_t offset, mve_pred16_t p)
foo1 (uint64_t const *base, uint64x2_t offset, mve_pred16_t p)
{
return vldrdq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrdt.u64" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|)
** ...
*/
int64x2_t
foo (int64_t const * base, uint64x2_t offset)
foo (int64_t const *base, uint64x2_t offset)
{
return vldrdq_gather_shifted_offset_s64 (base, offset);
}
/* { dg-final { scan-assembler "vldrd.u64" } } */
/*
**foo1:
** ...
** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|)
** ...
*/
int64x2_t
foo1 (int64_t const * base, uint64x2_t offset)
foo1 (int64_t const *base, uint64x2_t offset)
{
return vldrdq_gather_shifted_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrd.u64" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|)
** ...
*/
uint64x2_t
foo (uint64_t const * base, uint64x2_t offset)
foo (uint64_t const *base, uint64x2_t offset)
{
return vldrdq_gather_shifted_offset_u64 (base, offset);
}
/* { dg-final { scan-assembler "vldrd.u64" } } */
/*
**foo1:
** ...
** vldrd.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|)
** ...
*/
uint64x2_t
foo1 (uint64_t const * base, uint64x2_t offset)
foo1 (uint64_t const *base, uint64x2_t offset)
{
return vldrdq_gather_shifted_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrd.u64" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|)
** ...
*/
int64x2_t
foo (int64_t const * base, uint64x2_t offset, mve_pred16_t p)
foo (int64_t const *base, uint64x2_t offset, mve_pred16_t p)
{
return vldrdq_gather_shifted_offset_z_s64 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrdt.u64" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|)
** ...
*/
int64x2_t
foo1 (int64_t const * base, uint64x2_t offset, mve_pred16_t p)
foo1 (int64_t const *base, uint64x2_t offset, mve_pred16_t p)
{
return vldrdq_gather_shifted_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrdt.u64" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|)
** ...
*/
uint64x2_t
foo (uint64_t const * base, uint64x2_t offset, mve_pred16_t p)
foo (uint64_t const *base, uint64x2_t offset, mve_pred16_t p)
{
return vldrdq_gather_shifted_offset_z_u64 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrdt.u64" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrdt.u64 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #3\](?: @.*|)
** ...
*/
uint64x2_t
foo1 (uint64_t const * base, uint64x2_t offset, mve_pred16_t p)
foo1 (uint64_t const *base, uint64x2_t offset, mve_pred16_t p)
{
return vldrdq_gather_shifted_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrdt.u64" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,14 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
float16x8_t
foo (float16_t const * base)
foo (float16_t const *base)
{
return vldrhq_f16 (base);
}
/* { dg-final { scan-assembler-times "vldrh.16" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
float16x8_t
foo (float16_t const * base, uint16x8_t offset)
foo (float16_t const *base, uint16x8_t offset)
{
return vldrhq_gather_offset_f16 (base, offset);
}
/* { dg-final { scan-assembler "vldrh.f16" } } */
/*
**foo1:
** ...
** vldrh.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
float16x8_t
foo1 (float16_t const * base, uint16x8_t offset)
foo1 (float16_t const *base, uint16x8_t offset)
{
return vldrhq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrh.f16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int16x8_t
foo (int16_t const * base, uint16x8_t offset)
foo (int16_t const *base, uint16x8_t offset)
{
return vldrhq_gather_offset_s16 (base, offset);
}
/* { dg-final { scan-assembler "vldrh.u16" } } */
/*
**foo1:
** ...
** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int16x8_t
foo1 (int16_t const * base, uint16x8_t offset)
foo1 (int16_t const *base, uint16x8_t offset)
{
return vldrhq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrh.u16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int32x4_t
foo (int16_t const * base, uint32x4_t offset)
foo (int16_t const *base, uint32x4_t offset)
{
return vldrhq_gather_offset_s32 (base, offset);
}
/* { dg-final { scan-assembler "vldrh.s32" } } */
/*
**foo1:
** ...
** vldrh.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int32x4_t
foo1 (int16_t const * base, uint32x4_t offset)
foo1 (int16_t const *base, uint32x4_t offset)
{
return vldrhq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrh.s32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint16x8_t
foo (uint16_t const * base, uint16x8_t offset)
foo (uint16_t const *base, uint16x8_t offset)
{
return vldrhq_gather_offset_u16 (base, offset);
}
/* { dg-final { scan-assembler "vldrh.u16" } } */
/*
**foo1:
** ...
** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint16x8_t
foo1 (uint16_t const * base, uint16x8_t offset)
foo1 (uint16_t const *base, uint16x8_t offset)
{
return vldrhq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrh.u16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint16_t const * base, uint32x4_t offset)
foo (uint16_t const *base, uint32x4_t offset)
{
return vldrhq_gather_offset_u32 (base, offset);
}
/* { dg-final { scan-assembler "vldrh.u32" } } */
/*
**foo1:
** ...
** vldrh.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint32x4_t
foo1 (uint16_t const * base, uint32x4_t offset)
foo1 (uint16_t const *base, uint32x4_t offset)
{
return vldrhq_gather_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrh.u32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
float16x8_t
foo (float16_t const * base, uint16x8_t offset, mve_pred16_t p)
foo (float16_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrhq_gather_offset_z_f16 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.f16" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
float16x8_t
foo1 (float16_t const * base, uint16x8_t offset, mve_pred16_t p)
foo1 (float16_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrhq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.f16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int16x8_t
foo (int16_t const * base, uint16x8_t offset, mve_pred16_t p)
foo (int16_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrhq_gather_offset_z_s16 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.u16" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int16x8_t
foo1 (int16_t const * base, uint16x8_t offset, mve_pred16_t p)
foo1 (int16_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrhq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.u16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int32x4_t
foo (int16_t const * base, uint32x4_t offset, mve_pred16_t p)
foo (int16_t const *base, uint32x4_t offset, mve_pred16_t p)
{
return vldrhq_gather_offset_z_s32 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.s32" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
int32x4_t
foo1 (int16_t const * base, uint32x4_t offset, mve_pred16_t p)
foo1 (int16_t const *base, uint32x4_t offset, mve_pred16_t p)
{
return vldrhq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.s32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint16x8_t
foo (uint16_t const * base, uint16x8_t offset, mve_pred16_t p)
foo (uint16_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrhq_gather_offset_z_u16 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.u16" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint16x8_t
foo1 (uint16_t const * base, uint16x8_t offset, mve_pred16_t p)
foo1 (uint16_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrhq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.u16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint16_t const * base, uint32x4_t offset, mve_pred16_t p)
foo (uint16_t const *base, uint32x4_t offset, mve_pred16_t p)
{
return vldrhq_gather_offset_z_u32 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.u32" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+\](?: @.*|)
** ...
*/
uint32x4_t
foo1 (uint16_t const * base, uint32x4_t offset, mve_pred16_t p)
foo1 (uint16_t const *base, uint32x4_t offset, mve_pred16_t p)
{
return vldrhq_gather_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.u32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
float16x8_t
foo (float16_t const * base, uint16x8_t offset)
foo (float16_t const *base, uint16x8_t offset)
{
return vldrhq_gather_shifted_offset_f16 (base, offset);
}
/* { dg-final { scan-assembler "vldrh.f16" } } */
/*
**foo1:
** ...
** vldrh.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
float16x8_t
foo1 (float16_t const * base, uint16x8_t offset)
foo1 (float16_t const *base, uint16x8_t offset)
{
return vldrhq_gather_shifted_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrh.f16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
int16x8_t
foo (int16_t const * base, uint16x8_t offset)
foo (int16_t const *base, uint16x8_t offset)
{
return vldrhq_gather_shifted_offset_s16 (base, offset);
}
/* { dg-final { scan-assembler "vldrh.u16" } } */
/*
**foo1:
** ...
** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
int16x8_t
foo1 (int16_t const * base, uint16x8_t offset)
foo1 (int16_t const *base, uint16x8_t offset)
{
return vldrhq_gather_shifted_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrh.u16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
int32x4_t
foo (int16_t const * base, uint32x4_t offset)
foo (int16_t const *base, uint32x4_t offset)
{
return vldrhq_gather_shifted_offset_s32 (base, offset);
}
/* { dg-final { scan-assembler "vldrh.s32" } } */
/*
**foo1:
** ...
** vldrh.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
int32x4_t
foo1 (int16_t const * base, uint32x4_t offset)
foo1 (int16_t const *base, uint32x4_t offset)
{
return vldrhq_gather_shifted_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrh.s32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
uint16x8_t
foo (uint16_t const * base, uint16x8_t offset)
foo (uint16_t const *base, uint16x8_t offset)
{
return vldrhq_gather_shifted_offset_u16 (base, offset);
}
/* { dg-final { scan-assembler "vldrh.u16" } } */
/*
**foo1:
** ...
** vldrh.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
uint16x8_t
foo1 (uint16_t const * base, uint16x8_t offset)
foo1 (uint16_t const *base, uint16x8_t offset)
{
return vldrhq_gather_shifted_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrh.u16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,41 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint16_t const * base, uint32x4_t offset)
foo (uint16_t const *base, uint32x4_t offset)
{
return vldrhq_gather_shifted_offset_u32 (base, offset);
}
/* { dg-final { scan-assembler "vldrh.u32" } } */
/*
**foo1:
** ...
** vldrh.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
uint32x4_t
foo1 (uint16_t const * base, uint32x4_t offset)
foo1 (uint16_t const *base, uint32x4_t offset)
{
return vldrhq_gather_shifted_offset (base, offset);
}
/* { dg-final { scan-assembler "vldrh.u32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
float16x8_t
foo (float16_t const * base, uint16x8_t offset, mve_pred16_t p)
foo (float16_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrhq_gather_shifted_offset_z_f16 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.f16" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.f16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
float16x8_t
foo1 (float16_t const * base, uint16x8_t offset, mve_pred16_t p)
foo1 (float16_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrhq_gather_shifted_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.f16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
int16x8_t
foo (int16_t const * base, uint16x8_t offset, mve_pred16_t p)
foo (int16_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrhq_gather_shifted_offset_z_s16 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.u16" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
int16x8_t
foo1 (int16_t const * base, uint16x8_t offset, mve_pred16_t p)
foo1 (int16_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrhq_gather_shifted_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.u16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
int32x4_t
foo (int16_t const * base, uint32x4_t offset, mve_pred16_t p)
foo (int16_t const *base, uint32x4_t offset, mve_pred16_t p)
{
return vldrhq_gather_shifted_offset_z_s32 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.s32" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
int32x4_t
foo1 (int16_t const * base, uint32x4_t offset, mve_pred16_t p)
foo1 (int16_t const *base, uint32x4_t offset, mve_pred16_t p)
{
return vldrhq_gather_shifted_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.s32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
uint16x8_t
foo (uint16_t const * base, uint16x8_t offset, mve_pred16_t p)
foo (uint16_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrhq_gather_shifted_offset_z_u16 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.u16" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u16 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
uint16x8_t
foo1 (uint16_t const * base, uint16x8_t offset, mve_pred16_t p)
foo1 (uint16_t const *base, uint16x8_t offset, mve_pred16_t p)
{
return vldrhq_gather_shifted_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.u16" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,21 +1,49 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint16_t const * base, uint32x4_t offset, mve_pred16_t p)
foo (uint16_t const *base, uint32x4_t offset, mve_pred16_t p)
{
return vldrhq_gather_shifted_offset_z_u32 (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.u32" } } */
/*
**foo1:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+), q[0-9]+, uxtw #1\](?: @.*|)
** ...
*/
uint32x4_t
foo1 (uint16_t const * base, uint32x4_t offset, mve_pred16_t p)
foo1 (uint16_t const *base, uint32x4_t offset, mve_pred16_t p)
{
return vldrhq_gather_shifted_offset_z (base, offset, p);
}
/* { dg-final { scan-assembler "vldrht.u32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,14 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int16x8_t
foo (int16_t const * base)
foo (int16_t const *base)
{
return vldrhq_s16 (base);
}
/* { dg-final { scan-assembler-times "vldrh.16" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,14 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int32x4_t
foo (int16_t const * base)
foo (int16_t const *base)
{
return vldrhq_s32 (base);
}
/* { dg-final { scan-assembler-times "vldrh.s32" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,14 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint16x8_t
foo (uint16_t const * base)
foo (uint16_t const *base)
{
return vldrhq_u16 (base);
}
/* { dg-final { scan-assembler-times "vldrh.16" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,14 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrh.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint16_t const * base)
foo (uint16_t const *base)
{
return vldrhq_u32 (base);
}
/* { dg-final { scan-assembler-times "vldrh.u32" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,15 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
float16x8_t
foo (float16_t const * base, mve_pred16_t p)
foo (float16_t const *base, mve_pred16_t p)
{
return vldrhq_z_f16 (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 1 } } */
/* { dg-final { scan-assembler-times "vldrht.16" 1 } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,15 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int16x8_t
foo (int16_t const * base, mve_pred16_t p)
foo (int16_t const *base, mve_pred16_t p)
{
return vldrhq_z_s16 (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 1 } } */
/* { dg-final { scan-assembler-times "vldrht.16" 1 } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,15 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.s32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
int32x4_t
foo (int16_t const * base, mve_pred16_t p)
foo (int16_t const *base, mve_pred16_t p)
{
return vldrhq_z_s32 (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 1 } } */
/* { dg-final { scan-assembler-times "vldrht.s32" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,15 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.16 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint16x8_t
foo (uint16_t const * base, mve_pred16_t p)
foo (uint16_t const *base, mve_pred16_t p)
{
return vldrhq_z_u16 (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 1 } } */
/* { dg-final { scan-assembler-times "vldrht.16" 1 } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,15 +1,32 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|)
** ...
** vpst(?: @.*|)
** ...
** vldrht.u32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint16_t const * base, mve_pred16_t p)
foo (uint16_t const *base, mve_pred16_t p)
{
return vldrhq_z_u32 (base, p);
}
/* { dg-final { scan-assembler-times "vpst" 1 } } */
/* { dg-final { scan-assembler-times "vldrht.u32" 1 } } */
/* { dg-final { scan-assembler-not "__ARM_undef" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,14 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrw.32 q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?: @.*|)
** ...
*/
float32x4_t
foo (float32_t const * base)
foo (float32_t const *base)
{
return vldrwq_f32 (base);
}
/* { dg-final { scan-assembler-times "vldrw.32" 1 } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|)
** ...
*/
float32x4_t
foo (uint32x4_t addr)
{
return vldrwq_gather_base_f32 (addr, 4);
return vldrwq_gather_base_f32 (addr, 0);
}
/* { dg-final { scan-assembler "vldrw.u32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|)
** ...
*/
int32x4_t
foo (uint32x4_t addr)
{
return vldrwq_gather_base_s32 (addr, 4);
return vldrwq_gather_base_s32 (addr, 0);
}
/* { dg-final { scan-assembler "vldrw.u32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,13 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\](?: @.*|)
** ...
*/
uint32x4_t
foo (uint32x4_t addr)
{
return vldrwq_gather_base_u32 (addr, 4);
return vldrwq_gather_base_u32 (addr, 0);
}
/* { dg-final { scan-assembler "vldrw.u32" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,16 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|)
** ...
*/
float32x4_t
foo (uint32x4_t * addr)
foo (uint32x4_t *addr)
{
return vldrwq_gather_base_wb_f32 (addr, 8);
return vldrwq_gather_base_wb_f32 (addr, 0);
}
/* { dg-final { scan-assembler "vldrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */
/* { dg-final { scan-assembler "vldrw.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
/* { dg-final { scan-assembler "vstrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

View file

@ -1,16 +1,28 @@
/* { dg-require-effective-target arm_v8_1m_mve_ok } */
/* { dg-add-options arm_v8_1m_mve } */
/* { dg-additional-options "-O2" } */
/* { dg-final { check-function-bodies "**" "" } } */
#include "arm_mve.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
**foo:
** ...
** vldrw.u32 q[0-9]+, \[q[0-9]+, #[0-9]+\]!(?: @.*|)
** ...
*/
int32x4_t
foo (uint32x4_t * addr)
foo (uint32x4_t *addr)
{
return vldrwq_gather_base_wb_s32 (addr, 8);
return vldrwq_gather_base_wb_s32 (addr, 0);
}
/* { dg-final { scan-assembler "vldrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */
/* { dg-final { scan-assembler "vldrw.u32\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
/* { dg-final { scan-assembler "vstrw.32\tq\[0-9\]+, \\\[r\[0-9\]+\\\]" } } */
#ifdef __cplusplus
}
#endif
/* { dg-final { scan-assembler-not "__ARM_undef" } } */

Some files were not shown because too many files have changed in this diff Show more