From b8ec4e871ef7650b852df9956841ee414766de59 Mon Sep 17 00:00:00 2001 From: Jiong Wang Date: Fri, 19 Feb 2016 14:27:23 +0000 Subject: [PATCH] [ARM] Add FP16 feature extension for ARMv8.2 architecture include/ * opcode/arm.h (ARM_EXT2_FP16_INSN): New. gas/ * config/tc-arm.c (arm_ext_fp16): New. (arm_extensions): New entry for "fp16". --- gas/ChangeLog | 6 ++++++ gas/config/tc-arm.c | 6 ++++++ include/ChangeLog | 5 +++++ include/opcode/arm.h | 3 ++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index d97a4b729c..3af58ee62e 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2016-02-19 Matthew Wahab + Jiong Wang + + * config/tc-arm.c (arm_ext_fp16): New. + (arm_extensions): New entry for "fp16". + 2016-02-19 Nick Clifton PR 19630 diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index be6436eef9..1917441312 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -216,6 +216,9 @@ static const arm_feature_set arm_ext_atomics = ARM_FEATURE_CORE_HIGH (ARM_EXT2_ATOMICS); static const arm_feature_set arm_ext_v8_2 = ARM_FEATURE_CORE_HIGH (ARM_EXT2_V8_2A); +/* FP16 instructions. */ +static const arm_feature_set arm_ext_fp16 = + ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST); static const arm_feature_set arm_arch_any = ARM_ANY; static const arm_feature_set arm_arch_full = ARM_FEATURE (-1, -1, -1); @@ -25068,6 +25071,9 @@ static const struct arm_option_extension_value_table arm_extensions[] = ARM_FEATURE_CORE_LOW (ARM_EXT_V8)), ARM_EXT_OPT ("fp", FPU_ARCH_VFP_ARMV8, ARM_FEATURE_COPROC (FPU_VFP_ARMV8), ARM_FEATURE_CORE_LOW (ARM_EXT_V8)), + ARM_EXT_OPT ("fp16", ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST), + ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST), + ARM_ARCH_V8_2A), ARM_EXT_OPT ("idiv", ARM_FEATURE_CORE_LOW (ARM_EXT_ADIV | ARM_EXT_DIV), ARM_FEATURE_CORE_LOW (ARM_EXT_ADIV | ARM_EXT_DIV), ARM_FEATURE_CORE_LOW (ARM_EXT_V7A | ARM_EXT_V7R)), diff --git a/include/ChangeLog b/include/ChangeLog index 48d21ed1ef..f9e56e244d 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2016-02-19 Matthew Wahab + Jiong Wang + + * opcode/arm.h (ARM_EXT2_FP16_INSN): New. + 2016-02-10 Claudiu Zissulescu Janek van Oirschot diff --git a/include/opcode/arm.h b/include/opcode/arm.h index eab502533c..1dc301e95a 100644 --- a/include/opcode/arm.h +++ b/include/opcode/arm.h @@ -52,7 +52,7 @@ #define ARM_EXT_MP 0x08000000 /* Multiprocessing Extensions. */ #define ARM_EXT_SEC 0x10000000 /* Security extensions. */ #define ARM_EXT_OS 0x20000000 /* OS Extensions. */ -#define ARM_EXT_ADIV 0x40000000 /* Integer divide extensions in ARM +#define ARM_EXT_ADIV 0x40000000 /* Integer divide extensions in ARM state. */ #define ARM_EXT_VIRT 0x80000000 /* Virtualization extensions. */ @@ -61,6 +61,7 @@ #define ARM_EXT2_V8M 0x00000004 /* ARM V8M. */ #define ARM_EXT2_ATOMICS 0x00000008 /* ARMv8 atomics. */ #define ARM_EXT2_V6T2_V8M 0x00000010 /* V8M Baseline from V6T2. */ +#define ARM_EXT2_FP16_INST 0x00000020 /* ARM V8.2A FP16 instructions. */ /* Co-processor space extensions. */ #define ARM_CEXT_XSCALE 0x00000001 /* Allow MIA etc. */ -- 2.34.1