• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; This file is generated from a similarly-named Perl script in the BoringSSL
2; source tree. Do not edit by hand.
3
4%ifdef BORINGSSL_PREFIX
5%include "boringssl_prefix_symbols_nasm.inc"
6%endif
7%ifidn __OUTPUT_FORMAT__,obj
8section	code	use32 class=code align=64
9%elifidn __OUTPUT_FORMAT__,win32
10$@feat.00 equ 1
11section	.text	code align=64
12%else
13section	.text	code
14%endif
15global	_gcm_gmult_ssse3
16align	16
17_gcm_gmult_ssse3:
18L$_gcm_gmult_ssse3_begin:
19	push	ebp
20	push	ebx
21	push	esi
22	push	edi
23	mov	edi,DWORD [20+esp]
24	mov	esi,DWORD [24+esp]
25	movdqu	xmm0,[edi]
26	call	L$000pic_point
27L$000pic_point:
28	pop	eax
29	movdqa	xmm7,[(L$reverse_bytes-L$000pic_point)+eax]
30	movdqa	xmm2,[(L$low4_mask-L$000pic_point)+eax]
31db	102,15,56,0,199
32	movdqa	xmm1,xmm2
33	pandn	xmm1,xmm0
34	psrld	xmm1,4
35	pand	xmm0,xmm2
36	pxor	xmm2,xmm2
37	pxor	xmm3,xmm3
38	mov	eax,5
39L$001loop_row_1:
40	movdqa	xmm4,[esi]
41	lea	esi,[16+esi]
42	movdqa	xmm6,xmm2
43db	102,15,58,15,243,1
44	movdqa	xmm3,xmm6
45	psrldq	xmm2,1
46	movdqa	xmm5,xmm4
47db	102,15,56,0,224
48db	102,15,56,0,233
49	pxor	xmm2,xmm5
50	movdqa	xmm5,xmm4
51	psllq	xmm5,60
52	movdqa	xmm6,xmm5
53	pslldq	xmm6,8
54	pxor	xmm3,xmm6
55	psrldq	xmm5,8
56	pxor	xmm2,xmm5
57	psrlq	xmm4,4
58	pxor	xmm2,xmm4
59	sub	eax,1
60	jnz	NEAR L$001loop_row_1
61	pxor	xmm2,xmm3
62	psrlq	xmm3,1
63	pxor	xmm2,xmm3
64	psrlq	xmm3,1
65	pxor	xmm2,xmm3
66	psrlq	xmm3,5
67	pxor	xmm2,xmm3
68	pxor	xmm3,xmm3
69	mov	eax,5
70L$002loop_row_2:
71	movdqa	xmm4,[esi]
72	lea	esi,[16+esi]
73	movdqa	xmm6,xmm2
74db	102,15,58,15,243,1
75	movdqa	xmm3,xmm6
76	psrldq	xmm2,1
77	movdqa	xmm5,xmm4
78db	102,15,56,0,224
79db	102,15,56,0,233
80	pxor	xmm2,xmm5
81	movdqa	xmm5,xmm4
82	psllq	xmm5,60
83	movdqa	xmm6,xmm5
84	pslldq	xmm6,8
85	pxor	xmm3,xmm6
86	psrldq	xmm5,8
87	pxor	xmm2,xmm5
88	psrlq	xmm4,4
89	pxor	xmm2,xmm4
90	sub	eax,1
91	jnz	NEAR L$002loop_row_2
92	pxor	xmm2,xmm3
93	psrlq	xmm3,1
94	pxor	xmm2,xmm3
95	psrlq	xmm3,1
96	pxor	xmm2,xmm3
97	psrlq	xmm3,5
98	pxor	xmm2,xmm3
99	pxor	xmm3,xmm3
100	mov	eax,6
101L$003loop_row_3:
102	movdqa	xmm4,[esi]
103	lea	esi,[16+esi]
104	movdqa	xmm6,xmm2
105db	102,15,58,15,243,1
106	movdqa	xmm3,xmm6
107	psrldq	xmm2,1
108	movdqa	xmm5,xmm4
109db	102,15,56,0,224
110db	102,15,56,0,233
111	pxor	xmm2,xmm5
112	movdqa	xmm5,xmm4
113	psllq	xmm5,60
114	movdqa	xmm6,xmm5
115	pslldq	xmm6,8
116	pxor	xmm3,xmm6
117	psrldq	xmm5,8
118	pxor	xmm2,xmm5
119	psrlq	xmm4,4
120	pxor	xmm2,xmm4
121	sub	eax,1
122	jnz	NEAR L$003loop_row_3
123	pxor	xmm2,xmm3
124	psrlq	xmm3,1
125	pxor	xmm2,xmm3
126	psrlq	xmm3,1
127	pxor	xmm2,xmm3
128	psrlq	xmm3,5
129	pxor	xmm2,xmm3
130	pxor	xmm3,xmm3
131db	102,15,56,0,215
132	movdqu	[edi],xmm2
133	pxor	xmm0,xmm0
134	pxor	xmm1,xmm1
135	pxor	xmm2,xmm2
136	pxor	xmm3,xmm3
137	pxor	xmm4,xmm4
138	pxor	xmm5,xmm5
139	pxor	xmm6,xmm6
140	pop	edi
141	pop	esi
142	pop	ebx
143	pop	ebp
144	ret
145global	_gcm_ghash_ssse3
146align	16
147_gcm_ghash_ssse3:
148L$_gcm_ghash_ssse3_begin:
149	push	ebp
150	push	ebx
151	push	esi
152	push	edi
153	mov	edi,DWORD [20+esp]
154	mov	esi,DWORD [24+esp]
155	mov	edx,DWORD [28+esp]
156	mov	ecx,DWORD [32+esp]
157	movdqu	xmm0,[edi]
158	call	L$004pic_point
159L$004pic_point:
160	pop	ebx
161	movdqa	xmm7,[(L$reverse_bytes-L$004pic_point)+ebx]
162	and	ecx,-16
163db	102,15,56,0,199
164	pxor	xmm3,xmm3
165L$005loop_ghash:
166	movdqa	xmm2,[(L$low4_mask-L$004pic_point)+ebx]
167	movdqu	xmm1,[edx]
168db	102,15,56,0,207
169	pxor	xmm0,xmm1
170	movdqa	xmm1,xmm2
171	pandn	xmm1,xmm0
172	psrld	xmm1,4
173	pand	xmm0,xmm2
174	pxor	xmm2,xmm2
175	mov	eax,5
176L$006loop_row_4:
177	movdqa	xmm4,[esi]
178	lea	esi,[16+esi]
179	movdqa	xmm6,xmm2
180db	102,15,58,15,243,1
181	movdqa	xmm3,xmm6
182	psrldq	xmm2,1
183	movdqa	xmm5,xmm4
184db	102,15,56,0,224
185db	102,15,56,0,233
186	pxor	xmm2,xmm5
187	movdqa	xmm5,xmm4
188	psllq	xmm5,60
189	movdqa	xmm6,xmm5
190	pslldq	xmm6,8
191	pxor	xmm3,xmm6
192	psrldq	xmm5,8
193	pxor	xmm2,xmm5
194	psrlq	xmm4,4
195	pxor	xmm2,xmm4
196	sub	eax,1
197	jnz	NEAR L$006loop_row_4
198	pxor	xmm2,xmm3
199	psrlq	xmm3,1
200	pxor	xmm2,xmm3
201	psrlq	xmm3,1
202	pxor	xmm2,xmm3
203	psrlq	xmm3,5
204	pxor	xmm2,xmm3
205	pxor	xmm3,xmm3
206	mov	eax,5
207L$007loop_row_5:
208	movdqa	xmm4,[esi]
209	lea	esi,[16+esi]
210	movdqa	xmm6,xmm2
211db	102,15,58,15,243,1
212	movdqa	xmm3,xmm6
213	psrldq	xmm2,1
214	movdqa	xmm5,xmm4
215db	102,15,56,0,224
216db	102,15,56,0,233
217	pxor	xmm2,xmm5
218	movdqa	xmm5,xmm4
219	psllq	xmm5,60
220	movdqa	xmm6,xmm5
221	pslldq	xmm6,8
222	pxor	xmm3,xmm6
223	psrldq	xmm5,8
224	pxor	xmm2,xmm5
225	psrlq	xmm4,4
226	pxor	xmm2,xmm4
227	sub	eax,1
228	jnz	NEAR L$007loop_row_5
229	pxor	xmm2,xmm3
230	psrlq	xmm3,1
231	pxor	xmm2,xmm3
232	psrlq	xmm3,1
233	pxor	xmm2,xmm3
234	psrlq	xmm3,5
235	pxor	xmm2,xmm3
236	pxor	xmm3,xmm3
237	mov	eax,6
238L$008loop_row_6:
239	movdqa	xmm4,[esi]
240	lea	esi,[16+esi]
241	movdqa	xmm6,xmm2
242db	102,15,58,15,243,1
243	movdqa	xmm3,xmm6
244	psrldq	xmm2,1
245	movdqa	xmm5,xmm4
246db	102,15,56,0,224
247db	102,15,56,0,233
248	pxor	xmm2,xmm5
249	movdqa	xmm5,xmm4
250	psllq	xmm5,60
251	movdqa	xmm6,xmm5
252	pslldq	xmm6,8
253	pxor	xmm3,xmm6
254	psrldq	xmm5,8
255	pxor	xmm2,xmm5
256	psrlq	xmm4,4
257	pxor	xmm2,xmm4
258	sub	eax,1
259	jnz	NEAR L$008loop_row_6
260	pxor	xmm2,xmm3
261	psrlq	xmm3,1
262	pxor	xmm2,xmm3
263	psrlq	xmm3,1
264	pxor	xmm2,xmm3
265	psrlq	xmm3,5
266	pxor	xmm2,xmm3
267	pxor	xmm3,xmm3
268	movdqa	xmm0,xmm2
269	lea	esi,[esi-256]
270	lea	edx,[16+edx]
271	sub	ecx,16
272	jnz	NEAR L$005loop_ghash
273db	102,15,56,0,199
274	movdqu	[edi],xmm0
275	pxor	xmm0,xmm0
276	pxor	xmm1,xmm1
277	pxor	xmm2,xmm2
278	pxor	xmm3,xmm3
279	pxor	xmm4,xmm4
280	pxor	xmm5,xmm5
281	pxor	xmm6,xmm6
282	pop	edi
283	pop	esi
284	pop	ebx
285	pop	ebp
286	ret
287align	16
288L$reverse_bytes:
289db	15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
290align	16
291L$low4_mask:
292dd	252645135,252645135,252645135,252645135
293