From: Christophe Lyon Date: Mon, 17 Nov 2025 11:05:10 +0000 (+0000) Subject: arm: testsuite: fix vgetq_lane tests for c++ X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e901cc8f287256ce87151420e3ae17d62acf9189;p=thirdparty%2Fgcc.git arm: testsuite: fix vgetq_lane tests for c++ Surpringly these tests were lacking the extern "C" that other MVE intrinsics have, making them fail when tested in C++ mode. While fixing that: - remove useless dg-skip-if - remove hardcoded -mfloat-abi=hard from s64 and u64 versions - add check-function-bodies to s64 and u64 versions, such that these tests no longer appear as duplicates. gcc/testsuite/ChangeLog: * gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c: Add missing extern "C". Remove dg-skip-if. * gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c: Likewise. * gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c: Likewise. * gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c: Likewise. * gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c: Likewise. Add check-function-bodies. * gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c: Likewise. --- diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c index b0811372dc7..4bcc2abb84b 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c @@ -1,4 +1,3 @@ -/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ /* { dg-add-options arm_v8_1m_mve_fp } */ /* { dg-additional-options "-O2" } */ @@ -6,6 +5,10 @@ #include "arm_mve.h" +#ifdef __cplusplus +extern "C" { +#endif + float16_t foo (float16x8_t a) { @@ -45,3 +48,7 @@ foo1 (float16x8_t a) ** ) ** bx\tlr */ + +#ifdef __cplusplus +} +#endif diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c index c923b9ecf26..18d2dfd5a58 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c @@ -1,4 +1,3 @@ -/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */ /* { dg-add-options arm_v8_1m_mve_fp } */ /* { dg-additional-options "-O2" } */ @@ -6,6 +5,10 @@ #include "arm_mve.h" +#ifdef __cplusplus +extern "C" { +#endif + float32_t foo (float32x4_t a) { @@ -45,3 +48,7 @@ foo1 (float32x4_t a) ** ) ** bx\tlr */ + +#ifdef __cplusplus +} +#endif diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c index 4a8963744f8..e8744b8c109 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c @@ -1,4 +1,3 @@ -/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ /* { dg-require-effective-target arm_v8_1m_mve_ok } */ /* { dg-add-options arm_v8_1m_mve } */ /* { dg-additional-options "-O2" } */ @@ -6,6 +5,10 @@ #include "arm_mve.h" +#ifdef __cplusplus +extern "C" { +#endif + int16_t foo (int16x8_t a) { @@ -43,3 +46,7 @@ foo1 (int16x8_t a) ** ) ** bx\tlr */ + +#ifdef __cplusplus +} +#endif diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c index 3a504e84382..e6ac370fe96 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c @@ -1,4 +1,3 @@ -/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ /* { dg-require-effective-target arm_v8_1m_mve_ok } */ /* { dg-add-options arm_v8_1m_mve } */ /* { dg-additional-options "-O2" } */ @@ -6,6 +5,10 @@ #include "arm_mve.h" +#ifdef __cplusplus +extern "C" { +#endif + int32_t foo (int32x4_t a) { @@ -43,3 +46,7 @@ foo1 (int32x4_t a) ** ) ** bx\tlr */ + +#ifdef __cplusplus +} +#endif diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c index 63b25088eee..857ed76655b 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c @@ -1,23 +1,48 @@ -/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ -/* { dg-require-effective-target arm_hard_ok } */ /* { dg-require-effective-target arm_v8_1m_mve_ok } */ /* { dg-add-options arm_v8_1m_mve } */ -/* { dg-additional-options "-mfloat-abi=hard -O2" } */ +/* { dg-additional-options "-O2" } */ +/* { dg-final { check-function-bodies "**" "" "" } } */ #include "arm_mve.h" +#ifdef __cplusplus +extern "C" { +#endif + int64_t foo (int64x2_t a) { return vgetq_lane_s64 (a, 0); } - -/* { dg-final { scan-assembler {vmov\tr0, r1, d0} } } */ +/* +** foo: +** ( + -mfloat-abi=softfp + no operation needed +** | + -mfloat-abi=hard +** vmov\tr0, r1, d0\t@ int +** ) +** bx\tlr +*/ int64_t foo1 (int64x2_t a) { return vgetq_lane (a, 0); } +/* +** foo1: +** ( + -mfloat-abi=softfp + no operation needed +** | + -mfloat-abi=hard +** vmov\tr0, r1, d0\t@ int +** ) +** bx\tlr +*/ -/* { dg-final { scan-assembler {vmov\tr0, r1, d0} } } */ +#ifdef __cplusplus +} +#endif diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c index cd014b28877..b342af57d24 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c @@ -1,4 +1,3 @@ -/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ /* { dg-require-effective-target arm_v8_1m_mve_ok } */ /* { dg-add-options arm_v8_1m_mve } */ /* { dg-additional-options "-O2" } */ @@ -6,6 +5,10 @@ #include "arm_mve.h" +#ifdef __cplusplus +extern "C" { +#endif + int8_t foo (int8x16_t a) { @@ -43,3 +46,7 @@ foo1 (int8x16_t a) ** ) ** bx\tlr */ + +#ifdef __cplusplus +} +#endif diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c index 74b734051d4..4b420116d7f 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c @@ -1,4 +1,3 @@ -/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ /* { dg-require-effective-target arm_v8_1m_mve_ok } */ /* { dg-add-options arm_v8_1m_mve } */ /* { dg-additional-options "-O2" } */ @@ -6,6 +5,10 @@ #include "arm_mve.h" +#ifdef __cplusplus +extern "C" { +#endif + uint16_t foo (uint16x8_t a) { @@ -43,3 +46,7 @@ foo1 (uint16x8_t a) ** ) ** bx\tlr */ + +#ifdef __cplusplus +} +#endif diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c index c4460e44b9a..05e0bda8f23 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c @@ -1,4 +1,3 @@ -/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ /* { dg-require-effective-target arm_v8_1m_mve_ok } */ /* { dg-add-options arm_v8_1m_mve } */ /* { dg-additional-options "-O2" } */ @@ -6,6 +5,10 @@ #include "arm_mve.h" +#ifdef __cplusplus +extern "C" { +#endif + uint32_t foo (uint32x4_t a) { @@ -43,3 +46,7 @@ foo1 (uint32x4_t a) ** ) ** bx\tlr */ + +#ifdef __cplusplus +} +#endif diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c index a4b900fc66b..7c708d541e3 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c @@ -1,23 +1,48 @@ -/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ -/* { dg-require-effective-target arm_hard_ok } */ /* { dg-require-effective-target arm_v8_1m_mve_ok } */ /* { dg-add-options arm_v8_1m_mve } */ -/* { dg-additional-options "-mfloat-abi=hard -O2" } */ +/* { dg-additional-options "-O2" } */ +/* { dg-final { check-function-bodies "**" "" "" } } */ #include "arm_mve.h" +#ifdef __cplusplus +extern "C" { +#endif + uint64_t foo (uint64x2_t a) { return vgetq_lane_u64 (a, 0); } - -/* { dg-final { scan-assembler {vmov\tr0, r1, d0} } } */ +/* +** foo: +** ( + -mfloat-abi=softfp + no operation needed +** | + -mfloat-abi=hard +** vmov\tr0, r1, d0\t@ int +** ) +** bx\tlr +*/ uint64_t foo1 (uint64x2_t a) { return vgetq_lane (a, 0); } +/* +** foo1: +** ( + -mfloat-abi=softfp + no operation needed +** | + -mfloat-abi=hard +** vmov\tr0, r1, d0\t@ int +** ) +** bx\tlr +*/ -/* { dg-final { scan-assembler {vmov\tr0, r1, d0} } } */ +#ifdef __cplusplus +} +#endif diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c index f3abf1e9c56..b86764fe978 100644 --- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c +++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c @@ -1,4 +1,3 @@ -/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */ /* { dg-require-effective-target arm_v8_1m_mve_ok } */ /* { dg-add-options arm_v8_1m_mve } */ /* { dg-additional-options "-O2" } */ @@ -6,6 +5,10 @@ #include "arm_mve.h" +#ifdef __cplusplus +extern "C" { +#endif + uint8_t foo (uint8x16_t a) { @@ -43,3 +46,7 @@ foo1 (uint8x16_t a) ** ) ** bx\tlr */ + +#ifdef __cplusplus +} +#endif