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