]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gas: arm: Support CPU-specific extensions with -mcpu
authorSivan Shani <sivan.shani@arm.com>
Thu, 18 Jun 2026 19:55:04 +0000 (19:55 +0000)
committerRichard Earnshaw <rearnsha@arm.com>
Fri, 19 Jun 2026 15:37:49 +0000 (16:37 +0100)
Previously, +ext/+noext feature modifiers were only available with
-march. Extend the same mechanism to -mcpu so that CPU-specific
extensions can be enabled and disabled with -mcpu=<cpu>+ext and
-mcpu=<cpu>+noext, matching GCC behaviour.

Add a per-CPU extension table (arm_ext_table) and a new ext_table
field to struct arm_cpu_option_table, reusing the existing
arm_parse_extension () infrastructure used by -march. Move the
ARM_EXT/ARM_ADD/ARM_REMOVE helpers, the ALL_FP/ALL_SIMD/ALL_FP_MVE_FP
masks and the CDE_EXTENSIONS list so they can be shared by both
-mcpu and -march extension tables.

Update ARM CPU feature definitions to match GCC CPU baselines. The
default feature set for each -mcpu remains unchanged; only support for
+ext/+noext modifiers is added.

Add tests covering supported CPU extension modifiers and the resulting
build attributes for each CPU.

gas/
    * config/tc-arm.c (struct arm_cpu_option_table): Add ext_table
    field.
    (ARM_EXT, ARM_ADD, ARM_REMOVE, ALL_FP, ALL_SIMD,
    ALL_FP_MVE_FP, CDE_EXTENSIONS): Move earlier.
    (cortex_*_ext_table, ...): New.
    (arm_cpus): Populate ext_table and update CPU feature baselines
    to match GCC.
    (arm_parse_cpu): Pass opt->ext_table to arm_parse_extension.

gas/testsuite/
    * gas/arm/feat-*.s: New test sources.
    * gas/arm/mcpu-*.d: New tests.
    * gas/arm/attr-cpu-directive.d: Update.

###
This version address the review comments from:
Message-ID: <2846ac09-3590-409d-8ecf-cc385c8929e8@arm.com>
https://inbox.sourceware.org/binutils/2846ac09-3590-409d-8ecf-cc385c8929e8@arm.com/
###

151 files changed:
gas/config/tc-arm.c
gas/testsuite/gas/arm/attr-cpu-directive.d
gas/testsuite/gas/arm/feat-bf16.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-crc.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-dotprod.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-dsp.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-fp-vfpv3.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-fp-vfpv5.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-fp.dp.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-fp.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-fp16.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-i8mm.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-idiv.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-mp.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-mve.fp.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-neon-fp16.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-pacbti.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-sec.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-simd.s [new file with mode: 0644]
gas/testsuite/gas/arm/feat-vfpv3-d16-fp16.s [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a12-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a12-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a15-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a15-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a17-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a17-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a32-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a32-attrs1.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a32-feat-crc.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a32-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a35-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a35-attrs1.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a35-feat-crc.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a35-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a5-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a5-feat-mp.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a5-feat-neon-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a5-feat-sec.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a53-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a53-attrs1.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a53-feat-crc.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a53-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a55-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a55-attrs1.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a55-feat-dotprod.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a55-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a57-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a57-feat-crc.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a57-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a7-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a7-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a710-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a710-feat-bf16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a710-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a710-feat-i8mm.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a72-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a72-feat-crc.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a72-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a73-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a73-feat-crc.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a73-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a75-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a75-feat-dotprod.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a75-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a76-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a76-feat-dotprod.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a76-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a76ae-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a76ae-feat-dotprod.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a76ae-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a77-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a77-feat-dotprod.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a77-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a78-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a78-feat-dotprod.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a78-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a78ae-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a78ae-feat-dotprod.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a78ae-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a78c-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a78c-feat-dotprod.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a78c-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a8-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a8-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a9-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a9-feat-mp.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a9-feat-neon-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-a9-feat-sec.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m33-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m33-feat-dsp.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m33-feat-fp-vfpv5.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m35p-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m35p-feat-dsp.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m35p-feat-fp-vfpv5.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m4-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m4-feat-fp-vfpv3.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m52-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m52-attrs1.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m52-feat-fp-dp.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m52-feat-mve-fp.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m52-feat-pacbti.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m55-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m55-attrs1.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m55-feat-fp-dp.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m55-feat-mve-fp.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m7-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m7-feat-fp-dp.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m85-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m85-feat-fp-dp.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m85-feat-mve-fp.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-m85-feat-pacbti.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r4f-feat-fp-vfpv3.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r5-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r5-feat-fp-vfpv3.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r5-feat-idiv.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r52-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r52-feat-crc.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r52-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r52plus-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r52plus-feat-crc.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r52plus-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r7-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r7-feat-idiv.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r7-feat-vfpv3-d16-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r8-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r8-feat-idiv.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-r8-feat-vfpv3-d16-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-x1-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-x1-feat-dotprod.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-x1-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-x1c-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-x1c-feat-dotprod.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-cortex-x1c-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-exynos-m1-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-exynos-m1-feat-crc.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-exynos-m1-feat-simd.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-marvell-pj4-feat-fp-vfpv3.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-marvell-pj4-feat-mp.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-marvell-pj4-feat-sec.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-neoverse-n1-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-neoverse-n1-feat-dotprod.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-neoverse-n1-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-neoverse-n2-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-neoverse-n2-feat-bf16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-neoverse-n2-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-neoverse-n2-feat-i8mm.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-neoverse-v1-attrs.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-neoverse-v1-feat-bf16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-neoverse-v1-feat-fp16.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-neoverse-v1-feat-i8mm.d [new file with mode: 0644]
gas/testsuite/gas/arm/mcpu-xgene1-feat-simd.d [new file with mode: 0644]

index 3ff29542411aa802b7320537ec6b6a39ffe19e25..ba599ef1fdaef9b58172d614615b858a7e0ae290 100644 (file)
@@ -30495,6 +30495,14 @@ const struct arm_legacy_option_table arm_legacy_opts[] =
   {NULL, NULL, ARM_ARCH_NONE, NULL}
 };
 
