blob: 15c6496732a31259ebcceebeb8ac65e071a04b20 [file] [log] [blame]
/* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
/* { dg-add-options arm_v8_1m_mve_fp } */
/* { dg-additional-options "-O2" } */
#include "arm_mve.h"
mve_pred16_t __p;
int
foows32(uint32x4_t pDataDest, int32x4_t value, int32_t * ret)
{
const uint32x4_t vecOffs1 = { 0, 3, 6, 1};
const uint32x4_t vecOffs2 = { 4, 7, 2, 5};
vstrwq_scatter_base_p_s32 (pDataDest, 4, value, __p);
vstrwq_scatter_base_p_s32 (pDataDest, 132, value, __p);
vstrwq_scatter_offset_p_s32 (ret, vecOffs1, (int32x4_t) pDataDest, __p);
vstrwq_scatter_offset_p_s32 (ret, vecOffs2, (int32x4_t) pDataDest, __p);
return 0;
}
int
foowu32(uint32x4_t pDataDest, uint32x4_t value, int32_t * ret)
{
const uint32x4_t vecOffs1 = { 0, 3, 6, 1};
const uint32x4_t vecOffs2 = { 4, 7, 2, 5};
vstrwq_scatter_base_p_u32 (pDataDest, 4, value, __p);
vstrwq_scatter_base_p_u32 (pDataDest, 132, value, __p);
vstrwq_scatter_offset_p_s32 (ret, vecOffs1, (int32x4_t) pDataDest, __p);
vstrwq_scatter_offset_p_s32 (ret, vecOffs2, (int32x4_t) pDataDest, __p);
return 0;
}
int
foowf32(uint32x4_t pDataDest, float32x4_t value, int32_t * ret)
{
const uint32x4_t vecOffs1 = { 0, 3, 6, 1};
const uint32x4_t vecOffs2 = { 4, 7, 2, 5};
vstrwq_scatter_base_p_f32 (pDataDest, 4, value, __p);
vstrwq_scatter_base_p_f32 (pDataDest, 132, value, __p);
vstrwq_scatter_offset_p_s32 (ret, vecOffs1, (int32x4_t) pDataDest, __p);
vstrwq_scatter_offset_p_s32 (ret, vecOffs2, (int32x4_t) pDataDest, __p);
return 0;
}
int
foods64(uint64x2_t pDataDest, int64x2_t value, int32_t * ret)
{
const uint32x4_t vecOffs1 = { 0, 3, 6, 1};
const uint32x4_t vecOffs2 = { 4, 7, 2, 5};
vstrdq_scatter_base_p_s64 (pDataDest, 256, value, __p);
vstrdq_scatter_base_p_s64 (pDataDest, 512, value, __p);
vstrwq_scatter_offset_p_s32 (ret, vecOffs1, (int32x4_t) pDataDest, __p);
vstrwq_scatter_offset_p_s32 (ret, vecOffs2, (int32x4_t) pDataDest, __p);
return 0;
}
int
foodu64(uint64x2_t pDataDest, uint64x2_t value, int32_t * ret)
{
const uint32x4_t vecOffs1 = { 0, 3, 6, 1};
const uint32x4_t vecOffs2 = { 4, 7, 2, 5};
vstrdq_scatter_base_p_u64 (pDataDest, 256, value, __p);
vstrdq_scatter_base_p_u64 (pDataDest, 512, value, __p);
vstrwq_scatter_offset_p_s32 (ret, vecOffs1, (int32x4_t) pDataDest, __p);
vstrwq_scatter_offset_p_s32 (ret, vecOffs2, (int32x4_t) pDataDest, __p);
return 0;
}
/* { dg-final { scan-assembler-times "vstr\[a-z\]t" 20 } } */