Split the AArch64 Crypto instructions for AES and SHA1+2 into their own options ...
authorNick Clifton <nickc@redhat.com>
Wed, 8 Nov 2017 14:30:53 +0000 (14:30 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 8 Nov 2017 14:30:53 +0000 (14:30 +0000)
commitc0e7cef7156b2bc15ba43441ad14c6e83c09df8e
tree0ea0ffa8915a6746c94f88180b5748094c46f216
parentdec41383fff7116c9f66cdeca3105e968047a4e6
Split the AArch64 Crypto instructions for AES and SHA1+2 into their own options (+aes and +sha2).

The new options are:

+aes: Enables the AES instructions of Armv8-a,
      enabled by default with +crypto.

+sha2: Enables the SHA1 and SHA2 instructions of Armv8-a,
       enabled by default with +crypto.

These options have been turned on by default when +crypto
is used, as such no breakage is expected.

The reason for the split is because with the introduction of Armv8.4-a
the implementation of AES has explicitly been made independent of the
implementation of the other crypto extensions. Backporting the split does
not break any of the previous requirements and so is safe to do.

gas * config/tc-aarch64.c
(aarch64_features): Include AES and SHA2 in CRYPTO.
Add SHA2 and AES.

include * opcode/aarch64.h:
(AARCH64_FEATURE_SHA2, AARCH64_FEATURE_AES): New.

opcodes * aarch64-tbl.h (aarch64_feature_crypto): Add AES and SHA2.
(aarch64_feature_sha2, aarch64_feature_aes): New.
(SHA2, AES): New.
(AES_INSN, SHA2_INSN): New.
(pmull, pmull2, aese, aesd, aesmc, aesimc): Change to AES_INS.
(sha1h, sha1su1, sha256su0, sha1c, sha1p,
 sha1m, sha1su0, sha256h, sha256h2, sha256su1):
Change to SHA2_INS.
gas/ChangeLog
gas/config/tc-aarch64.c
include/ChangeLog
include/opcode/aarch64.h
opcodes/ChangeLog
opcodes/aarch64-tbl.h