aboutsummaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
authorTamar Christina <tamar.christina@arm.com>2020-04-20 11:46:38 +0100
committerTamar Christina <tamar.christina@arm.com>2020-04-20 11:47:22 +0100
commitb262ef0ed1628d88aa7a899fb3f93bcf3e51998e (patch)
tree35f0c039ba7e31a5b099bf416cd0ad239c44384c /ChangeLog
parentb3e5d33b380a161bbfb854f47077a5c32684a39e (diff)
downloadgcc-b262ef0ed1628d88aa7a899fb3f93bcf3e51998e.zip
gcc-b262ef0ed1628d88aa7a899fb3f93bcf3e51998e.tar.gz
gcc-b262ef0ed1628d88aa7a899fb3f93bcf3e51998e.tar.bz2
AArch64: Fix options canonicanization for assembler
It is currently impossible to use fp16 on any architecture higher than Armv8.3-a due to a bug in options canonization. This bug results in the fp16 flag not being emitted in the assembly when it should have been. This is caused by a complicated architectural requirement at Armv8.4-a. On Armv8.2-a and Armv8.3-a fp16fml is an optional extension and turning it on turns on both fp and fp16. However starting with Armv8.4-a fp16fml is mandatory if fp16 is available, otherwise it's optional. In short this means that to enable fp16fml the smallest option that needs to passed to the assembler is Armv8.4-a+fp16. The fix in this patch takes into account that an option may be on by default in an architecture, but that not all the bits required to use it are on by default in an architecture. In such cases the difference between the two are still emitted to the assembler. gcc/ChangeLog: PR target/94396 * common/config/aarch64/aarch64-common.c (aarch64_get_extension_string_for_isa_flags): Handle default flags. gcc/testsuite/ChangeLog: PR target/94396 * gcc.target/aarch64/options_set_11.c: New test. * gcc.target/aarch64/options_set_12.c: New test. * gcc.target/aarch64/options_set_13.c: New test. * gcc.target/aarch64/options_set_14.c: New test. * gcc.target/aarch64/options_set_15.c: New test. * gcc.target/aarch64/options_set_16.c: New test. * gcc.target/aarch64/options_set_17.c: New test. * gcc.target/aarch64/options_set_18.c: New test. * gcc.target/aarch64/options_set_19.c: New test. * gcc.target/aarch64/options_set_20.c: New test. * gcc.target/aarch64/options_set_21.c: New test. * gcc.target/aarch64/options_set_22.c: New test. * gcc.target/aarch64/options_set_23.c: New test. * gcc.target/aarch64/options_set_24.c: New test. * gcc.target/aarch64/options_set_25.c: New test. * gcc.target/aarch64/options_set_26.c: New test.
Diffstat (limited to 'ChangeLog')
0 files changed, 0 insertions, 0 deletions