[PATCH 4/17][ARM] Define feature macros for FP16.
2016-09-23 Matthew Wahab <matthew.wahab@arm.com> * config/arm/arm-c.c (arm_cpu_builtins): Define "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC" and "__ARM_FEATURE_FP16_VECTOR_ARITHMETIC". testsuite/ 2016-09-23 Matthew Wahab <matthew.wahab@arm.com> * gcc.target/arm/attr-fp16-arith-1.c: New. From-SVN: r240402
This commit is contained in:
parent
1b9e31cf74
commit
536b9f42ce
@ -1,3 +1,9 @@
|
||||
2016-09-23 Matthew Wahab <matthew.wahab@arm.com>
|
||||
|
||||
* config/arm/arm-c.c (arm_cpu_builtins): Define
|
||||
"__ARM_FEATURE_FP16_SCALAR_ARITHMETIC" and
|
||||
"__ARM_FEATURE_FP16_VECTOR_ARITHMETIC".
|
||||
|
||||
2016-09-23 Matthew Wahab <matthew.wahab@arm.com>
|
||||
|
||||
* doc/sourcebuild.texi (ARM-specific attributes): Add anchor for
|
||||
|
@ -142,6 +142,11 @@ arm_cpu_builtins (struct cpp_reader* pfile)
|
||||
def_or_undef_macro (pfile, "__ARM_FP16_ARGS",
|
||||
arm_fp16_format != ARM_FP16_FORMAT_NONE);
|
||||
|
||||
def_or_undef_macro (pfile, "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC",
|
||||
TARGET_VFP_FP16INST);
|
||||
def_or_undef_macro (pfile, "__ARM_FEATURE_FP16_VECTOR_ARITHMETIC",
|
||||
TARGET_NEON_FP16INST);
|
||||
|
||||
def_or_undef_macro (pfile, "__ARM_FEATURE_FMA", TARGET_FMA);
|
||||
def_or_undef_macro (pfile, "__ARM_NEON__", TARGET_NEON);
|
||||
def_or_undef_macro (pfile, "__ARM_NEON", TARGET_NEON);
|
||||
|
@ -1,3 +1,7 @@
|
||||
2016-09-23 Matthew Wahab <matthew.wahab@arm.com>
|
||||
|
||||
* gcc.target/arm/attr-fp16-arith-1.c: New.
|
||||
|
||||
2016-09-23 Matthew Wahab <matthew.wahab@arm.com>
|
||||
|
||||
* lib/target-supports.exp (add_options_for_arm_v8_2a_fp16_scalar):
|
||||
|
45
gcc/testsuite/gcc.target/arm/attr-fp16-arith-1.c
Normal file
45
gcc/testsuite/gcc.target/arm/attr-fp16-arith-1.c
Normal file
@ -0,0 +1,45 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-require-effective-target arm_v8_2a_fp16_neon_ok } */
|
||||
/* { dg-options "-O2" } */
|
||||
/* { dg-add-options arm_v8_2a_fp16_scalar } */
|
||||
|
||||
/* Reset fpu to a value compatible with the next pragmas. */
|
||||
#pragma GCC target ("fpu=vfp")
|
||||
|
||||
#pragma GCC push_options
|
||||
#pragma GCC target ("fpu=fp-armv8")
|
||||
|
||||
#ifndef __ARM_FEATURE_FP16_SCALAR_ARITHMETIC
|
||||
#error __ARM_FEATURE_FP16_SCALAR_ARITHMETIC not defined.
|
||||
#endif
|
||||
|
||||
#pragma GCC push_options
|
||||
#pragma GCC target ("fpu=neon-fp-armv8")
|
||||
|
||||
#ifndef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
|
||||
#error __ARM_FEATURE_FP16_VECTOR_ARITHMETIC not defined.
|
||||
#endif
|
||||
|
||||
#ifndef __ARM_NEON
|
||||
#error __ARM_NEON not defined.
|
||||
#endif
|
||||
|
||||
#if !defined (__ARM_FP) || !(__ARM_FP & 0x2)
|
||||
#error Invalid value for __ARM_FP
|
||||
#endif
|
||||
|
||||
#pragma GCC pop_options
|
||||
|
||||
/* Check that the FP version is correctly reset to mfpu=fp-armv8. */
|
||||
|
||||
#if !defined (__ARM_FP) || !(__ARM_FP & 0x2)
|
||||
#error __ARM_FP should record FP16 support.
|
||||
#endif
|
||||
|
||||
#pragma GCC pop_options
|
||||
|
||||
/* Check that the FP version is correctly reset to mfpu=vfp. */
|
||||
|
||||
#if !defined (__ARM_FP) || (__ARM_FP & 0x2)
|
||||
#error Unexpected value for __ARM_FP.
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user