aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinath Parvathaneni <srinath.parvathaneni@arm.com>2020-06-22 17:11:19 +0100
committerSrinath Parvathaneni <srinath.parvathaneni@arm.com>2020-06-22 17:13:05 +0100
commit99abb146fd0923ebda2c7e7681adb18e6798a90c (patch)
tree84d0eaf041bf14f13a9f1801b761be9e4f20b31c
parent647340c92a042e8e6f7d004637f07060dbde49c0 (diff)
downloadgcc-99abb146fd0923ebda2c7e7681adb18e6798a90c.zip
gcc-99abb146fd0923ebda2c7e7681adb18e6798a90c.tar.gz
gcc-99abb146fd0923ebda2c7e7681adb18e6798a90c.tar.bz2
arm: Fix the failing mve scalar shift execution tests.
In GCC testsuite the MVE scalar shift execution tests (mve_scalar_shifts[1-4].c) are failings because of executing them on target hardware which doesn't support MVE instructions. This patch restricts those tests to execute only on target hardware that support MVE instructions. 2020-06-22 Srinath Parvathaneni <srinath.parvathaneni@arm.com> gcc/ * doc/sourcebuild.texi (arm_v8_1m_mve_fp_ok): Add item. (arm_mve_hw): Likewise. gcc/testsuite/ * gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c: Modify. * gcc.target/arm/mve/intrinsics/mve_scalar_shifts2.c: Likewise. * gcc.target/arm/mve/intrinsics/mve_scalar_shifts3.c: Likewise. * gcc.target/arm/mve/intrinsics/mve_scalar_shifts4.c: Likewise. * lib/target-supports.exp (check_effective_target_arm_mve_hw): Define.
-rw-r--r--gcc/doc/sourcebuild.texi9
-rw-r--r--gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts2.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts3.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts4.c2
-rw-r--r--gcc/testsuite/lib/target-supports.exp18
6 files changed, 31 insertions, 4 deletions
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index e5554c4..a12af82 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -1925,6 +1925,15 @@ ARM target supports options to generate instructions from ARMv8.1-M with
the M-Profile Vector Extension (MVE). Some multilibs may be incompatible
with these options.
+@item arm_v8_1m_mve_fp_ok
+ARM target supports options to generate instructions from ARMv8.1-M with
+the Half-precision floating-point instructions (HP), Floating-point Extension
+(FP) along with M-Profile Vector Extension (MVE). Some multilibs may be
+incompatible with these options.
+
+@item arm_mve_hw
+Test system supports executing MVE instructions.
+
@item arm_v8m_main_cde
ARM target supports options to generate instructions from ARMv8-M with
the Custom Datapath Extension (CDE). Some multilibs may be incompatible
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c
index e1c136e..db2335fc 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-require-effective-target arm_mve_hw } */
/* { dg-options "-O2" } */
/* { dg-add-options arm_v8_1m_mve } */
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts2.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts2.c
index 0b5a8ed..5a63d38 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts2.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts2.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-require-effective-target arm_mve_hw } */
/* { dg-options "-O2" } */
/* { dg-add-options arm_v8_1m_mve } */
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts3.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts3.c
index 7e3da54..f0d5ee3 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts3.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts3.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-require-effective-target arm_mve_hw } */
/* { dg-options "-O2" } */
/* { dg-add-options arm_v8_1m_mve } */
diff --git a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts4.c b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts4.c
index 8bee12f..283742f 100644
--- a/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts4.c
+++ b/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_scalar_shifts4.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-require-effective-target arm_v8_1m_mve_ok } */
+/* { dg-require-effective-target arm_mve_hw } */
/* { dg-options "-O2" } */
/* { dg-add-options arm_v8_1m_mve } */
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 862a073..ab0ee32 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -4671,6 +4671,24 @@ proc check_effective_target_arm_cmse_ok {} {
} "-mcmse"];
}
+# Return 1 if the target supports executing MVE instructions, 0
+# otherwise.
+
+proc check_effective_target_arm_mve_hw {} {
+ return [check_runtime arm_mve_hw_available {
+ int
+ main (void)
+ {
+ long long a = 16;
+ int b = 3;
+ asm ("sqrshrl %Q1, %R1, #64, %2"
+ : "=l" (a)
+ : "0" (a), "r" (b));
+ return (a != 2);
+ }
+ } ""]
+}
+
# Return 1 if this is an ARM target where ARMv8-M Security Extensions with
# clearing instructions (clrm, vscclrm, vstr/vldr with FPCXT) is available.