> -----Original Message----- > From: Andrea Corallo <andrea.cora...@arm.com> > Sent: Thursday, November 17, 2022 4:38 PM > To: gcc-patches@gcc.gnu.org > Cc: Kyrylo Tkachov <kyrylo.tkac...@arm.com>; Richard Earnshaw > <richard.earns...@arm.com>; Andrea Corallo <andrea.cora...@arm.com> > Subject: [PATCH 10/35] arm: improve tests for vabavq* > > gcc/testsuite/ChangeLog: > > * gcc.target/arm/mve/intrinsics/vabavq_p_s16.c: > * gcc.target/arm/mve/intrinsics/vabavq_p_s32.c: > * gcc.target/arm/mve/intrinsics/vabavq_p_s8.c: > * gcc.target/arm/mve/intrinsics/vabavq_p_u16.c: > * gcc.target/arm/mve/intrinsics/vabavq_p_u32.c: > * gcc.target/arm/mve/intrinsics/vabavq_p_u8.c: > * gcc.target/arm/mve/intrinsics/vabavq_s16.c: > * gcc.target/arm/mve/intrinsics/vabavq_s32.c: > * gcc.target/arm/mve/intrinsics/vabavq_s8.c: > * gcc.target/arm/mve/intrinsics/vabavq_u16.c: > * gcc.target/arm/mve/intrinsics/vabavq_u32.c: > * gcc.target/arm/mve/intrinsics/vabavq_u8.c: Missing ChangeLog text? Ok with ChangeLog fixed. Thanks, Kyrill > --- > .../arm/mve/intrinsics/vabavq_p_s16.c | 40 ++++++++++++++++++- > .../arm/mve/intrinsics/vabavq_p_s32.c | 40 ++++++++++++++++++- > .../arm/mve/intrinsics/vabavq_p_s8.c | 40 ++++++++++++++++++- > .../arm/mve/intrinsics/vabavq_p_u16.c | 40 ++++++++++++++++++- > .../arm/mve/intrinsics/vabavq_p_u32.c | 40 ++++++++++++++++++- > .../arm/mve/intrinsics/vabavq_p_u8.c | 40 ++++++++++++++++++- > .../arm/mve/intrinsics/vabavq_s16.c | 28 ++++++++++++- > .../arm/mve/intrinsics/vabavq_s32.c | 28 ++++++++++++- > .../gcc.target/arm/mve/intrinsics/vabavq_s8.c | 28 ++++++++++++- > .../arm/mve/intrinsics/vabavq_u16.c | 28 ++++++++++++- > .../arm/mve/intrinsics/vabavq_u32.c | 28 ++++++++++++- > .../gcc.target/arm/mve/intrinsics/vabavq_u8.c | 28 ++++++++++++- > 12 files changed, 384 insertions(+), 24 deletions(-) > > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s16.c > index 78ac801fa3c..843d022c418 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s16.c > @@ -1,21 +1,57 @@ > /* { 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" > > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) > { > return vabavq_p_s16 (a, b, c, p); > } > > -/* { dg-final { scan-assembler "vabavt.s16" } } */ > > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, int16x8_t b, int16x8_t c, mve_pred16_t p) > { > return vabavq_p (a, b, c, p); > } > > -/* { dg-final { scan-assembler "vabavt.s16" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (int16x8_t b, int16x8_t c, mve_pred16_t p) > +{ > + return vabavq_p (1, b, c, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s32.c > index af4e30b6127..6ed9b9ac1c4 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s32.c > @@ -1,21 +1,57 @@ > /* { 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" > > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) > { > return vabavq_p_s32 (a, b, c, p); > } > > -/* { dg-final { scan-assembler "vabavt.s32" } } */ > > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, int32x4_t b, int32x4_t c, mve_pred16_t p) > { > return vabavq_p (a, b, c, p); > } > > -/* { dg-final { scan-assembler "vabavt.s32" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (int32x4_t b, int32x4_t c, mve_pred16_t p) > +{ > + return vabavq_p (1, b, c, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s8.c > index a76b6bd4bda..ec34be92a28 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s8.c > @@ -1,21 +1,57 @@ > /* { 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" > > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, int8x16_t b, int8x16_t c, mve_pred16_t p) > { > return vabavq_p_s8 (a, b, c, p); > } > > -/* { dg-final { scan-assembler "vabavt.s8" } } */ > > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, int8x16_t b, int8x16_t c, mve_pred16_t p) > { > return vabavq_p (a, b, c, p); > } > > -/* { dg-final { scan-assembler "vabavt.s8" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (int8x16_t b, int8x16_t c, mve_pred16_t p) > +{ > + return vabavq_p (1, b, c, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u16.c > index 9627a00b812..440b603a18e 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u16.c > @@ -1,21 +1,57 @@ > /* { 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" > > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, uint16x8_t b, uint16x8_t c, mve_pred16_t p) > { > return vabavq_p_u16 (a, b, c, p); > } > > -/* { dg-final { scan-assembler "vabavt.u16" } } */ > > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, uint16x8_t b, uint16x8_t c, mve_pred16_t p) > { > return vabavq_p (a, b, c, p); > } > > -/* { dg-final { scan-assembler "vabavt.u16" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (uint16x8_t b, uint16x8_t c, mve_pred16_t p) > +{ > + return vabavq_p (1, b, c, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u32.c > index 298c2c38101..9500ee054b1 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u32.c > @@ -1,21 +1,57 @@ > /* { 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" > > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, uint32x4_t b, uint32x4_t c, mve_pred16_t p) > { > return vabavq_p_u32 (a, b, c, p); > } > > -/* { dg-final { scan-assembler "vabavt.u32" } } */ > > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, uint32x4_t b, uint32x4_t c, mve_pred16_t p) > { > return vabavq_p (a, b, c, p); > } > > -/* { dg-final { scan-assembler "vabavt.u32" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (uint32x4_t b, uint32x4_t c, mve_pred16_t p) > +{ > + return vabavq_p (1, b, c, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u8.c > index 775072225f8..40c9a51fbe4 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u8.c > @@ -1,21 +1,57 @@ > /* { 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" > > +/* > +**foo: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, uint8x16_t b, uint8x16_t c, mve_pred16_t p) > { > return vabavq_p_u8 (a, b, c, p); > } > > -/* { dg-final { scan-assembler "vabavt.u8" } } */ > > +/* > +**foo1: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, uint8x16_t b, uint8x16_t c, mve_pred16_t p) > { > return vabavq_p (a, b, c, p); > } > > -/* { dg-final { scan-assembler "vabavt.u8" } } */ > +/* > +**foo2: > +** ... > +** vmsr p0, (?:ip|fp|r[0-9]+)(?: @.*|) > +** ... > +** vpst(?: @.*|) > +** ... > +** vabavt.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (uint8x16_t b, uint8x16_t c, mve_pred16_t p) > +{ > + return vabavq_p (1, b, c, p); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s16.c > index c2383f1865b..27684fa4a88 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s16.c > @@ -1,21 +1,45 @@ > /* { 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" > > +/* > +**foo: > +** ... > +** vabav.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, int16x8_t b, int16x8_t c) > { > return vabavq_s16 (a, b, c); > } > > -/* { dg-final { scan-assembler "vabav.s16" } } */ > > +/* > +**foo1: > +** ... > +** vabav.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, int16x8_t b, int16x8_t c) > { > return vabavq (a, b, c); > } > > -/* { dg-final { scan-assembler "vabav.s16" } } */ > +/* > +**foo2: > +** ... > +** vabav.s16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (int16x8_t b, int16x8_t c) > +{ > + return vabavq (1, b, c); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s32.c > index 7170d013c3b..f595609a2a0 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s32.c > @@ -1,21 +1,45 @@ > /* { 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" > > +/* > +**foo: > +** ... > +** vabav.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, int32x4_t b, int32x4_t c) > { > return vabavq_s32 (a, b, c); > } > > -/* { dg-final { scan-assembler "vabav.s32" } } */ > > +/* > +**foo1: > +** ... > +** vabav.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, int32x4_t b, int32x4_t c) > { > return vabavq (a, b, c); > } > > -/* { dg-final { scan-assembler "vabav.s32" } } */ > +/* > +**foo2: > +** ... > +** vabav.s32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (int32x4_t b, int32x4_t c) > +{ > + return vabavq (1, b, c); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s8.c > index d75ecdbdbdf..60fa9e23b7b 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s8.c > @@ -1,21 +1,45 @@ > /* { 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" > > +/* > +**foo: > +** ... > +** vabav.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, int8x16_t b, int8x16_t c) > { > return vabavq_s8 (a, b, c); > } > > -/* { dg-final { scan-assembler "vabav.s8" } } */ > > +/* > +**foo1: > +** ... > +** vabav.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, int8x16_t b, int8x16_t c) > { > return vabavq (a, b, c); > } > > -/* { dg-final { scan-assembler "vabav.s8" } } */ > +/* > +**foo2: > +** ... > +** vabav.s8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (int8x16_t b, int8x16_t c) > +{ > + return vabavq (1, b, c); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u16.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u16.c > index 40ab94d9083..f3255276eda 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u16.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u16.c > @@ -1,21 +1,45 @@ > /* { 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" > > +/* > +**foo: > +** ... > +** vabav.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, uint16x8_t b, uint16x8_t c) > { > return vabavq_u16 (a, b, c); > } > > -/* { dg-final { scan-assembler "vabav.u16" } } */ > > +/* > +**foo1: > +** ... > +** vabav.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, uint16x8_t b, uint16x8_t c) > { > return vabavq (a, b, c); > } > > -/* { dg-final { scan-assembler "vabav.u16" } } */ > +/* > +**foo2: > +** ... > +** vabav.u16 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (uint16x8_t b, uint16x8_t c) > +{ > + return vabavq (1, b, c); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u32.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u32.c > index 4b9f5c32f3d..f41fa1f3952 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u32.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u32.c > @@ -1,21 +1,45 @@ > /* { 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" > > +/* > +**foo: > +** ... > +** vabav.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, uint32x4_t b, uint32x4_t c) > { > return vabavq_u32 (a, b, c); > } > > -/* { dg-final { scan-assembler "vabav.u32" } } */ > > +/* > +**foo1: > +** ... > +** vabav.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, uint32x4_t b, uint32x4_t c) > { > return vabavq (a, b, c); > } > > -/* { dg-final { scan-assembler "vabav.u32" } } */ > +/* > +**foo2: > +** ... > +** vabav.u32 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (uint32x4_t b, uint32x4_t c) > +{ > + return vabavq (1, b, c); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u8.c > b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u8.c > index 3638e9d7106..3a2654435df 100644 > --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u8.c > +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u8.c > @@ -1,21 +1,45 @@ > /* { 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" > > +/* > +**foo: > +** ... > +** vabav.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo (uint32_t a, uint8x16_t b, uint8x16_t c) > { > return vabavq_u8 (a, b, c); > } > > -/* { dg-final { scan-assembler "vabav.u8" } } */ > > +/* > +**foo1: > +** ... > +** vabav.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > uint32_t > foo1 (uint32_t a, uint8x16_t b, uint8x16_t c) > { > return vabavq (a, b, c); > } > > -/* { dg-final { scan-assembler "vabav.u8" } } */ > +/* > +**foo2: > +** ... > +** vabav.u8 (?:ip|fp|r[0-9]+), q[0-9]+, q[0-9]+(?: @.*|) > +** ... > +*/ > +uint32_t > +foo2 (uint8x16_t b, uint8x16_t c) > +{ > + return vabavq (1, b, c); > +} > + > +/* { dg-final { scan-assembler-not "__ARM_undef" } } */ > \ No newline at end of file > -- > 2.25.1
RE: [PATCH 10/35] arm: improve tests for vabavq*
Kyrylo Tkachov via Gcc-patches Fri, 18 Nov 2022 08:47:31 -0800
- [PATCH 00/35] arm: rework MVE testsuite and... Andrea Corallo via Gcc-patches
- [PATCH 02/35] arm: fix 'vmsr' spacing ... Andrea Corallo via Gcc-patches
- RE: [PATCH 02/35] arm: fix 'vmsr' ... Kyrylo Tkachov via Gcc-patches
- [PATCH 03/35] arm: improve tests and f... Andrea Corallo via Gcc-patches
- RE: [PATCH 03/35] arm: improve tes... Kyrylo Tkachov via Gcc-patches
- [PATCH 04/35] arm: improve tests and f... Andrea Corallo via Gcc-patches
- RE: [PATCH 04/35] arm: improve tes... Kyrylo Tkachov via Gcc-patches
- [PATCH 10/35] arm: improve tests for v... Andrea Corallo via Gcc-patches
- RE: [PATCH 10/35] arm: improve tes... Kyrylo Tkachov via Gcc-patches
- Re: [PATCH 10/35] arm: improve... Andrea Corallo via Gcc-patches
- [PATCH 05/35] arm: improve vidupq* tes... Andrea Corallo via Gcc-patches
- RE: [PATCH 05/35] arm: improve vid... Kyrylo Tkachov via Gcc-patches
- [PATCH 06/35] arm: improve tests and f... Andrea Corallo via Gcc-patches
- RE: [PATCH 06/35] arm: improve tes... Kyrylo Tkachov via Gcc-patches
- [PATCH 35/35] arm: improve tests for v... Andrea Corallo via Gcc-patches
- RE: [PATCH 35/35] arm: improve tes... Kyrylo Tkachov via Gcc-patches
- [PATCH 35/35 V2] arm: improve ... Andrea Corallo via Gcc-patches
- RE: [PATCH 35/35 V2] arm: ... Kyrylo Tkachov via Gcc-patches
- [PATCH 31/35] arm: improve tests for v... Andrea Corallo via Gcc-patches