VirtualBox

source: vbox/trunk/src/libs/openssl-3.0.7/crypto/genasm-nasm/x86-gf2m.S@ 98024

Last change on this file since 98024 was 83531, checked in by vboxsync, 5 years ago

setting svn:sync-process=export for openssl-1.1.1f, all files except tests

File size: 5.3 KB
Line 
1%ifidn __OUTPUT_FORMAT__,obj
2section code use32 class=code align=64
3%elifidn __OUTPUT_FORMAT__,win32
4section .text code align=64
5%else
6section .text code
7%endif
8align 16
9__mul_1x1_mmx:
10 sub esp,36
11 mov ecx,eax
12 lea edx,[eax*1+eax]
13 and ecx,1073741823
14 lea ebp,[edx*1+edx]
15 mov DWORD [esp],0
16 and edx,2147483647
17 movd mm2,eax
18 movd mm3,ebx
19 mov DWORD [4+esp],ecx
20 xor ecx,edx
21 pxor mm5,mm5
22 pxor mm4,mm4
23 mov DWORD [8+esp],edx
24 xor edx,ebp
25 mov DWORD [12+esp],ecx
26 pcmpgtd mm5,mm2
27 paddd mm2,mm2
28 xor ecx,edx
29 mov DWORD [16+esp],ebp
30 xor ebp,edx
31 pand mm5,mm3
32 pcmpgtd mm4,mm2
33 mov DWORD [20+esp],ecx
34 xor ebp,ecx
35 psllq mm5,31
36 pand mm4,mm3
37 mov DWORD [24+esp],edx
38 mov esi,7
39 mov DWORD [28+esp],ebp
40 mov ebp,esi
41 and esi,ebx
42 shr ebx,3
43 mov edi,ebp
44 psllq mm4,30
45 and edi,ebx
46 shr ebx,3
47 movd mm0,DWORD [esi*4+esp]
48 mov esi,ebp
49 and esi,ebx
50 shr ebx,3
51 movd mm2,DWORD [edi*4+esp]
52 mov edi,ebp
53 psllq mm2,3
54 and edi,ebx
55 shr ebx,3
56 pxor mm0,mm2
57 movd mm1,DWORD [esi*4+esp]
58 mov esi,ebp
59 psllq mm1,6
60 and esi,ebx
61 shr ebx,3
62 pxor mm0,mm1
63 movd mm2,DWORD [edi*4+esp]
64 mov edi,ebp
65 psllq mm2,9
66 and edi,ebx
67 shr ebx,3
68 pxor mm0,mm2
69 movd mm1,DWORD [esi*4+esp]
70 mov esi,ebp
71 psllq mm1,12
72 and esi,ebx
73 shr ebx,3
74 pxor mm0,mm1
75 movd mm2,DWORD [edi*4+esp]
76 mov edi,ebp
77 psllq mm2,15
78 and edi,ebx
79 shr ebx,3
80 pxor mm0,mm2
81 movd mm1,DWORD [esi*4+esp]
82 mov esi,ebp
83 psllq mm1,18
84 and esi,ebx
85 shr ebx,3
86 pxor mm0,mm1
87 movd mm2,DWORD [edi*4+esp]
88 mov edi,ebp
89 psllq mm2,21
90 and edi,ebx
91 shr ebx,3
92 pxor mm0,mm2
93 movd mm1,DWORD [esi*4+esp]
94 mov esi,ebp
95 psllq mm1,24
96 and esi,ebx
97 shr ebx,3
98 pxor mm0,mm1
99 movd mm2,DWORD [edi*4+esp]
100 pxor mm0,mm4
101 psllq mm2,27
102 pxor mm0,mm2
103 movd mm1,DWORD [esi*4+esp]
104 pxor mm0,mm5
105 psllq mm1,30
106 add esp,36
107 pxor mm0,mm1
108 ret
109align 16
110__mul_1x1_ialu:
111 sub esp,36
112 mov ecx,eax
113 lea edx,[eax*1+eax]
114 lea ebp,[eax*4]
115 and ecx,1073741823
116 lea edi,[eax*1+eax]
117 sar eax,31
118 mov DWORD [esp],0
119 and edx,2147483647
120 mov DWORD [4+esp],ecx
121 xor ecx,edx
122 mov DWORD [8+esp],edx
123 xor edx,ebp
124 mov DWORD [12+esp],ecx
125 xor ecx,edx
126 mov DWORD [16+esp],ebp
127 xor ebp,edx
128 mov DWORD [20+esp],ecx
129 xor ebp,ecx
130 sar edi,31
131 and eax,ebx
132 mov DWORD [24+esp],edx
133 and edi,ebx
134 mov DWORD [28+esp],ebp
135 mov edx,eax
136 shl eax,31
137 mov ecx,edi
138 shr edx,1
139 mov esi,7
140 shl edi,30
141 and esi,ebx
142 shr ecx,2
143 xor eax,edi
144 shr ebx,3
145 mov edi,7
146 and edi,ebx
147 shr ebx,3
148 xor edx,ecx
149 xor eax,DWORD [esi*4+esp]
150 mov esi,7
151 and esi,ebx
152 shr ebx,3
153 mov ebp,DWORD [edi*4+esp]
154 mov edi,7
155 mov ecx,ebp
156 shl ebp,3
157 and edi,ebx
158 shr ecx,29
159 xor eax,ebp
160 shr ebx,3
161 xor edx,ecx
162 mov ecx,DWORD [esi*4+esp]
163 mov esi,7
164 mov ebp,ecx
165 shl ecx,6
166 and esi,ebx
167 shr ebp,26
168 xor eax,ecx
169 shr ebx,3
170 xor edx,ebp
171 mov ebp,DWORD [edi*4+esp]
172 mov edi,7
173 mov ecx,ebp
174 shl ebp,9
175 and edi,ebx
176 shr ecx,23
177 xor eax,ebp
178 shr ebx,3
179 xor edx,ecx
180 mov ecx,DWORD [esi*4+esp]
181 mov esi,7
182 mov ebp,ecx
183 shl ecx,12
184 and esi,ebx
185 shr ebp,20
186 xor eax,ecx
187 shr ebx,3
188 xor edx,ebp
189 mov ebp,DWORD [edi*4+esp]
190 mov edi,7
191 mov ecx,ebp
192 shl ebp,15
193 and edi,ebx
194 shr ecx,17
195 xor eax,ebp
196 shr ebx,3
197 xor edx,ecx
198 mov ecx,DWORD [esi*4+esp]
199 mov esi,7
200 mov ebp,ecx
201 shl ecx,18
202 and esi,ebx
203 shr ebp,14
204 xor eax,ecx
205 shr ebx,3
206 xor edx,ebp
207 mov ebp,DWORD [edi*4+esp]
208 mov edi,7
209 mov ecx,ebp
210 shl ebp,21
211 and edi,ebx
212 shr ecx,11
213 xor eax,ebp
214 shr ebx,3
215 xor edx,ecx
216 mov ecx,DWORD [esi*4+esp]
217 mov esi,7
218 mov ebp,ecx
219 shl ecx,24
220 and esi,ebx
221 shr ebp,8
222 xor eax,ecx
223 shr ebx,3
224 xor edx,ebp
225 mov ebp,DWORD [edi*4+esp]
226 mov ecx,ebp
227 shl ebp,27
228 mov edi,DWORD [esi*4+esp]
229 shr ecx,5
230 mov esi,edi
231 xor eax,ebp
232 shl edi,30
233 xor edx,ecx
234 shr esi,2
235 xor eax,edi
236 xor edx,esi
237 add esp,36
238 ret
239global _bn_GF2m_mul_2x2
240align 16
241_bn_GF2m_mul_2x2:
242L$_bn_GF2m_mul_2x2_begin:
243 lea edx,[_OPENSSL_ia32cap_P]
244 mov eax,DWORD [edx]
245 mov edx,DWORD [4+edx]
246 test eax,8388608
247 jz NEAR L$000ialu
248 push ebp
249 push ebx
250 push esi
251 push edi
252 mov eax,DWORD [24+esp]
253 mov ebx,DWORD [32+esp]
254 call __mul_1x1_mmx
255 movq mm7,mm0
256 mov eax,DWORD [28+esp]
257 mov ebx,DWORD [36+esp]
258 call __mul_1x1_mmx
259 movq mm6,mm0
260 mov eax,DWORD [24+esp]
261 mov ebx,DWORD [32+esp]
262 xor eax,DWORD [28+esp]
263 xor ebx,DWORD [36+esp]
264 call __mul_1x1_mmx
265 pxor mm0,mm7
266 mov eax,DWORD [20+esp]
267 pxor mm0,mm6
268 movq mm2,mm0
269 psllq mm0,32
270 pop edi
271 psrlq mm2,32
272 pop esi
273 pxor mm0,mm6
274 pop ebx
275 pxor mm2,mm7
276 movq [eax],mm0
277 pop ebp
278 movq [8+eax],mm2
279 emms
280 ret
281align 16
282L$000ialu:
283 push ebp
284 push ebx
285 push esi
286 push edi
287 sub esp,20
288 mov eax,DWORD [44+esp]
289 mov ebx,DWORD [52+esp]
290 call __mul_1x1_ialu
291 mov DWORD [8+esp],eax
292 mov DWORD [12+esp],edx
293 mov eax,DWORD [48+esp]
294 mov ebx,DWORD [56+esp]
295 call __mul_1x1_ialu
296 mov DWORD [esp],eax
297 mov DWORD [4+esp],edx
298 mov eax,DWORD [44+esp]
299 mov ebx,DWORD [52+esp]
300 xor eax,DWORD [48+esp]
301 xor ebx,DWORD [56+esp]
302 call __mul_1x1_ialu
303 mov ebp,DWORD [40+esp]
304 mov ebx,DWORD [esp]
305 mov ecx,DWORD [4+esp]
306 mov edi,DWORD [8+esp]
307 mov esi,DWORD [12+esp]
308 xor eax,edx
309 xor edx,ecx
310 xor eax,ebx
311 mov DWORD [ebp],ebx
312 xor edx,edi
313 mov DWORD [12+ebp],esi
314 xor eax,esi
315 add esp,20
316 xor edx,esi
317 pop edi
318 xor eax,edx
319 pop esi
320 mov DWORD [8+ebp],edx
321 pop ebx
322 mov DWORD [4+ebp],eax
323 pop ebp
324 ret
325db 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105
326db 99,97,116,105,111,110,32,102,111,114,32,120,56,54,44,32
327db 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
328db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
329db 62,0
330segment .bss
331common _OPENSSL_ia32cap_P 16
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette