aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorFei Yang <felix.yang@huawei.com>2020-04-23 16:08:03 +0100
committerRichard Sandiford <richard.sandiford@arm.com>2020-04-23 16:08:03 +0100
commit857d1fa3f0a04569382bab12829e5bfd3725ecbf (patch)
tree4ab2399a8b1d6ad9e06cd36d2449e0e19455e725 /gcc
parentee9fcee3ec3a124dc3947c73c264bbcda97198df (diff)
downloadgcc-857d1fa3f0a04569382bab12829e5bfd3725ecbf.zip
gcc-857d1fa3f0a04569382bab12829e5bfd3725ecbf.tar.gz
gcc-857d1fa3f0a04569382bab12829e5bfd3725ecbf.tar.bz2
testsuite: Add extra aarch64 predefine tests
Add extra testing in the following two tests to make sure CPP predefines redefinitions on #pragma works as expected when -mgeneral-regs-only option is specified (See PR94678): gcc.target/aarch64/pragma_cpp_predefs_2.c gcc.target/aarch64/pragma_cpp_predefs_3.c 2020-04-23 Felix Yang <felix.yang@huawei.com> gcc/testsuite/ PR target/94678 * gcc.target/aarch64/pragma_cpp_predefs_2.c: Fix typos, pop_pragma -> pop_options. Add tests for general-regs-only. * gcc.target/aarch64/pragma_cpp_predefs_3.c: Add tests for general-regs-only.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c38
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c59
3 files changed, 103 insertions, 2 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c0caffb..4f5f020 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2020-04-23 Felix Yang <felix.yang@huawei.com>
+
+ PR target/94678
+ * gcc.target/aarch64/pragma_cpp_predefs_2.c: Fix typos, pop_pragma ->
+ pop_options. Add tests for general-regs-only.
+ * gcc.target/aarch64/pragma_cpp_predefs_3.c: Add tests for
+ general-regs-only.
+
2020-04-23 Andrew Stubbs <ams@codesourcery.com>
Thomas Schwinge <thomas@codesourcery.com>
diff --git a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
index fa22675..7244359 100644
--- a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
+++ b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
@@ -67,7 +67,7 @@
#ifdef __ARM_FEATURE_SVE_MATMUL_FP64
#error "__ARM_FEATURE_SVE_MATMUL_FP64 is defined but should not be!"
#endif
-#pragma GCC pop_pragma
+#pragma GCC pop_options
#pragma GCC push_options
#pragma GCC target ("arch=armv8.2-a+i8mm")
@@ -115,7 +115,7 @@
#ifdef __ARM_FEATURE_SVE_MATMUL_FP64
#error "__ARM_FEATURE_SVE_MATMUL_FP64 is defined but should not be!"
#endif
-#pragma GCC pop_pragma
+#pragma GCC pop_options
#pragma GCC push_options
#pragma GCC target ("arch=armv8.2-a+f64mm")
@@ -208,6 +208,40 @@
#pragma GCC pop_options
+/* Make sure that general-regs-only works too. */
+#pragma GCC push_options
+#pragma GCC target ("arch=armv8.2-a+sve+i8mm+f32mm+f64mm")
+#ifndef __ARM_FEATURE_SVE
+#error "__ARM_FEATURE_SVE is not defined but should be!"
+#endif
+#ifndef __ARM_FEATURE_SVE_MATMUL_INT8
+#error "__ARM_FEATURE_SVE_MATMUL_INT8 is not defined but should be!"
+#endif
+#ifndef __ARM_FEATURE_SVE_MATMUL_FP32
+#error "__ARM_FEATURE_SVE_MATMUL_FP32 is not defined but should be!"
+#endif
+#ifndef __ARM_FEATURE_SVE_MATMUL_FP64
+#error "__ARM_FEATURE_SVE_MATMUL_FP64 is not defined but should be!"
+#endif
+
+#pragma GCC push_options
+#pragma GCC target ("general-regs-only")
+#ifdef __ARM_FEATURE_SVE
+#error "__ARM_FEATURE_SVE is defined but should not be!"
+#endif
+#ifdef __ARM_FEATURE_SVE_MATMUL_INT8
+#error "__ARM_FEATURE_SVE_MATMUL_INT8 is defined but should not be!"
+#endif
+#ifdef __ARM_FEATURE_SVE_MATMUL_FP32
+#error "__ARM_FEATURE_SVE_MATMUL_FP32 is defined but should not be!"
+#endif
+#ifdef __ARM_FEATURE_SVE_MATMUL_FP64
+#error "__ARM_FEATURE_SVE_MATMUL_FP64 is defined but should not be!"
+#endif
+#pragma GCC pop_options
+
+#pragma GCC pop_options
+
int
foo (int a)
{
diff --git a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
index 34aa6e1..3912852 100644
--- a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
+++ b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
@@ -214,6 +214,65 @@
#pragma GCC pop_options
+/* Make sure that general-regs-only works too. */
+#pragma GCC push_options
+#pragma GCC target ("arch=armv8.5-a+sve2-aes+sve2-bitperm+sve2-sha3+sve2-sm4")
+
+#ifndef __ARM_FEATURE_SVE
+#error "__ARM_FEATURE_SVE is not defined but should be!"
+#endif
+
+#ifndef __ARM_FEATURE_SVE2
+#error "__ARM_FEATURE_SVE2 is not defined but should be!"
+#endif
+
+#ifndef __ARM_FEATURE_SVE2_AES
+#error "__ARM_FEATURE_SVE2_AES is not defined but should be!"
+#endif
+
+#ifndef __ARM_FEATURE_SVE2_BITPERM
+#error "__ARM_FEATURE_SVE2_BITPERM is not defined but should be!"
+#endif
+
+#ifndef __ARM_FEATURE_SVE2_SHA3
+#error "__ARM_FEATURE_SVE2_SHA3 is not defined but should be!"
+#endif
+
+#ifndef __ARM_FEATURE_SVE2_SM4
+#error "__ARM_FEATURE_SVE2_SM4 is not defined but should be!"
+#endif
+
+#pragma GCC push_options
+#pragma GCC target ("general-regs-only")
+
+#ifdef __ARM_FEATURE_SVE
+#error "__ARM_FEATURE_SVE is defined but should not be!"
+#endif
+
+#ifdef __ARM_FEATURE_SVE2
+#error "__ARM_FEATURE_SVE2 is defined but should not be!"
+#endif
+
+#ifdef __ARM_FEATURE_SVE2_AES
+#error "__ARM_FEATURE_SVE2_AES is defined but should not be!"
+#endif
+
+#ifdef __ARM_FEATURE_SVE2_BITPERM
+#error "__ARM_FEATURE_SVE2_BITPERM is defined but should not be!"
+#endif
+
+#ifdef __ARM_FEATURE_SVE2_SHA3
+#error "__ARM_FEATURE_SVE2_SHA3 is defined but should not be!"
+#endif
+
+#ifdef __ARM_FEATURE_SVE2_SM4
+#error "__ARM_FEATURE_SVE2_SM4 is defined but should not be!"
+#endif
+
+#pragma GCC pop_options
+
+#pragma GCC pop_options
+
int
foo (int a)
{