Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(259)

Side by Side Diff: third_party/boringssl/win-x86/crypto/cpu-x86-asm.asm

Issue 1940523002: Adds back files lost during BoringSSL roll revert (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 %ifidn __OUTPUT_FORMAT__,obj
2 section code use32 class=code align=64
3 %elifidn __OUTPUT_FORMAT__,win32
4 %ifdef __YASM_VERSION_ID__
5 %if __YASM_VERSION_ID__ < 01010000h
6 %error yasm version 1.1.0 or later needed.
7 %endif
8 ; Yasm automatically includes .00 and complains about redefining it.
9 ; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html
10 %else
11 $@feat.00 equ 1
12 %endif
13 section .text code align=64
14 %else
15 section .text code
16 %endif
17 global _OPENSSL_ia32_cpuid
18 align 16
19 _OPENSSL_ia32_cpuid:
20 L$_OPENSSL_ia32_cpuid_begin:
21 push ebp
22 push ebx
23 push esi
24 push edi
25 xor edx,edx
26 pushfd
27 pop eax
28 mov ecx,eax
29 xor eax,2097152
30 push eax
31 popfd
32 pushfd
33 pop eax
34 xor ecx,eax
35 xor eax,eax
36 bt ecx,21
37 jnc NEAR L$000nocpuid
38 mov esi,DWORD [20+esp]
39 mov DWORD [8+esi],eax
40 cpuid
41 mov edi,eax
42 xor eax,eax
43 cmp ebx,1970169159
44 setne al
45 mov ebp,eax
46 cmp edx,1231384169
47 setne al
48 or ebp,eax
49 cmp ecx,1818588270
50 setne al
51 or ebp,eax
52 jz NEAR L$001intel
53 cmp ebx,1752462657
54 setne al
55 mov esi,eax
56 cmp edx,1769238117
57 setne al
58 or esi,eax
59 cmp ecx,1145913699
60 setne al
61 or esi,eax
62 jnz NEAR L$001intel
63 mov eax,2147483648
64 cpuid
65 cmp eax,2147483649
66 jb NEAR L$001intel
67 mov esi,eax
68 mov eax,2147483649
69 cpuid
70 or ebp,ecx
71 and ebp,2049
72 cmp esi,2147483656
73 jb NEAR L$001intel
74 mov eax,2147483656
75 cpuid
76 movzx esi,cl
77 inc esi
78 mov eax,1
79 xor ecx,ecx
80 cpuid
81 bt edx,28
82 jnc NEAR L$002generic
83 shr ebx,16
84 and ebx,255
85 cmp ebx,esi
86 ja NEAR L$002generic
87 and edx,4026531839
88 jmp NEAR L$002generic
89 L$001intel:
90 cmp edi,7
91 jb NEAR L$003cacheinfo
92 mov esi,DWORD [20+esp]
93 mov eax,7
94 xor ecx,ecx
95 cpuid
96 mov DWORD [8+esi],ebx
97 L$003cacheinfo:
98 cmp edi,4
99 mov edi,-1
100 jb NEAR L$004nocacheinfo
101 mov eax,4
102 mov ecx,0
103 cpuid
104 mov edi,eax
105 shr edi,14
106 and edi,4095
107 L$004nocacheinfo:
108 mov eax,1
109 xor ecx,ecx
110 cpuid
111 and edx,3220176895
112 cmp ebp,0
113 jne NEAR L$005notintel
114 or edx,1073741824
115 L$005notintel:
116 bt edx,28
117 jnc NEAR L$002generic
118 and edx,4026531839
119 cmp edi,0
120 je NEAR L$002generic
121 or edx,268435456
122 shr ebx,16
123 cmp bl,1
124 ja NEAR L$002generic
125 and edx,4026531839
126 L$002generic:
127 and ebp,2048
128 and ecx,4294965247
129 mov esi,edx
130 or ebp,ecx
131 bt ecx,27
132 jnc NEAR L$006clear_avx
133 xor ecx,ecx
134 db 15,1,208
135 and eax,6
136 cmp eax,6
137 je NEAR L$007done
138 cmp eax,2
139 je NEAR L$006clear_avx
140 L$008clear_xmm:
141 and ebp,4261412861
142 and esi,4278190079
143 L$006clear_avx:
144 and ebp,4026525695
145 mov edi,DWORD [20+esp]
146 and DWORD [8+edi],4294967263
147 L$007done:
148 mov eax,esi
149 mov edx,ebp
150 L$000nocpuid:
151 pop edi
152 pop esi
153 pop ebx
154 pop ebp
155 ret
156 ;extern _OPENSSL_ia32cap_P
157 global _OPENSSL_rdtsc
158 align 16
159 _OPENSSL_rdtsc:
160 L$_OPENSSL_rdtsc_begin:
161 xor eax,eax
162 xor edx,edx
163 lea ecx,[_OPENSSL_ia32cap_P]
164 bt DWORD [ecx],4
165 jnc NEAR L$009notsc
166 rdtsc
167 L$009notsc:
168 ret
169 global _OPENSSL_instrument_halt
170 align 16
171 _OPENSSL_instrument_halt:
172 L$_OPENSSL_instrument_halt_begin:
173 lea ecx,[_OPENSSL_ia32cap_P]
174 bt DWORD [ecx],4
175 jnc NEAR L$010nohalt
176 dd 2421723150
177 and eax,3
178 jnz NEAR L$010nohalt
179 pushfd
180 pop eax
181 bt eax,9
182 jnc NEAR L$010nohalt
183 rdtsc
184 push edx
185 push eax
186 hlt
187 rdtsc
188 sub eax,DWORD [esp]
189 sbb edx,DWORD [4+esp]
190 add esp,8
191 ret
192 L$010nohalt:
193 xor eax,eax
194 xor edx,edx
195 ret
196 global _OPENSSL_far_spin
197 align 16
198 _OPENSSL_far_spin:
199 L$_OPENSSL_far_spin_begin:
200 pushfd
201 pop eax
202 bt eax,9
203 jnc NEAR L$011nospin
204 mov eax,DWORD [4+esp]
205 mov ecx,DWORD [8+esp]
206 dd 2430111262
207 xor eax,eax
208 mov edx,DWORD [ecx]
209 jmp NEAR L$012spin
210 align 16
211 L$012spin:
212 inc eax
213 cmp edx,DWORD [ecx]
214 je NEAR L$012spin
215 dd 529567888
216 ret
217 L$011nospin:
218 xor eax,eax
219 xor edx,edx
220 ret
221 global _OPENSSL_wipe_cpu
222 align 16
223 _OPENSSL_wipe_cpu:
224 L$_OPENSSL_wipe_cpu_begin:
225 xor eax,eax
226 xor edx,edx
227 lea ecx,[_OPENSSL_ia32cap_P]
228 mov ecx,DWORD [ecx]
229 bt DWORD [ecx],1
230 jnc NEAR L$013no_x87
231 and ecx,83886080
232 cmp ecx,83886080
233 jne NEAR L$014no_sse2
234 pxor xmm0,xmm0
235 pxor xmm1,xmm1
236 pxor xmm2,xmm2
237 pxor xmm3,xmm3
238 pxor xmm4,xmm4
239 pxor xmm5,xmm5
240 pxor xmm6,xmm6
241 pxor xmm7,xmm7
242 L$014no_sse2:
243 dd 4007259865,4007259865,4007259865,4007259865,2430851995
244 L$013no_x87:
245 lea eax,[4+esp]
246 ret
247 global _OPENSSL_atomic_add
248 align 16
249 _OPENSSL_atomic_add:
250 L$_OPENSSL_atomic_add_begin:
251 mov edx,DWORD [4+esp]
252 mov ecx,DWORD [8+esp]
253 push ebx
254 nop
255 mov eax,DWORD [edx]
256 L$015spin:
257 lea ebx,[ecx*1+eax]
258 nop
259 dd 447811568
260 jne NEAR L$015spin
261 mov eax,ebx
262 pop ebx
263 ret
264 global _OPENSSL_indirect_call
265 align 16
266 _OPENSSL_indirect_call:
267 L$_OPENSSL_indirect_call_begin:
268 push ebp
269 mov ebp,esp
270 sub esp,28
271 mov ecx,DWORD [12+ebp]
272 mov DWORD [esp],ecx
273 mov edx,DWORD [16+ebp]
274 mov DWORD [4+esp],edx
275 mov eax,DWORD [20+ebp]
276 mov DWORD [8+esp],eax
277 mov eax,DWORD [24+ebp]
278 mov DWORD [12+esp],eax
279 mov eax,DWORD [28+ebp]
280 mov DWORD [16+esp],eax
281 mov eax,DWORD [32+ebp]
282 mov DWORD [20+esp],eax
283 mov eax,DWORD [36+ebp]
284 mov DWORD [24+esp],eax
285 call DWORD [8+ebp]
286 mov esp,ebp
287 pop ebp
288 ret
289 global _OPENSSL_ia32_rdrand
290 align 16
291 _OPENSSL_ia32_rdrand:
292 L$_OPENSSL_ia32_rdrand_begin:
293 mov ecx,8
294 L$016loop:
295 db 15,199,240
296 jc NEAR L$017break
297 loop L$016loop
298 L$017break:
299 cmp eax,0
300 cmove eax,ecx
301 ret
302 segment .bss
303 common _OPENSSL_ia32cap_P 16
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698