[ARM] Add FP16 feature extension for ARMv8.2 architecture
authorJiong Wang <jiong.wang@arm.com>
Fri, 19 Feb 2016 14:27:23 +0000 (14:27 +0000)
committerJiong Wang <jiong.wang@arm.com>
Fri, 19 Feb 2016 14:27:23 +0000 (14:27 +0000)
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
gas/config/tc-arm.c
include/ChangeLog
include/opcode/arm.h

index d97a4b729c20baa8a151d4e6e6b050c60b4a73d7..3af58ee62ed5a3487bafdc09a540339425ada8a5 100644 (file)
@@ -1,3 +1,9 @@
+2016-02-19  Matthew Wahab  <matthew.wahab@arm.com>
+           Jiong Wang  <jiong.wang@arm.com>
+
+       * config/tc-arm.c (arm_ext_fp16): New.
+       (arm_extensions): New entry for "fp16".
+
 2016-02-19  Nick Clifton  <nickc@redhat.com>
 
        PR 19630
index be6436eef98a5b0e8e07ce16895ec2bb7f1580ba..1917441312eca6536704029a94bf0d306f651cf5 100644 (file)
@@ -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)),
index 48d21ed1efd24f1cb7e6e584c3603f7e3a74e8fe..f9e56e244df9e872f5931ca33eef0fd153244934 100644 (file)
@@ -1,3 +1,8 @@
+2016-02-19  Matthew Wahab  <matthew.wahab@arm.com>
+           Jiong Wang  <jiong.wang@arm.com>
+
+       * opcode/arm.h (ARM_EXT2_FP16_INSN): New.
+
 2016-02-10  Claudiu Zissulescu  <claziss@synopsys.com>
            Janek van Oirschot  <jvanoirs@synopsys.com>
 
index eab502533c84b0d065329901a9a65f70ed8b2677..1dc301e95a06e8f1304a03edb3b090291918ab08 100644 (file)
@@ -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.          */