From 857d1fa3f0a04569382bab12829e5bfd3725ecbf Mon Sep 17 00:00:00 2001 From: Fei Yang Date: Thu, 23 Apr 2020 16:08:03 +0100 Subject: [PATCH] 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 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. --- gcc/testsuite/ChangeLog | 8 +++ .../gcc.target/aarch64/pragma_cpp_predefs_2.c | 38 +++++++++++- .../gcc.target/aarch64/pragma_cpp_predefs_3.c | 59 +++++++++++++++++++ 3 files changed, 103 insertions(+), 2 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c0caffbd05f..4f5f020efce 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2020-04-23 Felix Yang + + 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 Thomas Schwinge 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 fa226759893..7244359ccfb 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 34aa6e16bcc..39128528600 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) { -- 2.30.2