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