| /* { dg-do compile } */ | |
| /* { dg-options "-O2" } */ | |
| #pragma GCC push_options | |
| #pragma GCC target ("arch=armv8-a") | |
| /* Test Armv8.6-A features. */ | |
| #ifdef __ARM_FEATURE_MATMUL_INT8 | |
| #error "__ARM_FEATURE_MATMUL_INT8 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 push_options | |
| #pragma GCC target ("arch=armv8.6-a") | |
| #ifndef __ARM_FEATURE_MATMUL_INT8 | |
| #error "__ARM_FEATURE_MATMUL_INT8 is not defined but should be!" | |
| #endif | |
| #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 push_options | |
| #pragma GCC target ("arch=armv8.6-a+sve") | |
| #ifndef __ARM_FEATURE_MATMUL_INT8 | |
| #error "__ARM_FEATURE_MATMUL_INT8 is not defined but should be!" | |
| #endif | |
| #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 | |
| #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 push_options | |
| #pragma GCC target ("arch=armv8.2-a+i8mm") | |
| #ifndef __ARM_FEATURE_MATMUL_INT8 | |
| #error "__ARM_FEATURE_MATMUL_INT8 is not defined but should be!" | |
| #endif | |
| #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 | |
| #pragma GCC pop_options | |
| #pragma GCC push_options | |
| #pragma GCC target ("arch=armv8.2-a+i8mm+sve") | |
| #ifndef __ARM_FEATURE_MATMUL_INT8 | |
| #error "__ARM_FEATURE_MATMUL_INT8 is not defined but should be!" | |
| #endif | |
| #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 | |
| #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 push_options | |
| #pragma GCC target ("arch=armv8.2-a+f32mm") | |
| #ifndef __ARM_FEATURE_SVE | |
| #error "__ARM_FEATURE_SVE is not defined but should be!" | |
| #endif | |
| #ifdef __ARM_FEATURE_SVE_MATMUL_INT8 | |
| #error "__ARM_FEATURE_SVE_MATMUL_INT8 is defined but should not be!" | |
| #endif | |
| #ifndef __ARM_FEATURE_SVE_MATMUL_FP32 | |
| #error "__ARM_FEATURE_SVE_MATMUL_FP32 is not defined but should 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 push_options | |
| #pragma GCC target ("arch=armv8.2-a+f64mm") | |
| #ifndef __ARM_FEATURE_SVE | |
| #error "__ARM_FEATURE_SVE is not defined but should 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 | |
| #ifndef __ARM_FEATURE_SVE_MATMUL_FP64 | |
| #error "__ARM_FEATURE_SVE_MATMUL_FP64 is not defined but should be!" | |
| #endif | |
| #pragma GCC pop_options | |
| #pragma GCC push_options | |
| #pragma GCC target ("arch=armv8.6-a+nosimd") | |
| #ifdef __ARM_FEATURE_MATMUL_INT8 | |
| #error "__ARM_FEATURE_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 push_options | |
| #pragma GCC target ("arch=armv8.6-a+nofp") | |
| #ifdef __ARM_FEATURE_MATMUL_INT8 | |
| #error "__ARM_FEATURE_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 | |
| #ifdef __ARM_FEATURE_BF16_SCALAR_ARITHMETIC | |
| #error "__ARM_FEATURE_BF16_SCALAR_ARITHMETIC is defined but should not be!" | |
| #endif | |
| #ifdef __ARM_FEATURE_BF16_VECTOR_ARITHMETIC | |
| #error "__ARM_FEATURE_BF16_VECTOR_ARITHMETIC is defined but should not be!" | |
| #endif | |
| #pragma GCC push_options | |
| #pragma GCC target ("arch=armv8.6-a") | |
| #ifndef __ARM_FEATURE_BF16_SCALAR_ARITHMETIC | |
| #error "__ARM_FEATURE_BF16_SCALAR_ARITHMETIC is not defined but should be!" | |
| #endif | |
| #ifndef __ARM_FEATURE_BF16_VECTOR_ARITHMETIC | |
| #error "__ARM_FEATURE_BF16_VECTOR_ARITHMETIC is not defined but should be!" | |
| #endif | |
| #pragma GCC pop_options | |
| #pragma GCC push_options | |
| #pragma GCC target ("arch=armv8.2-a+bf16") | |
| #ifndef __ARM_FEATURE_BF16_SCALAR_ARITHMETIC | |
| #error "__ARM_FEATURE_BF16_SCALAR_ARITHMETIC is not defined but should be!" | |
| #endif | |
| #ifndef __ARM_FEATURE_BF16_VECTOR_ARITHMETIC | |
| #error "__ARM_FEATURE_BF16_VECTOR_ARITHMETIC is not defined but should be!" | |
| #endif | |
| #pragma GCC pop_options | |
| #pragma GCC push_options | |
| #pragma GCC target ("arch=armv8.2-a+bf16+nosimd") | |
| #ifndef __ARM_FEATURE_BF16_SCALAR_ARITHMETIC | |
| #error "__ARM_FEATURE_BF16_SCALAR_ARITHMETIC is not defined but should be!" | |
| #endif | |
| #ifdef __ARM_FEATURE_BF16_VECTOR_ARITHMETIC | |
| #error "__ARM_FEATURE_BF16_VECTOR_ARITHMETIC is defined but should not be!" | |
| #endif | |
| #pragma GCC pop_options | |
| #pragma GCC push_options | |
| #pragma GCC target ("arch=armv8.6-a+nofp") | |
| #ifdef __ARM_FEATURE_BF16_SCALAR_ARITHMETIC | |
| #error "__ARM_FEATURE_BF16_SCALAR_ARITHMETIC is defined but should not be!" | |
| #endif | |
| #ifdef __ARM_FEATURE_BF16_VECTOR_ARITHMETIC | |
| #error "__ARM_FEATURE_BF16_VECTOR_ARITHMETIC is defined but should not be!" | |
| #endif | |
| #pragma GCC pop_options | |
| #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 push_options | |
| #pragma GCC target ("arch=armv8.7-a") | |
| #ifdef __ARM_FEATURE_LS64 | |
| #error "__ARM_FEATURE_LS64 is defined but should not be!" | |
| #endif | |
| #pragma GCC pop_options | |
| #pragma GCC push_options | |
| #pragma GCC target ("arch=armv8.7-a+ls64") | |
| #ifndef __ARM_FEATURE_LS64 | |
| #error "__ARM_FEATURE_LS64 is not defined but should be!" | |
| #endif | |
| #pragma GCC pop_options | |
| #pragma GCC pop_options | |
| int | |
| foo (int a) | |
| { | |
| return a; | |
| } |