File Index
Files and directories
Sign in
FILE

sm4-ce-asm.h

File preview with syntax highlighting.

linux-6.19.14/arch/arm64/crypto/sm4-ce-asm.h OBJECTIVE-C
  1/* SPDX-License-Identifier: GPL-2.0-or-later */
  2/*
  3 * SM4 helper macros for Crypto Extensions
  4 * Copyright (C) 2022 Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
  5 */
  6
  7#define SM4_PREPARE(ptr)					\
  8	ld1		{v24.16b-v27.16b}, [ptr], #64;		\
  9	ld1		{v28.16b-v31.16b}, [ptr];
 10
 11#define SM4_CRYPT_BLK_BE(b0)					\
 12	sm4e		b0.4s, v24.4s;				\
 13	sm4e		b0.4s, v25.4s;				\
 14	sm4e		b0.4s, v26.4s;				\
 15	sm4e		b0.4s, v27.4s;				\
 16	sm4e		b0.4s, v28.4s;				\
 17	sm4e		b0.4s, v29.4s;				\
 18	sm4e		b0.4s, v30.4s;				\
 19	sm4e		b0.4s, v31.4s;				\
 20	rev64		b0.4s, b0.4s;				\
 21	ext		b0.16b, b0.16b, b0.16b, #8;		\
 22	rev32		b0.16b, b0.16b;
 23
 24#define SM4_CRYPT_BLK(b0)					\
 25	rev32		b0.16b, b0.16b;				\
 26	SM4_CRYPT_BLK_BE(b0);
 27
 28#define SM4_CRYPT_BLK2_BE(b0, b1)				\
 29	sm4e		b0.4s, v24.4s;				\
 30	sm4e		b1.4s, v24.4s;				\
 31	sm4e		b0.4s, v25.4s;				\
 32	sm4e		b1.4s, v25.4s;				\
 33	sm4e		b0.4s, v26.4s;				\
 34	sm4e		b1.4s, v26.4s;				\
 35	sm4e		b0.4s, v27.4s;				\
 36	sm4e		b1.4s, v27.4s;				\
 37	sm4e		b0.4s, v28.4s;				\
 38	sm4e		b1.4s, v28.4s;				\
 39	sm4e		b0.4s, v29.4s;				\
 40	sm4e		b1.4s, v29.4s;				\
 41	sm4e		b0.4s, v30.4s;				\
 42	sm4e		b1.4s, v30.4s;				\
 43	sm4e		b0.4s, v31.4s;				\
 44	sm4e		b1.4s, v31.4s;				\
 45	rev64		b0.4s, b0.4s;				\
 46	rev64		b1.4s, b1.4s;				\
 47	ext		b0.16b, b0.16b, b0.16b, #8;		\
 48	ext		b1.16b, b1.16b, b1.16b, #8;		\
 49	rev32		b0.16b, b0.16b;				\
 50	rev32		b1.16b, b1.16b;				\
 51
 52#define SM4_CRYPT_BLK2(b0, b1)					\
 53	rev32		b0.16b, b0.16b;				\
 54	rev32		b1.16b, b1.16b;				\
 55	SM4_CRYPT_BLK2_BE(b0, b1);
 56
 57#define SM4_CRYPT_BLK4_BE(b0, b1, b2, b3)			\
 58	sm4e		b0.4s, v24.4s;				\
 59	sm4e		b1.4s, v24.4s;				\
 60	sm4e		b2.4s, v24.4s;				\
 61	sm4e		b3.4s, v24.4s;				\
 62	sm4e		b0.4s, v25.4s;				\
 63	sm4e		b1.4s, v25.4s;				\
 64	sm4e		b2.4s, v25.4s;				\
 65	sm4e		b3.4s, v25.4s;				\
 66	sm4e		b0.4s, v26.4s;				\
 67	sm4e		b1.4s, v26.4s;				\
 68	sm4e		b2.4s, v26.4s;				\
 69	sm4e		b3.4s, v26.4s;				\
 70	sm4e		b0.4s, v27.4s;				\
 71	sm4e		b1.4s, v27.4s;				\
 72	sm4e		b2.4s, v27.4s;				\
 73	sm4e		b3.4s, v27.4s;				\
 74	sm4e		b0.4s, v28.4s;				\
 75	sm4e		b1.4s, v28.4s;				\
 76	sm4e		b2.4s, v28.4s;				\
 77	sm4e		b3.4s, v28.4s;				\
 78	sm4e		b0.4s, v29.4s;				\
 79	sm4e		b1.4s, v29.4s;				\
 80	sm4e		b2.4s, v29.4s;				\
 81	sm4e		b3.4s, v29.4s;				\
 82	sm4e		b0.4s, v30.4s;				\
 83	sm4e		b1.4s, v30.4s;				\
 84	sm4e		b2.4s, v30.4s;				\
 85	sm4e		b3.4s, v30.4s;				\
 86	sm4e		b0.4s, v31.4s;				\
 87	sm4e		b1.4s, v31.4s;				\
 88	sm4e		b2.4s, v31.4s;				\
 89	sm4e		b3.4s, v31.4s;				\
 90	rev64		b0.4s, b0.4s;				\
 91	rev64		b1.4s, b1.4s;				\
 92	rev64		b2.4s, b2.4s;				\
 93	rev64		b3.4s, b3.4s;				\
 94	ext		b0.16b, b0.16b, b0.16b, #8;		\
 95	ext		b1.16b, b1.16b, b1.16b, #8;		\
 96	ext		b2.16b, b2.16b, b2.16b, #8;		\
 97	ext		b3.16b, b3.16b, b3.16b, #8;		\
 98	rev32		b0.16b, b0.16b;				\
 99	rev32		b1.16b, b1.16b;				\
