License along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+static const struct cpu_option cpu_opttab_arm9e[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_arm946es[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_arm966es[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_arm968es[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_arm10e[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_arm1020e[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_arm1022e[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_arm926ejs[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_arm1026ejs[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_genericv7a[] = {
+ {
+ "simd", false,
+ { ISA_VFPv3,ISA_NEON, isa_nobit }
+ },
+ {
+ "vfpv3", false,
+ { ISA_VFPv3,ISA_FP_D32, isa_nobit }
+ },
+ {
+ "vfpv3-d16", false,
+ { ISA_VFPv3,ISA_FP_DBL, isa_nobit }
+ },
+ {
+ "vfpv3-fp16", false,
+ { ISA_VFPv3,ISA_FP_D32,isa_bit_fp16conv, isa_nobit }
+ },
+ {
+ "vfpv3-d16-fp16", false,
+ { ISA_VFPv3,ISA_FP_DBL,isa_bit_fp16conv, isa_nobit }
+ },
+ {
+ "vfpv4", false,
+ { ISA_VFPv4,ISA_FP_D32, isa_nobit }
+ },
+ {
+ "vfpv4-d16", false,
+ { ISA_VFPv4,ISA_FP_DBL, isa_nobit }
+ },
+ {
+ "neon", false,
+ { ISA_VFPv3,ISA_NEON, isa_nobit }
+ },
+ {
+ "neon-vfpv3", false,
+ { ISA_VFPv3,ISA_NEON, isa_nobit }
+ },
+ {
+ "neon-fp16", false,
+ { ISA_VFPv3,ISA_NEON,isa_bit_fp16conv, isa_nobit }
+ },
+ {
+ "neon-vfpv4", false,
+ { ISA_VFPv4,ISA_NEON, isa_nobit }
+ },
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ {
+ "nosimd", true,
+ { ISA_ALL_SIMD, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa5[] = {
+ {
+ "nosimd", true,
+ { ISA_ALL_SIMD, isa_nobit }
+ },
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa7[] = {
+ {
+ "nosimd", true,
+ { ISA_ALL_SIMD, isa_nobit }
+ },
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
static const struct cpu_option cpu_opttab_cortexa8[] = {
{
"nofp", true,
- { ISA_NEON,ISA_VFPv3, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
static const struct cpu_option cpu_opttab_cortexa9[] = {
{
"nofp", true,
- { ISA_NEON,ISA_VFPv3, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{
"nosimd", true,
- { ISA_NEON, isa_nobit }
+ { ISA_ALL_SIMD, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa12[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa15[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa17[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexr5[] = {
+ {
+ "nofp.dp", true,
+ { ISA_FP_DBL, isa_nobit }
+ },
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexr7[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexr8[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexm7[] = {
+ {
+ "nofp.dp", true,
+ { ISA_FP_DBL, isa_nobit }
+ },
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexm4[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa15cortexa7[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa17cortexa7[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa32[] = {
+ {
+ "crypto", false,
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
+ },
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa35[] = {
+ {
+ "crypto", false,
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
+ },
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa53[] = {
+ {
+ "crypto", false,
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
+ },
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa57[] = {
+ {
+ "crypto", false,
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa72[] = {
+ {
+ "crypto", false,
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa73[] = {
+ {
+ "crypto", false,
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_exynosm1[] = {
+ {
+ "crypto", false,
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_xgene1[] = {
+ {
+ "crypto", false,
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa57cortexa53[] = {
+ {
+ "crypto", false,
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa72cortexa53[] = {
+ {
+ "crypto", false,
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa73cortexa35[] = {
+ {
+ "crypto", false,
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexa73cortexa53[] = {
+ {
+ "crypto", false,
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
+ },
+ { NULL, false, {isa_nobit}}
+};
+
+static const struct cpu_option cpu_opttab_cortexm33[] = {
+ {
+ "nofp", true,
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
"5TE", BASE_ARCH_5TE,
{
ISA_ARMv5te,
+ ISA_VFPv2,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_arm9e,
&arm_9e_tune
},
{
"5TE", BASE_ARCH_5TE,
{
ISA_ARMv5te,
+ ISA_VFPv2,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_arm946es,
&arm_9e_tune
},
{
"5TE", BASE_ARCH_5TE,
{
ISA_ARMv5te,
+ ISA_VFPv2,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_arm966es,
&arm_9e_tune
},
{
"5TE", BASE_ARCH_5TE,
{
ISA_ARMv5te,
+ ISA_VFPv2,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_arm968es,
&arm_9e_tune
},
{
"5TE", BASE_ARCH_5TE,
{
ISA_ARMv5te,
+ ISA_VFPv2,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_arm10e,
&arm_fastmul_tune
},
{
"5TE", BASE_ARCH_5TE,
{
ISA_ARMv5te,
+ ISA_VFPv2,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_arm1020e,
&arm_fastmul_tune
},
{
"5TE", BASE_ARCH_5TE,
{
ISA_ARMv5te,
+ ISA_VFPv2,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_arm1022e,
&arm_fastmul_tune
},
{
"5TEJ", BASE_ARCH_5TEJ,
{
ISA_ARMv5tej,
+ ISA_VFPv2,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_arm926ejs,
&arm_9e_tune
},
{
"5TEJ", BASE_ARCH_5TEJ,
{
ISA_ARMv5tej,
+ ISA_VFPv2,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_arm1026ejs,
&arm_9e_tune
},
{
"7A", BASE_ARCH_7A,
{
ISA_ARMv7a,
+ ISA_VFPv3,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_genericv7a,
&arm_cortex_tune
},
{
"7A", BASE_ARCH_7A,
{
ISA_ARMv7a,
+ ISA_VFPv3,ISA_NEON,isa_bit_fp16conv,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa5,
&arm_cortex_a5_tune
},
{
"7A", BASE_ARCH_7A,
{
ISA_ARMv7ve,
+ ISA_VFPv4,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa7,
&arm_cortex_a7_tune
},
{
"7A", BASE_ARCH_7A,
{
ISA_ARMv7a,
- ISA_VFPv3,ISA_NEON,
+ ISA_VFPv3,ISA_NEON,isa_bit_fp16conv,
isa_nobit
},
cpu_opttab_cortexa9,
"7A", BASE_ARCH_7A,
{
ISA_ARMv7ve,
+ ISA_VFPv4,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa12,
&arm_cortex_a12_tune
},
{
"7A", BASE_ARCH_7A,
{
ISA_ARMv7ve,
+ ISA_VFPv4,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa15,
&arm_cortex_a15_tune
},
{
"7A", BASE_ARCH_7A,
{
ISA_ARMv7ve,
+ ISA_VFPv4,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa17,
&arm_cortex_a12_tune
},
{
"7R", BASE_ARCH_7R,
{
ISA_ARMv7r,
+ ISA_VFPv3,ISA_FP_DBL,
isa_nobit
},
NULL,
{
ISA_ARMv7r,
isa_bit_adiv,
+ ISA_VFPv3,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexr5,
&arm_cortex_tune
},
{
{
ISA_ARMv7r,
isa_bit_adiv,
+ ISA_VFPv3,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexr7,
&arm_cortex_tune
},
{
{
ISA_ARMv7r,
isa_bit_adiv,
+ ISA_VFPv3,ISA_FP_DBL,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexr8,
&arm_cortex_tune
},
{
"7EM", BASE_ARCH_7EM,
{
ISA_ARMv7em,
+ ISA_FPv5,ISA_FP_DBL,
isa_quirk_no_volatile_ce,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexm7,
&arm_cortex_m7_tune
},
{
"7EM", BASE_ARCH_7EM,
{
ISA_ARMv7em,
+ ISA_VFPv4,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexm4,
&arm_v7m_tune
},
{
"7A", BASE_ARCH_7A,
{
ISA_ARMv7ve,
+ ISA_VFPv4,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa15cortexa7,
&arm_cortex_a15_tune
},
{
"7A", BASE_ARCH_7A,
{
ISA_ARMv7ve,
+ ISA_VFPv4,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa17cortexa7,
&arm_cortex_a12_tune
},
{
{
ISA_ARMv8a,
isa_bit_crc32,
+ ISA_FP_ARMv8,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa32,
&arm_cortex_a35_tune
},
{
{
ISA_ARMv8a,
isa_bit_crc32,
+ ISA_FP_ARMv8,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa35,
&arm_cortex_a35_tune
},
{
{
ISA_ARMv8a,
isa_bit_crc32,
+ ISA_FP_ARMv8,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa53,
&arm_cortex_a53_tune
},
{
{
ISA_ARMv8a,
isa_bit_crc32,
+ ISA_FP_ARMv8,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa57,
&arm_cortex_a57_tune
},
{
{
ISA_ARMv8a,
isa_bit_crc32,
+ ISA_FP_ARMv8,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa72,
&arm_cortex_a57_tune
},
{
{
ISA_ARMv8a,
isa_bit_crc32,
+ ISA_FP_ARMv8,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa73,
&arm_cortex_a73_tune
},
{
{
ISA_ARMv8a,
isa_bit_crc32,
+ ISA_FP_ARMv8,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_exynosm1,
&arm_exynosm1_tune
},
{
"8A", BASE_ARCH_8A,
{
ISA_ARMv8a,
+ ISA_FP_ARMv8,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_xgene1,
&arm_xgene1_tune
},
{
{
ISA_ARMv8a,
isa_bit_crc32,
+ ISA_FP_ARMv8,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa57cortexa53,
&arm_cortex_a57_tune
},
{
{
ISA_ARMv8a,
isa_bit_crc32,
+ ISA_FP_ARMv8,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa72cortexa53,
&arm_cortex_a57_tune
},
{
{
ISA_ARMv8a,
isa_bit_crc32,
+ ISA_FP_ARMv8,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa73cortexa35,
&arm_cortex_a73_tune
},
{
{
ISA_ARMv8a,
isa_bit_crc32,
+ ISA_FP_ARMv8,ISA_NEON,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexa73cortexa53,
&arm_cortex_a73_tune
},
{
{
ISA_ARMv8m_main,
isa_bit_ARMv7em,
+ ISA_FPv5,
isa_nobit
},
- NULL,
+ cpu_opttab_cortexm33,
&arm_v7m_tune
},
{NULL, TARGET_CPU_arm_none, 0, NULL, BASE_ARCH_0, {isa_nobit}, NULL, NULL}
},
{
"nofp", true,
- { ISA_VFPv2,ISA_FP_DBL, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
},
{
"nofp", true,
- { ISA_VFPv2,ISA_FP_DBL, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
},
{
"nofp", true,
- { ISA_VFPv2,ISA_FP_DBL, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
},
{
"nofp", true,
- { ISA_VFPv2,ISA_FP_DBL, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
},
{
"nofp", true,
- { ISA_VFPv2,ISA_FP_DBL, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
},
{
"nofp", true,
- { ISA_VFPv2,ISA_FP_DBL, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
},
{
"nofp", true,
- { ISA_VFPv2,ISA_FP_DBL, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
},
{
"nofp", true,
- { ISA_VFPv2,ISA_FP_DBL, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
},
{
"nofp", true,
- { ISA_VFPv2,ISA_FP_DBL, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
},
{
"nofp", true,
- { ISA_VFPv2,ISA_FP_DBL, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
{ ISA_VFPv3,ISA_FP_DBL, isa_nobit }
},
{
- "simd", false,
- { ISA_VFPv3,ISA_NEON, isa_nobit }
+ "vfpv3-d16", false,
+ { ISA_VFPv3,ISA_FP_DBL, isa_nobit }
},
{
"vfpv3", false,
{ ISA_VFPv3,ISA_FP_D32, isa_nobit }
},
- {
- "vfpv3-d16", false,
- { ISA_VFPv3,ISA_FP_DBL, isa_nobit }
- },
{
"vfpv3-d16-fp16", false,
{ ISA_VFPv3,ISA_FP_DBL,isa_bit_fp16conv, isa_nobit }
"vfpv3-fp16", false,
{ ISA_VFPv3,ISA_FP_DBL,ISA_FP_D32,isa_bit_fp16conv, isa_nobit }
},
+ {
+ "vfpv4-d16", false,
+ { ISA_VFPv4,ISA_FP_DBL, isa_nobit }
+ },
{
"vfpv4", false,
{ ISA_VFPv4,ISA_FP_D32, isa_nobit }
},
{
- "vfpv4-d16", false,
- { ISA_VFPv4,ISA_FP_DBL, isa_nobit }
+ "simd", false,
+ { ISA_VFPv3,ISA_NEON, isa_nobit }
},
{
"neon", false,
},
{
"nofp", true,
- { ISA_VFPv4,ISA_NEON, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{
"nosimd", true,
- { ISA_NEON, isa_nobit }
+ { ISA_ALL_SIMD, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
static const struct cpu_option arch_opttab_armv7ve[] = {
{
- "fp", false,
- { ISA_VFPv4,ISA_FP_DBL, isa_nobit }
- },
- {
- "simd", false,
- { ISA_VFPv4,ISA_NEON, isa_nobit }
+ "vfpv3-d16", false,
+ { ISA_VFPv3,ISA_FP_DBL, isa_nobit }
},
{
"vfpv3", false,
{ ISA_VFPv3,ISA_FP_D32, isa_nobit }
},
- {
- "vfpv3-d16", false,
- { ISA_VFPv3,ISA_FP_DBL, isa_nobit }
- },
{
"vfpv3-d16-fp16", false,
{ ISA_VFPv3,ISA_FP_DBL,isa_bit_fp16conv, isa_nobit }
{ ISA_VFPv3,ISA_FP_DBL,ISA_FP_D32,isa_bit_fp16conv, isa_nobit }
},
{
- "vfpv4", false,
- { ISA_VFPv4,ISA_FP_D32, isa_nobit }
+ "vfpv4-d16", false,
+ { ISA_VFPv4,ISA_FP_DBL, isa_nobit }
},
{
- "vfpv4-d16", false,
+ "fp", false,
{ ISA_VFPv4,ISA_FP_DBL, isa_nobit }
},
+ {
+ "vfpv4", false,
+ { ISA_VFPv4,ISA_FP_D32, isa_nobit }
+ },
{
"neon", false,
{ ISA_VFPv3,ISA_NEON, isa_nobit }
"neon-fp16", false,
{ ISA_VFPv3,ISA_NEON,isa_bit_fp16conv, isa_nobit }
},
+ {
+ "simd", false,
+ { ISA_VFPv4,ISA_NEON, isa_nobit }
+ },
{
"neon-vfpv4", false,
{ ISA_VFPv4,ISA_NEON, isa_nobit }
},
{
"nofp", true,
- { ISA_VFPv4,ISA_NEON, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{
"nosimd", true,
- { ISA_NEON, isa_nobit }
+ { ISA_ALL_SIMD, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
static const struct cpu_option arch_opttab_armv7_r[] = {
- {
- "fp", false,
- { ISA_VFPv3,ISA_FP_DBL, isa_nobit }
- },
{
"fp.sp", false,
{ ISA_VFPv3, isa_nobit }
},
+ {
+ "fp", false,
+ { ISA_VFPv3,ISA_FP_DBL, isa_nobit }
+ },
{
"idiv", false,
{ isa_bit_adiv, isa_nobit }
},
{
"nofp", true,
- { ISA_VFPv3,ISA_FP_DBL, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{
"noidiv", true,
},
{
"nofp", true,
- { ISA_FPv5,ISA_FP_DBL, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
},
{
"crypto", false,
- { ISA_FP_ARMv8,ISA_NEON,ISA_CRYPTO, isa_nobit }
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
},
{
"nofp", true,
- { ISA_FP_ARMv8,ISA_NEON,ISA_CRYPTO, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{
"nocrypto", true,
- { ISA_CRYPTO, isa_nobit }
+ { ISA_ALL_CRYPTO, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
},
{
"crypto", false,
- { ISA_FP_ARMv8,ISA_NEON,ISA_CRYPTO, isa_nobit }
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
},
{
"nofp", true,
- { ISA_FP_ARMv8,ISA_NEON,ISA_CRYPTO, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{
"nocrypto", true,
- { ISA_CRYPTO, isa_nobit }
+ { ISA_ALL_CRYPTO, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
static const struct cpu_option arch_opttab_armv8_2_a[] = {
- {
- "fp16", false,
- { isa_bit_fp16,ISA_FP_ARMv8,ISA_NEON, isa_nobit }
- },
{
"simd", false,
{ ISA_FP_ARMv8,ISA_NEON, isa_nobit }
},
+ {
+ "fp16", false,
+ { isa_bit_fp16,ISA_FP_ARMv8,ISA_NEON, isa_nobit }
+ },
{
"crypto", false,
- { ISA_FP_ARMv8,ISA_NEON,ISA_CRYPTO, isa_nobit }
+ { ISA_FP_ARMv8,ISA_CRYPTO, isa_nobit }
},
{
"nofp", true,
- { isa_bit_fp16,ISA_FP_ARMv8,ISA_NEON,ISA_CRYPTO, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{
"nocrypto", true,
- { ISA_CRYPTO, isa_nobit }
+ { ISA_ALL_CRYPTO, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
},
{
"nofp", true,
- { ISA_FPv5, isa_nobit }
+ { ISA_ALL_FP, isa_nobit }
},
{ NULL, false, {isa_nobit}}
};
ISA_ARMv6kz,
isa_nobit
},
- arch_opttab_armv6zk,
+ arch_opttab_armv6kz,
NULL
},
{
ISA_ARMv6kz,
isa_nobit
},
- arch_opttab_armv6kz,
+ arch_opttab_armv6zk,
NULL
},
{
isa ARMv5e
option fp add VFPv2 FP_DBL
option vfpv2 add VFPv2 FP_DBL
- option nofp remove VFPv2 FP_DBL
+ option nofp remove ALL_FP
end arch armv5e
begin arch armv5te
isa ARMv5te
option fp add VFPv2 FP_DBL
option vfpv2 add VFPv2 FP_DBL
- option nofp remove VFPv2 FP_DBL
+ option nofp remove ALL_FP
end arch armv5te
begin arch armv5tej
isa ARMv5tej
option fp add VFPv2 FP_DBL
option vfpv2 add VFPv2 FP_DBL
- option nofp remove VFPv2 FP_DBL
+ option nofp remove ALL_FP
end arch armv5tej
begin arch armv6
isa ARMv6
option fp add VFPv2 FP_DBL
option vfpv2 add VFPv2 FP_DBL
- option nofp remove VFPv2 FP_DBL
+ option nofp remove ALL_FP
end arch armv6
begin arch armv6j
isa ARMv6j
option fp add VFPv2 FP_DBL
option vfpv2 add VFPv2 FP_DBL
- option nofp remove VFPv2 FP_DBL
+ option nofp remove ALL_FP
end arch armv6j
begin arch armv6k
isa ARMv6k
option fp add VFPv2 FP_DBL
option vfpv2 add VFPv2 FP_DBL
- option nofp remove VFPv2 FP_DBL
+ option nofp remove ALL_FP
end arch armv6k
begin arch armv6z
isa ARMv6z
option fp add VFPv2 FP_DBL
option vfpv2 add VFPv2 FP_DBL
- option nofp remove VFPv2 FP_DBL
+ option nofp remove ALL_FP
end arch armv6z
begin arch armv6kz
isa ARMv6kz
option fp add VFPv2 FP_DBL
option vfpv2 add VFPv2 FP_DBL
- option nofp remove VFPv2 FP_DBL
+ option nofp remove ALL_FP
end arch armv6kz
begin arch armv6zk
isa ARMv6kz
option fp add VFPv2 FP_DBL
option vfpv2 add VFPv2 FP_DBL
- option nofp remove VFPv2 FP_DBL
+ option nofp remove ALL_FP
end arch armv6zk
begin arch armv6t2
isa ARMv6t2
option fp add VFPv2 FP_DBL
option vfpv2 add VFPv2 FP_DBL
- option nofp remove VFPv2 FP_DBL
+ option nofp remove ALL_FP
end arch armv6t2
begin arch armv6-m
base 7A
isa ARMv7a
# fp => VFPv3-d16, simd => neon-vfpv3
- option fp add VFPv3 FP_DBL
- option simd add VFPv3 NEON
- option vfpv3 add VFPv3 FP_D32
- option vfpv3-d16 add VFPv3 FP_DBL
+ option fp add VFPv3 FP_DBL
+ option vfpv3-d16 add VFPv3 FP_DBL
+ option vfpv3 add VFPv3 FP_D32
option vfpv3-d16-fp16 add VFPv3 FP_DBL bit_fp16conv
- option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 bit_fp16conv
- option vfpv4 add VFPv4 FP_D32
- option vfpv4-d16 add VFPv4 FP_DBL
- option neon add VFPv3 NEON
- option neon-vfpv3 add VFPv3 NEON
- option neon-fp16 add VFPv3 NEON bit_fp16conv
- option neon-vfpv4 add VFPv4 NEON
- option nofp remove VFPv4 NEON
- option nosimd remove NEON
+ option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 bit_fp16conv
+ option vfpv4-d16 add VFPv4 FP_DBL
+ option vfpv4 add VFPv4 FP_D32
+ option simd add VFPv3 NEON
+ option neon add VFPv3 NEON
+ option neon-vfpv3 add VFPv3 NEON
+ option neon-fp16 add VFPv3 NEON bit_fp16conv
+ option neon-vfpv4 add VFPv4 NEON
+ option nofp remove ALL_FP
+ option nosimd remove ALL_SIMD
end arch armv7-a
begin arch armv7ve
base 7A
isa ARMv7ve
# fp => VFPv4-d16, simd => neon-vfpv4
- option fp add VFPv4 FP_DBL
- option simd add VFPv4 NEON
- option vfpv3 add VFPv3 FP_D32
- option vfpv3-d16 add VFPv3 FP_DBL
+ option vfpv3-d16 add VFPv3 FP_DBL
+ option vfpv3 add VFPv3 FP_D32
option vfpv3-d16-fp16 add VFPv3 FP_DBL bit_fp16conv
- option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 bit_fp16conv
- option vfpv4 add VFPv4 FP_D32
- option vfpv4-d16 add VFPv4 FP_DBL
- option neon add VFPv3 NEON
- option neon-vfpv3 add VFPv3 NEON
- option neon-fp16 add VFPv3 NEON bit_fp16conv
- option neon-vfpv4 add VFPv4 NEON
- option nofp remove VFPv4 NEON
- option nosimd remove NEON
+ option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 bit_fp16conv
+ option vfpv4-d16 add VFPv4 FP_DBL
+ option fp add VFPv4 FP_DBL
+ option vfpv4 add VFPv4 FP_D32
+ option neon add VFPv3 NEON
+ option neon-vfpv3 add VFPv3 NEON
+ option neon-fp16 add VFPv3 NEON bit_fp16conv
+ option simd add VFPv4 NEON
+ option neon-vfpv4 add VFPv4 NEON
+ option nofp remove ALL_FP
+ option nosimd remove ALL_SIMD
end arch armv7ve
begin arch armv7-r
base 7R
isa ARMv7r
# ARMv7-r uses VFPv3-d16
- option fp add VFPv3 FP_DBL
option fp.sp add VFPv3
+ option fp add VFPv3 FP_DBL
option idiv add bit_adiv
- option nofp remove VFPv3 FP_DBL
+ option nofp remove ALL_FP
option noidiv remove bit_adiv
end arch armv7-r
option fp add VFPv4
option fpv5 add FPv5
option fp.dp add FPv5 FP_DBL
- option nofp remove FPv5 FP_DBL
+ option nofp remove ALL_FP
end arch armv7e-m
begin arch armv8-a
isa ARMv8a
option crc add bit_crc32
option simd add FP_ARMv8 NEON
- option crypto add FP_ARMv8 NEON CRYPTO
- option nofp remove FP_ARMv8 NEON CRYPTO
- option nocrypto remove CRYPTO
+ option crypto add FP_ARMv8 CRYPTO
+ option nofp remove ALL_FP
+ option nocrypto remove ALL_CRYPTO
end arch armv8-a
begin arch armv8.1-a
base 8A
isa ARMv8_1a
option simd add FP_ARMv8 NEON
- option crypto add FP_ARMv8 NEON CRYPTO
- option nofp remove FP_ARMv8 NEON CRYPTO
- option nocrypto remove CRYPTO
+ option crypto add FP_ARMv8 CRYPTO
+ option nofp remove ALL_FP
+ option nocrypto remove ALL_CRYPTO
end arch armv8.1-a
begin arch armv8.2-a
tune flags CO_PROC
base 8A
isa ARMv8_2a
- option fp16 add bit_fp16 FP_ARMv8 NEON
option simd add FP_ARMv8 NEON
- option crypto add FP_ARMv8 NEON CRYPTO
- option nofp remove bit_fp16 FP_ARMv8 NEON CRYPTO
- option nocrypto remove CRYPTO
+ option fp16 add bit_fp16 FP_ARMv8 NEON
+ option crypto add FP_ARMv8 CRYPTO
+ option nofp remove ALL_FP
+ option nocrypto remove ALL_CRYPTO
end arch armv8.2-a
begin arch armv8-m.base
# fp => FPv5-sp-d16; fp.dp => FPv5-d16
option fp add FPv5
option fp.dp add FPv5 FP_DBL
- option nofp remove FPv5
+ option nofp remove ALL_FP
end arch armv8-m.main
begin arch iwmmxt
# V5T Architecture Processors
+# These used VFPv1 which isn't supported by GCC
begin cpu arm10tdmi
tune flags LDSCHED
architecture armv5t
begin cpu arm9e
tune flags LDSCHED
architecture armv5te
+ fpu vfpv2
+ option nofp remove ALL_FP
costs 9e
end cpu arm9e
cname arm946es
tune flags LDSCHED
architecture armv5te
+ fpu vfpv2
+ option nofp remove ALL_FP
costs 9e
end cpu arm946e-s
cname arm966es
tune flags LDSCHED
architecture armv5te
+ fpu vfpv2
+ option nofp remove ALL_FP
costs 9e
end cpu arm966e-s
cname arm968es
tune flags LDSCHED
architecture armv5te
+ fpu vfpv2
+ option nofp remove ALL_FP
costs 9e
end cpu arm968e-s
begin cpu arm10e
tune flags LDSCHED
architecture armv5te
+ fpu vfpv2
+ option nofp remove ALL_FP
costs fastmul
end cpu arm10e
begin cpu arm1020e
tune flags LDSCHED
architecture armv5te
+ fpu vfpv2
+ option nofp remove ALL_FP
costs fastmul
end cpu arm1020e
begin cpu arm1022e
tune flags LDSCHED
architecture armv5te
+ fpu vfpv2
+ option nofp remove ALL_FP
costs fastmul
end cpu arm1022e
cname arm926ejs
tune flags LDSCHED
architecture armv5tej
+ fpu vfpv2
+ option nofp remove ALL_FP
costs 9e
end cpu arm926ej-s
cname arm1026ejs
tune flags LDSCHED
architecture armv5tej
+ fpu vfpv2
+ option nofp remove ALL_FP
costs 9e
end cpu arm1026ej-s
cname genericv7a
tune flags LDSCHED
architecture armv7-a
+ fpu vfpv3-d16
+ option simd add VFPv3 NEON
+ option vfpv3 add VFPv3 FP_D32
+ option vfpv3-d16 add VFPv3 FP_DBL
+ option vfpv3-fp16 add VFPv3 FP_D32 bit_fp16conv
+ option vfpv3-d16-fp16 add VFPv3 FP_DBL bit_fp16conv
+ option vfpv4 add VFPv4 FP_D32
+ option vfpv4-d16 add VFPv4 FP_DBL
+ option neon add VFPv3 NEON
+ option neon-vfpv3 add VFPv3 NEON
+ option neon-fp16 add VFPv3 NEON bit_fp16conv
+ option neon-vfpv4 add VFPv4 NEON
+ option nofp remove ALL_FP
+ option nosimd remove ALL_SIMD
costs cortex
end cpu generic-armv7-a
cname cortexa5
tune flags LDSCHED
architecture armv7-a
+ fpu neon-fp16
+ option nosimd remove ALL_SIMD
+ option nofp remove ALL_FP
costs cortex_a5
end cpu cortex-a5
cname cortexa7
tune flags LDSCHED
architecture armv7ve
+ fpu neon-vfpv4
+ option nosimd remove ALL_SIMD
+ option nofp remove ALL_FP
costs cortex_a7
end cpu cortex-a7
tune flags LDSCHED
architecture armv7-a
fpu neon-vfpv3
- option nofp remove NEON VFPv3
+ option nofp remove ALL_FP
costs cortex_a8
end cpu cortex-a8
cname cortexa9
tune flags LDSCHED
architecture armv7-a
- fpu neon-vfpv3
- option nofp remove NEON VFPv3
- option nosimd remove NEON
+ fpu neon-fp16
+ option nofp remove ALL_FP
+ option nosimd remove ALL_SIMD
costs cortex_a9
end cpu cortex-a9
tune for cortex-a17
tune flags LDSCHED
architecture armv7ve
+ fpu neon-vfpv4
+ option nofp remove ALL_FP
costs cortex_a12
end cpu cortex-a12
cname cortexa15
tune flags LDSCHED
architecture armv7ve
+ fpu neon-vfpv4
+ option nofp remove ALL_FP
costs cortex_a15
end cpu cortex-a15
cname cortexa17
tune flags LDSCHED
architecture armv7ve
+ fpu neon-vfpv4
+ option nofp remove ALL_FP
costs cortex_a12
end cpu cortex-a17
cname cortexr4f
tune flags LDSCHED
architecture armv7-r
+ fpu vfpv3-d16
costs cortex
end cpu cortex-r4f
begin cpu cortex-r5
cname cortexr5
tune flags LDSCHED
- architecture armv7-r
- isa bit_adiv
+ architecture armv7-r+idiv
+ fpu vfpv3-d16
+ option nofp.dp remove FP_DBL
+ option nofp remove ALL_FP
costs cortex
end cpu cortex-r5
begin cpu cortex-r7
cname cortexr7
tune flags LDSCHED
- architecture armv7-r
- isa bit_adiv
+ architecture armv7-r+idiv
+ fpu vfpv3-d16
+ option nofp remove ALL_FP
costs cortex
end cpu cortex-r7
cname cortexr8
tune for cortex-r7
tune flags LDSCHED
- architecture armv7-r
- isa bit_adiv
+ architecture armv7-r+idiv
+ fpu vfpv3-d16
+ option nofp remove ALL_FP
costs cortex
end cpu cortex-r8
tune flags LDSCHED
architecture armv7e-m
isa quirk_no_volatile_ce
+ fpu fpv5-d16
+ option nofp.dp remove FP_DBL
+ option nofp remove ALL_FP
costs cortex_m7
end cpu cortex-m7
cname cortexm4
tune flags LDSCHED
architecture armv7e-m
+ fpu fpv4-sp-d16
+ option nofp remove ALL_FP
costs v7m
end cpu cortex-m4
tune for cortex-a7
tune flags LDSCHED
architecture armv7ve
+ fpu neon-vfpv4
+ option nofp remove ALL_FP
costs cortex_a15
end cpu cortex-a15.cortex-a7
tune for cortex-a7
tune flags LDSCHED
architecture armv7ve
+ fpu neon-vfpv4
+ option nofp remove ALL_FP
costs cortex_a12
end cpu cortex-a17.cortex-a7
tune for cortex-a53
tune flags LDSCHED
architecture armv8-a+crc
+ fpu neon-fp-armv8
+ option crypto add FP_ARMv8 CRYPTO
+ option nofp remove ALL_FP
costs cortex_a35
end cpu cortex-a32
tune for cortex-a53
tune flags LDSCHED
architecture armv8-a+crc
+ fpu neon-fp-armv8
+ option crypto add FP_ARMv8 CRYPTO
+ option nofp remove ALL_FP
costs cortex_a35
end cpu cortex-a35
cname cortexa53
tune flags LDSCHED
architecture armv8-a+crc
+ fpu neon-fp-armv8
+ option crypto add FP_ARMv8 CRYPTO
+ option nofp remove ALL_FP
costs cortex_a53
end cpu cortex-a53
cname cortexa57
tune flags LDSCHED
architecture armv8-a+crc
+ fpu neon-fp-armv8
+ option crypto add FP_ARMv8 CRYPTO
costs cortex_a57
end cpu cortex-a57
tune for cortex-a57
tune flags LDSCHED
architecture armv8-a+crc
+ fpu neon-fp-armv8
+ option crypto add FP_ARMv8 CRYPTO
costs cortex_a57
end cpu cortex-a72
tune for cortex-a57
tune flags LDSCHED
architecture armv8-a+crc
+ fpu neon-fp-armv8
+ option crypto add FP_ARMv8 CRYPTO
costs cortex_a73
end cpu cortex-a73
cname exynosm1
tune flags LDSCHED
architecture armv8-a+crc
+ fpu neon-fp-armv8
+ option crypto add FP_ARMv8 CRYPTO
costs exynosm1
end cpu exynos-m1
begin cpu xgene1
tune flags LDSCHED
architecture armv8-a
+ fpu neon-fp-armv8
+ option crypto add FP_ARMv8 CRYPTO
costs xgene1
end cpu xgene1
tune for cortex-a53
tune flags LDSCHED
architecture armv8-a+crc
+ fpu neon-fp-armv8
+ option crypto add FP_ARMv8 CRYPTO
costs cortex_a57
end cpu cortex-a57.cortex-a53
tune for cortex-a53
tune flags LDSCHED
architecture armv8-a+crc
+ fpu neon-fp-armv8
+ option crypto add FP_ARMv8 CRYPTO
costs cortex_a57
end cpu cortex-a72.cortex-a53
tune for cortex-a53
tune flags LDSCHED
architecture armv8-a+crc
+ fpu neon-fp-armv8
+ option crypto add FP_ARMv8 CRYPTO
costs cortex_a73
end cpu cortex-a73.cortex-a35
tune for cortex-a53
tune flags LDSCHED
architecture armv8-a+crc
+ fpu neon-fp-armv8
+ option crypto add FP_ARMv8 CRYPTO
costs cortex_a73
end cpu cortex-a73.cortex-a53
cname cortexm33
tune flags LDSCHED
architecture armv8-m.main+dsp
+ fpu fpv5-sp-d16
+ option nofp remove ALL_FP
costs v7m
end cpu cortex-m33