Commit 0c012e9b by Richard Earnshaw Committed by Richard Earnshaw

[arm] Add vfpv2 and neon-vfpv3

	* arm/arm-fpus.def (vfpv2): New FPU, currently an alias for 'vfp'.
	(neon-vfpv3): New FPU, currently an alias for 'neon'.
	* arm/arm-tables.opt: Regenerated.
        * arm/t-aprofile (MULTILIB_REUSE): Add reuse rules for vfpv2 and
        neon-vfpv3.
	* doc/invoke.texi (ARM: -mfpu): Document new options.  Note that 'vfp'
	and 'neon' are aliases for specific implementations.

From-SVN: r242491
parent dc9e0b66
2016-11-16 Richard Earnshaw <rearnsha@arm.com>
* arm/arm-fpus.def (vfpv2): New FPU, currently an alias for 'vfp'.
(neon-vfpv3): New FPU, currently an alias for 'neon'.
* arm/arm-tables.opt: Regenerated.
* arm/t-aprofile (MULTILIB_REUSE): Add reuse rules for vfpv2 and
neon-vfpv3.
* doc/invoke.texi (ARM: -mfpu): Document new options. Note that 'vfp'
and 'neon' are aliases for specific implementations.
2016-11-16 Richard Sandiford <richard.sandiford@arm.com> 2016-11-16 Richard Sandiford <richard.sandiford@arm.com>
Alan Hayward <alan.hayward@arm.com> Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com> David Sherwood <david.sherwood@arm.com>
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
genopt.sh assumes no whitespace up to the first "," in each entry. */ genopt.sh assumes no whitespace up to the first "," in each entry. */
ARM_FPU("vfp", 2, VFP_REG_D16, FPU_FL_NONE) ARM_FPU("vfp", 2, VFP_REG_D16, FPU_FL_NONE)
ARM_FPU("vfpv2", 2, VFP_REG_D16, FPU_FL_NONE)
ARM_FPU("vfpv3", 3, VFP_REG_D32, FPU_FL_NONE) ARM_FPU("vfpv3", 3, VFP_REG_D32, FPU_FL_NONE)
ARM_FPU("vfpv3-fp16", 3, VFP_REG_D32, FPU_FL_FP16) ARM_FPU("vfpv3-fp16", 3, VFP_REG_D32, FPU_FL_FP16)
ARM_FPU("vfpv3-d16", 3, VFP_REG_D16, FPU_FL_NONE) ARM_FPU("vfpv3-d16", 3, VFP_REG_D16, FPU_FL_NONE)
...@@ -33,6 +34,7 @@ ARM_FPU("vfpv3-d16-fp16", 3, VFP_REG_D16, FPU_FL_FP16) ...@@ -33,6 +34,7 @@ ARM_FPU("vfpv3-d16-fp16", 3, VFP_REG_D16, FPU_FL_FP16)
ARM_FPU("vfpv3xd", 3, VFP_REG_SINGLE, FPU_FL_NONE) ARM_FPU("vfpv3xd", 3, VFP_REG_SINGLE, FPU_FL_NONE)
ARM_FPU("vfpv3xd-fp16", 3, VFP_REG_SINGLE, FPU_FL_FP16) ARM_FPU("vfpv3xd-fp16", 3, VFP_REG_SINGLE, FPU_FL_FP16)
ARM_FPU("neon", 3, VFP_REG_D32, FPU_FL_NEON) ARM_FPU("neon", 3, VFP_REG_D32, FPU_FL_NEON)
ARM_FPU("neon-vfpv3", 3, VFP_REG_D32, FPU_FL_NEON)
ARM_FPU("neon-fp16", 3, VFP_REG_D32, FPU_FL_NEON | FPU_FL_FP16) ARM_FPU("neon-fp16", 3, VFP_REG_D32, FPU_FL_NEON | FPU_FL_FP16)
ARM_FPU("vfpv4", 4, VFP_REG_D32, FPU_FL_FP16) ARM_FPU("vfpv4", 4, VFP_REG_D32, FPU_FL_FP16)
ARM_FPU("vfpv4-d16", 4, VFP_REG_D16, FPU_FL_FP16) ARM_FPU("vfpv4-d16", 4, VFP_REG_D16, FPU_FL_FP16)
......
...@@ -474,56 +474,62 @@ EnumValue ...@@ -474,56 +474,62 @@ EnumValue
Enum(arm_fpu) String(vfp) Value(0) Enum(arm_fpu) String(vfp) Value(0)
EnumValue EnumValue
Enum(arm_fpu) String(vfpv3) Value(1) Enum(arm_fpu) String(vfpv2) Value(1)
EnumValue EnumValue
Enum(arm_fpu) String(vfpv3-fp16) Value(2) Enum(arm_fpu) String(vfpv3) Value(2)
EnumValue EnumValue
Enum(arm_fpu) String(vfpv3-d16) Value(3) Enum(arm_fpu) String(vfpv3-fp16) Value(3)
EnumValue EnumValue
Enum(arm_fpu) String(vfpv3-d16-fp16) Value(4) Enum(arm_fpu) String(vfpv3-d16) Value(4)
EnumValue EnumValue
Enum(arm_fpu) String(vfpv3xd) Value(5) Enum(arm_fpu) String(vfpv3-d16-fp16) Value(5)
EnumValue EnumValue
Enum(arm_fpu) String(vfpv3xd-fp16) Value(6) Enum(arm_fpu) String(vfpv3xd) Value(6)
EnumValue EnumValue
Enum(arm_fpu) String(neon) Value(7) Enum(arm_fpu) String(vfpv3xd-fp16) Value(7)
EnumValue EnumValue
Enum(arm_fpu) String(neon-fp16) Value(8) Enum(arm_fpu) String(neon) Value(8)
EnumValue EnumValue
Enum(arm_fpu) String(vfpv4) Value(9) Enum(arm_fpu) String(neon-vfpv3) Value(9)
EnumValue EnumValue
Enum(arm_fpu) String(vfpv4-d16) Value(10) Enum(arm_fpu) String(neon-fp16) Value(10)
EnumValue EnumValue
Enum(arm_fpu) String(fpv4-sp-d16) Value(11) Enum(arm_fpu) String(vfpv4) Value(11)
EnumValue EnumValue
Enum(arm_fpu) String(fpv5-sp-d16) Value(12) Enum(arm_fpu) String(vfpv4-d16) Value(12)
EnumValue EnumValue
Enum(arm_fpu) String(fpv5-d16) Value(13) Enum(arm_fpu) String(fpv4-sp-d16) Value(13)
EnumValue EnumValue
Enum(arm_fpu) String(neon-vfpv4) Value(14) Enum(arm_fpu) String(fpv5-sp-d16) Value(14)
EnumValue EnumValue
Enum(arm_fpu) String(fp-armv8) Value(15) Enum(arm_fpu) String(fpv5-d16) Value(15)
EnumValue EnumValue
Enum(arm_fpu) String(neon-fp-armv8) Value(16) Enum(arm_fpu) String(neon-vfpv4) Value(16)
EnumValue EnumValue
Enum(arm_fpu) String(crypto-neon-fp-armv8) Value(17) Enum(arm_fpu) String(fp-armv8) Value(17)
EnumValue EnumValue
Enum(arm_fpu) String(vfp3) Value(18) Enum(arm_fpu) String(neon-fp-armv8) Value(18)
EnumValue
Enum(arm_fpu) String(crypto-neon-fp-armv8) Value(19)
EnumValue
Enum(arm_fpu) String(vfp3) Value(20)
...@@ -112,6 +112,8 @@ MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?vfpv4 ...@@ -112,6 +112,8 @@ MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?vfpv4
MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?fpv5-d16 MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?fpv5-d16
MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?fp-armv8 MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?fp-armv8
MULTILIB_MATCHES += mfpu?neon-fp-armv8=mfpu?crypto-neon-fp-armv8 MULTILIB_MATCHES += mfpu?neon-fp-armv8=mfpu?crypto-neon-fp-armv8
MULTILIB_MATCHES += mfpu?vfp=mfpu?vfpv2
MULTILIB_MATCHES += mfpu?neon=mfpu?neon-vfpv3
# Map all requests for vfpv3 with a later CPU to vfpv3-d16 v7-a. # Map all requests for vfpv3 with a later CPU to vfpv3-d16 v7-a.
......
...@@ -15103,12 +15103,14 @@ is unsuccessful the option has no effect. ...@@ -15103,12 +15103,14 @@ is unsuccessful the option has no effect.
@item -mfpu=@var{name} @item -mfpu=@var{name}
@opindex mfpu @opindex mfpu
This specifies what floating-point hardware (or hardware emulation) is This specifies what floating-point hardware (or hardware emulation) is
available on the target. Permissible names are: @samp{vfp}, @samp{vfpv3}, available on the target. Permissible names are: @samp{vfpv2}, @samp{vfpv3},
@samp{vfpv3-fp16}, @samp{vfpv3-d16}, @samp{vfpv3-d16-fp16}, @samp{vfpv3xd}, @samp{vfpv3-fp16}, @samp{vfpv3-d16}, @samp{vfpv3-d16-fp16}, @samp{vfpv3xd},
@samp{vfpv3xd-fp16}, @samp{neon}, @samp{neon-fp16}, @samp{vfpv4}, @samp{vfpv3xd-fp16}, @samp{neon-vfpv3}, @samp{neon-fp16}, @samp{vfpv4},
@samp{vfpv4-d16}, @samp{fpv4-sp-d16}, @samp{neon-vfpv4}, @samp{vfpv4-d16}, @samp{fpv4-sp-d16}, @samp{neon-vfpv4},
@samp{fpv5-d16}, @samp{fpv5-sp-d16}, @samp{fpv5-d16}, @samp{fpv5-sp-d16},
@samp{fp-armv8}, @samp{neon-fp-armv8} and @samp{crypto-neon-fp-armv8}. @samp{fp-armv8}, @samp{neon-fp-armv8} and @samp{crypto-neon-fp-armv8}.
Note that @samp{neon} is an alias for @samp{neon-vfpv3} and @samp{vfp}
is an alias for @samp{vfpv2}.
If @option{-msoft-float} is specified this specifies the format of If @option{-msoft-float} is specified this specifies the format of
floating-point values. floating-point values.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment