Lines Matching +full:1 +full:- +full:v0
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * aesce-ccm-core.S - AES-CCM transform for ARMv8 with Crypto Extensions
5 * Copyright (C) 2013 - 2017 Linaro Ltd <ard.biesheuvel@linaro.org>
12 .arch armv8-a+crypto
19 ld1 {v0.16b}, [x0] /* load mac */
20 cbz w3, 1f
23 0: ldrb w7, [x1], #1 /* get 1 byte of input */
24 subs w2, w2, #1
25 add w3, w3, #1
27 ext v1.16b, v1.16b, v1.16b, #1 /* rotate in the input bytes */
30 eor v0.16b, v0.16b, v1.16b
31 1: ld1 {v3.4s}, [x4] /* load first round key */
42 3: aese v0.16b, v4.16b
43 aesmc v0.16b, v0.16b
45 aese v0.16b, v5.16b
46 aesmc v0.16b, v0.16b
49 aese v0.16b, v3.16b
50 aesmc v0.16b, v0.16b
53 aese v0.16b, v4.16b
55 eor v0.16b, v0.16b, v5.16b /* final round */
58 eor v0.16b, v0.16b, v1.16b /* xor with mac */
59 bne 1b
60 6: st1 {v0.16b}, [x0] /* store mac */
65 7: ldrb w7, [x1], #1
66 umov w6, v0.b[0]
68 strb w6, [x0], #1
69 subs w2, w2, #1
71 ext v0.16b, v0.16b, v0.16b, #1 /* rotate out the mac bytes */
76 9: ext v1.16b, v1.16b, v1.16b, #1
77 adds w7, w7, #1
79 91: eor v0.16b, v0.16b, v1.16b
80 st1 {v0.16b}, [x0]
91 ld1 {v0.16b}, [x0] /* load mac */
94 ld1 {v1.16b}, [x1] /* load 1st ctriv */
100 1: ld1 {v5.4s}, [x2], #16 /* load next round key */
101 aese v0.16b, v4.16b
102 aesmc v0.16b, v0.16b
106 aese v0.16b, v5.16b
107 aesmc v0.16b, v0.16b
112 aese v0.16b, v3.16b
113 aesmc v0.16b, v0.16b
116 bpl 1b
117 aese v0.16b, v4.16b
120 eor v0.16b, v0.16b, v1.16b /* en-/decrypt the mac */
121 st1 {v0.16b}, [x0] /* store result */
128 ld1 {v0.16b}, [x5] /* load mac */
133 add x8, x8, #1
137 ins v1.d[1], x9 /* no carry in lower ctr */
140 bmi 1f
144 1: mov v4.16b, v3.16b
147 aese v0.16b, v4.16b
148 aesmc v0.16b, v0.16b
152 aese v0.16b, v5.16b
153 aesmc v0.16b, v0.16b
158 aese v0.16b, v3.16b
159 aesmc v0.16b, v0.16b
164 aese v0.16b, v4.16b
169 .if \enc == 1
176 eor v0.16b, v0.16b, v2.16b /* xor mac with pt ^ rk[last] */
180 st1 {v0.16b}, [x5] /* store mac */
184 6: eor v0.16b, v0.16b, v5.16b /* final round mac */
186 st1 {v0.16b}, [x5] /* store mac */
188 7: ldrb w9, [x1], #1 /* get 1 byte of input */
190 umov w7, v0.b[0] /* get top mac byte */
191 .if \enc == 1
198 strb w9, [x0], #1 /* store out byte */
199 strb w7, [x5], #1 /* store mac byte */
200 subs w2, w2, #1
202 ext v0.16b, v0.16b, v0.16b, #1 /* shift out mac byte */
203 ext v1.16b, v1.16b, v1.16b, #1 /* shift out ctr byte */
216 aes_ccm_do_crypt 1