This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
VFPv4 single precision
- From: Paul Brook <paul at codesourcery dot com>
- To: binutils at sourceware dot org
- Date: Wed, 18 Nov 2009 15:49:00 +0000
- Subject: VFPv4 single precision
The patch below adds a single precision VFPv4 variant. I've also fixed a bug
in the marking of VFPv3xD objects.
The inconsistent naming is at ARM's request, and no, the missing "v" is not a
typo.
Tested on arm-none-eabi.
Applied to CVS head.
Paul
2009-11-18 Paul Brook <paul@codesourcery.com>
gas/
* config/tc-arm.c (arm_fpus): Add fpv4-sp-d16.
(aeabi_set_public_attributes): Correctly mark VFPv3xD.
include/opcode/
* arm.h (FPU_VFP_V4_SP_D16, FPU_ARCH_VFP_V4_SP_D16): Define.
Index: gas/config/tc-arm.c
===================================================================
--- gas/config/tc-arm.c (revision 268681)
+++ gas/config/tc-arm.c (working copy)
@@ -22102,6 +22102,7 @@ static const struct arm_option_cpu_value
{"neon-fp16", FPU_ARCH_NEON_FP16},
{"vfpv4", FPU_ARCH_VFP_V4},
{"vfpv4-d16", FPU_ARCH_VFP_V4D16},
+ {"fpv4-sp-d16", FPU_ARCH_VFP_V4_SP_D16},
{"neon-vfpv4", FPU_ARCH_NEON_VFP_V4},
{NULL, ARM_ARCH_NONE}
};
@@ -22625,7 +22626,7 @@ aeabi_set_public_attributes (void)
? 5 : 6);
else if (ARM_CPU_HAS_FEATURE (flags, fpu_vfp_ext_d32))
aeabi_set_attribute_int (Tag_VFP_arch, 3);
- else if (ARM_CPU_HAS_FEATURE (flags, fpu_vfp_ext_v3))
+ else if (ARM_CPU_HAS_FEATURE (flags, fpu_vfp_ext_v3xd))
aeabi_set_attribute_int (Tag_VFP_arch, 4);
else if (ARM_CPU_HAS_FEATURE (flags, fpu_vfp_ext_v2))
aeabi_set_attribute_int (Tag_VFP_arch, 2);
Index: include/opcode/arm.h
===================================================================
--- include/opcode/arm.h (revision 268681)
+++ include/opcode/arm.h (working copy)
@@ -134,6 +134,7 @@
#define FPU_VFP_V3xD (FPU_VFP_V1xD | FPU_VFP_EXT_V2 | FPU_VFP_EXT_V3xD)
#define FPU_VFP_V4D16 (FPU_VFP_V3D16 | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA)
#define FPU_VFP_V4 (FPU_VFP_V3 | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA)
+#define FPU_VFP_V4_SP_D16 (FPU_VFP_V3xD | FPU_VFP_EXT_FP16 | FPU_VFP_EXT_FMA)
#define FPU_VFP_HARD (FPU_VFP_EXT_V1xD | FPU_VFP_EXT_V1 | FPU_VFP_EXT_V2 \
| FPU_VFP_EXT_V3xD | FPU_VFP_EXT_FMA | FPU_NEON_EXT_FMA \
| FPU_VFP_EXT_V3 | FPU_NEON_EXT_V1 |
FPU_VFP_EXT_D32)
@@ -163,6 +164,7 @@
#define FPU_ARCH_VFP_HARD ARM_FEATURE (0, FPU_VFP_HARD)
#define FPU_ARCH_VFP_V4 ARM_FEATURE(0, FPU_VFP_V4)
#define FPU_ARCH_VFP_V4D16 ARM_FEATURE(0, FPU_VFP_V4D16)
+#define FPU_ARCH_VFP_V4_SP_D16 ARM_FEATURE(0, FPU_VFP_V4_SP_D16)
#define FPU_ARCH_NEON_VFP_V4 \
ARM_FEATURE(0, FPU_VFP_V4 | FPU_NEON_EXT_V1 | FPU_NEON_EXT_FMA)