[PATCH 3/5][AArch64] Crypto SM4 Support

James Greenhalgh james.greenhalgh@arm.com
Tue Jan 9 17:57:00 GMT 2018


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.collison@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.




More information about the Gcc-patches mailing list