target/ppc: Use aesenc_SB_SR_AK
This implements the VCIPHERLAST instruction. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
57357322e4
commit
7df34e4853
@ -25,6 +25,7 @@
|
||||
#include "qemu/log.h"
|
||||
#include "exec/helper-proto.h"
|
||||
#include "crypto/aes.h"
|
||||
#include "crypto/aes-round.h"
|
||||
#include "fpu/softfloat.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qemu/guest-random.h"
|
||||
@ -2947,13 +2948,7 @@ void helper_vcipher(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b)
|
||||
|
||||
void helper_vcipherlast(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b)
|
||||
{
|
||||
ppc_avr_t result;
|
||||
int i;
|
||||
|
||||
VECTOR_FOR_INORDER_I(i, u8) {
|
||||
result.VsrB(i) = b->VsrB(i) ^ (AES_sbox[a->VsrB(AES_shifts[i])]);
|
||||
}
|
||||
*r = result;
|
||||
aesenc_SB_SR_AK((AESState *)r, (AESState *)a, (AESState *)b, true);
|
||||
}
|
||||
|
||||
void helper_vncipher(ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b)
|
||||
|
Loading…
Reference in New Issue
Block a user