aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2017-06-16 21:06:36 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2017-06-16 21:06:36 +0000
commitffc126904bb2352b55e987a4a8f0c614a84afd79 (patch)
tree3082d5d75d3847de51de72447c8f1c1a21ff7d92
parentbe5c4e06871958f2cbd7f091b6b123fb5ee94151 (diff)
downloadgcc-ffc126904bb2352b55e987a4a8f0c614a84afd79.zip
gcc-ffc126904bb2352b55e987a4a8f0c614a84afd79.tar.gz
gcc-ffc126904bb2352b55e987a4a8f0c614a84afd79.tar.bz2
[arm] Add a few missing architecture extension options.
Reviewing the list of options for the purposes of writing the documentation revealed that a small number of options were missing. Mostly these are aliases for existing options, but in a couple of cases we lacked the ability to disable certain other options. * config/arm/arm-cpus.in (armv7): Add extension +nofp. (armv7-r): Add aliases vfpv3xd and vfpv3-d16. (armv8-m.main): Add option +nodsp. * config/arm/arm-cpu-cdata.h: Regenerated. From-SVN: r249306
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/arm/arm-cpu-cdata.h24
-rw-r--r--gcc/config/arm/arm-cpus.in6
3 files changed, 37 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3424581..88b1734 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2017-06-16 Richard Earnshaw <rearnsha@arm.com>
+ * config/arm/arm-cpus.in (armv7): Add extension +nofp.
+ (armv7-r): Add aliases vfpv3xd and vfpv3-d16.
+ (armv8-m.main): Add option +nodsp.
+ * config/arm/arm-cpu-cdata.h: Regenerated.
+
+2017-06-16 Richard Earnshaw <rearnsha@arm.com>
+
* config/arm/t-fuchsia: New file.
* config.gcc (arm*-*-fuchsia*): Use it.
diff --git a/gcc/config/arm/arm-cpu-cdata.h b/gcc/config/arm/arm-cpu-cdata.h
index 5034dbb..8406fa0 100644
--- a/gcc/config/arm/arm-cpu-cdata.h
+++ b/gcc/config/arm/arm-cpu-cdata.h
@@ -1814,6 +1814,10 @@ static const struct cpu_arch_extension arch_opttab_armv7[] = {
{ ISA_VFPv3,ISA_FP_DBL, isa_nobit }
},
{
+ "nofp", true, false,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ {
"vfpv3-d16", false, true,
{ ISA_VFPv3,ISA_FP_DBL, isa_nobit }
},
@@ -1961,6 +1965,14 @@ static const struct cpu_arch_extension arch_opttab_armv7_r[] = {
"noidiv", true, false,
{ isa_bit_adiv, isa_nobit }
},
+ {
+ "vfpv3xd", false, true,
+ { ISA_VFPv3, isa_nobit }
+ },
+ {
+ "vfpv3-d16", false, true,
+ { ISA_VFPv3,ISA_FP_DBL, isa_nobit }
+ },
{ NULL, false, false, {isa_nobit}}
};
@@ -2025,6 +2037,14 @@ static const struct cpu_arch_extension arch_opttab_armv8_1_a[] = {
"nofp", true, false,
{ ISA_ALL_FP, isa_nobit }
},
+ {
+ "vfpv4-sp-d16", false, true,
+ { ISA_VFPv4, isa_nobit }
+ },
+ {
+ "fpv5-d16", false, true,
+ { ISA_FPv5,ISA_FP_DBL, isa_nobit }
+ },
{ NULL, false, false, {isa_nobit}}
};
@@ -2069,6 +2089,10 @@ static const struct cpu_arch_extension arch_opttab_armv8_m_main[] = {
"nofp", true, false,
{ ISA_ALL_FP, isa_nobit }
},
+ {
+ "nodsp", true, false,
+ { isa_bit_ARMv7em, isa_nobit }
+ },
{ NULL, false, false, {isa_nobit}}
};
diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
index 14e49ec..43f4ebc 100644
--- a/gcc/config/arm/arm-cpus.in
+++ b/gcc/config/arm/arm-cpus.in
@@ -228,6 +228,7 @@ begin arch armv7
# fp => VFPv3-d16 (only useful for the A+R profile subset).
option fp add VFPv3 FP_DBL
optalias vfpv3-d16 fp
+ option nofp remove ALL_FP
end arch armv7
begin arch armv7-a
@@ -281,7 +282,9 @@ begin arch armv7-r
isa ARMv7r
# ARMv7-r uses VFPv3-d16
option fp.sp add VFPv3
+ optalias vfpv3xd fp.sp
option fp add VFPv3 FP_DBL
+ optalias vfpv3-d16 fp
option idiv add bit_adiv
option nofp remove ALL_FP
option noidiv remove bit_adiv
@@ -303,8 +306,10 @@ begin arch armv7e-m
isa ARMv7em
# fp => VFPv4-sp-d16; fpv5 => FPv5-sp-d16; fp.dp => FPv5-d16
option fp add VFPv4
+ optalias vfpv4-sp-d16 fp
option fpv5 add FPv5
option fp.dp add FPv5 FP_DBL
+ optalias fpv5-d16 fp.dp
option nofp remove ALL_FP
end arch armv7e-m
@@ -359,6 +364,7 @@ begin arch armv8-m.main
option fp add FPv5
option fp.dp add FPv5 FP_DBL
option nofp remove ALL_FP
+ option nodsp remove bit_ARMv7em
end arch armv8-m.main
begin arch iwmmxt