From dd63d6d932894047f3f9f8534fe16619ceed8ff4 Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Wed, 9 May 2018 11:52:05 +0100 Subject: arch-arm: AArch64 Crypto AES This patch implements the AArch64 AES instructions from the Crypto extension. Change-Id: I9143041ec7e1c6a50dcad3f72d7d1b55d6f2d402 Signed-off-by: Giacomo Travaglini Reviewed-by: Andreas Sandberg Reviewed-on: https://gem5-review.googlesource.com/c/13250 Maintainer: Andreas Sandberg --- src/arch/arm/isa/insts/crypto64.isa | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/arch/arm/isa/insts') diff --git a/src/arch/arm/isa/insts/crypto64.isa b/src/arch/arm/isa/insts/crypto64.isa index 1af9263fd..64beaf33d 100644 --- a/src/arch/arm/isa/insts/crypto64.isa +++ b/src/arch/arm/isa/insts/crypto64.isa @@ -120,6 +120,11 @@ let {{ decoder_output += RegRegOpConstructor.subst(cryptoiop) exec_output += CryptoPredOpExecute.subst(cryptoiop) + aeseCode = "crypto.aesEncrypt(output, input, input2);" + aesdCode = "crypto.aesDecrypt(output, input, input2);" + aesmcCode = "crypto.aesMixColumns(output, input);" + aesimcCode = "crypto.aesInvMixColumns(output, input);" + sha1_cCode = "crypto.sha1C(output, input, input2);" sha1_pCode = "crypto.sha1P(output, input, input2);" sha1_mCode = "crypto.sha1M(output, input, input2);" @@ -132,6 +137,16 @@ let {{ sha256_su0Code = "crypto.sha256Su0(output, input);" sha256_su1Code = "crypto.sha256Su1(output, input, input2);" + aes_enabled = cryptoEnabledCheckCode % { "mask" : 0xF0 } + cryptoRegRegRegInst("aese", "AESE64", "SimdAesOp", + aes_enabled, aeseCode) + cryptoRegRegRegInst("aesd", "AESD64", "SimdAesOp", + aes_enabled, aesdCode) + cryptoRegRegInst("aesmc", "AESMC64", "SimdAesMixOp", + aes_enabled, aesmcCode) + cryptoRegRegInst("aesimc", "AESIMC64", "SimdAesMixOp", + aes_enabled, aesimcCode) + sha1_enabled = cryptoEnabledCheckCode % { "mask" : 0xF00 } cryptoRegRegRegInst("sha1c", "SHA1C64", "SimdSha1HashOp", sha1_enabled, sha1_cCode) -- cgit v1.2.3