xref: /freebsd/sys/crypto/openssl/amd64/x86_64-gf2m.S (revision e0c4386e)
1/* Do not modify. This file is auto-generated from x86_64-gf2m.pl. */
2.text
3
4.type	_mul_1x1,@function
5.align	16
6_mul_1x1:
7.cfi_startproc
8	subq	$128+8,%rsp
9.cfi_adjust_cfa_offset	128+8
10	movq	$-1,%r9
11	leaq	(%rax,%rax,1),%rsi
12	shrq	$3,%r9
13	leaq	(,%rax,4),%rdi
14	andq	%rax,%r9
15	leaq	(,%rax,8),%r12
16	sarq	$63,%rax
17	leaq	(%r9,%r9,1),%r10
18	sarq	$63,%rsi
19	leaq	(,%r9,4),%r11
20	andq	%rbp,%rax
21	sarq	$63,%rdi
22	movq	%rax,%rdx
23	shlq	$63,%rax
24	andq	%rbp,%rsi
25	shrq	$1,%rdx
26	movq	%rsi,%rcx
27	shlq	$62,%rsi
28	andq	%rbp,%rdi
29	shrq	$2,%rcx
30	xorq	%rsi,%rax
31	movq	%rdi,%rbx
32	shlq	$61,%rdi
33	xorq	%rcx,%rdx
34	shrq	$3,%rbx
35	xorq	%rdi,%rax
36	xorq	%rbx,%rdx
37
38	movq	%r9,%r13
39	movq	$0,0(%rsp)
40	xorq	%r10,%r13
41	movq	%r9,8(%rsp)
42	movq	%r11,%r14
43	movq	%r10,16(%rsp)
44	xorq	%r12,%r14
45	movq	%r13,24(%rsp)
46
47	xorq	%r11,%r9
48	movq	%r11,32(%rsp)
49	xorq	%r11,%r10
50	movq	%r9,40(%rsp)
51	xorq	%r11,%r13
52	movq	%r10,48(%rsp)
53	xorq	%r14,%r9
54	movq	%r13,56(%rsp)
55	xorq	%r14,%r10
56
57	movq	%r12,64(%rsp)
58	xorq	%r14,%r13
59	movq	%r9,72(%rsp)
60	xorq	%r11,%r9
61	movq	%r10,80(%rsp)
62	xorq	%r11,%r10
63	movq	%r13,88(%rsp)
64
65	xorq	%r11,%r13
66	movq	%r14,96(%rsp)
67	movq	%r8,%rsi
68	movq	%r9,104(%rsp)
69	andq	%rbp,%rsi
70	movq	%r10,112(%rsp)
71	shrq	$4,%rbp
72	movq	%r13,120(%rsp)
73	movq	%r8,%rdi
74	andq	%rbp,%rdi
75	shrq	$4,%rbp
76
77	movq	(%rsp,%rsi,8),%xmm0
78	movq	%r8,%rsi
79	andq	%rbp,%rsi
80	shrq	$4,%rbp
81	movq	(%rsp,%rdi,8),%rcx
82	movq	%r8,%rdi
83	movq	%rcx,%rbx
84	shlq	$4,%rcx
85	andq	%rbp,%rdi
86	movq	(%rsp,%rsi,8),%xmm1
87	shrq	$60,%rbx
88	xorq	%rcx,%rax
89	pslldq	$1,%xmm1
90	movq	%r8,%rsi
91	shrq	$4,%rbp
92	xorq	%rbx,%rdx
93	andq	%rbp,%rsi
94	shrq	$4,%rbp
95	pxor	%xmm1,%xmm0
96	movq	(%rsp,%rdi,8),%rcx
97	movq	%r8,%rdi
98	movq	%rcx,%rbx
99	shlq	$12,%rcx
100	andq	%rbp,%rdi
101	movq	(%rsp,%rsi,8),%xmm1
102	shrq	$52,%rbx
103	xorq	%rcx,%rax
104	pslldq	$2,%xmm1
105	movq	%r8,%rsi
106	shrq	$4,%rbp
107	xorq	%rbx,%rdx
108	andq	%rbp,%rsi
109	shrq	$4,%rbp
110	pxor	%xmm1,%xmm0
111	movq	(%rsp,%rdi,8),%rcx
112	movq	%r8,%rdi
113	movq	%rcx,%rbx
114	shlq	$20,%rcx
115	andq	%rbp,%rdi
116	movq	(%rsp,%rsi,8),%xmm1
117	shrq	$44,%rbx
118	xorq	%rcx,%rax
119	pslldq	$3,%xmm1
120	movq	%r8,%rsi
121	shrq	$4,%rbp
122	xorq	%rbx,%rdx
123	andq	%rbp,%rsi
124	shrq	$4,%rbp
125	pxor	%xmm1,%xmm0
126	movq	(%rsp,%rdi,8),%rcx
127	movq	%r8,%rdi
128	movq	%rcx,%rbx
129	shlq	$28,%rcx
130	andq	%rbp,%rdi
131	movq	(%rsp,%rsi,8),%xmm1
132	shrq	$36,%rbx
133	xorq	%rcx,%rax
134	pslldq	$4,%xmm1
135	movq	%r8,%rsi
136	shrq	$4,%rbp
137	xorq	%rbx,%rdx
138	andq	%rbp,%rsi
139	shrq	$4,%rbp
140	pxor	%xmm1,%xmm0
141	movq	(%rsp,%rdi,8),%rcx
142	movq	%r8,%rdi
143	movq	%rcx,%rbx
144	shlq	$36,%rcx
145	andq	%rbp,%rdi
146	movq	(%rsp,%rsi,8),%xmm1
147	shrq	$28,%rbx
148	xorq	%rcx,%rax
149	pslldq	$5,%xmm1
150	movq	%r8,%rsi
151	shrq	$4,%rbp
152	xorq	%rbx,%rdx
153	andq	%rbp,%rsi
154	shrq	$4,%rbp
155	pxor	%xmm1,%xmm0
156	movq	(%rsp,%rdi,8),%rcx
157	movq	%r8,%rdi
158	movq	%rcx,%rbx
159	shlq	$44,%rcx
160	andq	%rbp,%rdi
161	movq	(%rsp,%rsi,8),%xmm1
162	shrq	$20,%rbx
163	xorq	%rcx,%rax
164	pslldq	$6,%xmm1
165	movq	%r8,%rsi
166	shrq	$4,%rbp
167	xorq	%rbx,%rdx
168	andq	%rbp,%rsi
169	shrq	$4,%rbp
170	pxor	%xmm1,%xmm0
171	movq	(%rsp,%rdi,8),%rcx
172	movq	%r8,%rdi
173	movq	%rcx,%rbx
174	shlq	$52,%rcx
175	andq	%rbp,%rdi
176	movq	(%rsp,%rsi,8),%xmm1
177	shrq	$12,%rbx
178	xorq	%rcx,%rax
179	pslldq	$7,%xmm1
180	movq	%r8,%rsi
181	shrq	$4,%rbp
182	xorq	%rbx,%rdx
183	andq	%rbp,%rsi
184	shrq	$4,%rbp
185	pxor	%xmm1,%xmm0
186	movq	(%rsp,%rdi,8),%rcx
187	movq	%rcx,%rbx
188	shlq	$60,%rcx
189.byte	102,72,15,126,198
190	shrq	$4,%rbx
191	xorq	%rcx,%rax
192	psrldq	$8,%xmm0
193	xorq	%rbx,%rdx
194.byte	102,72,15,126,199
195	xorq	%rsi,%rax
196	xorq	%rdi,%rdx
197
198	addq	$128+8,%rsp
199.cfi_adjust_cfa_offset	-128-8
200	.byte	0xf3,0xc3
201.Lend_mul_1x1:
202.cfi_endproc
203.size	_mul_1x1,.-_mul_1x1
204
205.globl	bn_GF2m_mul_2x2
206.type	bn_GF2m_mul_2x2,@function
207.align	16
208bn_GF2m_mul_2x2:
209.cfi_startproc
210	movq	%rsp,%rax
211	movq	OPENSSL_ia32cap_P(%rip),%r10
212	btq	$33,%r10
213	jnc	.Lvanilla_mul_2x2
214
215.byte	102,72,15,110,198
216.byte	102,72,15,110,201
217.byte	102,72,15,110,210
218.byte	102,73,15,110,216
219	movdqa	%xmm0,%xmm4
220	movdqa	%xmm1,%xmm5
221.byte	102,15,58,68,193,0
222	pxor	%xmm2,%xmm4
223	pxor	%xmm3,%xmm5
224.byte	102,15,58,68,211,0
225.byte	102,15,58,68,229,0
226	xorps	%xmm0,%xmm4
227	xorps	%xmm2,%xmm4
228	movdqa	%xmm4,%xmm5
229	pslldq	$8,%xmm4
230	psrldq	$8,%xmm5
231	pxor	%xmm4,%xmm2
232	pxor	%xmm5,%xmm0
233	movdqu	%xmm2,0(%rdi)
234	movdqu	%xmm0,16(%rdi)
235	.byte	0xf3,0xc3
236
237.align	16
238.Lvanilla_mul_2x2:
239	leaq	-136(%rsp),%rsp
240.cfi_adjust_cfa_offset	8*17
241	movq	%r14,80(%rsp)
242.cfi_rel_offset	%r14,8*10
243	movq	%r13,88(%rsp)
244.cfi_rel_offset	%r13,8*11
245	movq	%r12,96(%rsp)
246.cfi_rel_offset	%r12,8*12
247	movq	%rbp,104(%rsp)
248.cfi_rel_offset	%rbp,8*13
249	movq	%rbx,112(%rsp)
250.cfi_rel_offset	%rbx,8*14
251.Lbody_mul_2x2:
252	movq	%rdi,32(%rsp)
253	movq	%rsi,40(%rsp)
254	movq	%rdx,48(%rsp)
255	movq	%rcx,56(%rsp)
256	movq	%r8,64(%rsp)
257
258	movq	$0xf,%r8
259	movq	%rsi,%rax
260	movq	%rcx,%rbp
261	call	_mul_1x1
262	movq	%rax,16(%rsp)
263	movq	%rdx,24(%rsp)
264
265	movq	48(%rsp),%rax
266	movq	64(%rsp),%rbp
267	call	_mul_1x1
268	movq	%rax,0(%rsp)
269	movq	%rdx,8(%rsp)
270
271	movq	40(%rsp),%rax
272	movq	56(%rsp),%rbp
273	xorq	48(%rsp),%rax
274	xorq	64(%rsp),%rbp
275	call	_mul_1x1
276	movq	0(%rsp),%rbx
277	movq	8(%rsp),%rcx
278	movq	16(%rsp),%rdi
279	movq	24(%rsp),%rsi
280	movq	32(%rsp),%rbp
281
282	xorq	%rdx,%rax
283	xorq	%rcx,%rdx
284	xorq	%rbx,%rax
285	movq	%rbx,0(%rbp)
286	xorq	%rdi,%rdx
287	movq	%rsi,24(%rbp)
288	xorq	%rsi,%rax
289	xorq	%rsi,%rdx
290	xorq	%rdx,%rax
291	movq	%rdx,16(%rbp)
292	movq	%rax,8(%rbp)
293
294	movq	80(%rsp),%r14
295.cfi_restore	%r14
296	movq	88(%rsp),%r13
297.cfi_restore	%r13
298	movq	96(%rsp),%r12
299.cfi_restore	%r12
300	movq	104(%rsp),%rbp
301.cfi_restore	%rbp
302	movq	112(%rsp),%rbx
303.cfi_restore	%rbx
304	leaq	136(%rsp),%rsp
305.cfi_adjust_cfa_offset	-8*17
306.Lepilogue_mul_2x2:
307	.byte	0xf3,0xc3
308.Lend_mul_2x2:
309.cfi_endproc
310.size	bn_GF2m_mul_2x2,.-bn_GF2m_mul_2x2
311.byte	71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
312.align	16
313	.section ".note.gnu.property", "a"
314	.p2align 3
315	.long 1f - 0f
316	.long 4f - 1f
317	.long 5
3180:
319	# "GNU" encoded with .byte, since .asciz isn't supported
320	# on Solaris.
321	.byte 0x47
322	.byte 0x4e
323	.byte 0x55
324	.byte 0
3251:
326	.p2align 3
327	.long 0xc0000002
328	.long 3f - 2f
3292:
330	.long 3
3313:
332	.p2align 3
3334:
334