+struct arm_ext_table
+{
+  const char *           name;
+  size_t                 name_len;
+  const arm_feature_set          merge;
+  const arm_feature_set          clear;
+};
+
 struct arm_cpu_option_table
 {
   const char *           name;
@@ -30507,11 +30515,339 @@ struct arm_cpu_option_table
   /* The canonical name of the CPU, or NULL to use NAME converted to upper
      case.  */
   const char *           canonical_name;
+  const struct arm_ext_table * ext_table;
+};
+
+/* Used to add support for +E and +noE extension.  */
+#define ARM_EXT(E, M, C) { E, sizeof (E) - 1, M, C }
+/* Used to add support for a +E extension.  */
+#define ARM_ADD(E, M) { E, sizeof(E) - 1, M, ARM_ARCH_NONE }
+/* Used to add support for a +noE extension.  */
+#define ARM_REMOVE(E, C) { E, sizeof(E) -1, ARM_ARCH_NONE, C }
+
+#define ALL_FP ARM_FEATURE (0, ARM_EXT2_FP16_INST | ARM_EXT2_FP16_FML, \
+                           ~0 & ~FPU_ENDIAN_PURE)
+#define ALL_FP_MVE_FP ARM_FEATURE (0, (ARM_EXT2_FP16_INST                 \
+                                       | ARM_EXT2_FP16_FML                \
+                                       | ARM_EXT2_MVE_FP),                \
+                                  ~0 & ~FPU_ENDIAN_PURE)
+#define ALL_SIMD ARM_FEATURE_COPROC (FPU_NEON_EXT_V1 | FPU_NEON_EXT_FMA       \
+                                    | FPU_NEON_EXT_ARMV8 | FPU_NEON_EXT_RDMA \
+                                    | FPU_NEON_EXT_DOTPROD)
+
+#define CDE_EXTENSIONS \
+  ARM_ADD ("cdecp0", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE0)), \
+  ARM_ADD ("cdecp1", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE1)), \
+  ARM_ADD ("cdecp2", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE2)), \
+  ARM_ADD ("cdecp3", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE3)), \
+  ARM_ADD ("cdecp4", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE4)), \
+  ARM_ADD ("cdecp5", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE5)), \
+  ARM_ADD ("cdecp6", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE6)), \
+  ARM_ADD ("cdecp7", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE7))
+
+/* -mcpu extensions.  */
+static const struct arm_ext_table cortex_a5_ext_table[] =
+{
+  ARM_REMOVE ("fp", ALL_FP),
+  ARM_REMOVE ("simd", ALL_SIMD),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a7_ext_table[] =
+{
+  ARM_REMOVE ("fp", ALL_FP),
+  ARM_REMOVE ("simd", ALL_SIMD),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a8_ext_table[] =
+{
+  ARM_REMOVE ("fp", ALL_FP),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a9_ext_table[] =
+{
+  ARM_REMOVE ("fp", ALL_FP),
+  ARM_REMOVE ("simd", ALL_SIMD),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a12_ext_table[] =
+{
+  ARM_REMOVE ("fp", ALL_FP),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a15_ext_table[] =
+{
+  ARM_REMOVE ("fp", ALL_FP),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a17_ext_table[] =
+{
+  ARM_REMOVE ("fp", ALL_FP),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_r5_ext_table[] =
+{
+  ARM_REMOVE ("fp",    ALL_FP),
+  ARM_REMOVE ("fp.dp", ARM_FEATURE_COPROC (FPU_VFP_EXT_V1 | FPU_VFP_EXT_V3
+                                          | FPU_VFP_EXT_ARMV8)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_r7_ext_table[] =
+{
+  ARM_REMOVE ("fp",    ALL_FP),
+  ARM_REMOVE ("fp.dp", ARM_FEATURE_COPROC (FPU_VFP_EXT_V1 | FPU_VFP_EXT_V3
+                                          | FPU_VFP_EXT_ARMV8)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_r8_ext_table[] =
+{
+  ARM_REMOVE ("fp",    ALL_FP),
+  ARM_REMOVE ("fp.dp", ARM_FEATURE_COPROC (FPU_VFP_EXT_V1 | FPU_VFP_EXT_V3
+                                          | FPU_VFP_EXT_ARMV8)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_m4_ext_table[] =
+{
+  ARM_REMOVE ("fp",    ALL_FP),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_m7_ext_table[] =
+{
+  ARM_REMOVE ("fp",    ALL_FP),
+  ARM_REMOVE ("fp.dp", ARM_FEATURE_COPROC (FPU_VFP_EXT_V1 | FPU_VFP_EXT_V3
+                                          | FPU_VFP_EXT_ARMV8)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a32_ext_table[] =
+{
+  ARM_REMOVE ("fp",     ALL_FP),
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a35_ext_table[] =
+{
+  ARM_REMOVE ("fp",     ALL_FP),
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a53_ext_table[] =
+{
+  ARM_REMOVE ("fp",     ALL_FP),
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a57_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a72_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a73_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table exynos_m1_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_r52_ext_table[] =
+{
+  ARM_REMOVE ("fp.dp", ARM_FEATURE_COPROC (FPU_VFP_EXT_D32 | FPU_VFP_EXT_ARMV8
+                                          | FPU_NEON_EXT_V1 | FPU_NEON_EXT_FMA
+                                          | FPU_NEON_EXT_ARMV8 | FPU_NEON_EXT_RDMA
+                                          | FPU_NEON_EXT_DOTPROD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_r52plus_ext_table[] =
+{
+  ARM_REMOVE ("fp.dp", ARM_FEATURE_COPROC (FPU_VFP_EXT_D32 | FPU_VFP_EXT_ARMV8
+                                          | FPU_NEON_EXT_V1 | FPU_NEON_EXT_FMA
+                                          | FPU_NEON_EXT_ARMV8 | FPU_NEON_EXT_RDMA
+                                          | FPU_NEON_EXT_DOTPROD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_m33_ext_table[] =
+{
+  ARM_REMOVE ("fp",  ALL_FP),
+  ARM_REMOVE ("dsp", ARM_FEATURE_CORE_LOW (ARM_AEXT_V8M_MAIN_DSP)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_m35p_ext_table[] =
+{
+  ARM_REMOVE ("fp",  ALL_FP),
+  ARM_REMOVE ("dsp", ARM_FEATURE_CORE_LOW (ARM_AEXT_V8M_MAIN_DSP)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_m52_ext_table[] =
+{
+  ARM_REMOVE ("pacbti", ARM_FEATURE_CORE_HIGH_HIGH (ARM_EXT3_PACBTI)),
+  ARM_REMOVE ("mve.fp", ARM_FEATURE_CORE_HIGH (ARM_EXT2_MVE_FP)),
+  ARM_REMOVE ("mve",    ARM_FEATURE_CORE_HIGH (ARM_EXT2_MVE | ARM_EXT2_MVE_FP)),
+  ARM_REMOVE ("fp",     ALL_FP_MVE_FP),
+  ARM_REMOVE ("dsp",    ARM_FEATURE_CORE_HIGH (ARM_EXT2_MVE | ARM_EXT2_MVE_FP)),
+  CDE_EXTENSIONS,
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_m55_ext_table[] =
+{
+  ARM_REMOVE ("mve.fp", ARM_FEATURE_CORE_HIGH (ARM_EXT2_MVE_FP)),
+  ARM_REMOVE ("mve",    ARM_FEATURE_CORE_HIGH (ARM_EXT2_MVE | ARM_EXT2_MVE_FP)),
+  ARM_REMOVE ("fp",     ALL_FP_MVE_FP),
+  ARM_REMOVE ("dsp",    ARM_FEATURE_CORE_HIGH (ARM_EXT2_MVE | ARM_EXT2_MVE_FP)),
+  CDE_EXTENSIONS,
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_m85_ext_table[] =
+{
+  ARM_REMOVE ("pacbti", ARM_FEATURE_CORE_HIGH_HIGH (ARM_EXT3_PACBTI)),
+  ARM_REMOVE ("mve.fp", ARM_FEATURE_CORE_HIGH (ARM_EXT2_MVE_FP)),
+  ARM_REMOVE ("mve",    ARM_FEATURE_CORE_HIGH (ARM_EXT2_MVE | ARM_EXT2_MVE_FP)),
+  ARM_REMOVE ("fp",     ALL_FP_MVE_FP),
+  ARM_REMOVE ("dsp",    ARM_FEATURE_CORE_HIGH (ARM_EXT2_MVE | ARM_EXT2_MVE_FP)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a55_ext_table[] =
+{
+  ARM_REMOVE ("fp", ALL_FP),
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a75_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a76_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a76ae_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a77_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a78_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a78ae_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a78c_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_x1_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_x1c_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table neoverse_n1_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table neoverse_v1_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table cortex_a710_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
+};
+
+static const struct arm_ext_table neoverse_n2_ext_table[] =
+{
+  ARM_ADD ("crypto", ARM_FEATURE_COPROC (FPU_CRYPTO_EXT_ARMV8
+                                        | FPU_VFP_EXT_ARMV8 | FPU_VFP_EXT_ARMV8xD)),
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE }
 };
 
 /* This list should, at a minimum, contain all the cpu names
    recognized by GCC.  */
-#define ARM_CPU_OPT(N, CN, V, E, DF) { N, sizeof (N) - 1, V, E, DF, CN }
+#define ARM_CPU_OPT(N, CN, V, E, DF) { N, sizeof (N) - 1, V, E, DF, CN, NULL }
+#define ARM_CPU_OPT2(N, CN, V, E, DF, ext) \
+  { N, sizeof (N) - 1, V, E, DF, CN, ext##_ext_table }
 
 static const struct arm_cpu_option_table arm_cpus[] =
 {
@@ -30764,113 +31100,171 @@ static const struct arm_cpu_option_table arm_cpus[] =
   ARM_CPU_OPT ("arm1176jzf-s",   NULL,                ARM_ARCH_V6KZ,
               ARM_ARCH_NONE,
               FPU_ARCH_VFP_V2),
-  ARM_CPU_OPT ("cortex-a5",      "Cortex-A5",         ARM_ARCH_V7A,
-              ARM_FEATURE_CORE_LOW (ARM_EXT_MP | ARM_EXT_SEC),
-              FPU_ARCH_SOFTVFP),
-  ARM_CPU_OPT ("cortex-a7",      "Cortex-A7",         ARM_ARCH_V7VE,
-              ARM_ARCH_NONE,
-              FPU_ARCH_NEON_VFP_V4),
-  ARM_CPU_OPT ("cortex-a8",      "Cortex-A8",         ARM_ARCH_V7A,
-              ARM_FEATURE_CORE_LOW (ARM_EXT_SEC),
-              ARM_FEATURE_COPROC (FPU_VFP_V3 | FPU_NEON_EXT_V1)),
-  ARM_CPU_OPT ("cortex-a9",      "Cortex-A9",         ARM_ARCH_V7A,
-              ARM_FEATURE_CORE_LOW (ARM_EXT_MP | ARM_EXT_SEC),
-              ARM_FEATURE_COPROC (FPU_VFP_V3 | FPU_NEON_EXT_V1)),
-  ARM_CPU_OPT ("cortex-a12",     "Cortex-A12",        ARM_ARCH_V7VE,
-              ARM_ARCH_NONE,
-              FPU_ARCH_NEON_VFP_V4),
-  ARM_CPU_OPT ("cortex-a15",     "Cortex-A15",        ARM_ARCH_V7VE,
-              ARM_ARCH_NONE,
-              FPU_ARCH_NEON_VFP_V4),
-  ARM_CPU_OPT ("cortex-a17",     "Cortex-A17",        ARM_ARCH_V7VE,
-              ARM_ARCH_NONE,
-              FPU_ARCH_NEON_VFP_V4),
-  ARM_CPU_OPT ("cortex-a32",     "Cortex-A32",        ARM_ARCH_V8A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_CRC),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("cortex-a35",     "Cortex-A35",        ARM_ARCH_V8A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_CRC),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("cortex-a53",     "Cortex-A53",        ARM_ARCH_V8A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_CRC),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("cortex-a55",    "Cortex-A55",         ARM_ARCH_V8_2A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
-  ARM_CPU_OPT ("cortex-a57",     "Cortex-A57",        ARM_ARCH_V8A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_CRC),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("cortex-a72",     "Cortex-A72",        ARM_ARCH_V8A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_CRC),
-             FPU_ARCH_CRYPTO_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("cortex-a73",     "Cortex-A73",        ARM_ARCH_V8A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_CRC),
-             FPU_ARCH_CRYPTO_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("cortex-a75",    "Cortex-A75",         ARM_ARCH_V8_2A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
-  ARM_CPU_OPT ("cortex-a76",    "Cortex-A76",         ARM_ARCH_V8_2A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
-  ARM_CPU_OPT ("cortex-a76ae",    "Cortex-A76AE",      ARM_ARCH_V8_2A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
-  ARM_CPU_OPT ("cortex-a77",    "Cortex-A77",         ARM_ARCH_V8_2A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
-  ARM_CPU_OPT ("cortex-a78",   "Cortex-A78",          ARM_ARCH_V8_2A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST | ARM_EXT2_SB),
-              FPU_ARCH_DOTPROD_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("cortex-a78ae",   "Cortex-A78AE",          ARM_ARCH_V8_2A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST | ARM_EXT2_SB),
-              FPU_ARCH_DOTPROD_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("cortex-a78c",   "Cortex-A78C",    ARM_ARCH_V8_2A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST | ARM_EXT2_SB),
-              FPU_ARCH_DOTPROD_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("cortex-a710",   "Cortex-A710",    ARM_ARCH_V9A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST
-                                   | ARM_EXT2_BF16
-                                   | ARM_EXT2_I8MM),
-              FPU_ARCH_DOTPROD_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("ares",    "Ares",             ARM_ARCH_V8_2A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
+  ARM_CPU_OPT2 ("cortex-a5",     "Cortex-A5",         ARM_ARCH_V7A,
+               ARM_FEATURE ((ARM_EXT_MP | ARM_EXT_SEC),
+                            ARM_EXT2_FP16_INST,
+                            (FPU_VFP_V4 | FPU_NEON_EXT_V1
+                             | FPU_NEON_EXT_FMA)),
+               FPU_ARCH_NEON_VFP_V4,
+               cortex_a5),
+  ARM_CPU_OPT2 ("cortex-a7",     "Cortex-A7",         ARM_ARCH_V7VE,
+               ARM_FEATURE_COPROC (FPU_VFP_V4 | FPU_NEON_EXT_V1
+                                   | FPU_NEON_EXT_FMA),
+               FPU_ARCH_NEON_VFP_V4,
+               cortex_a7),
+  ARM_CPU_OPT2 ("cortex-a8",     "Cortex-A8",         ARM_ARCH_V7A,
+               ARM_FEATURE_LOW (ARM_EXT_SEC, FPU_VFP_V3 | FPU_NEON_EXT_V1),
+               ARM_FEATURE_COPROC (FPU_VFP_V3 | FPU_NEON_EXT_V1),
+               cortex_a8),
+  ARM_CPU_OPT2 ("cortex-a9",     "Cortex-A9",         ARM_ARCH_V7A,
+               ARM_FEATURE ((ARM_EXT_MP | ARM_EXT_SEC),
+                            ARM_EXT2_FP16_INST,
+                            (FPU_VFP_V4 | FPU_NEON_EXT_V1
+                             | FPU_NEON_EXT_FMA)),
+               FPU_ARCH_NEON_VFP_V4,
+               cortex_a9),
+  ARM_CPU_OPT2 ("cortex-a12",    "Cortex-A12",        ARM_ARCH_V7VE,
+               ARM_FEATURE_COPROC (FPU_VFP_V4 | FPU_NEON_EXT_V1
+                                   | FPU_NEON_EXT_FMA),
+               FPU_ARCH_NEON_VFP_V4,
+               cortex_a12),
+  ARM_CPU_OPT2 ("cortex-a15",    "Cortex-A15",        ARM_ARCH_V7VE,
+               ARM_FEATURE_COPROC (FPU_VFP_V4 | FPU_NEON_EXT_V1
+                                   | FPU_NEON_EXT_FMA),
+               FPU_ARCH_NEON_VFP_V4,
+               cortex_a15),
+  ARM_CPU_OPT2 ("cortex-a17",    "Cortex-A17",        ARM_ARCH_V7VE,
+               ARM_FEATURE_COPROC (FPU_VFP_V4 | FPU_NEON_EXT_V1
+                                   | FPU_NEON_EXT_FMA),
+               FPU_ARCH_NEON_VFP_V4,
+               cortex_a17),
+  ARM_CPU_OPT2 ("cortex-a32",    "Cortex-A32",        ARM_ARCH_V8A,
+               ARM_FEATURE(0, ARM_EXT2_CRC, FPU_NEON_ARMV8 | FPU_VFP_ARMV8),
+               FPU_ARCH_NEON_VFP_ARMV8,
+               cortex_a32),
+  ARM_CPU_OPT2 ("cortex-a35",    "Cortex-A35",        ARM_ARCH_V8A,
+               ARM_FEATURE(0, ARM_EXT2_CRC, FPU_NEON_ARMV8 | FPU_VFP_ARMV8),
+               FPU_ARCH_NEON_VFP_ARMV8,
+               cortex_a35),
+  ARM_CPU_OPT2 ("cortex-a53",    "Cortex-A53",        ARM_ARCH_V8A,
+               ARM_FEATURE(0, ARM_EXT2_CRC, FPU_NEON_ARMV8 | FPU_VFP_ARMV8),
+               FPU_ARCH_NEON_VFP_ARMV8,
+               cortex_a53),
+  ARM_CPU_OPT2 ("cortex-a55",    "Cortex-A55",        ARM_ARCH_V8_2A,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               cortex_a55),
+  ARM_CPU_OPT2 ("cortex-a57",    "Cortex-A57",        ARM_ARCH_V8A,
+               ARM_FEATURE(0, ARM_EXT2_CRC, FPU_NEON_ARMV8 | FPU_VFP_ARMV8),
+               FPU_ARCH_NEON_VFP_ARMV8,
+               cortex_a57),
+  ARM_CPU_OPT2 ("cortex-a72",    "Cortex-A72",        ARM_ARCH_V8A,
+               ARM_FEATURE(0, ARM_EXT2_CRC, FPU_NEON_ARMV8 | FPU_VFP_ARMV8),
+               FPU_ARCH_NEON_VFP_ARMV8,
+               cortex_a72),
+  ARM_CPU_OPT2 ("cortex-a73",    "Cortex-A73",        ARM_ARCH_V8A,
+               ARM_FEATURE(0, ARM_EXT2_CRC, FPU_NEON_ARMV8 | FPU_VFP_ARMV8),
+               FPU_ARCH_NEON_VFP_ARMV8,
+               cortex_a73),
+  ARM_CPU_OPT2 ("cortex-a75",    "Cortex-A75",        ARM_ARCH_V8_2A,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               cortex_a75),
+  ARM_CPU_OPT2 ("cortex-a76",    "Cortex-A76",        ARM_ARCH_V8_2A,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               FPU_ARCH_VFP_V5_SP_D16,
+               cortex_a76),
+  ARM_CPU_OPT2 ("cortex-a76ae",    "Cortex-A76AE",      ARM_ARCH_V8_2A,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               FPU_ARCH_VFP_V5_SP_D16,
+               cortex_a76ae),
+  ARM_CPU_OPT2 ("cortex-a77",    "Cortex-A77",        ARM_ARCH_V8_2A,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               FPU_ARCH_VFP_V5_SP_D16,
+               cortex_a77),
+  ARM_CPU_OPT2 ("cortex-a78",   "Cortex-A78",         ARM_ARCH_V8_2A,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               FPU_ARCH_VFP_V5_SP_D16,
+               cortex_a78),
+  ARM_CPU_OPT2 ("cortex-a78ae",   "Cortex-A78AE",         ARM_ARCH_V8_2A,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               FPU_ARCH_VFP_V5_SP_D16,
+               cortex_a78ae),
+  ARM_CPU_OPT2 ("cortex-a78c",   "Cortex-A78C",           ARM_ARCH_V8_2A,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               FPU_ARCH_VFP_V5_SP_D16,
+               cortex_a78c),
   ARM_CPU_OPT ("cortex-r4",      "Cortex-R4",         ARM_ARCH_V7R,
               ARM_ARCH_NONE,
               FPU_ARCH_SOFTVFP),
   ARM_CPU_OPT ("cortex-r4f",     "Cortex-R4F",        ARM_ARCH_V7R,
-              ARM_ARCH_NONE,
-              FPU_ARCH_VFP_V3D16),
-  ARM_CPU_OPT ("cortex-r5",      "Cortex-R5",         ARM_ARCH_V7R,
-              ARM_FEATURE_CORE_LOW (ARM_EXT_ADIV),
-              FPU_ARCH_SOFTVFP),
-  ARM_CPU_OPT ("cortex-r7",      "Cortex-R7",         ARM_ARCH_V7R,
-              ARM_FEATURE_CORE_LOW (ARM_EXT_ADIV),
-              FPU_ARCH_VFP_V3D16),
-  ARM_CPU_OPT ("cortex-r8",      "Cortex-R8",         ARM_ARCH_V7R,
-              ARM_FEATURE_CORE_LOW (ARM_EXT_ADIV),
+              FPU_ARCH_VFP_V3D16,
               FPU_ARCH_VFP_V3D16),
-  ARM_CPU_OPT ("cortex-r52",     "Cortex-R52",        ARM_ARCH_V8R,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_CRC),
-             FPU_ARCH_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("cortex-r52plus",         "Cortex-R52+",               ARM_ARCH_V8R,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_CRC),
-             FPU_ARCH_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("cortex-m35p",    "Cortex-M35P",       ARM_ARCH_V8M_MAIN,
-              ARM_FEATURE_CORE_LOW (ARM_EXT_V5ExP | ARM_EXT_V6_DSP),
-              FPU_ARCH_SOFTVFP),
-  ARM_CPU_OPT ("cortex-m33",     "Cortex-M33",        ARM_ARCH_V8M_MAIN,
-              ARM_FEATURE_CORE_LOW (ARM_EXT_V5ExP | ARM_EXT_V6_DSP),
-              FPU_ARCH_SOFTVFP),
+  ARM_CPU_OPT2 ("cortex-r5",     "Cortex-R5",         ARM_ARCH_V7R,
+               ARM_FEATURE (ARM_EXT_ADIV, 0, FPU_VFP_V3),
+               FPU_ARCH_VFP_V3,
+               cortex_r5),
+  ARM_CPU_OPT2 ("cortex-r7",     "Cortex-R7",         ARM_ARCH_V7R,
+               ARM_FEATURE (ARM_EXT_ADIV, 0, FPU_VFP_V3D16 | FPU_VFP_EXT_FP16),
+               FPU_ARCH_VFP_V3D16_FP16,
+               cortex_r7),
+  ARM_CPU_OPT2 ("cortex-r8",     "Cortex-R8",         ARM_ARCH_V7R,
+               ARM_FEATURE (ARM_EXT_ADIV, 0, FPU_VFP_V3D16 | FPU_VFP_EXT_FP16),
+               FPU_ARCH_VFP_V3D16_FP16,
+               cortex_r8),
+  ARM_CPU_OPT2 ("cortex-r52",    "Cortex-R52",        ARM_ARCH_V8R,
+               ARM_FEATURE(0, ARM_EXT2_CRC, FPU_NEON_ARMV8 | FPU_VFP_ARMV8),
+               FPU_ARCH_NEON_VFP_ARMV8,
+               cortex_r52),
+  ARM_CPU_OPT2 ("cortex-r52plus",        "Cortex-R52+",        ARM_ARCH_V8R,
+               ARM_FEATURE(0, ARM_EXT2_CRC, FPU_NEON_ARMV8 | FPU_VFP_ARMV8),
+               FPU_ARCH_NEON_VFP_ARMV8,
+               cortex_r52plus),
+  ARM_CPU_OPT2 ("cortex-m85",   "Cortex-M85",         ARM_ARCH_V8_1M_MAIN,
+               ARM_FEATURE_ALL(ARM_AEXT_V8M_MAIN_DSP,
+                               (ARM_EXT2_FP16_INST | ARM_EXT2_MVE
+                                | ARM_EXT2_MVE_FP),
+                               ARM_EXT3_PACBTI,
+                               (FPU_VFP_V5D16 | FPU_VFP_EXT_FP16
+                                | FPU_VFP_EXT_FMA)),
+               FPU_ARCH_SOFTVFP,
+               cortex_m85),
+  ARM_CPU_OPT2 ("cortex-m55",   "Cortex-M55",         ARM_ARCH_V8_1M_MAIN,
+               ARM_FEATURE_ALL(ARM_AEXT_V8M_MAIN_DSP,
+                               (ARM_EXT2_FP16_INST | ARM_EXT2_MVE
+                                | ARM_EXT2_MVE_FP),
+                               0,
+                               (FPU_VFP_V5D16 | FPU_VFP_EXT_FP16
+                                | FPU_VFP_EXT_FMA)),
+               FPU_ARCH_SOFTVFP,
+               cortex_m55),
+  ARM_CPU_OPT2 ("cortex-m52",   "Cortex-M52",         ARM_ARCH_V8_1M_MAIN,
+               ARM_FEATURE_ALL (ARM_AEXT_V8M_MAIN_DSP,
+                                (ARM_EXT2_FP16_INST | ARM_EXT2_MVE
+                                 | ARM_EXT2_MVE_FP),
+                                ARM_EXT3_PACBTI,
+                                (FPU_VFP_V5D16 | FPU_VFP_EXT_FP16
+                                 | FPU_VFP_EXT_FMA)),
+               FPU_ARCH_SOFTVFP,
+               cortex_m52),
+  ARM_CPU_OPT2 ("cortex-m35p",   "Cortex-M35P",       ARM_ARCH_V8M_MAIN,
+               ARM_FEATURE_LOW (ARM_EXT_V5ExP | ARM_EXT_V6_DSP, FPU_VFP_V4D16),
+               FPU_ARCH_VFP_V3D16,
+               cortex_m35p),
+  ARM_CPU_OPT2 ("cortex-m33",    "Cortex-M33",        ARM_ARCH_V8M_MAIN,
+               ARM_FEATURE_LOW (ARM_EXT_V5ExP | ARM_EXT_V6_DSP, FPU_VFP_V4D16),
+               FPU_ARCH_VFP_V3D16, cortex_m33),
   ARM_CPU_OPT ("cortex-m23",     "Cortex-M23",        ARM_ARCH_V8M_BASE,
               ARM_ARCH_NONE,
               FPU_ARCH_SOFTVFP),
-  ARM_CPU_OPT ("cortex-m7",      "Cortex-M7",         ARM_ARCH_V7EM,
-              ARM_ARCH_NONE,
-              FPU_ARCH_SOFTVFP),
-  ARM_CPU_OPT ("cortex-m4",      "Cortex-M4",         ARM_ARCH_V7EM,
-              ARM_ARCH_NONE,
-              FPU_ARCH_SOFTVFP),
+  ARM_CPU_OPT2 ("cortex-m7",     "Cortex-M7",         ARM_ARCH_V7EM,
+               ARM_FEATURE_COPROC (FPU_VFP_V5D16),
+               FPU_ARCH_VFP_V5D16,
+               cortex_m7),
+  ARM_CPU_OPT2 ("cortex-m4",     "Cortex-M4",         ARM_ARCH_V7EM,
+               ARM_FEATURE_COPROC (FPU_VFP_V4_SP_D16),
+               FPU_ARCH_VFP_V4_SP_D16,
+               cortex_m4),
   ARM_CPU_OPT ("cortex-m3",      "Cortex-M3",         ARM_ARCH_V7M,
               ARM_ARCH_NONE,
               FPU_ARCH_SOFTVFP),
@@ -30883,28 +31277,50 @@ static const struct arm_cpu_option_table arm_cpus[] =
   ARM_CPU_OPT ("cortex-m0plus",          "Cortex-M0+",        ARM_ARCH_V6SM,
               ARM_ARCH_NONE,
               FPU_ARCH_SOFTVFP),
-  ARM_CPU_OPT ("cortex-x1",   "Cortex-X1",            ARM_ARCH_V8_2A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST | ARM_EXT2_SB),
-              FPU_ARCH_DOTPROD_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("cortex-x1c",   "Cortex-X1C",          ARM_ARCH_V8_2A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST | ARM_EXT2_SB),
-              FPU_ARCH_DOTPROD_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("exynos-m1",      "Samsung Exynos M1", ARM_ARCH_V8A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_CRC),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8),
-  ARM_CPU_OPT ("neoverse-n1",    "Neoverse N1",               ARM_ARCH_V8_2A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_DOTPROD),
-  ARM_CPU_OPT ("neoverse-n2",   "Neoverse N2",        ARM_ARCH_V8_5A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST
-                                   | ARM_EXT2_BF16
-                                   | ARM_EXT2_I8MM),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_4),
-  ARM_CPU_OPT ("neoverse-v1", "Neoverse V1", ARM_ARCH_V8_4A,
-              ARM_FEATURE_CORE_HIGH (ARM_EXT2_FP16_INST
-                                   | ARM_EXT2_BF16
-                                   | ARM_EXT2_I8MM),
-              FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_4),
+  ARM_CPU_OPT2 ("cortex-x1",   "Cortex-X1",           ARM_ARCH_V8_2A,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               FPU_ARCH_VFP_V5_SP_D16,
+               cortex_x1),
+  ARM_CPU_OPT2 ("cortex-x1c",   "Cortex-X1C",         ARM_ARCH_V8_2A,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               FPU_ARCH_VFP_V5_SP_D16,
+               cortex_x1c),
+  ARM_CPU_OPT2 ("exynos-m1",     "Samsung Exynos M1", ARM_ARCH_V8A,
+               ARM_FEATURE (0, ARM_EXT2_CRC, FPU_NEON_ARMV8 | FPU_VFP_ARMV8),
+               FPU_ARCH_NEON_VFP_ARMV8,
+               exynos_m1),
+  ARM_CPU_OPT2 ("neoverse-n1",  "Neoverse N1",        ARM_ARCH_V8_2A,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               FPU_ARCH_VFP_V5_SP_D16,
+               neoverse_n1),
+  ARM_CPU_OPT2 ("ares",    "Ares",            ARM_ARCH_V8_2A,
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               FPU_ARCH_VFP_V5_SP_D16,
+               neoverse_n1),
+  ARM_CPU_OPT2 ("neoverse-n2",  "Neoverse N2",        ARM_ARCH_V9A,
+               ARM_FEATURE(0,
+                           (ARM_EXT2_FP16_INST | ARM_EXT2_FP16_FML
+                            | ARM_EXT2_BF16 | ARM_EXT2_I8MM),
+                           (FPU_NEON_ARMV8_1 | FPU_VFP_ARMV8
+                            | FPU_NEON_EXT_DOTPROD | FPU_NEON_EXT_RDMA)),
+               FPU_ARCH_VFP_V5_SP_D16,
+               neoverse_n2),
+  ARM_CPU_OPT2 ("cortex-a710",  "Cortex-A710",    ARM_ARCH_V9A,
+               ARM_FEATURE(0,
+                           (ARM_EXT2_FP16_INST | ARM_EXT2_FP16_FML
+                            | ARM_EXT2_BF16 | ARM_EXT2_I8MM),
+                           (FPU_NEON_ARMV8_1 | FPU_VFP_ARMV8
+                            | FPU_NEON_EXT_DOTPROD | FPU_NEON_EXT_RDMA)),
+               FPU_ARCH_VFP_V5_SP_D16,
+               cortex_a710),
+  ARM_CPU_OPT2 ("neoverse-v1",  "Neoverse V1",        ARM_ARCH_V8_4A,
+               ARM_FEATURE(0,
+                           (ARM_EXT2_FP16_INST | ARM_EXT2_FP16_FML
+                            | ARM_EXT2_BF16 | ARM_EXT2_I8MM),
+                           (FPU_NEON_ARMV8_1 | FPU_VFP_ARMV8
+                            | FPU_NEON_EXT_DOTPROD)),
+               FPU_ARCH_NEON_VFP_ARMV8_4_FP16FML,
+               neoverse_v1),
   /* ??? XSCALE is really an architecture.  */
   ARM_CPU_OPT ("xscale",         NULL,                ARM_ARCH_XSCALE,
               ARM_ARCH_NONE,
@@ -30928,31 +31344,24 @@ static const struct arm_cpu_option_table arm_cpus[] =
 
   /* Marvell processors.  */
   ARM_CPU_OPT ("marvell-pj4",    NULL,                ARM_ARCH_V7A,
-              ARM_FEATURE_CORE_LOW (ARM_EXT_MP | ARM_EXT_SEC),
-              FPU_ARCH_VFP_V3D16),
+              ARM_FEATURE (ARM_EXT_MP | ARM_EXT_SEC, 0, FPU_VFP_V3),
+              FPU_ARCH_VFP_V3),
   ARM_CPU_OPT ("marvell-whitney", NULL,                       ARM_ARCH_V7A,
               ARM_FEATURE_CORE_LOW (ARM_EXT_MP | ARM_EXT_SEC),
               FPU_ARCH_NEON_VFP_V4),
 
   /* APM X-Gene family.  */
   ARM_CPU_OPT ("xgene1",         "APM X-Gene 1",      ARM_ARCH_V8A,
-              ARM_ARCH_NONE,
+              ARM_FEATURE (0, 0, FPU_NEON_ARMV8 | FPU_VFP_ARMV8),
               FPU_ARCH_CRYPTO_NEON_VFP_ARMV8),
   ARM_CPU_OPT ("xgene2",         "APM X-Gene 2",      ARM_ARCH_V8A,
               ARM_FEATURE_CORE_HIGH (ARM_EXT2_CRC),
               FPU_ARCH_CRYPTO_NEON_VFP_ARMV8),
 
-  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE, ARM_ARCH_NONE, NULL }
+  { NULL, 0, ARM_ARCH_NONE, ARM_ARCH_NONE, ARM_ARCH_NONE, NULL, NULL }
 };
 #undef ARM_CPU_OPT
-
-struct arm_ext_table
-{
-  const char *           name;
-  size_t                 name_len;
-  const arm_feature_set          merge;
-  const arm_feature_set          clear;
-};
+#undef ARM_CPU_OPT2
 
 struct arm_arch_option_table
 {
@@ -30963,16 +31372,6 @@ struct arm_arch_option_table
   const struct arm_ext_table * ext_table;
 };
 
-/* Used to add support for +E and +noE extension.  */
-#define ARM_EXT(E, M, C) { E, sizeof (E) - 1, M, C }
-/* Used to add support for a +E extension.  */
-#define ARM_ADD(E, M) { E, sizeof(E) - 1, M, ARM_ARCH_NONE }
-/* Used to add support for a +noE extension.  */
-#define ARM_REMOVE(E, C) { E, sizeof(E) -1, ARM_ARCH_NONE, C }
-
-#define ALL_FP ARM_FEATURE (0, ARM_EXT2_FP16_INST | ARM_EXT2_FP16_FML, \
-                           ~0 & ~FPU_ENDIAN_PURE)
-
 static const struct arm_ext_table armv5te_ext_table[] =
 {
   ARM_EXT ("fp", FPU_ARCH_VFP_V2, ALL_FP),
@@ -31169,16 +31568,6 @@ static const struct arm_ext_table armv9a_ext_table[] =
 #define armv94a_ext_table armv93a_ext_table
 #define armv95a_ext_table armv94a_ext_table
 
-#define CDE_EXTENSIONS \
-  ARM_ADD ("cdecp0", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE0)), \
-  ARM_ADD ("cdecp1", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE1)), \
-  ARM_ADD ("cdecp2", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE2)), \
-  ARM_ADD ("cdecp3", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE3)), \
-  ARM_ADD ("cdecp4", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE4)), \
-  ARM_ADD ("cdecp5", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE5)), \
-  ARM_ADD ("cdecp6", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE6)), \
-  ARM_ADD ("cdecp7", ARM_FEATURE_CORE_HIGH (ARM_EXT2_CDE | ARM_EXT2_CDE7))
-
 static const struct arm_ext_table armv8m_main_ext_table[] =
 {
   ARM_EXT ("dsp", ARM_FEATURE_CORE_LOW (ARM_AEXT_V8M_MAIN_DSP),
@@ -31755,7 +32144,7 @@ arm_parse_cpu (const char *str)
          }
 
        if (ext != NULL)
-         return arm_parse_extension (ext, mcpu_cpu_opt, mcpu_ext_opt, NULL);
+         return arm_parse_extension (ext, mcpu_cpu_opt, mcpu_ext_opt, opt->ext_table);
 
        return true;
       }
index a2ab435fc0ae35b0083cea653f2ea3fa8640e26d..62a07adb4de09e3e774acc11b30ca0bca68c0634 100644 (file)
@@ -12,4 +12,6 @@ File Attributes
   Tag_CPU_arch_profile: Application
   Tag_ARM_ISA_use: Yes
   Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv3
+  Tag_Advanced_SIMD_arch: NEONv1
   Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/feat-bf16.s b/gas/testsuite/gas/arm/feat-bf16.s
new file mode 100644 (file)
index 0000000..46fc48b
--- /dev/null
@@ -0,0 +1,5 @@
+.syntax unified
+.thumb
+
+@ feat FP16
+vdot.bf16 q0, q1, q2
diff --git a/gas/testsuite/gas/arm/feat-crc.s b/gas/testsuite/gas/arm/feat-crc.s
new file mode 100644 (file)
index 0000000..671ac14
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat CRC
+crc32w  r0, r0, r1
diff --git a/gas/testsuite/gas/arm/feat-dotprod.s b/gas/testsuite/gas/arm/feat-dotprod.s
new file mode 100644 (file)
index 0000000..775c3ba
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat DOTPROD
+vudot.u8 q0, q1, q2
diff --git a/gas/testsuite/gas/arm/feat-dsp.s b/gas/testsuite/gas/arm/feat-dsp.s
new file mode 100644 (file)
index 0000000..2f54c73
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat DSP
+smlad   r0, r1, r2, r3
diff --git a/gas/testsuite/gas/arm/feat-fp-vfpv3.s b/gas/testsuite/gas/arm/feat-fp-vfpv3.s
new file mode 100644 (file)
index 0000000..4435db3
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat FP (VFP-v3)
+vmla.f32 s0, s1, s2
diff --git a/gas/testsuite/gas/arm/feat-fp-vfpv5.s b/gas/testsuite/gas/arm/feat-fp-vfpv5.s
new file mode 100644 (file)
index 0000000..13a2e7a
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat FP (VFP-v5)
+vfma.f32 s0, s1, s2
diff --git a/gas/testsuite/gas/arm/feat-fp.dp.s b/gas/testsuite/gas/arm/feat-fp.dp.s
new file mode 100644 (file)
index 0000000..34b68cd
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat FP.DP
+vadd.f64 d0, d1, d2
diff --git a/gas/testsuite/gas/arm/feat-fp.s b/gas/testsuite/gas/arm/feat-fp.s
new file mode 100644 (file)
index 0000000..5cf49af
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat FP
+vadd.f32 s0, s1, s2
diff --git a/gas/testsuite/gas/arm/feat-fp16.s b/gas/testsuite/gas/arm/feat-fp16.s
new file mode 100644 (file)
index 0000000..6780678
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat FP16
+vadd.f16 q0, q1, q2
diff --git a/gas/testsuite/gas/arm/feat-i8mm.s b/gas/testsuite/gas/arm/feat-i8mm.s
new file mode 100644 (file)
index 0000000..bb38187
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat I8MM
+vusmmla.s8  q6, q7, q8
diff --git a/gas/testsuite/gas/arm/feat-idiv.s b/gas/testsuite/gas/arm/feat-idiv.s
new file mode 100644 (file)
index 0000000..8b289fa
--- /dev/null
@@ -0,0 +1,3 @@
+.syntax unified
+
+sdiv r0, r1, r2
diff --git a/gas/testsuite/gas/arm/feat-mp.s b/gas/testsuite/gas/arm/feat-mp.s
new file mode 100644 (file)
index 0000000..db365d7
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat MP
+ldrex r0, [r1]
diff --git a/gas/testsuite/gas/arm/feat-mve.fp.s b/gas/testsuite/gas/arm/feat-mve.fp.s
new file mode 100644 (file)
index 0000000..81c2330
--- /dev/null
@@ -0,0 +1,5 @@
+.syntax unified
+.thumb
+
+@ MVE.FP
+vmul.f32 q0, q1, q2
diff --git a/gas/testsuite/gas/arm/feat-neon-fp16.s b/gas/testsuite/gas/arm/feat-neon-fp16.s
new file mode 100644 (file)
index 0000000..55ab085
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat NEON-FP16
+vadd.f16 q0, q1, q2
diff --git a/gas/testsuite/gas/arm/feat-pacbti.s b/gas/testsuite/gas/arm/feat-pacbti.s
new file mode 100644 (file)
index 0000000..2399f0c
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ PACBTI
+pac     r12, lr, sp
diff --git a/gas/testsuite/gas/arm/feat-sec.s b/gas/testsuite/gas/arm/feat-sec.s
new file mode 100644 (file)
index 0000000..bdb516a
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat SEC
+smc     #0
diff --git a/gas/testsuite/gas/arm/feat-simd.s b/gas/testsuite/gas/arm/feat-simd.s
new file mode 100644 (file)
index 0000000..871f549
--- /dev/null
@@ -0,0 +1,5 @@
+.syntax unified
+.text
+
+@ feat SIMD
+vadd.i32 q0, q1, q2
diff --git a/gas/testsuite/gas/arm/feat-vfpv3-d16-fp16.s b/gas/testsuite/gas/arm/feat-vfpv3-d16-fp16.s
new file mode 100644 (file)
index 0000000..41ccd2d
--- /dev/null
@@ -0,0 +1,4 @@
+.syntax unified
+
+@ feat VFP3-D16-FP16
+vcvtt.f16.f32 s0, s1
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a12-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a12-attrs.d
new file mode 100644 (file)
index 0000000..953175f
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Cortex-A12 Attributes
+#as: -mcpu=cortex-a12+nofp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A12"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_MPextension_use: Allowed
+  Tag_DIV_use: Allowed in v7-A with integer division extension
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a12-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-a12-feat-simd.d
new file mode 100644 (file)
index 0000000..e8d96c2
--- /dev/null
@@ -0,0 +1,19 @@
+#name: Cortex-A12 feat-simd
+#as: -mcpu=cortex-a12
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A12"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv4
+  Tag_Advanced_SIMD_arch: NEONv1 with Fused-MAC
+  Tag_MPextension_use: Allowed
+  Tag_DIV_use: Allowed in v7-A with integer division extension
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a15-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a15-attrs.d
new file mode 100644 (file)
index 0000000..c780f28
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Cortex-A15 Attributes
+#as: -mcpu=cortex-a15+nofp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A15"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_MPextension_use: Allowed
+  Tag_DIV_use: Allowed in v7-A with integer division extension
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a15-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-a15-feat-simd.d
new file mode 100644 (file)
index 0000000..796f8d3
--- /dev/null
@@ -0,0 +1,19 @@
+#name: Cortex-A15 feat-simd
+#as: -mcpu=cortex-a15
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A15"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv4
+  Tag_Advanced_SIMD_arch: NEONv1 with Fused-MAC
+  Tag_MPextension_use: Allowed
+  Tag_DIV_use: Allowed in v7-A with integer division extension
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a17-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a17-attrs.d
new file mode 100644 (file)
index 0000000..c8b56ff
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Cortex-A17 Attributes
+#as: -mcpu=cortex-a17+nofp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A17"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_MPextension_use: Allowed
+  Tag_DIV_use: Allowed in v7-A with integer division extension
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a17-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-a17-feat-simd.d
new file mode 100644 (file)
index 0000000..37e3444
--- /dev/null
@@ -0,0 +1,19 @@
+#name: Cortex-A17 feat-simd
+#as: -mcpu=cortex-a17
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A17"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv4
+  Tag_Advanced_SIMD_arch: NEONv1 with Fused-MAC
+  Tag_MPextension_use: Allowed
+  Tag_DIV_use: Allowed in v7-A with integer division extension
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a32-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a32-attrs.d
new file mode 100644 (file)
index 0000000..6979aff
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-A32 Attributes
+#as: -mcpu=cortex-a32+nofp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A32"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a32-attrs1.d b/gas/testsuite/gas/arm/mcpu-cortex-a32-attrs1.d
new file mode 100644 (file)
index 0000000..98dc43b
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A32 Attributes 1
+#as: -mcpu=cortex-a32+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A32"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a32-feat-crc.d b/gas/testsuite/gas/arm/mcpu-cortex-a32-feat-crc.d
new file mode 100644 (file)
index 0000000..dfa191b
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A32 feat-crc
+#as: -mcpu=cortex-a32
+#source: feat-crc.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A32"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a32-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-a32-feat-simd.d
new file mode 100644 (file)
index 0000000..20b6a34
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A32 feat-simd
+#as: -mcpu=cortex-a32
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A32"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a35-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a35-attrs.d
new file mode 100644 (file)
index 0000000..5743016
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-A35 Attributes
+#as: -mcpu=cortex-a35+nofp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A35"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a35-attrs1.d b/gas/testsuite/gas/arm/mcpu-cortex-a35-attrs1.d
new file mode 100644 (file)
index 0000000..97160cf
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A35 Attributes 1
+#as: -mcpu=cortex-a35+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A35"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a35-feat-crc.d b/gas/testsuite/gas/arm/mcpu-cortex-a35-feat-crc.d
new file mode 100644 (file)
index 0000000..eb61f3b
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A35 feat-crc
+#as: -mcpu=cortex-a35
+#source: feat-crc.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A35"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a35-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-a35-feat-simd.d
new file mode 100644 (file)
index 0000000..3c92517
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A35 feat-simd
+#as: -mcpu=cortex-a35
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A35"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a5-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a5-attrs.d
new file mode 100644 (file)
index 0000000..d1ab26e
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-A5 Attributes
+#as: -mcpu=cortex-a5+nofp+nosimd
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A5"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a5-feat-mp.d b/gas/testsuite/gas/arm/mcpu-cortex-a5-feat-mp.d
new file mode 100644 (file)
index 0000000..3b34ffb
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A5 feat-mp
+#as: -mcpu=cortex-a5
+#source: feat-mp.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A5"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv4
+  Tag_Advanced_SIMD_arch: NEONv1 with Fused-MAC
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a5-feat-neon-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-a5-feat-neon-fp16.d
new file mode 100644 (file)
index 0000000..36571e2
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A5 feat-neon-fp16
+#as: -mcpu=cortex-a5
+#source: feat-neon-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A5"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv4
+  Tag_Advanced_SIMD_arch: NEONv1 with Fused-MAC
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a5-feat-sec.d b/gas/testsuite/gas/arm/mcpu-cortex-a5-feat-sec.d
new file mode 100644 (file)
index 0000000..dad8412
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A5 feat-sec
+#as: -mcpu=cortex-a5
+#source: feat-sec.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A5"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv4
+  Tag_Advanced_SIMD_arch: NEONv1 with Fused-MAC
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a53-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a53-attrs.d
new file mode 100644 (file)
index 0000000..754eca0
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-A53 Attributes
+#as: -mcpu=cortex-a53+nofp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A53"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a53-attrs1.d b/gas/testsuite/gas/arm/mcpu-cortex-a53-attrs1.d
new file mode 100644 (file)
index 0000000..ad52b92
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A53 Attributes 1
+#as: -mcpu=cortex-a53+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A53"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a53-feat-crc.d b/gas/testsuite/gas/arm/mcpu-cortex-a53-feat-crc.d
new file mode 100644 (file)
index 0000000..70a688c
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A53 feat-crc
+#as: -mcpu=cortex-a53
+#source: feat-crc.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A53"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a53-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-a53-feat-simd.d
new file mode 100644 (file)
index 0000000..0c423b7
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A53 feat-simd
+#as: -mcpu=cortex-a53
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A53"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a55-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a55-attrs.d
new file mode 100644 (file)
index 0000000..247e146
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Cortex-A55 Attributes
+#as: -mcpu=cortex-a55+nofp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A55"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a55-attrs1.d b/gas/testsuite/gas/arm/mcpu-cortex-a55-attrs1.d
new file mode 100644 (file)
index 0000000..595a677
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A55 Attributes 1
+#as: -mcpu=cortex-a55+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A55"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a55-feat-dotprod.d b/gas/testsuite/gas/arm/mcpu-cortex-a55-feat-dotprod.d
new file mode 100644 (file)
index 0000000..bd95929
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A55 feat-dotprod
+#as: -mcpu=cortex-a55
+#source: feat-dotprod.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A55"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a55-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-a55-feat-fp16.d
new file mode 100644 (file)
index 0000000..79ec5bc
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A55 feat-fp16
+#as: -mcpu=cortex-a55
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A55"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a57-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a57-attrs.d
new file mode 100644 (file)
index 0000000..0d7e120
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A57 Attributes
+#as: -mcpu=cortex-a57+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A57"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a57-feat-crc.d b/gas/testsuite/gas/arm/mcpu-cortex-a57-feat-crc.d
new file mode 100644 (file)
index 0000000..49be31c
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A57 feat-crc
+#as: -mcpu=cortex-a57
+#source: feat-crc.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A57"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a57-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-a57-feat-simd.d
new file mode 100644 (file)
index 0000000..48fc50e
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A57 feat-simd
+#as: -mcpu=cortex-a57
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A57"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a7-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a7-attrs.d
new file mode 100644 (file)
index 0000000..20f0d4b
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Cortex-A7 Attributes
+#as: -mcpu=cortex-a7+nofp+nosimd
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A7"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_MPextension_use: Allowed
+  Tag_DIV_use: Allowed in v7-A with integer division extension
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a7-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-a7-feat-simd.d
new file mode 100644 (file)
index 0000000..b0c59f2
--- /dev/null
@@ -0,0 +1,19 @@
+#name: Cortex-A7 feat-simd
+#as: -mcpu=cortex-a7
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A7"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv4
+  Tag_Advanced_SIMD_arch: NEONv1 with Fused-MAC
+  Tag_MPextension_use: Allowed
+  Tag_DIV_use: Allowed in v7-A with integer division extension
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a710-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a710-attrs.d
new file mode 100644 (file)
index 0000000..dac147d
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A710 Attributes
+#as: -mcpu=cortex-a710+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A710"
+  Tag_CPU_arch: v9
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a710-feat-bf16.d b/gas/testsuite/gas/arm/mcpu-cortex-a710-feat-bf16.d
new file mode 100644 (file)
index 0000000..b53d648
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A710 feat-bf16
+#as: -mcpu=cortex-a710
+#source: feat-bf16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A710"
+  Tag_CPU_arch: v9
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a710-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-a710-feat-fp16.d
new file mode 100644 (file)
index 0000000..b2a2c37
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A710 feat-fp16
+#as: -mcpu=cortex-a710
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A710"
+  Tag_CPU_arch: v9
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a710-feat-i8mm.d b/gas/testsuite/gas/arm/mcpu-cortex-a710-feat-i8mm.d
new file mode 100644 (file)
index 0000000..c682f38
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A710 feat-i8mm
+#as: -mcpu=cortex-a710
+#source: feat-i8mm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A710"
+  Tag_CPU_arch: v9
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a72-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a72-attrs.d
new file mode 100644 (file)
index 0000000..6c16d2a
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A72 Attributes
+#as: -mcpu=cortex-a72+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A72"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a72-feat-crc.d b/gas/testsuite/gas/arm/mcpu-cortex-a72-feat-crc.d
new file mode 100644 (file)
index 0000000..8f3b700
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A72 feat-crc
+#as: -mcpu=cortex-a72
+#source: feat-crc.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A72"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a72-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-a72-feat-simd.d
new file mode 100644 (file)
index 0000000..3cad2ec
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A72 feat-simd
+#as: -mcpu=cortex-a72
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A72"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a73-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a73-attrs.d
new file mode 100644 (file)
index 0000000..07df89b
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A73 Attributes
+#as: -mcpu=cortex-a73+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A73"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a73-feat-crc.d b/gas/testsuite/gas/arm/mcpu-cortex-a73-feat-crc.d
new file mode 100644 (file)
index 0000000..ca750aa
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A73 feat-crc
+#as: -mcpu=cortex-a73
+#source: feat-crc.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A73"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a73-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-a73-feat-simd.d
new file mode 100644 (file)
index 0000000..7475b25
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A73 feat-simd
+#as: -mcpu=cortex-a73
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A73"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a75-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a75-attrs.d
new file mode 100644 (file)
index 0000000..cc88ad2
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A75 Attributes
+#as: -mcpu=cortex-a75+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A75"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a75-feat-dotprod.d b/gas/testsuite/gas/arm/mcpu-cortex-a75-feat-dotprod.d
new file mode 100644 (file)
index 0000000..83ee908
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A75 feat-dotprod
+#as: -mcpu=cortex-a75
+#source: feat-dotprod.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A75"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a75-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-a75-feat-fp16.d
new file mode 100644 (file)
index 0000000..c996200
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A75 feat-fp16
+#as: -mcpu=cortex-a75
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A75"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a76-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a76-attrs.d
new file mode 100644 (file)
index 0000000..088939c
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A76 Attributes
+#as: -mcpu=cortex-a76+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A76"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a76-feat-dotprod.d b/gas/testsuite/gas/arm/mcpu-cortex-a76-feat-dotprod.d
new file mode 100644 (file)
index 0000000..720ea69
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A76 feat-dotprod
+#as: -mcpu=cortex-a76
+#source: feat-dotprod.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A76"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a76-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-a76-feat-fp16.d
new file mode 100644 (file)
index 0000000..c963296
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A76 feat-fp16
+#as: -mcpu=cortex-a76
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A76"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a76ae-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a76ae-attrs.d
new file mode 100644 (file)
index 0000000..ed050b3
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A76AE Attributes
+#as: -mcpu=cortex-a76ae+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A76AE"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a76ae-feat-dotprod.d b/gas/testsuite/gas/arm/mcpu-cortex-a76ae-feat-dotprod.d
new file mode 100644 (file)
index 0000000..449e70c
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A76AE feat-dotprod
+#as: -mcpu=cortex-a76ae
+#source: feat-dotprod.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A76AE"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a76ae-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-a76ae-feat-fp16.d
new file mode 100644 (file)
index 0000000..43af92d
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A76AE feat-fp16
+#as: -mcpu=cortex-a76ae
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A76AE"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a77-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a77-attrs.d
new file mode 100644 (file)
index 0000000..e014c78
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A77 Attributes
+#as: -mcpu=cortex-a77+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A77"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a77-feat-dotprod.d b/gas/testsuite/gas/arm/mcpu-cortex-a77-feat-dotprod.d
new file mode 100644 (file)
index 0000000..7cccf0f
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A77 feat-dotprod
+#as: -mcpu=cortex-a77
+#source: feat-dotprod.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A77"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a77-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-a77-feat-fp16.d
new file mode 100644 (file)
index 0000000..97fe61e
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A77 feat-fp16
+#as: -mcpu=cortex-a77
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A77"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a78-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a78-attrs.d
new file mode 100644 (file)
index 0000000..73c5e07
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A78 Attributes
+#as: -mcpu=cortex-a78+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A78"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a78-feat-dotprod.d b/gas/testsuite/gas/arm/mcpu-cortex-a78-feat-dotprod.d
new file mode 100644 (file)
index 0000000..eeb2260
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A78 feat-dotprod
+#as: -mcpu=cortex-a78
+#source: feat-dotprod.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A78"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a78-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-a78-feat-fp16.d
new file mode 100644 (file)
index 0000000..88936f7
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A78 feat-fp16
+#as: -mcpu=cortex-a78
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A78"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a78ae-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a78ae-attrs.d
new file mode 100644 (file)
index 0000000..944c21f
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A78AE Attributes
+#as: -mcpu=cortex-a78ae+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A78AE"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a78ae-feat-dotprod.d b/gas/testsuite/gas/arm/mcpu-cortex-a78ae-feat-dotprod.d
new file mode 100644 (file)
index 0000000..8d24972
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A78AE feat-dotprod
+#as: -mcpu=cortex-a78ae
+#source: feat-dotprod.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A78AE"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a78ae-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-a78ae-feat-fp16.d
new file mode 100644 (file)
index 0000000..07d142b
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A78AE feat-fp16
+#as: -mcpu=cortex-a78ae
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A78AE"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a78c-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a78c-attrs.d
new file mode 100644 (file)
index 0000000..bd0a9d8
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A78C Attributes
+#as: -mcpu=cortex-a78c+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A78C"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a78c-feat-dotprod.d b/gas/testsuite/gas/arm/mcpu-cortex-a78c-feat-dotprod.d
new file mode 100644 (file)
index 0000000..6702706
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A78C feat-dotprod
+#as: -mcpu=cortex-a78c
+#source: feat-dotprod.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A78C"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a78c-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-a78c-feat-fp16.d
new file mode 100644 (file)
index 0000000..f45fc34
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A78C feat-fp16
+#as: -mcpu=cortex-a78c
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A78C"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a8-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a8-attrs.d
new file mode 100644 (file)
index 0000000..5b1696f
--- /dev/null
@@ -0,0 +1,15 @@
+#name: Cortex-A8 Attributes
+#as: -mcpu=cortex-a8+nofp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A8"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a8-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-a8-feat-simd.d
new file mode 100644 (file)
index 0000000..e8de97b
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Cortex-A8 feat-simd
+#as: -mcpu=cortex-a8
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A8"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv3
+  Tag_Advanced_SIMD_arch: NEONv1
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a9-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-a9-attrs.d
new file mode 100644 (file)
index 0000000..4d1ebaa
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-A9 Attributes
+#as: -mcpu=cortex-a9+nofp+nosimd
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A9"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a9-feat-mp.d b/gas/testsuite/gas/arm/mcpu-cortex-a9-feat-mp.d
new file mode 100644 (file)
index 0000000..96ecaaf
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A9 feat-mp
+#as: -mcpu=cortex-a9
+#source: feat-mp.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A9"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv4
+  Tag_Advanced_SIMD_arch: NEONv1 with Fused-MAC
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a9-feat-neon-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-a9-feat-neon-fp16.d
new file mode 100644 (file)
index 0000000..83ecc83
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A9 feat-neon-fp16
+#as: -mcpu=cortex-a9
+#source: feat-neon-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A9"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv4
+  Tag_Advanced_SIMD_arch: NEONv1 with Fused-MAC
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-a9-feat-sec.d b/gas/testsuite/gas/arm/mcpu-cortex-a9-feat-sec.d
new file mode 100644 (file)
index 0000000..73386c2
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-A9 feat-sec
+#as: -mcpu=cortex-a9
+#source: feat-sec.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-A9"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv4
+  Tag_Advanced_SIMD_arch: NEONv1 with Fused-MAC
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m33-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-m33-attrs.d
new file mode 100644 (file)
index 0000000..d219550
--- /dev/null
@@ -0,0 +1,13 @@
+#name: Cortex-M33 Attributes
+#as: -mcpu=cortex-m33+nofp+nodsp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M33"
+  Tag_CPU_arch: v8-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m33-feat-dsp.d b/gas/testsuite/gas/arm/mcpu-cortex-m33-feat-dsp.d
new file mode 100644 (file)
index 0000000..521846c
--- /dev/null
@@ -0,0 +1,15 @@
+#name: Cortex-M33 feat-dsp
+#as: -mcpu=cortex-m33
+#source: feat-dsp.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M33"
+  Tag_CPU_arch: v8-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: VFPv4-D16
+  Tag_DSP_extension: Allowed
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m33-feat-fp-vfpv5.d b/gas/testsuite/gas/arm/mcpu-cortex-m33-feat-fp-vfpv5.d
new file mode 100644 (file)
index 0000000..6624dba
--- /dev/null
@@ -0,0 +1,15 @@
+#name: Cortex-M33 feat-fp-vfpv5
+#as: -mcpu=cortex-m33
+#source: feat-fp-vfpv5.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M33"
+  Tag_CPU_arch: v8-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: VFPv4-D16
+  Tag_DSP_extension: Allowed
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m35p-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-m35p-attrs.d
new file mode 100644 (file)
index 0000000..e8bb588
--- /dev/null
@@ -0,0 +1,13 @@
+#name: Cortex-M35P Attributes
+#as: -mcpu=cortex-m35p+nofp+nodsp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M35P"
+  Tag_CPU_arch: v8-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m35p-feat-dsp.d b/gas/testsuite/gas/arm/mcpu-cortex-m35p-feat-dsp.d
new file mode 100644 (file)
index 0000000..12b6b6d
--- /dev/null
@@ -0,0 +1,15 @@
+#name: Cortex-M35P feat-dsp
+#as: -mcpu=cortex-m35p
+#source: feat-dsp.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M35P"
+  Tag_CPU_arch: v8-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: VFPv4-D16
+  Tag_DSP_extension: Allowed
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m35p-feat-fp-vfpv5.d b/gas/testsuite/gas/arm/mcpu-cortex-m35p-feat-fp-vfpv5.d
new file mode 100644 (file)
index 0000000..918942b
--- /dev/null
@@ -0,0 +1,15 @@
+#name: Cortex-M35P feat-fp-vfpv5
+#as: -mcpu=cortex-m35p
+#source: feat-fp-vfpv5.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M35P"
+  Tag_CPU_arch: v8-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: VFPv4-D16
+  Tag_DSP_extension: Allowed
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m4-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-m4-attrs.d
new file mode 100644 (file)
index 0000000..e279445
--- /dev/null
@@ -0,0 +1,13 @@
+#name: Cortex-M4 Attributes
+#as: -mcpu=cortex-m4+nofp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M4"
+  Tag_CPU_arch: v7E-M
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-2
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m4-feat-fp-vfpv3.d b/gas/testsuite/gas/arm/mcpu-cortex-m4-feat-fp-vfpv3.d
new file mode 100644 (file)
index 0000000..c66e372
--- /dev/null
@@ -0,0 +1,15 @@
+#name: Cortex-M4 feat-fp-vfpv3
+#as: -mcpu=cortex-m4
+#source: feat-fp-vfpv3.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M4"
+  Tag_CPU_arch: v7E-M
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv4-D16
+  Tag_ABI_HardFP_use: SP only
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m52-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-m52-attrs.d
new file mode 100644 (file)
index 0000000..3e32853
--- /dev/null
@@ -0,0 +1,14 @@
+#name: Cortex-M52 Attributes
+#as: -mcpu=cortex-m52+nopacbti+nomve.fp+nomve+nofp+nodsp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M52"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_DSP_extension: Allowed
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m52-attrs1.d b/gas/testsuite/gas/arm/mcpu-cortex-m52-attrs1.d
new file mode 100644 (file)
index 0000000..d378a5d
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-M52 Attributes 1
+#as: -mcpu=cortex-m52+cdecp0+cdecp1+cdecp2+cdecp3+cdecp4+cdecp5+cdecp6+cdecp7
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M52"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_DSP_extension: Allowed
+  Tag_MVE_arch: MVE Integer and FP
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m52-feat-fp-dp.d b/gas/testsuite/gas/arm/mcpu-cortex-m52-feat-fp-dp.d
new file mode 100644 (file)
index 0000000..fe47c58
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-M52 feat-fp.dp
+#as: -mcpu=cortex-m52
+#source: feat-fp.dp.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M52"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_DSP_extension: Allowed
+  Tag_MVE_arch: MVE Integer and FP
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m52-feat-mve-fp.d b/gas/testsuite/gas/arm/mcpu-cortex-m52-feat-mve-fp.d
new file mode 100644 (file)
index 0000000..e87ce81
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-M52 feat-mve.fp
+#as: -mcpu=cortex-m52
+#source: feat-mve.fp.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M52"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_DSP_extension: Allowed
+  Tag_MVE_arch: MVE Integer and FP
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m52-feat-pacbti.d b/gas/testsuite/gas/arm/mcpu-cortex-m52-feat-pacbti.d
new file mode 100644 (file)
index 0000000..e04aae7
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-M52 feat-pacbti
+#as: -mcpu=cortex-m52
+#source: feat-pacbti.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M52"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_DSP_extension: Allowed
+  Tag_MVE_arch: MVE Integer and FP
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m55-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-m55-attrs.d
new file mode 100644 (file)
index 0000000..b873ecd
--- /dev/null
@@ -0,0 +1,14 @@
+#name: Cortex-M55 Attributes
+#as: -mcpu=cortex-m55+nomve.fp+nomve+nofp+nodsp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M55"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_DSP_extension: Allowed
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m55-attrs1.d b/gas/testsuite/gas/arm/mcpu-cortex-m55-attrs1.d
new file mode 100644 (file)
index 0000000..a5b181f
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-M55 Attributes 1
+#as: -mcpu=cortex-m55+cdecp0+cdecp1+cdecp2+cdecp3+cdecp4+cdecp5+cdecp6+cdecp7
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M55"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_DSP_extension: Allowed
+  Tag_MVE_arch: MVE Integer and FP
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m55-feat-fp-dp.d b/gas/testsuite/gas/arm/mcpu-cortex-m55-feat-fp-dp.d
new file mode 100644 (file)
index 0000000..29e7bc9
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-M55 feat-fp.dp
+#as: -mcpu=cortex-m55
+#source: feat-fp.dp.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M55"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_DSP_extension: Allowed
+  Tag_MVE_arch: MVE Integer and FP
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m55-feat-mve-fp.d b/gas/testsuite/gas/arm/mcpu-cortex-m55-feat-mve-fp.d
new file mode 100644 (file)
index 0000000..9ec4816
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-M55 feat-mve.fp
+#as: -mcpu=cortex-m55
+#source: feat-mve.fp.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M55"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_DSP_extension: Allowed
+  Tag_MVE_arch: MVE Integer and FP
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m7-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-m7-attrs.d
new file mode 100644 (file)
index 0000000..ad3faf9
--- /dev/null
@@ -0,0 +1,13 @@
+#name: Cortex-M7 Attributes
+#as: -mcpu=cortex-m7+nofp+nofp.dp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M7"
+  Tag_CPU_arch: v7E-M
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-2
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m7-feat-fp-dp.d b/gas/testsuite/gas/arm/mcpu-cortex-m7-feat-fp-dp.d
new file mode 100644 (file)
index 0000000..46045a1
--- /dev/null
@@ -0,0 +1,14 @@
+#name: Cortex-M7 feat-fp.dp
+#as: -mcpu=cortex-m7
+#source: feat-fp.dp.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M7"
+  Tag_CPU_arch: v7E-M
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m85-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-m85-attrs.d
new file mode 100644 (file)
index 0000000..558cacd
--- /dev/null
@@ -0,0 +1,14 @@
+#name: Cortex-M85 Attributes
+#as: -mcpu=cortex-m85+nopacbti+nomve.fp+nomve+nofp+nodsp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M85"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_DSP_extension: Allowed
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m85-feat-fp-dp.d b/gas/testsuite/gas/arm/mcpu-cortex-m85-feat-fp-dp.d
new file mode 100644 (file)
index 0000000..711bea5
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-M85 feat-fp.dp
+#as: -mcpu=cortex-m85
+#source: feat-fp.dp.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M85"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_DSP_extension: Allowed
+  Tag_MVE_arch: MVE Integer and FP
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m85-feat-mve-fp.d b/gas/testsuite/gas/arm/mcpu-cortex-m85-feat-mve-fp.d
new file mode 100644 (file)
index 0000000..6533fc6
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-M85 feat-mve.fp
+#as: -mcpu=cortex-m85
+#source: feat-mve.fp.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M85"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_DSP_extension: Allowed
+  Tag_MVE_arch: MVE Integer and FP
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-m85-feat-pacbti.d b/gas/testsuite/gas/arm/mcpu-cortex-m85-feat-pacbti.d
new file mode 100644 (file)
index 0000000..dc615de
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-M85 feat-pacbti
+#as: -mcpu=cortex-m85
+#source: feat-pacbti.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-M85"
+  Tag_CPU_arch: v8.1-M.mainline
+  Tag_CPU_arch_profile: Microcontroller
+  Tag_THUMB_ISA_use: Yes
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_DSP_extension: Allowed
+  Tag_MVE_arch: MVE Integer and FP
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r4f-feat-fp-vfpv3.d b/gas/testsuite/gas/arm/mcpu-cortex-r4f-feat-fp-vfpv3.d
new file mode 100644 (file)
index 0000000..a636139
--- /dev/null
@@ -0,0 +1,15 @@
+#name: Cortex R4F feat-fp-vfpv3
+#as: -mcpu=cortex-r4f
+#source: feat-fp-vfpv3.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R4F"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv3-D16
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r5-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-r5-attrs.d
new file mode 100644 (file)
index 0000000..802ee1c
--- /dev/null
@@ -0,0 +1,15 @@
+#name: Cortex-R5 Attributes
+#as: -mcpu=cortex-r5+nofp+nofp.dp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R5"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_DIV_use: Allowed in v7-A with integer division extension
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r5-feat-fp-vfpv3.d b/gas/testsuite/gas/arm/mcpu-cortex-r5-feat-fp-vfpv3.d
new file mode 100644 (file)
index 0000000..4ee716d
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-R5 feat-fp-vfpv3
+#as: -mcpu=cortex-r5
+#source: feat-fp-vfpv3.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R5"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv3
+  Tag_DIV_use: Allowed in v7-A with integer division extension
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r5-feat-idiv.d b/gas/testsuite/gas/arm/mcpu-cortex-r5-feat-idiv.d
new file mode 100644 (file)
index 0000000..71b2d2e
--- /dev/null
@@ -0,0 +1,16 @@
+#name: Cortex-R5 feat-idiv
+#as: -mcpu=cortex-r5
+#source: feat-idiv.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R5"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv3
+  Tag_DIV_use: Allowed in v7-A with integer division extension
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r52-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-r52-attrs.d
new file mode 100644 (file)
index 0000000..33422be
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Cortex-R52 Attributes
+#as: -mcpu=cortex-r52+nofp.dp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R52"
+  Tag_CPU_arch: v8-R
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r52-feat-crc.d b/gas/testsuite/gas/arm/mcpu-cortex-r52-feat-crc.d
new file mode 100644 (file)
index 0000000..71055cc
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-R52 feat-crc
+#as: -mcpu=cortex-r52
+#source: feat-crc.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R52"
+  Tag_CPU_arch: v8-R
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r52-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-r52-feat-simd.d
new file mode 100644 (file)
index 0000000..148400e
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-R52 feat-simd
+#as: -mcpu=cortex-r52
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R52"
+  Tag_CPU_arch: v8-R
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r52plus-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-r52plus-attrs.d
new file mode 100644 (file)
index 0000000..e2eb9c3
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Cortex-R52plus Attributes
+#as: -mcpu=cortex-r52plus+nofp.dp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R52\+"
+  Tag_CPU_arch: v8-R
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FPv5/FP-D16 for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r52plus-feat-crc.d b/gas/testsuite/gas/arm/mcpu-cortex-r52plus-feat-crc.d
new file mode 100644 (file)
index 0000000..2666aaf
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-R52plus feat-crc
+#as: -mcpu=cortex-r52plus
+#source: feat-crc.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R52\+"
+  Tag_CPU_arch: v8-R
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r52plus-feat-simd.d b/gas/testsuite/gas/arm/mcpu-cortex-r52plus-feat-simd.d
new file mode 100644 (file)
index 0000000..1af6862
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-R52plus feat-simd
+#as: -mcpu=cortex-r52plus
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R52\+"
+  Tag_CPU_arch: v8-R
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r7-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-r7-attrs.d
new file mode 100644 (file)
index 0000000..b8fa7c9
--- /dev/null
@@ -0,0 +1,15 @@
+#name: Cortex-R7 Attributes
+#as: -mcpu=cortex-r7+nofp+nofp.dp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R7"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_DIV_use: Allowed in v7-A with integer division extension
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r7-feat-idiv.d b/gas/testsuite/gas/arm/mcpu-cortex-r7-feat-idiv.d
new file mode 100644 (file)
index 0000000..ac04305
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Cortex-R7 feat-idiv
+#as: -mcpu=cortex-r7
+#source: feat-idiv.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R7"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv3-D16
+  Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Allowed in v7-A with integer division extension
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r7-feat-vfpv3-d16-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-r7-feat-vfpv3-d16-fp16.d
new file mode 100644 (file)
index 0000000..9361607
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Cortex-R7 feat-vfpv3-d16-fp16
+#as: -mcpu=cortex-r7
+#source: feat-vfpv3-d16-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R7"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv3-D16
+  Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Allowed in v7-A with integer division extension
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r8-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-r8-attrs.d
new file mode 100644 (file)
index 0000000..2bd0bf4
--- /dev/null
@@ -0,0 +1,15 @@
+#name: Cortex-R8 Attributes
+#as: -mcpu=cortex-r8+nofp+nofp.dp
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R8"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_DIV_use: Allowed in v7-A with integer division extension
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r8-feat-idiv.d b/gas/testsuite/gas/arm/mcpu-cortex-r8-feat-idiv.d
new file mode 100644 (file)
index 0000000..df3f2b5
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Cortex-R8 feat-idiv
+#as: -mcpu=cortex-r8
+#source: feat-idiv.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R8"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv3-D16
+  Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Allowed in v7-A with integer division extension
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-r8-feat-vfpv3-d16-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-r8-feat-vfpv3-d16-fp16.d
new file mode 100644 (file)
index 0000000..09a254d
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Cortex-R8 feat-vfpv3-d16-fp16
+#as: -mcpu=cortex-r8
+#source: feat-vfpv3-d16-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-R8"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Realtime
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv3-D16
+  Tag_FP_HP_extension: Allowed
+  Tag_DIV_use: Allowed in v7-A with integer division extension
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-x1-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-x1-attrs.d
new file mode 100644 (file)
index 0000000..960aed9
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-X1 Attributes
+#as: -mcpu=cortex-x1+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-X1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-x1-feat-dotprod.d b/gas/testsuite/gas/arm/mcpu-cortex-x1-feat-dotprod.d
new file mode 100644 (file)
index 0000000..e49e914
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-X1 feat-dotprod
+#as: -mcpu=cortex-x1
+#source: feat-dotprod.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-X1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-x1-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-x1-feat-fp16.d
new file mode 100644 (file)
index 0000000..3bdf1c2
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-X1 feat-fp16
+#as: -mcpu=cortex-x1
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-X1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-x1c-attrs.d b/gas/testsuite/gas/arm/mcpu-cortex-x1c-attrs.d
new file mode 100644 (file)
index 0000000..1e9d8e1
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-X1C Attributes
+#as: -mcpu=cortex-x1c+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-X1C"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-x1c-feat-dotprod.d b/gas/testsuite/gas/arm/mcpu-cortex-x1c-feat-dotprod.d
new file mode 100644 (file)
index 0000000..186b406
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-X1C feat-dotprod
+#as: -mcpu=cortex-x1c
+#source: feat-dotprod.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-X1C"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-cortex-x1c-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-cortex-x1c-feat-fp16.d
new file mode 100644 (file)
index 0000000..23c70c1
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Cortex-X1C feat-fp16
+#as: -mcpu=cortex-x1c
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Cortex-X1C"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-exynos-m1-attrs.d b/gas/testsuite/gas/arm/mcpu-exynos-m1-attrs.d
new file mode 100644 (file)
index 0000000..f898b63
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Exynos-M1 Attributes
+#as: -mcpu=exynos-m1+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Samsung Exynos M1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-exynos-m1-feat-crc.d b/gas/testsuite/gas/arm/mcpu-exynos-m1-feat-crc.d
new file mode 100644 (file)
index 0000000..ca932b7
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Exynos-M1 feat-crc
+#as: -mcpu=exynos-m1
+#source: feat-crc.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Samsung Exynos M1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-exynos-m1-feat-simd.d b/gas/testsuite/gas/arm/mcpu-exynos-m1-feat-simd.d
new file mode 100644 (file)
index 0000000..0e2976a
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Exynos-M1 feat-simd
+#as: -mcpu=exynos-m1
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Samsung Exynos M1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-marvell-pj4-feat-fp-vfpv3.d b/gas/testsuite/gas/arm/mcpu-marvell-pj4-feat-fp-vfpv3.d
new file mode 100644 (file)
index 0000000..2f0e17e
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Marvell-PJ4 feat-fp-vfpv3
+#as: -mcpu=marvell-pj4
+#source: feat-fp-vfpv3.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "MARVELL-PJ4"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv3
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-marvell-pj4-feat-mp.d b/gas/testsuite/gas/arm/mcpu-marvell-pj4-feat-mp.d
new file mode 100644 (file)
index 0000000..67bbd6c
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Marvell-PJ4 feat-mp
+#as: -mcpu=marvell-pj4
+#source: feat-mp.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "MARVELL-PJ4"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv3
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-marvell-pj4-feat-sec.d b/gas/testsuite/gas/arm/mcpu-marvell-pj4-feat-sec.d
new file mode 100644 (file)
index 0000000..aa41494
--- /dev/null
@@ -0,0 +1,17 @@
+#name: Marvell-PJ4 feat-sec
+#as: -mcpu=marvell-pj4
+#source: feat-sec.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "MARVELL-PJ4"
+  Tag_CPU_arch: v7
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: VFPv3
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone
diff --git a/gas/testsuite/gas/arm/mcpu-neoverse-n1-attrs.d b/gas/testsuite/gas/arm/mcpu-neoverse-n1-attrs.d
new file mode 100644 (file)
index 0000000..c850ee0
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Neoverse-N1 Attributes
+#as: -mcpu=neoverse-n1+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Neoverse N1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-neoverse-n1-feat-dotprod.d b/gas/testsuite/gas/arm/mcpu-neoverse-n1-feat-dotprod.d
new file mode 100644 (file)
index 0000000..b35d1ee
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Neoverse-N1 feat-dotprod
+#as: -mcpu=neoverse-n1
+#source: feat-dotprod.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Neoverse N1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-neoverse-n1-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-neoverse-n1-feat-fp16.d
new file mode 100644 (file)
index 0000000..36a02e8
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Neoverse-N1 feat-fp16
+#as: -mcpu=neoverse-n1
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Neoverse N1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-neoverse-n2-attrs.d b/gas/testsuite/gas/arm/mcpu-neoverse-n2-attrs.d
new file mode 100644 (file)
index 0000000..9a4360e
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Neoverse-N2 Attributes
+#as: -mcpu=neoverse-n2+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Neoverse N2"
+  Tag_CPU_arch: v9
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-neoverse-n2-feat-bf16.d b/gas/testsuite/gas/arm/mcpu-neoverse-n2-feat-bf16.d
new file mode 100644 (file)
index 0000000..955130e
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Neoverse-N2 feat-bf16
+#as: -mcpu=neoverse-n2
+#source: feat-bf16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Neoverse N2"
+  Tag_CPU_arch: v9
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-neoverse-n2-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-neoverse-n2-feat-fp16.d
new file mode 100644 (file)
index 0000000..72e15f8
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Neoverse-N2 feat-fp16
+#as: -mcpu=neoverse-n2
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Neoverse N2"
+  Tag_CPU_arch: v9
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-neoverse-n2-feat-i8mm.d b/gas/testsuite/gas/arm/mcpu-neoverse-n2-feat-i8mm.d
new file mode 100644 (file)
index 0000000..380e4ce
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Neoverse-N2 feat-i8mm
+#as: -mcpu=neoverse-n2
+#source: feat-i8mm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Neoverse N2"
+  Tag_CPU_arch: v9
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-neoverse-v1-attrs.d b/gas/testsuite/gas/arm/mcpu-neoverse-v1-attrs.d
new file mode 100644 (file)
index 0000000..9478192
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Neoverse-V1 Attributes
+#as: -mcpu=neoverse-v1+crypto
+#source: nop-asm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Neoverse V1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-neoverse-v1-feat-bf16.d b/gas/testsuite/gas/arm/mcpu-neoverse-v1-feat-bf16.d
new file mode 100644 (file)
index 0000000..48efeea
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Neoverse-V1 feat-bf16
+#as: -mcpu=neoverse-v1
+#source: feat-bf16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Neoverse V1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-neoverse-v1-feat-fp16.d b/gas/testsuite/gas/arm/mcpu-neoverse-v1-feat-fp16.d
new file mode 100644 (file)
index 0000000..59040dc
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Neoverse-V1 feat-fp16
+#as: -mcpu=neoverse-v1
+#source: feat-fp16.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Neoverse V1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-neoverse-v1-feat-i8mm.d b/gas/testsuite/gas/arm/mcpu-neoverse-v1-feat-i8mm.d
new file mode 100644 (file)
index 0000000..be46641
--- /dev/null
@@ -0,0 +1,18 @@
+#name: Neoverse-V1 feat-i8mm
+#as: -mcpu=neoverse-v1
+#source: feat-i8mm.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "Neoverse V1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8.1
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions
diff --git a/gas/testsuite/gas/arm/mcpu-xgene1-feat-simd.d b/gas/testsuite/gas/arm/mcpu-xgene1-feat-simd.d
new file mode 100644 (file)
index 0000000..e8ef6a8
--- /dev/null
@@ -0,0 +1,18 @@
+#name: XGene1 feat-simd
+#as: -mcpu=xgene1
+#source: feat-simd.s
+#readelf: -A
+# This test is only valid on EABI based ports.
+# target: *-*-*eabi*
+
+Attribute Section: aeabi
+File Attributes
+  Tag_CPU_name: "APM X-Gene 1"
+  Tag_CPU_arch: v8
+  Tag_CPU_arch_profile: Application
+  Tag_ARM_ISA_use: Yes
+  Tag_THUMB_ISA_use: Thumb-2
+  Tag_FP_arch: FP for ARMv8
+  Tag_Advanced_SIMD_arch: NEON for ARMv8
+  Tag_MPextension_use: Allowed
+  Tag_Virtualization_use: TrustZone and Virtualization Extensions