[gcc r16-5415] arm: testsuite: fix vgetq_lane tests for c++
Christophe Lyon
clyon@gcc.gnu.org
Wed Nov 19 12:17:36 GMT 2025
https://gcc.gnu.org/g:e901cc8f287256ce87151420e3ae17d62acf9189
commit r16-5415-ge901cc8f287256ce87151420e3ae17d62acf9189
Author: Christophe Lyon <christophe.lyon@linaro.org>
Date: Mon Nov 17 11:05:10 2025 +0000
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:
---
.../gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c | 9 +++++-
.../gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c | 9 +++++-
.../gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c | 9 +++++-
.../gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c | 9 +++++-
.../gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c | 37 ++++++++++++++++++----
.../gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c | 9 +++++-
.../gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c | 9 +++++-
.../gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c | 9 +++++-
.../gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c | 37 ++++++++++++++++++----
.../gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c | 9 +++++-
10 files changed, 126 insertions(+), 20 deletions(-)
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 b0811372dc71..4bcc2abb84bf 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 c923b9ecf260..18d2dfd5a588 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 4a8963744f8f..e8744b8c109a 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 3a504e84382e..e6ac370fe966 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 63b25088eeea..857ed76655b1 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 cd014b288774..b342af57d243 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 74b734051d41..4b420116d7f2 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 c4460e44b9ab..05e0bda8f235 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 a4b900fc66bf..7c708d541e38 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 f3abf1e9c566..b86764fe9781 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
More information about the Gcc-cvs
mailing list