Lines Matching +full:v1 +full:- +full:v6
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
5 * https://tools.ietf.org/id/draft-ribose-cfrg-sm4-10.html
13 #include "sm4-ce-asm.h"
15 .arch armv8-a+crypto
45 * x0: 128-bit key
53 ld1 {v1.16b}, [x3];
55 ld1 {v24.16b-v27.16b}, [x4], #64;
56 ld1 {v28.16b-v31.16b}, [x4];
59 eor v0.16b, v0.16b, v1.16b;
62 sm4ekey v1.4s, v0.4s, v25.4s;
63 sm4ekey v2.4s, v1.4s, v26.4s;
67 sm4ekey v6.4s, v5.4s, v30.4s;
68 sm4ekey v7.4s, v6.4s, v31.4s;
73 st1 {v0.16b-v3.16b}, [x1], #64;
74 st1 {v4.16b-v7.16b}, [x1];
77 tbl v17.16b, {v6.16b}, v24.16b
82 tbl v22.16b, {v1.16b}, v24.16b
85 st1 {v16.16b-v19.16b}, [x2], #64
86 st1 {v20.16b-v23.16b}, [x2]
121 ld1 {v0.16b-v3.16b}, [x2], #64;
122 ld1 {v4.16b-v7.16b}, [x2], #64;
124 SM4_CRYPT_BLK8(v0, v1, v2, v3, v4, v5, v6, v7);
126 st1 {v0.16b-v3.16b}, [x1], #64;
127 st1 {v4.16b-v7.16b}, [x1], #64;
139 ld1 {v0.16b-v3.16b}, [x2], #64;
140 SM4_CRYPT_BLK4(v0, v1, v2, v3);
141 st1 {v0.16b-v3.16b}, [x1], #64;
177 ld1 {v0.16b-v3.16b}, [x2], #64
181 eor v1.16b, v1.16b, v0.16b
182 SM4_CRYPT_BLK(v1)
183 eor v2.16b, v2.16b, v1.16b
188 st1 {v0.16b-v3.16b}, [x1], #64
230 ld1 {v0.16b-v3.16b}, [x2], #64
231 ld1 {v4.16b-v7.16b}, [x2], #64
234 rev32 v9.16b, v1.16b
239 rev32 v14.16b, v6.16b
246 eor v10.16b, v10.16b, v1.16b
251 eor v15.16b, v15.16b, v6.16b
253 st1 {v8.16b-v11.16b}, [x1], #64
254 st1 {v12.16b-v15.16b}, [x1], #64
268 ld1 {v0.16b-v3.16b}, [x2], #64
271 rev32 v9.16b, v1.16b
279 eor v10.16b, v10.16b, v1.16b
282 st1 {v8.16b-v11.16b}, [x1], #64
341 ld1 {v1.16b}, [x2]
343 /* create Cn from En-1 */
346 tbl v1.16b, {v1.16b}, v4.16b
348 eor v1.16b, v1.16b, RIV.16b
349 SM4_CRYPT_BLK(v1)
354 st1 {v1.16b}, [x1]
385 ld1 {v1.16b}, [x2]
390 eor v2.16b, v2.16b, v1.16b
392 /* overwrite the first Ln bytes with Cn to create En-1 */
393 tbx v0.16b, {v1.16b}, v4.16b
433 inc_le128(v1) /* +1 */
438 inc_le128(v6) /* +6 */
441 ld1 {v8.16b-v11.16b}, [x2], #64
442 ld1 {v12.16b-v15.16b}, [x2], #64
444 SM4_CRYPT_BLK8(v0, v1, v2, v3, v4, v5, v6, v7)
447 eor v1.16b, v1.16b, v9.16b
452 eor v6.16b, v6.16b, v14.16b
455 st1 {v0.16b-v3.16b}, [x1], #64
456 st1 {v4.16b-v7.16b}, [x1], #64
470 inc_le128(v1) /* +1 */
474 ld1 {v8.16b-v11.16b}, [x2], #64
476 SM4_CRYPT_BLK4(v0, v1, v2, v3)
479 eor v1.16b, v1.16b, v9.16b
483 st1 {v0.16b-v3.16b}, [x1], #64
565 ld1 {v0.16b-v3.16b}, [x2], #64
566 ld1 {v4.16b-v7.16b}, [x2], #64
568 eor v1.16b, v1.16b, v9.16b
573 eor v6.16b, v6.16b, v14.16b
576 SM4_CRYPT_BLK8(v0, v1, v2, v3, v4, v5, v6, v7)
579 eor v1.16b, v1.16b, v9.16b
584 eor v6.16b, v6.16b, v14.16b
586 st1 {v0.16b-v3.16b}, [x1], #64
587 st1 {v4.16b-v7.16b}, [x1], #64
605 ld1 {v0.16b-v3.16b}, [x2], #64
607 eor v1.16b, v1.16b, v9.16b
611 SM4_CRYPT_BLK4(v0, v1, v2, v3)
614 eor v1.16b, v1.16b, v9.16b
617 st1 {v0.16b-v3.16b}, [x1], #64
659 ld1 {v1.16b}, [x2]
661 /* create Cn from En-1 */
663 /* padding Pn with En-1 at the end */
664 tbx v0.16b, {v1.16b}, v4.16b
732 ld1 {v0.16b-v3.16b}, [x2], #64
733 ld1 {v4.16b-v7.16b}, [x2], #64
735 eor v1.16b, v1.16b, v9.16b
740 eor v6.16b, v6.16b, v14.16b
743 SM4_CRYPT_BLK8(v0, v1, v2, v3, v4, v5, v6, v7)
746 eor v1.16b, v1.16b, v9.16b
751 eor v6.16b, v6.16b, v14.16b
753 st1 {v0.16b-v3.16b}, [x1], #64
754 st1 {v4.16b-v7.16b}, [x1], #64
772 ld1 {v0.16b-v3.16b}, [x2], #64
774 eor v1.16b, v1.16b, v9.16b
778 SM4_CRYPT_BLK4(v0, v1, v2, v3)
781 eor v1.16b, v1.16b, v9.16b
784 st1 {v0.16b-v3.16b}, [x1], #64
826 ld1 {v1.16b}, [x2]
828 /* create Cn from En-1 */
830 /* padding Pn with En-1 at the end */
831 tbx v0.16b, {v1.16b}, v4.16b
886 ld1 {v0.16b-v3.16b}, [x2], #64
890 eor RMAC.16b, RMAC.16b, v1.16b