[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:
Matthew Wahab 2016-09-23 09:09:28 +00:00 committed by Matthew Wahab
parent 1b9e31cf74
commit 536b9f42ce
4 changed files with 60 additions and 0 deletions

View File

@ -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

View File

@ -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);

View File

@ -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):

View 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