Lines Matching +full:1 +full:- +full:v0
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * linux/arch/arm64/crypto/aes-modes.S - chaining mode wrappers for AES
5 * Copyright (C) 2013 - 2017 Linaro Ltd <ard.biesheuvel@linaro.org>
8 /* included by aes-ce.S and aes-neon.S */
26 encrypt_block4x v0, v1, v2, v3, w3, x2, x8, w7
31 decrypt_block4x v0, v1, v2, v3, w3, x2, x8, w7
37 encrypt_block5x v0, v1, v2, v3, v4, w3, x2, x8, w7
42 decrypt_block5x v0, v1, v2, v3, v4, w3, x2, x8, w7
55 stp x29, x30, [sp, #-16]!
63 ld1 {v0.16b-v3.16b}, [x1], #64 /* get 4 pt blocks */
67 st1 {v0.16b-v3.16b}, [x0], #64
74 ld1 {v0.16b}, [x1], #16 /* get next pt block */
75 encrypt_block v0, w3, x2, x5, w6
76 st1 {v0.16b}, [x0], #16
77 subs w4, w4, #1
86 stp x29, x30, [sp, #-16]!
94 ld1 {v0.16b-v3.16b}, [x1], #64 /* get 4 ct blocks */
98 st1 {v0.16b-v3.16b}, [x0], #64
105 ld1 {v0.16b}, [x1], #16 /* get next ct block */
106 decrypt_block v0, w3, x2, x5, w6
107 st1 {v0.16b}, [x0], #16
108 subs w4, w4, #1
132 mov w8, #14 /* AES-256: 14 rounds */
145 ld1 {v0.16b-v3.16b}, [x1], #64 /* get 4 pt blocks */
146 eor v0.16b, v0.16b, v4.16b /* ..and xor with iv */
147 encrypt_block v0, w3, x2, x6, w7
148 eor v1.16b, v1.16b, v0.16b
154 st1 {v0.16b-v3.16b}, [x0], #64
161 ld1 {v0.16b}, [x1], #16 /* get next pt block */
162 eor v4.16b, v4.16b, v0.16b /* ..and xor with iv */
165 subs w4, w4, #1
174 stp x29, x30, [sp, #-16]!
179 mov w8, #14 /* AES-256: 14 rounds */
185 stp x29, x30, [sp, #-16]!
195 ld1 {v0.16b-v3.16b}, [x1], #64 /* get 4 ct blocks */
197 ld1 {v4.16b}, [x1], #16 /* get 1 ct block */
198 mov v5.16b, v0.16b
203 eor v0.16b, v0.16b, cbciv.16b
205 ld1 {v5.16b}, [x1], #16 /* reload 1 ct block */
206 ld1 {cbciv.16b}, [x1], #16 /* reload 1 ct block */
211 mov v4.16b, v0.16b
216 eor v0.16b, v0.16b, cbciv.16b
218 ld1 {cbciv.16b}, [x1], #16 /* reload 1 ct block */
222 st1 {v0.16b-v3.16b}, [x0], #64
230 mov v0.16b, v1.16b /* ...and copy to v0 */
231 decrypt_block v0, w3, x2, x6, w7
232 eor v0.16b, v0.16b, cbciv.16b /* xor with iv => pt */
234 st1 {v0.16b}, [x0], #16
235 subs w4, w4, #1
261 ld1 {v0.16b}, [x1], x4 /* overlapping loads */
267 eor v0.16b, v0.16b, v5.16b /* xor with iv */
269 encrypt_block v0, w3, x2, x6, w7
271 eor v1.16b, v1.16b, v0.16b
272 tbl v0.16b, {v0.16b}, v3.16b
276 st1 {v0.16b}, [x4] /* overlapping stores */
290 ld1 {v0.16b}, [x1], x4 /* overlapping loads */
296 decrypt_block v0, w3, x2, x6, w7
297 tbl v2.16b, {v0.16b}, v3.16b
300 tbx v0.16b, {v1.16b}, v4.16b
301 decrypt_block v0, w3, x2, x6, w7
302 eor v0.16b, v0.16b, v5.16b /* xor with iv */
306 st1 {v0.16b}, [x0]
328 stp x29, x30, [sp, #-16]!
334 umov x6, vctr.d[1] /* keep swabbed ctr in reg */
341 add w7, w6, #1
342 mov v0.16b, vctr.16b
359 ld1 {v5.16b-v7.16b}, [x1], #48 /* get 3 input blocks */
362 eor v0.16b, v5.16b, v0.16b
365 ST5( ld1 {v5.16b-v6.16b}, [x1], #32 )
369 st1 {v0.16b-v3.16b}, [x0], #64
373 ins vctr.d[1], x7
380 mov v0.16b, vctr.16b
381 encrypt_block v0, w3, x2, x8, w7
383 adds x6, x6, #1 /* increment BE ctr */
385 ins vctr.d[1], x7
389 subs w4, w4, #1
392 eor v3.16b, v0.16b, v3.16b
402 st1 {v0.16b}, [x0]
408 add x7, x7, #1
437 stp x29, x30, [sp, #-16]!
457 ld1 {v0.16b-v3.16b}, [x1], #64 /* get 4 pt blocks */
459 eor v0.16b, v0.16b, v4.16b
467 eor v0.16b, v0.16b, v4.16b
470 st1 {v0.16b-v3.16b}, [x0], #64
481 ld1 {v0.16b}, [x1], #16
483 eor v0.16b, v0.16b, v4.16b
484 encrypt_block v0, w3, x2, x8, w7
485 eor v0.16b, v0.16b, v4.16b
490 st1 {v0.16b}, [x0], #16
493 st1 {v0.16b}, [x0]
500 mov v0.16b, v3.16b
516 tbl v2.16b, {v0.16b}, v2.16b
517 tbx v0.16b, {v1.16b}, v3.16b
524 stp x29, x30, [sp, #-16]!
550 ld1 {v0.16b-v3.16b}, [x1], #64 /* get 4 ct blocks */
552 eor v0.16b, v0.16b, v4.16b
560 eor v0.16b, v0.16b, v4.16b
563 st1 {v0.16b-v3.16b}, [x0], #64
573 ld1 {v0.16b}, [x1], #16
576 eor v0.16b, v0.16b, v4.16b
577 decrypt_block v0, w3, x2, x8, w7
578 eor v0.16b, v0.16b, v4.16b
579 st1 {v0.16b}, [x0], #16
605 eor v0.16b, v0.16b, v5.16b
606 decrypt_block v0, w3, x2, x8, w7
607 eor v0.16b, v0.16b, v5.16b
609 tbl v2.16b, {v0.16b}, v2.16b
610 tbx v0.16b, {v1.16b}, v3.16b
631 ld1 {v0.16b}, [x23] /* get dg */
635 encrypt_block v0, w2, x1, x7, w8
640 ld1 {v1.16b-v4.16b}, [x19], #64 /* get next pt block */
641 eor v0.16b, v0.16b, v1.16b /* ..and xor with dg */
642 encrypt_block v0, w21, x20, x7, w8
643 eor v0.16b, v0.16b, v2.16b
644 encrypt_block v0, w21, x20, x7, w8
645 eor v0.16b, v0.16b, v3.16b
646 encrypt_block v0, w21, x20, x7, w8
647 eor v0.16b, v0.16b, v4.16b
651 encrypt_block v0, w21, x20, x7, w8
652 st1 {v0.16b}, [x23] /* return dg */
660 eor v0.16b, v0.16b, v1.16b /* ..and xor with dg */
662 subs w22, w22, #1
667 encrypt_block v0, w21, x20, x7, w8
671 st1 {v0.16b}, [x23] /* return dg */
676 ld1 {v0.16b}, [x23] /* get dg */