100	rev32		b2.16b, b2.16b;				\
101	rev32		b3.16b, b3.16b;
102
103#define SM4_CRYPT_BLK4(b0, b1, b2, b3)				\
104	rev32		b0.16b, b0.16b;				\
105	rev32		b1.16b, b1.16b;				\
106	rev32		b2.16b, b2.16b;				\
107	rev32		b3.16b, b3.16b;				\
108	SM4_CRYPT_BLK4_BE(b0, b1, b2, b3);
109
110#define SM4_CRYPT_BLK8_BE(b0, b1, b2, b3, b4, b5, b6, b7)	\
111	sm4e		b0.4s, v24.4s;				\
112	sm4e		b1.4s, v24.4s;				\
113	sm4e		b2.4s, v24.4s;				\
114	sm4e		b3.4s, v24.4s;				\
115	sm4e		b4.4s, v24.4s;				\
116	sm4e		b5.4s, v24.4s;				\
117	sm4e		b6.4s, v24.4s;				\
118	sm4e		b7.4s, v24.4s;				\
119	sm4e		b0.4s, v25.4s;				\
120	sm4e		b1.4s, v25.4s;				\
121	sm4e		b2.4s, v25.4s;				\
122	sm4e		b3.4s, v25.4s;				\
123	sm4e		b4.4s, v25.4s;				\
124	sm4e		b5.4s, v25.4s;				\
125	sm4e		b6.4s, v25.4s;				\
126	sm4e		b7.4s, v25.4s;				\
127	sm4e		b0.4s, v26.4s;				\
128	sm4e		b1.4s, v26.4s;				\
129	sm4e		b2.4s, v26.4s;				\
130	sm4e		b3.4s, v26.4s;				\
131	sm4e		b4.4s, v26.4s;				\
132	sm4e		b5.4s, v26.4s;				\
133	sm4e		b6.4s, v26.4s;				\
134	sm4e		b7.4s, v26.4s;				\
135	sm4e		b0.4s, v27.4s;				\
136	sm4e		b1.4s, v27.4s;				\
137	sm4e		b2.4s, v27.4s;				\
138	sm4e		b3.4s, v27.4s;				\
139	sm4e		b4.4s, v27.4s;				\
140	sm4e		b5.4s, v27.4s;				\
141	sm4e		b6.4s, v27.4s;				\
142	sm4e		b7.4s, v27.4s;				\
143	sm4e		b0.4s, v28.4s;				\
144	sm4e		b1.4s, v28.4s;				\
145	sm4e		b2.4s, v28.4s;				\
146	sm4e		b3.4s, v28.4s;				\
147	sm4e		b4.4s, v28.4s;				\
148	sm4e		b5.4s, v28.4s;				\
149	sm4e		b6.4s, v28.4s;				\
150	sm4e		b7.4s, v28.4s;				\
151	sm4e		b0.4s, v29.4s;				\
152	sm4e		b1.4s, v29.4s;				\
153	sm4e		b2.4s, v29.4s;				\
154	sm4e		b3.4s, v29.4s;				\
155	sm4e		b4.4s, v29.4s;				\
156	sm4e		b5.4s, v29.4s;				\
157	sm4e		b6.4s, v29.4s;				\
158	sm4e		b7.4s, v29.4s;				\
159	sm4e		b0.4s, v30.4s;				\
160	sm4e		b1.4s, v30.4s;				\
161	sm4e		b2.4s, v30.4s;				\
162	sm4e		b3.4s, v30.4s;				\
163	sm4e		b4.4s, v30.4s;				\
164	sm4e		b5.4s, v30.4s;				\
165	sm4e		b6.4s, v30.4s;				\
166	sm4e		b7.4s, v30.4s;				\
167	sm4e		b0.4s, v31.4s;				\
168	sm4e		b1.4s, v31.4s;				\
169	sm4e		b2.4s, v31.4s;				\
170	sm4e		b3.4s, v31.4s;				\
171	sm4e		b4.4s, v31.4s;				\
172	sm4e		b5.4s, v31.4s;				\
173	sm4e		b6.4s, v31.4s;				\
174	sm4e		b7.4s, v31.4s;				\
175	rev64		b0.4s, b0.4s;				\
176	rev64		b1.4s, b1.4s;				\
177	rev64		b2.4s, b2.4s;				\
178	rev64		b3.4s, b3.4s;				\
179	rev64		b4.4s, b4.4s;				\
180	rev64		b5.4s, b5.4s;				\
181	rev64		b6.4s, b6.4s;				\
182	rev64		b7.4s, b7.4s;				\
183	ext		b0.16b, b0.16b, b0.16b, #8;		\
184	ext		b1.16b, b1.16b, b1.16b, #8;		\
185	ext		b2.16b, b2.16b, b2.16b, #8;		\
186	ext		b3.16b, b3.16b, b3.16b, #8;		\
187	ext		b4.16b, b4.16b, b4.16b, #8;		\
188	ext		b5.16b, b5.16b, b5.16b, #8;		\
189	ext		b6.16b, b6.16b, b6.16b, #8;		\
190	ext		b7.16b, b7.16b, b7.16b, #8;		\
191	rev32		b0.16b, b0.16b;				\
192	rev32		b1.16b, b1.16b;				\
193	rev32		b2.16b, b2.16b;				\
194	rev32		b3.16b, b3.16b;				\
195	rev32		b4.16b, b4.16b;				\
196	rev32		b5.16b, b5.16b;				\
197	rev32		b6.16b, b6.16b;				\
198	rev32		b7.16b, b7.16b;
199
200#define SM4_CRYPT_BLK8(b0, b1, b2, b3, b4, b5, b6, b7)		\
201	rev32		b0.16b, b0.16b;				\
202	rev32		b1.16b, b1.16b;				\
203	rev32		b2.16b, b2.16b;				\
204	rev32		b3.16b, b3.16b;				\
205	rev32		b4.16b, b4.16b;				\
206	rev32		b5.16b, b5.16b;				\
207	rev32		b6.16b, b6.16b;				\
208	rev32		b7.16b, b7.16b;				\
209	SM4_CRYPT_BLK8_BE(b0, b1, b2, b3, b4, b5, b6, b7);
~/ Read-only file preview.