xref: /qemu/tests/tcg/aarch64/test-aes.c (revision 2ff49e96accc8fd9a38e9abd16f0cfa0adab1605)
1*ca1e9c3bSRichard Henderson /* SPDX-License-Identifier: GPL-2.0-or-later */
2*ca1e9c3bSRichard Henderson 
3*ca1e9c3bSRichard Henderson #include "../multiarch/test-aes-main.c.inc"
4*ca1e9c3bSRichard Henderson 
test_SB_SR(uint8_t * o,const uint8_t * i)5*ca1e9c3bSRichard Henderson bool test_SB_SR(uint8_t *o, const uint8_t *i)
6*ca1e9c3bSRichard Henderson {
7*ca1e9c3bSRichard Henderson     /* aese also adds round key, so supply zero. */
8*ca1e9c3bSRichard Henderson     asm("ld1 { v0.16b }, [%1]\n\t"
9*ca1e9c3bSRichard Henderson         "movi v1.16b, #0\n\t"
10*ca1e9c3bSRichard Henderson         "aese v0.16b, v1.16b\n\t"
11*ca1e9c3bSRichard Henderson         "st1 { v0.16b }, [%0]"
12*ca1e9c3bSRichard Henderson         : : "r"(o), "r"(i) : "v0", "v1", "memory");
13*ca1e9c3bSRichard Henderson     return true;
14*ca1e9c3bSRichard Henderson }
15*ca1e9c3bSRichard Henderson 
test_MC(uint8_t * o,const uint8_t * i)16*ca1e9c3bSRichard Henderson bool test_MC(uint8_t *o, const uint8_t *i)
17*ca1e9c3bSRichard Henderson {
18*ca1e9c3bSRichard Henderson     asm("ld1 { v0.16b }, [%1]\n\t"
19*ca1e9c3bSRichard Henderson         "aesmc v0.16b, v0.16b\n\t"
20*ca1e9c3bSRichard Henderson         "st1 { v0.16b }, [%0]"
21*ca1e9c3bSRichard Henderson         : : "r"(o), "r"(i) : "v0", "memory");
22*ca1e9c3bSRichard Henderson     return true;
23*ca1e9c3bSRichard Henderson }
24*ca1e9c3bSRichard Henderson 
test_SB_SR_MC_AK(uint8_t * o,const uint8_t * i,const uint8_t * k)25*ca1e9c3bSRichard Henderson bool test_SB_SR_MC_AK(uint8_t *o, const uint8_t *i, const uint8_t *k)
26*ca1e9c3bSRichard Henderson {
27*ca1e9c3bSRichard Henderson     return false;
28*ca1e9c3bSRichard Henderson }
29*ca1e9c3bSRichard Henderson 
test_ISB_ISR(uint8_t * o,const uint8_t * i)30*ca1e9c3bSRichard Henderson bool test_ISB_ISR(uint8_t *o, const uint8_t *i)
31*ca1e9c3bSRichard Henderson {
32*ca1e9c3bSRichard Henderson     /* aesd also adds round key, so supply zero. */
33*ca1e9c3bSRichard Henderson     asm("ld1 { v0.16b }, [%1]\n\t"
34*ca1e9c3bSRichard Henderson         "movi v1.16b, #0\n\t"
35*ca1e9c3bSRichard Henderson         "aesd v0.16b, v1.16b\n\t"
36*ca1e9c3bSRichard Henderson         "st1 { v0.16b }, [%0]"
37*ca1e9c3bSRichard Henderson         : : "r"(o), "r"(i) : "v0", "v1", "memory");
38*ca1e9c3bSRichard Henderson     return true;
39*ca1e9c3bSRichard Henderson }
40*ca1e9c3bSRichard Henderson 
test_IMC(uint8_t * o,const uint8_t * i)41*ca1e9c3bSRichard Henderson bool test_IMC(uint8_t *o, const uint8_t *i)
42*ca1e9c3bSRichard Henderson {
43*ca1e9c3bSRichard Henderson     asm("ld1 { v0.16b }, [%1]\n\t"
44*ca1e9c3bSRichard Henderson         "aesimc v0.16b, v0.16b\n\t"
45*ca1e9c3bSRichard Henderson         "st1 { v0.16b }, [%0]"
46*ca1e9c3bSRichard Henderson         : : "r"(o), "r"(i) : "v0", "memory");
47*ca1e9c3bSRichard Henderson     return true;
48*ca1e9c3bSRichard Henderson }
49*ca1e9c3bSRichard Henderson 
test_ISB_ISR_AK_IMC(uint8_t * o,const uint8_t * i,const uint8_t * k)50*ca1e9c3bSRichard Henderson bool test_ISB_ISR_AK_IMC(uint8_t *o, const uint8_t *i, const uint8_t *k)
51*ca1e9c3bSRichard Henderson {
52*ca1e9c3bSRichard Henderson     return false;
53*ca1e9c3bSRichard Henderson }
54*ca1e9c3bSRichard Henderson 
test_ISB_ISR_IMC_AK(uint8_t * o,const uint8_t * i,const uint8_t * k)55*ca1e9c3bSRichard Henderson bool test_ISB_ISR_IMC_AK(uint8_t *o, const uint8_t *i, const uint8_t *k)
56*ca1e9c3bSRichard Henderson {
57*ca1e9c3bSRichard Henderson     return false;
58*ca1e9c3bSRichard Henderson }
59