On Wed, Jan 03, 2018 at 05:25:57PM +0000, Michael Collison wrote: > Hi All, > > This patch adds support for the SM3/SM4 cryptographic instructions added in > Armv8.4-a. Support for the new instructions is in the form of new ACLE > intrinsics. A new command line feature modifier, +sm4, is added to enable the > support. > > Test cases were added to verify that the ACLE Intrinsics generate the > appropriate SM3/SM4 assembly instructions. > > Bootstrapped on aarch64-none-elf. Tested with new binutils and verified all > instructions assembly correctly. > > Okay for trunk?
OK. Thanks, James > 2017-11-10 Michael Collison <michael.colli...@arm.com> > > * config/aarch64/aarch64-builtins.c: > (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New. > * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): > (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true. > (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true. > * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags. > (AARCH64_ISA_SM4): New ISA flag. > (TARGET_SM4): New feature flag for sm4. > * config/aarch64/aarch64-simd-builtins.def > (aarch64_sm3ss1qv4si): Ditto. > (aarch64_sm3tt1aq4si): Ditto. > (aarch64_sm3tt1bq4si): Ditto. > (aarch64_sm3tt2aq4si): Ditto. > (aarch64_sm3tt2bq4si): Ditto. > (aarch64_sm3partw1qv4si): Ditto. > (aarch64_sm3partw2qv4si): Ditto. > (aarch64_sm4eqv4si): Ditto. > (aarch64_sm4ekeyqv4si): Ditto. > * config/aarch64/aarch64-simd.md: > (aarch64_sm3ss1qv4si): Ditto. > (aarch64_sm3tt<sm3tt_op>qv4si): Ditto. > (aarch64_sm3partw<sm3part_op>qv4si): Ditto. > (aarch64_sm4eqv4si): Ditto. > (aarch64_sm4ekeyqv4si): Ditto. > * config/aarch64/iterators.md (sm3tt_op): New int iterator. > (sm3part_op): Ditto. > (CRYPTO_SM3TT): Ditto. > (CRYPTO_SM3PART): Ditto. > (UNSPEC_SM3SS1): New unspec. > (UNSPEC_SM3TT1A): Ditto. > (UNSPEC_SM3TT1B): Ditto. > (UNSPEC_SM3TT2A): Ditto. > (UNSPEC_SM3TT2B): Ditto. > (UNSPEC_SM3PARTW1): Ditto. > (UNSPEC_SM3PARTW2): Ditto. > (UNSPEC_SM4E): Ditto. > (UNSPEC_SM4EKEY): Ditto. > * config/aarch64/constraints.md (Ui2): New constraint. > * config/aarch64/predicates.md (aarch64_imm2): New predicate. > * config/arm/types.md (crypto_sm3): New type attribute. > (crypto_sm4): Ditto. > * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic. > (vsm3tt1aq_u32): Ditto. > (vsm3tt1bq_u32): Ditto. > (vsm3tt2aq_u32): Ditto. > (vsm3tt2bq_u32): Ditto. > (vsm3partw1q_u32): Ditto. > (vsm3partw2q_u32): Ditto. > (vsm4eq_u32): Ditto. > (vsm4ekeyq_u32): Ditto. > (doc/invoke.texi): Document new sm4 option. > gcc.target/aarch64/sm3_sm4.c: New testcase.