93d8990cba
Feature flag handling was not perfect, +nofp16 disabled fp instructions too. New feature flag macros were added to check features with multiple bits set (matters for FP_F16 and SIMD_F16 opcode feature tests). The unused AARCH64_OPCODE_HAS_FEATURE was removed, all checks should use one of the AARCH64_CPU_HAS_* macros. AARCH64_CPU_HAS_FEATURE now checks all feature bits. The aarch64_features table now contains the dependencies as a separate field (so when the feature is enabled all dependencies are enabled and when it is disabled everything that depends on it is disabled). Note that armv8-a+foo+nofoo is not equivalent to armv8-a if +foo turns on dependent features that nofoo does not turn off. gas/ * config/tc-aarch64.c (struct aarch64_option_cpu_value_table): Add require field. (aarch64_features): Initialize require fields. (aarch64_parse_features): Handle dependencies. (aarch64_feature_enable_set, aarch64_feature_disable_set): New. (md_assemble): Use AARCH64_CPU_HAS_ALL_FEATURES. * testsuite/gas/aarch64/illegal-nofp16.s: New. * testsuite/gas/aarch64/illegal-nofp16.l: New. * testsuite/gas/aarch64/illegal-nofp16.d: New. include/ * opcode/aarch64.h (AARCH64_CPU_HAS_ALL_FEATURES): New. (AARCH64_CPU_HAS_ANY_FEATURES): New. (AARCH64_CPU_HAS_FEATURE): Define as AARCH64_CPU_HAS_ALL_FEATURES. (AARCH64_OPCODE_HAS_FEATURE): Remove. |
||
---|---|---|
.. | ||
aarch64.h | ||
alpha.h | ||
arc-func.h | ||
arc.h | ||
arm.h | ||
avr.h | ||
bfin.h | ||
cgen.h | ||
ChangeLog-0415 | ||
ChangeLog-9103 | ||
convex.h | ||
cr16.h | ||
cris.h | ||
crx.h | ||
d10v.h | ||
d30v.h | ||
dlx.h | ||
ft32.h | ||
h8300.h | ||
hppa.h | ||
i370.h | ||
i386.h | ||
i860.h | ||
i960.h | ||
ia64.h | ||
m68hc11.h | ||
m68k.h | ||
m88k.h | ||
metag.h | ||
mips.h | ||
mmix.h | ||
mn10200.h | ||
mn10300.h | ||
moxie.h | ||
msp430-decode.h | ||
msp430.h | ||
nds32.h | ||
nios2.h | ||
nios2r1.h | ||
nios2r2.h | ||
np1.h | ||
ns32k.h | ||
pdp11.h | ||
pj.h | ||
pn.h | ||
ppc.h | ||
pyr.h | ||
rl78.h | ||
rx.h | ||
s390.h | ||
score-datadep.h | ||
score-inst.h | ||
sparc.h | ||
spu-insns.h | ||
spu.h | ||
tahoe.h | ||
tic4x.h | ||
tic6x-control-registers.h | ||
tic6x-insn-formats.h | ||
tic6x-opcode-table.h | ||
tic6x.h | ||
tic30.h | ||
tic54x.h | ||
tic80.h | ||
tilegx.h | ||
tilepro.h | ||
v850.h | ||
vax.h | ||
visium.h | ||
xgate.h |