xref: /freebsd/sys/crypto/openssl/i386/x86cpuid.S (revision c0855eaa3ee9614804b6bd6a255aa9f71e095f43)
1bc3d5698SJohn Baldwin/* Do not modify. This file is auto-generated from x86cpuid.pl. */
2bc3d5698SJohn Baldwin#ifdef PIC
3bc3d5698SJohn Baldwin.text
4bc3d5698SJohn Baldwin.globl	OPENSSL_ia32_cpuid
5bc3d5698SJohn Baldwin.type	OPENSSL_ia32_cpuid,@function
6bc3d5698SJohn Baldwin.align	16
7bc3d5698SJohn BaldwinOPENSSL_ia32_cpuid:
8bc3d5698SJohn Baldwin.L_OPENSSL_ia32_cpuid_begin:
9*c0855eaaSJohn Baldwin	#ifdef __CET__
10*c0855eaaSJohn Baldwin
11*c0855eaaSJohn Baldwin.byte	243,15,30,251
12*c0855eaaSJohn Baldwin	#endif
13*c0855eaaSJohn Baldwin
14bc3d5698SJohn Baldwin	pushl	%ebp
15bc3d5698SJohn Baldwin	pushl	%ebx
16bc3d5698SJohn Baldwin	pushl	%esi
17bc3d5698SJohn Baldwin	pushl	%edi
18bc3d5698SJohn Baldwin	xorl	%edx,%edx
19bc3d5698SJohn Baldwin	pushfl
20bc3d5698SJohn Baldwin	popl	%eax
21bc3d5698SJohn Baldwin	movl	%eax,%ecx
22bc3d5698SJohn Baldwin	xorl	$2097152,%eax
23bc3d5698SJohn Baldwin	pushl	%eax
24bc3d5698SJohn Baldwin	popfl
25bc3d5698SJohn Baldwin	pushfl
26bc3d5698SJohn Baldwin	popl	%eax
27bc3d5698SJohn Baldwin	xorl	%eax,%ecx
28bc3d5698SJohn Baldwin	xorl	%eax,%eax
29bc3d5698SJohn Baldwin	movl	20(%esp),%esi
30bc3d5698SJohn Baldwin	movl	%eax,8(%esi)
31bc3d5698SJohn Baldwin	btl	$21,%ecx
32bc3d5698SJohn Baldwin	jnc	.L000nocpuid
33bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
34bc3d5698SJohn Baldwin	movl	%eax,%edi
35bc3d5698SJohn Baldwin	xorl	%eax,%eax
36bc3d5698SJohn Baldwin	cmpl	$1970169159,%ebx
37bc3d5698SJohn Baldwin	setne	%al
38bc3d5698SJohn Baldwin	movl	%eax,%ebp
39bc3d5698SJohn Baldwin	cmpl	$1231384169,%edx
40bc3d5698SJohn Baldwin	setne	%al
41bc3d5698SJohn Baldwin	orl	%eax,%ebp
42bc3d5698SJohn Baldwin	cmpl	$1818588270,%ecx
43bc3d5698SJohn Baldwin	setne	%al
44bc3d5698SJohn Baldwin	orl	%eax,%ebp
45bc3d5698SJohn Baldwin	jz	.L001intel
46bc3d5698SJohn Baldwin	cmpl	$1752462657,%ebx
47bc3d5698SJohn Baldwin	setne	%al
48bc3d5698SJohn Baldwin	movl	%eax,%esi
49bc3d5698SJohn Baldwin	cmpl	$1769238117,%edx
50bc3d5698SJohn Baldwin	setne	%al
51bc3d5698SJohn Baldwin	orl	%eax,%esi
52bc3d5698SJohn Baldwin	cmpl	$1145913699,%ecx
53bc3d5698SJohn Baldwin	setne	%al
54bc3d5698SJohn Baldwin	orl	%eax,%esi
55bc3d5698SJohn Baldwin	jnz	.L001intel
56bc3d5698SJohn Baldwin	movl	$2147483648,%eax
57bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
58bc3d5698SJohn Baldwin	cmpl	$2147483649,%eax
59bc3d5698SJohn Baldwin	jb	.L001intel
60bc3d5698SJohn Baldwin	movl	%eax,%esi
61bc3d5698SJohn Baldwin	movl	$2147483649,%eax
62bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
63bc3d5698SJohn Baldwin	orl	%ecx,%ebp
64bc3d5698SJohn Baldwin	andl	$2049,%ebp
65bc3d5698SJohn Baldwin	cmpl	$2147483656,%esi
66bc3d5698SJohn Baldwin	jb	.L001intel
67bc3d5698SJohn Baldwin	movl	$2147483656,%eax
68bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
69bc3d5698SJohn Baldwin	movzbl	%cl,%esi
70bc3d5698SJohn Baldwin	incl	%esi
71bc3d5698SJohn Baldwin	movl	$1,%eax
72bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
73bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
74bc3d5698SJohn Baldwin	btl	$28,%edx
75bc3d5698SJohn Baldwin	jnc	.L002generic
76bc3d5698SJohn Baldwin	shrl	$16,%ebx
77bc3d5698SJohn Baldwin	andl	$255,%ebx
78bc3d5698SJohn Baldwin	cmpl	%esi,%ebx
79bc3d5698SJohn Baldwin	ja	.L002generic
80bc3d5698SJohn Baldwin	andl	$4026531839,%edx
81bc3d5698SJohn Baldwin	jmp	.L002generic
82bc3d5698SJohn Baldwin.L001intel:
83bc3d5698SJohn Baldwin	cmpl	$4,%edi
84bc3d5698SJohn Baldwin	movl	$-1,%esi
85bc3d5698SJohn Baldwin	jb	.L003nocacheinfo
86bc3d5698SJohn Baldwin	movl	$4,%eax
87bc3d5698SJohn Baldwin	movl	$0,%ecx
88bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
89bc3d5698SJohn Baldwin	movl	%eax,%esi
90bc3d5698SJohn Baldwin	shrl	$14,%esi
91bc3d5698SJohn Baldwin	andl	$4095,%esi
92bc3d5698SJohn Baldwin.L003nocacheinfo:
93bc3d5698SJohn Baldwin	movl	$1,%eax
94bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
95bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
96bc3d5698SJohn Baldwin	andl	$3220176895,%edx
97bc3d5698SJohn Baldwin	cmpl	$0,%ebp
98bc3d5698SJohn Baldwin	jne	.L004notintel
99bc3d5698SJohn Baldwin	orl	$1073741824,%edx
100bc3d5698SJohn Baldwin	andb	$15,%ah
101bc3d5698SJohn Baldwin	cmpb	$15,%ah
102bc3d5698SJohn Baldwin	jne	.L004notintel
103bc3d5698SJohn Baldwin	orl	$1048576,%edx
104bc3d5698SJohn Baldwin.L004notintel:
105bc3d5698SJohn Baldwin	btl	$28,%edx
106bc3d5698SJohn Baldwin	jnc	.L002generic
107bc3d5698SJohn Baldwin	andl	$4026531839,%edx
108bc3d5698SJohn Baldwin	cmpl	$0,%esi
109bc3d5698SJohn Baldwin	je	.L002generic
110bc3d5698SJohn Baldwin	orl	$268435456,%edx
111bc3d5698SJohn Baldwin	shrl	$16,%ebx
112bc3d5698SJohn Baldwin	cmpb	$1,%bl
113bc3d5698SJohn Baldwin	ja	.L002generic
114bc3d5698SJohn Baldwin	andl	$4026531839,%edx
115bc3d5698SJohn Baldwin.L002generic:
116bc3d5698SJohn Baldwin	andl	$2048,%ebp
117bc3d5698SJohn Baldwin	andl	$4294965247,%ecx
118bc3d5698SJohn Baldwin	movl	%edx,%esi
119bc3d5698SJohn Baldwin	orl	%ecx,%ebp
120bc3d5698SJohn Baldwin	cmpl	$7,%edi
121bc3d5698SJohn Baldwin	movl	20(%esp),%edi
122bc3d5698SJohn Baldwin	jb	.L005no_extended_info
123bc3d5698SJohn Baldwin	movl	$7,%eax
124bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
125bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
126bc3d5698SJohn Baldwin	movl	%ebx,8(%edi)
127bc3d5698SJohn Baldwin.L005no_extended_info:
128bc3d5698SJohn Baldwin	btl	$27,%ebp
129bc3d5698SJohn Baldwin	jnc	.L006clear_avx
130bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
131bc3d5698SJohn Baldwin.byte	15,1,208
132bc3d5698SJohn Baldwin	andl	$6,%eax
133bc3d5698SJohn Baldwin	cmpl	$6,%eax
134bc3d5698SJohn Baldwin	je	.L007done
135bc3d5698SJohn Baldwin	cmpl	$2,%eax
136bc3d5698SJohn Baldwin	je	.L006clear_avx
137bc3d5698SJohn Baldwin.L008clear_xmm:
138bc3d5698SJohn Baldwin	andl	$4261412861,%ebp
139bc3d5698SJohn Baldwin	andl	$4278190079,%esi
140bc3d5698SJohn Baldwin.L006clear_avx:
141bc3d5698SJohn Baldwin	andl	$4026525695,%ebp
142bc3d5698SJohn Baldwin	andl	$4294967263,8(%edi)
143bc3d5698SJohn Baldwin.L007done:
144bc3d5698SJohn Baldwin	movl	%esi,%eax
145bc3d5698SJohn Baldwin	movl	%ebp,%edx
146bc3d5698SJohn Baldwin.L000nocpuid:
147bc3d5698SJohn Baldwin	popl	%edi
148bc3d5698SJohn Baldwin	popl	%esi
149bc3d5698SJohn Baldwin	popl	%ebx
150bc3d5698SJohn Baldwin	popl	%ebp
151bc3d5698SJohn Baldwin	ret
152bc3d5698SJohn Baldwin.size	OPENSSL_ia32_cpuid,.-.L_OPENSSL_ia32_cpuid_begin
153bc3d5698SJohn Baldwin.globl	OPENSSL_rdtsc
154bc3d5698SJohn Baldwin.type	OPENSSL_rdtsc,@function
155bc3d5698SJohn Baldwin.align	16
156bc3d5698SJohn BaldwinOPENSSL_rdtsc:
157bc3d5698SJohn Baldwin.L_OPENSSL_rdtsc_begin:
158*c0855eaaSJohn Baldwin	#ifdef __CET__
159*c0855eaaSJohn Baldwin
160*c0855eaaSJohn Baldwin.byte	243,15,30,251
161*c0855eaaSJohn Baldwin	#endif
162*c0855eaaSJohn Baldwin
163bc3d5698SJohn Baldwin	xorl	%eax,%eax
164bc3d5698SJohn Baldwin	xorl	%edx,%edx
165bc3d5698SJohn Baldwin	call	.L009PIC_me_up
166bc3d5698SJohn Baldwin.L009PIC_me_up:
167bc3d5698SJohn Baldwin	popl	%ecx
168bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P-.L009PIC_me_up(%ecx),%ecx
169bc3d5698SJohn Baldwin	btl	$4,(%ecx)
170bc3d5698SJohn Baldwin	jnc	.L010notsc
171bc3d5698SJohn Baldwin	.byte	0x0f,0x31
172bc3d5698SJohn Baldwin.L010notsc:
173bc3d5698SJohn Baldwin	ret
174bc3d5698SJohn Baldwin.size	OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin
175bc3d5698SJohn Baldwin.globl	OPENSSL_instrument_halt
176bc3d5698SJohn Baldwin.type	OPENSSL_instrument_halt,@function
177bc3d5698SJohn Baldwin.align	16
178bc3d5698SJohn BaldwinOPENSSL_instrument_halt:
179bc3d5698SJohn Baldwin.L_OPENSSL_instrument_halt_begin:
180*c0855eaaSJohn Baldwin	#ifdef __CET__
181*c0855eaaSJohn Baldwin
182*c0855eaaSJohn Baldwin.byte	243,15,30,251
183*c0855eaaSJohn Baldwin	#endif
184*c0855eaaSJohn Baldwin
185bc3d5698SJohn Baldwin	call	.L011PIC_me_up
186bc3d5698SJohn Baldwin.L011PIC_me_up:
187bc3d5698SJohn Baldwin	popl	%ecx
188bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P-.L011PIC_me_up(%ecx),%ecx
189bc3d5698SJohn Baldwin	btl	$4,(%ecx)
190bc3d5698SJohn Baldwin	jnc	.L012nohalt
191bc3d5698SJohn Baldwin.long	2421723150
192bc3d5698SJohn Baldwin	andl	$3,%eax
193bc3d5698SJohn Baldwin	jnz	.L012nohalt
194bc3d5698SJohn Baldwin	pushfl
195bc3d5698SJohn Baldwin	popl	%eax
196bc3d5698SJohn Baldwin	btl	$9,%eax
197bc3d5698SJohn Baldwin	jnc	.L012nohalt
198bc3d5698SJohn Baldwin	.byte	0x0f,0x31
199bc3d5698SJohn Baldwin	pushl	%edx
200bc3d5698SJohn Baldwin	pushl	%eax
201bc3d5698SJohn Baldwin	hlt
202bc3d5698SJohn Baldwin	.byte	0x0f,0x31
203bc3d5698SJohn Baldwin	subl	(%esp),%eax
204bc3d5698SJohn Baldwin	sbbl	4(%esp),%edx
205bc3d5698SJohn Baldwin	addl	$8,%esp
206bc3d5698SJohn Baldwin	ret
207bc3d5698SJohn Baldwin.L012nohalt:
208bc3d5698SJohn Baldwin	xorl	%eax,%eax
209bc3d5698SJohn Baldwin	xorl	%edx,%edx
210bc3d5698SJohn Baldwin	ret
211bc3d5698SJohn Baldwin.size	OPENSSL_instrument_halt,.-.L_OPENSSL_instrument_halt_begin
212bc3d5698SJohn Baldwin.globl	OPENSSL_far_spin
213bc3d5698SJohn Baldwin.type	OPENSSL_far_spin,@function
214bc3d5698SJohn Baldwin.align	16
215bc3d5698SJohn BaldwinOPENSSL_far_spin:
216bc3d5698SJohn Baldwin.L_OPENSSL_far_spin_begin:
217*c0855eaaSJohn Baldwin	#ifdef __CET__
218*c0855eaaSJohn Baldwin
219*c0855eaaSJohn Baldwin.byte	243,15,30,251
220*c0855eaaSJohn Baldwin	#endif
221*c0855eaaSJohn Baldwin
222bc3d5698SJohn Baldwin	pushfl
223bc3d5698SJohn Baldwin	popl	%eax
224bc3d5698SJohn Baldwin	btl	$9,%eax
225bc3d5698SJohn Baldwin	jnc	.L013nospin
226bc3d5698SJohn Baldwin	movl	4(%esp),%eax
227bc3d5698SJohn Baldwin	movl	8(%esp),%ecx
228bc3d5698SJohn Baldwin.long	2430111262
229bc3d5698SJohn Baldwin	xorl	%eax,%eax
230bc3d5698SJohn Baldwin	movl	(%ecx),%edx
231bc3d5698SJohn Baldwin	jmp	.L014spin
232bc3d5698SJohn Baldwin.align	16
233bc3d5698SJohn Baldwin.L014spin:
234bc3d5698SJohn Baldwin	incl	%eax
235bc3d5698SJohn Baldwin	cmpl	(%ecx),%edx
236bc3d5698SJohn Baldwin	je	.L014spin
237bc3d5698SJohn Baldwin.long	529567888
238bc3d5698SJohn Baldwin	ret
239bc3d5698SJohn Baldwin.L013nospin:
240bc3d5698SJohn Baldwin	xorl	%eax,%eax
241bc3d5698SJohn Baldwin	xorl	%edx,%edx
242bc3d5698SJohn Baldwin	ret
243bc3d5698SJohn Baldwin.size	OPENSSL_far_spin,.-.L_OPENSSL_far_spin_begin
244bc3d5698SJohn Baldwin.globl	OPENSSL_wipe_cpu
245bc3d5698SJohn Baldwin.type	OPENSSL_wipe_cpu,@function
246bc3d5698SJohn Baldwin.align	16
247bc3d5698SJohn BaldwinOPENSSL_wipe_cpu:
248bc3d5698SJohn Baldwin.L_OPENSSL_wipe_cpu_begin:
249*c0855eaaSJohn Baldwin	#ifdef __CET__
250*c0855eaaSJohn Baldwin
251*c0855eaaSJohn Baldwin.byte	243,15,30,251
252*c0855eaaSJohn Baldwin	#endif
253*c0855eaaSJohn Baldwin
254bc3d5698SJohn Baldwin	xorl	%eax,%eax
255bc3d5698SJohn Baldwin	xorl	%edx,%edx
256bc3d5698SJohn Baldwin	call	.L015PIC_me_up
257bc3d5698SJohn Baldwin.L015PIC_me_up:
258bc3d5698SJohn Baldwin	popl	%ecx
259bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P-.L015PIC_me_up(%ecx),%ecx
260bc3d5698SJohn Baldwin	movl	(%ecx),%ecx
261bc3d5698SJohn Baldwin	btl	$1,(%ecx)
262bc3d5698SJohn Baldwin	jnc	.L016no_x87
263bc3d5698SJohn Baldwin	andl	$83886080,%ecx
264bc3d5698SJohn Baldwin	cmpl	$83886080,%ecx
265bc3d5698SJohn Baldwin	jne	.L017no_sse2
266bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm0
267bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm1
268bc3d5698SJohn Baldwin	pxor	%xmm2,%xmm2
269bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm3
270bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm4
271bc3d5698SJohn Baldwin	pxor	%xmm5,%xmm5
272bc3d5698SJohn Baldwin	pxor	%xmm6,%xmm6
273bc3d5698SJohn Baldwin	pxor	%xmm7,%xmm7
274bc3d5698SJohn Baldwin.L017no_sse2:
275bc3d5698SJohn Baldwin.long	4007259865,4007259865,4007259865,4007259865,2430851995
276bc3d5698SJohn Baldwin.L016no_x87:
277bc3d5698SJohn Baldwin	leal	4(%esp),%eax
278bc3d5698SJohn Baldwin	ret
279bc3d5698SJohn Baldwin.size	OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin
280bc3d5698SJohn Baldwin.globl	OPENSSL_atomic_add
281bc3d5698SJohn Baldwin.type	OPENSSL_atomic_add,@function
282bc3d5698SJohn Baldwin.align	16
283bc3d5698SJohn BaldwinOPENSSL_atomic_add:
284bc3d5698SJohn Baldwin.L_OPENSSL_atomic_add_begin:
285*c0855eaaSJohn Baldwin	#ifdef __CET__
286*c0855eaaSJohn Baldwin
287*c0855eaaSJohn Baldwin.byte	243,15,30,251
288*c0855eaaSJohn Baldwin	#endif
289*c0855eaaSJohn Baldwin
290bc3d5698SJohn Baldwin	movl	4(%esp),%edx
291bc3d5698SJohn Baldwin	movl	8(%esp),%ecx
292bc3d5698SJohn Baldwin	pushl	%ebx
293bc3d5698SJohn Baldwin	nop
294bc3d5698SJohn Baldwin	movl	(%edx),%eax
295bc3d5698SJohn Baldwin.L018spin:
296bc3d5698SJohn Baldwin	leal	(%eax,%ecx,1),%ebx
297bc3d5698SJohn Baldwin	nop
298bc3d5698SJohn Baldwin.long	447811568
299bc3d5698SJohn Baldwin	jne	.L018spin
300bc3d5698SJohn Baldwin	movl	%ebx,%eax
301bc3d5698SJohn Baldwin	popl	%ebx
302bc3d5698SJohn Baldwin	ret
303bc3d5698SJohn Baldwin.size	OPENSSL_atomic_add,.-.L_OPENSSL_atomic_add_begin
304bc3d5698SJohn Baldwin.globl	OPENSSL_cleanse
305bc3d5698SJohn Baldwin.type	OPENSSL_cleanse,@function
306bc3d5698SJohn Baldwin.align	16
307bc3d5698SJohn BaldwinOPENSSL_cleanse:
308bc3d5698SJohn Baldwin.L_OPENSSL_cleanse_begin:
309*c0855eaaSJohn Baldwin	#ifdef __CET__
310*c0855eaaSJohn Baldwin
311*c0855eaaSJohn Baldwin.byte	243,15,30,251
312*c0855eaaSJohn Baldwin	#endif
313*c0855eaaSJohn Baldwin
314bc3d5698SJohn Baldwin	movl	4(%esp),%edx
315bc3d5698SJohn Baldwin	movl	8(%esp),%ecx
316bc3d5698SJohn Baldwin	xorl	%eax,%eax
317bc3d5698SJohn Baldwin	cmpl	$7,%ecx
318bc3d5698SJohn Baldwin	jae	.L019lot
319bc3d5698SJohn Baldwin	cmpl	$0,%ecx
320bc3d5698SJohn Baldwin	je	.L020ret
321bc3d5698SJohn Baldwin.L021little:
322bc3d5698SJohn Baldwin	movb	%al,(%edx)
323bc3d5698SJohn Baldwin	subl	$1,%ecx
324bc3d5698SJohn Baldwin	leal	1(%edx),%edx
325bc3d5698SJohn Baldwin	jnz	.L021little
326bc3d5698SJohn Baldwin.L020ret:
327bc3d5698SJohn Baldwin	ret
328bc3d5698SJohn Baldwin.align	16
329bc3d5698SJohn Baldwin.L019lot:
330bc3d5698SJohn Baldwin	testl	$3,%edx
331bc3d5698SJohn Baldwin	jz	.L022aligned
332bc3d5698SJohn Baldwin	movb	%al,(%edx)
333bc3d5698SJohn Baldwin	leal	-1(%ecx),%ecx
334bc3d5698SJohn Baldwin	leal	1(%edx),%edx
335bc3d5698SJohn Baldwin	jmp	.L019lot
336bc3d5698SJohn Baldwin.L022aligned:
337bc3d5698SJohn Baldwin	movl	%eax,(%edx)
338bc3d5698SJohn Baldwin	leal	-4(%ecx),%ecx
339bc3d5698SJohn Baldwin	testl	$-4,%ecx
340bc3d5698SJohn Baldwin	leal	4(%edx),%edx
341bc3d5698SJohn Baldwin	jnz	.L022aligned
342bc3d5698SJohn Baldwin	cmpl	$0,%ecx
343bc3d5698SJohn Baldwin	jne	.L021little
344bc3d5698SJohn Baldwin	ret
345bc3d5698SJohn Baldwin.size	OPENSSL_cleanse,.-.L_OPENSSL_cleanse_begin
346bc3d5698SJohn Baldwin.globl	CRYPTO_memcmp
347bc3d5698SJohn Baldwin.type	CRYPTO_memcmp,@function
348bc3d5698SJohn Baldwin.align	16
349bc3d5698SJohn BaldwinCRYPTO_memcmp:
350bc3d5698SJohn Baldwin.L_CRYPTO_memcmp_begin:
351*c0855eaaSJohn Baldwin	#ifdef __CET__
352*c0855eaaSJohn Baldwin
353*c0855eaaSJohn Baldwin.byte	243,15,30,251
354*c0855eaaSJohn Baldwin	#endif
355*c0855eaaSJohn Baldwin
356bc3d5698SJohn Baldwin	pushl	%esi
357bc3d5698SJohn Baldwin	pushl	%edi
358bc3d5698SJohn Baldwin	movl	12(%esp),%esi
359bc3d5698SJohn Baldwin	movl	16(%esp),%edi
360bc3d5698SJohn Baldwin	movl	20(%esp),%ecx
361bc3d5698SJohn Baldwin	xorl	%eax,%eax
362bc3d5698SJohn Baldwin	xorl	%edx,%edx
363bc3d5698SJohn Baldwin	cmpl	$0,%ecx
364bc3d5698SJohn Baldwin	je	.L023no_data
365bc3d5698SJohn Baldwin.L024loop:
366bc3d5698SJohn Baldwin	movb	(%esi),%dl
367bc3d5698SJohn Baldwin	leal	1(%esi),%esi
368bc3d5698SJohn Baldwin	xorb	(%edi),%dl
369bc3d5698SJohn Baldwin	leal	1(%edi),%edi
370bc3d5698SJohn Baldwin	orb	%dl,%al
371bc3d5698SJohn Baldwin	decl	%ecx
372bc3d5698SJohn Baldwin	jnz	.L024loop
373bc3d5698SJohn Baldwin	negl	%eax
374bc3d5698SJohn Baldwin	shrl	$31,%eax
375bc3d5698SJohn Baldwin.L023no_data:
376bc3d5698SJohn Baldwin	popl	%edi
377bc3d5698SJohn Baldwin	popl	%esi
378bc3d5698SJohn Baldwin	ret
379bc3d5698SJohn Baldwin.size	CRYPTO_memcmp,.-.L_CRYPTO_memcmp_begin
380bc3d5698SJohn Baldwin.globl	OPENSSL_instrument_bus
381bc3d5698SJohn Baldwin.type	OPENSSL_instrument_bus,@function
382bc3d5698SJohn Baldwin.align	16
383bc3d5698SJohn BaldwinOPENSSL_instrument_bus:
384bc3d5698SJohn Baldwin.L_OPENSSL_instrument_bus_begin:
385*c0855eaaSJohn Baldwin	#ifdef __CET__
386*c0855eaaSJohn Baldwin
387*c0855eaaSJohn Baldwin.byte	243,15,30,251
388*c0855eaaSJohn Baldwin	#endif
389*c0855eaaSJohn Baldwin
390bc3d5698SJohn Baldwin	pushl	%ebp
391bc3d5698SJohn Baldwin	pushl	%ebx
392bc3d5698SJohn Baldwin	pushl	%esi
393bc3d5698SJohn Baldwin	pushl	%edi
394bc3d5698SJohn Baldwin	movl	$0,%eax
395bc3d5698SJohn Baldwin	call	.L025PIC_me_up
396bc3d5698SJohn Baldwin.L025PIC_me_up:
397bc3d5698SJohn Baldwin	popl	%edx
398bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P-.L025PIC_me_up(%edx),%edx
399bc3d5698SJohn Baldwin	btl	$4,(%edx)
400bc3d5698SJohn Baldwin	jnc	.L026nogo
401bc3d5698SJohn Baldwin	btl	$19,(%edx)
402bc3d5698SJohn Baldwin	jnc	.L026nogo
403bc3d5698SJohn Baldwin	movl	20(%esp),%edi
404bc3d5698SJohn Baldwin	movl	24(%esp),%ecx
405bc3d5698SJohn Baldwin	.byte	0x0f,0x31
406bc3d5698SJohn Baldwin	movl	%eax,%esi
407bc3d5698SJohn Baldwin	movl	$0,%ebx
408bc3d5698SJohn Baldwin	clflush	(%edi)
409bc3d5698SJohn Baldwin.byte	240
410bc3d5698SJohn Baldwin	addl	%ebx,(%edi)
411bc3d5698SJohn Baldwin	jmp	.L027loop
412bc3d5698SJohn Baldwin.align	16
413bc3d5698SJohn Baldwin.L027loop:
414bc3d5698SJohn Baldwin	.byte	0x0f,0x31
415bc3d5698SJohn Baldwin	movl	%eax,%edx
416bc3d5698SJohn Baldwin	subl	%esi,%eax
417bc3d5698SJohn Baldwin	movl	%edx,%esi
418bc3d5698SJohn Baldwin	movl	%eax,%ebx
419bc3d5698SJohn Baldwin	clflush	(%edi)
420bc3d5698SJohn Baldwin.byte	240
421bc3d5698SJohn Baldwin	addl	%eax,(%edi)
422bc3d5698SJohn Baldwin	leal	4(%edi),%edi
423bc3d5698SJohn Baldwin	subl	$1,%ecx
424bc3d5698SJohn Baldwin	jnz	.L027loop
425bc3d5698SJohn Baldwin	movl	24(%esp),%eax
426bc3d5698SJohn Baldwin.L026nogo:
427bc3d5698SJohn Baldwin	popl	%edi
428bc3d5698SJohn Baldwin	popl	%esi
429bc3d5698SJohn Baldwin	popl	%ebx
430bc3d5698SJohn Baldwin	popl	%ebp
431bc3d5698SJohn Baldwin	ret
432bc3d5698SJohn Baldwin.size	OPENSSL_instrument_bus,.-.L_OPENSSL_instrument_bus_begin
433bc3d5698SJohn Baldwin.globl	OPENSSL_instrument_bus2
434bc3d5698SJohn Baldwin.type	OPENSSL_instrument_bus2,@function
435bc3d5698SJohn Baldwin.align	16
436bc3d5698SJohn BaldwinOPENSSL_instrument_bus2:
437bc3d5698SJohn Baldwin.L_OPENSSL_instrument_bus2_begin:
438*c0855eaaSJohn Baldwin	#ifdef __CET__
439*c0855eaaSJohn Baldwin
440*c0855eaaSJohn Baldwin.byte	243,15,30,251
441*c0855eaaSJohn Baldwin	#endif
442*c0855eaaSJohn Baldwin
443bc3d5698SJohn Baldwin	pushl	%ebp
444bc3d5698SJohn Baldwin	pushl	%ebx
445bc3d5698SJohn Baldwin	pushl	%esi
446bc3d5698SJohn Baldwin	pushl	%edi
447bc3d5698SJohn Baldwin	movl	$0,%eax
448bc3d5698SJohn Baldwin	call	.L028PIC_me_up
449bc3d5698SJohn Baldwin.L028PIC_me_up:
450bc3d5698SJohn Baldwin	popl	%edx
451bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P-.L028PIC_me_up(%edx),%edx
452bc3d5698SJohn Baldwin	btl	$4,(%edx)
453bc3d5698SJohn Baldwin	jnc	.L029nogo
454bc3d5698SJohn Baldwin	btl	$19,(%edx)
455bc3d5698SJohn Baldwin	jnc	.L029nogo
456bc3d5698SJohn Baldwin	movl	20(%esp),%edi
457bc3d5698SJohn Baldwin	movl	24(%esp),%ecx
458bc3d5698SJohn Baldwin	movl	28(%esp),%ebp
459bc3d5698SJohn Baldwin	.byte	0x0f,0x31
460bc3d5698SJohn Baldwin	movl	%eax,%esi
461bc3d5698SJohn Baldwin	movl	$0,%ebx
462bc3d5698SJohn Baldwin	clflush	(%edi)
463bc3d5698SJohn Baldwin.byte	240
464bc3d5698SJohn Baldwin	addl	%ebx,(%edi)
465bc3d5698SJohn Baldwin	.byte	0x0f,0x31
466bc3d5698SJohn Baldwin	movl	%eax,%edx
467bc3d5698SJohn Baldwin	subl	%esi,%eax
468bc3d5698SJohn Baldwin	movl	%edx,%esi
469bc3d5698SJohn Baldwin	movl	%eax,%ebx
470bc3d5698SJohn Baldwin	jmp	.L030loop2
471bc3d5698SJohn Baldwin.align	16
472bc3d5698SJohn Baldwin.L030loop2:
473bc3d5698SJohn Baldwin	clflush	(%edi)
474bc3d5698SJohn Baldwin.byte	240
475bc3d5698SJohn Baldwin	addl	%eax,(%edi)
476bc3d5698SJohn Baldwin	subl	$1,%ebp
477bc3d5698SJohn Baldwin	jz	.L031done2
478bc3d5698SJohn Baldwin	.byte	0x0f,0x31
479bc3d5698SJohn Baldwin	movl	%eax,%edx
480bc3d5698SJohn Baldwin	subl	%esi,%eax
481bc3d5698SJohn Baldwin	movl	%edx,%esi
482bc3d5698SJohn Baldwin	cmpl	%ebx,%eax
483bc3d5698SJohn Baldwin	movl	%eax,%ebx
484bc3d5698SJohn Baldwin	movl	$0,%edx
485bc3d5698SJohn Baldwin	setne	%dl
486bc3d5698SJohn Baldwin	subl	%edx,%ecx
487bc3d5698SJohn Baldwin	leal	(%edi,%edx,4),%edi
488bc3d5698SJohn Baldwin	jnz	.L030loop2
489bc3d5698SJohn Baldwin.L031done2:
490bc3d5698SJohn Baldwin	movl	24(%esp),%eax
491bc3d5698SJohn Baldwin	subl	%ecx,%eax
492bc3d5698SJohn Baldwin.L029nogo:
493bc3d5698SJohn Baldwin	popl	%edi
494bc3d5698SJohn Baldwin	popl	%esi
495bc3d5698SJohn Baldwin	popl	%ebx
496bc3d5698SJohn Baldwin	popl	%ebp
497bc3d5698SJohn Baldwin	ret
498bc3d5698SJohn Baldwin.size	OPENSSL_instrument_bus2,.-.L_OPENSSL_instrument_bus2_begin
499bc3d5698SJohn Baldwin.globl	OPENSSL_ia32_rdrand_bytes
500bc3d5698SJohn Baldwin.type	OPENSSL_ia32_rdrand_bytes,@function
501bc3d5698SJohn Baldwin.align	16
502bc3d5698SJohn BaldwinOPENSSL_ia32_rdrand_bytes:
503bc3d5698SJohn Baldwin.L_OPENSSL_ia32_rdrand_bytes_begin:
504*c0855eaaSJohn Baldwin	#ifdef __CET__
505*c0855eaaSJohn Baldwin
506*c0855eaaSJohn Baldwin.byte	243,15,30,251
507*c0855eaaSJohn Baldwin	#endif
508*c0855eaaSJohn Baldwin
509bc3d5698SJohn Baldwin	pushl	%edi
510bc3d5698SJohn Baldwin	pushl	%ebx
511bc3d5698SJohn Baldwin	xorl	%eax,%eax
512bc3d5698SJohn Baldwin	movl	12(%esp),%edi
513bc3d5698SJohn Baldwin	movl	16(%esp),%ebx
514bc3d5698SJohn Baldwin	cmpl	$0,%ebx
515bc3d5698SJohn Baldwin	je	.L032done
516bc3d5698SJohn Baldwin	movl	$8,%ecx
517bc3d5698SJohn Baldwin.L033loop:
518bc3d5698SJohn Baldwin.byte	15,199,242
519bc3d5698SJohn Baldwin	jc	.L034break
520bc3d5698SJohn Baldwin	loop	.L033loop
521bc3d5698SJohn Baldwin	jmp	.L032done
522bc3d5698SJohn Baldwin.align	16
523bc3d5698SJohn Baldwin.L034break:
524bc3d5698SJohn Baldwin	cmpl	$4,%ebx
525bc3d5698SJohn Baldwin	jb	.L035tail
526bc3d5698SJohn Baldwin	movl	%edx,(%edi)
527bc3d5698SJohn Baldwin	leal	4(%edi),%edi
528bc3d5698SJohn Baldwin	addl	$4,%eax
529bc3d5698SJohn Baldwin	subl	$4,%ebx
530bc3d5698SJohn Baldwin	jz	.L032done
531bc3d5698SJohn Baldwin	movl	$8,%ecx
532bc3d5698SJohn Baldwin	jmp	.L033loop
533bc3d5698SJohn Baldwin.align	16
534bc3d5698SJohn Baldwin.L035tail:
535bc3d5698SJohn Baldwin	movb	%dl,(%edi)
536bc3d5698SJohn Baldwin	leal	1(%edi),%edi
537bc3d5698SJohn Baldwin	incl	%eax
538bc3d5698SJohn Baldwin	shrl	$8,%edx
539bc3d5698SJohn Baldwin	decl	%ebx
540bc3d5698SJohn Baldwin	jnz	.L035tail
541bc3d5698SJohn Baldwin.L032done:
542bc3d5698SJohn Baldwin	xorl	%edx,%edx
543bc3d5698SJohn Baldwin	popl	%ebx
544bc3d5698SJohn Baldwin	popl	%edi
545bc3d5698SJohn Baldwin	ret
546bc3d5698SJohn Baldwin.size	OPENSSL_ia32_rdrand_bytes,.-.L_OPENSSL_ia32_rdrand_bytes_begin
547bc3d5698SJohn Baldwin.globl	OPENSSL_ia32_rdseed_bytes
548bc3d5698SJohn Baldwin.type	OPENSSL_ia32_rdseed_bytes,@function
549bc3d5698SJohn Baldwin.align	16
550bc3d5698SJohn BaldwinOPENSSL_ia32_rdseed_bytes:
551bc3d5698SJohn Baldwin.L_OPENSSL_ia32_rdseed_bytes_begin:
552*c0855eaaSJohn Baldwin	#ifdef __CET__
553*c0855eaaSJohn Baldwin
554*c0855eaaSJohn Baldwin.byte	243,15,30,251
555*c0855eaaSJohn Baldwin	#endif
556*c0855eaaSJohn Baldwin
557bc3d5698SJohn Baldwin	pushl	%edi
558bc3d5698SJohn Baldwin	pushl	%ebx
559bc3d5698SJohn Baldwin	xorl	%eax,%eax
560bc3d5698SJohn Baldwin	movl	12(%esp),%edi
561bc3d5698SJohn Baldwin	movl	16(%esp),%ebx
562bc3d5698SJohn Baldwin	cmpl	$0,%ebx
563bc3d5698SJohn Baldwin	je	.L036done
564bc3d5698SJohn Baldwin	movl	$8,%ecx
565bc3d5698SJohn Baldwin.L037loop:
566bc3d5698SJohn Baldwin.byte	15,199,250
567bc3d5698SJohn Baldwin	jc	.L038break
568bc3d5698SJohn Baldwin	loop	.L037loop
569bc3d5698SJohn Baldwin	jmp	.L036done
570bc3d5698SJohn Baldwin.align	16
571bc3d5698SJohn Baldwin.L038break:
572bc3d5698SJohn Baldwin	cmpl	$4,%ebx
573bc3d5698SJohn Baldwin	jb	.L039tail
574bc3d5698SJohn Baldwin	movl	%edx,(%edi)
575bc3d5698SJohn Baldwin	leal	4(%edi),%edi
576bc3d5698SJohn Baldwin	addl	$4,%eax
577bc3d5698SJohn Baldwin	subl	$4,%ebx
578bc3d5698SJohn Baldwin	jz	.L036done
579bc3d5698SJohn Baldwin	movl	$8,%ecx
580bc3d5698SJohn Baldwin	jmp	.L037loop
581bc3d5698SJohn Baldwin.align	16
582bc3d5698SJohn Baldwin.L039tail:
583bc3d5698SJohn Baldwin	movb	%dl,(%edi)
584bc3d5698SJohn Baldwin	leal	1(%edi),%edi
585bc3d5698SJohn Baldwin	incl	%eax
586bc3d5698SJohn Baldwin	shrl	$8,%edx
587bc3d5698SJohn Baldwin	decl	%ebx
588bc3d5698SJohn Baldwin	jnz	.L039tail
589bc3d5698SJohn Baldwin.L036done:
590bc3d5698SJohn Baldwin	xorl	%edx,%edx
591bc3d5698SJohn Baldwin	popl	%ebx
592bc3d5698SJohn Baldwin	popl	%edi
593bc3d5698SJohn Baldwin	ret
594bc3d5698SJohn Baldwin.size	OPENSSL_ia32_rdseed_bytes,.-.L_OPENSSL_ia32_rdseed_bytes_begin
595bc3d5698SJohn Baldwin.hidden	OPENSSL_cpuid_setup
596bc3d5698SJohn Baldwin.hidden	OPENSSL_ia32cap_P
597bc3d5698SJohn Baldwin.comm	OPENSSL_ia32cap_P,16,4
598bc3d5698SJohn Baldwin.section	.init
599bc3d5698SJohn Baldwin	call	OPENSSL_cpuid_setup
600*c0855eaaSJohn Baldwin
601*c0855eaaSJohn Baldwin	.section ".note.gnu.property", "a"
602*c0855eaaSJohn Baldwin	.p2align 2
603*c0855eaaSJohn Baldwin	.long 1f - 0f
604*c0855eaaSJohn Baldwin	.long 4f - 1f
605*c0855eaaSJohn Baldwin	.long 5
606*c0855eaaSJohn Baldwin0:
607*c0855eaaSJohn Baldwin	.asciz "GNU"
608*c0855eaaSJohn Baldwin1:
609*c0855eaaSJohn Baldwin	.p2align 2
610*c0855eaaSJohn Baldwin	.long 0xc0000002
611*c0855eaaSJohn Baldwin	.long 3f - 2f
612*c0855eaaSJohn Baldwin2:
613*c0855eaaSJohn Baldwin	.long 3
614*c0855eaaSJohn Baldwin3:
615*c0855eaaSJohn Baldwin	.p2align 2
616*c0855eaaSJohn Baldwin4:
617bc3d5698SJohn Baldwin#else
618bc3d5698SJohn Baldwin.text
619bc3d5698SJohn Baldwin.globl	OPENSSL_ia32_cpuid
620bc3d5698SJohn Baldwin.type	OPENSSL_ia32_cpuid,@function
621bc3d5698SJohn Baldwin.align	16
622bc3d5698SJohn BaldwinOPENSSL_ia32_cpuid:
623bc3d5698SJohn Baldwin.L_OPENSSL_ia32_cpuid_begin:
624*c0855eaaSJohn Baldwin	#ifdef __CET__
625*c0855eaaSJohn Baldwin
626*c0855eaaSJohn Baldwin.byte	243,15,30,251
627*c0855eaaSJohn Baldwin	#endif
628*c0855eaaSJohn Baldwin
629bc3d5698SJohn Baldwin	pushl	%ebp
630bc3d5698SJohn Baldwin	pushl	%ebx
631bc3d5698SJohn Baldwin	pushl	%esi
632bc3d5698SJohn Baldwin	pushl	%edi
633bc3d5698SJohn Baldwin	xorl	%edx,%edx
634bc3d5698SJohn Baldwin	pushfl
635bc3d5698SJohn Baldwin	popl	%eax
636bc3d5698SJohn Baldwin	movl	%eax,%ecx
637bc3d5698SJohn Baldwin	xorl	$2097152,%eax
638bc3d5698SJohn Baldwin	pushl	%eax
639bc3d5698SJohn Baldwin	popfl
640bc3d5698SJohn Baldwin	pushfl
641bc3d5698SJohn Baldwin	popl	%eax
642bc3d5698SJohn Baldwin	xorl	%eax,%ecx
643bc3d5698SJohn Baldwin	xorl	%eax,%eax
644bc3d5698SJohn Baldwin	movl	20(%esp),%esi
645bc3d5698SJohn Baldwin	movl	%eax,8(%esi)
646bc3d5698SJohn Baldwin	btl	$21,%ecx
647bc3d5698SJohn Baldwin	jnc	.L000nocpuid
648bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
649bc3d5698SJohn Baldwin	movl	%eax,%edi
650bc3d5698SJohn Baldwin	xorl	%eax,%eax
651bc3d5698SJohn Baldwin	cmpl	$1970169159,%ebx
652bc3d5698SJohn Baldwin	setne	%al
653bc3d5698SJohn Baldwin	movl	%eax,%ebp
654bc3d5698SJohn Baldwin	cmpl	$1231384169,%edx
655bc3d5698SJohn Baldwin	setne	%al
656bc3d5698SJohn Baldwin	orl	%eax,%ebp
657bc3d5698SJohn Baldwin	cmpl	$1818588270,%ecx
658bc3d5698SJohn Baldwin	setne	%al
659bc3d5698SJohn Baldwin	orl	%eax,%ebp
660bc3d5698SJohn Baldwin	jz	.L001intel
661bc3d5698SJohn Baldwin	cmpl	$1752462657,%ebx
662bc3d5698SJohn Baldwin	setne	%al
663bc3d5698SJohn Baldwin	movl	%eax,%esi
664bc3d5698SJohn Baldwin	cmpl	$1769238117,%edx
665bc3d5698SJohn Baldwin	setne	%al
666bc3d5698SJohn Baldwin	orl	%eax,%esi
667bc3d5698SJohn Baldwin	cmpl	$1145913699,%ecx
668bc3d5698SJohn Baldwin	setne	%al
669bc3d5698SJohn Baldwin	orl	%eax,%esi
670bc3d5698SJohn Baldwin	jnz	.L001intel
671bc3d5698SJohn Baldwin	movl	$2147483648,%eax
672bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
673bc3d5698SJohn Baldwin	cmpl	$2147483649,%eax
674bc3d5698SJohn Baldwin	jb	.L001intel
675bc3d5698SJohn Baldwin	movl	%eax,%esi
676bc3d5698SJohn Baldwin	movl	$2147483649,%eax
677bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
678bc3d5698SJohn Baldwin	orl	%ecx,%ebp
679bc3d5698SJohn Baldwin	andl	$2049,%ebp
680bc3d5698SJohn Baldwin	cmpl	$2147483656,%esi
681bc3d5698SJohn Baldwin	jb	.L001intel
682bc3d5698SJohn Baldwin	movl	$2147483656,%eax
683bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
684bc3d5698SJohn Baldwin	movzbl	%cl,%esi
685bc3d5698SJohn Baldwin	incl	%esi
686bc3d5698SJohn Baldwin	movl	$1,%eax
687bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
688bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
689bc3d5698SJohn Baldwin	btl	$28,%edx
690bc3d5698SJohn Baldwin	jnc	.L002generic
691bc3d5698SJohn Baldwin	shrl	$16,%ebx
692bc3d5698SJohn Baldwin	andl	$255,%ebx
693bc3d5698SJohn Baldwin	cmpl	%esi,%ebx
694bc3d5698SJohn Baldwin	ja	.L002generic
695bc3d5698SJohn Baldwin	andl	$4026531839,%edx
696bc3d5698SJohn Baldwin	jmp	.L002generic
697bc3d5698SJohn Baldwin.L001intel:
698bc3d5698SJohn Baldwin	cmpl	$4,%edi
699bc3d5698SJohn Baldwin	movl	$-1,%esi
700bc3d5698SJohn Baldwin	jb	.L003nocacheinfo
701bc3d5698SJohn Baldwin	movl	$4,%eax
702bc3d5698SJohn Baldwin	movl	$0,%ecx
703bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
704bc3d5698SJohn Baldwin	movl	%eax,%esi
705bc3d5698SJohn Baldwin	shrl	$14,%esi
706bc3d5698SJohn Baldwin	andl	$4095,%esi
707bc3d5698SJohn Baldwin.L003nocacheinfo:
708bc3d5698SJohn Baldwin	movl	$1,%eax
709bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
710bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
711bc3d5698SJohn Baldwin	andl	$3220176895,%edx
712bc3d5698SJohn Baldwin	cmpl	$0,%ebp
713bc3d5698SJohn Baldwin	jne	.L004notintel
714bc3d5698SJohn Baldwin	orl	$1073741824,%edx
715bc3d5698SJohn Baldwin	andb	$15,%ah
716bc3d5698SJohn Baldwin	cmpb	$15,%ah
717bc3d5698SJohn Baldwin	jne	.L004notintel
718bc3d5698SJohn Baldwin	orl	$1048576,%edx
719bc3d5698SJohn Baldwin.L004notintel:
720bc3d5698SJohn Baldwin	btl	$28,%edx
721bc3d5698SJohn Baldwin	jnc	.L002generic
722bc3d5698SJohn Baldwin	andl	$4026531839,%edx
723bc3d5698SJohn Baldwin	cmpl	$0,%esi
724bc3d5698SJohn Baldwin	je	.L002generic
725bc3d5698SJohn Baldwin	orl	$268435456,%edx
726bc3d5698SJohn Baldwin	shrl	$16,%ebx
727bc3d5698SJohn Baldwin	cmpb	$1,%bl
728bc3d5698SJohn Baldwin	ja	.L002generic
729bc3d5698SJohn Baldwin	andl	$4026531839,%edx
730bc3d5698SJohn Baldwin.L002generic:
731bc3d5698SJohn Baldwin	andl	$2048,%ebp
732bc3d5698SJohn Baldwin	andl	$4294965247,%ecx
733bc3d5698SJohn Baldwin	movl	%edx,%esi
734bc3d5698SJohn Baldwin	orl	%ecx,%ebp
735bc3d5698SJohn Baldwin	cmpl	$7,%edi
736bc3d5698SJohn Baldwin	movl	20(%esp),%edi
737bc3d5698SJohn Baldwin	jb	.L005no_extended_info
738bc3d5698SJohn Baldwin	movl	$7,%eax
739bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
740bc3d5698SJohn Baldwin	.byte	0x0f,0xa2
741bc3d5698SJohn Baldwin	movl	%ebx,8(%edi)
742bc3d5698SJohn Baldwin.L005no_extended_info:
743bc3d5698SJohn Baldwin	btl	$27,%ebp
744bc3d5698SJohn Baldwin	jnc	.L006clear_avx
745bc3d5698SJohn Baldwin	xorl	%ecx,%ecx
746bc3d5698SJohn Baldwin.byte	15,1,208
747bc3d5698SJohn Baldwin	andl	$6,%eax
748bc3d5698SJohn Baldwin	cmpl	$6,%eax
749bc3d5698SJohn Baldwin	je	.L007done
750bc3d5698SJohn Baldwin	cmpl	$2,%eax
751bc3d5698SJohn Baldwin	je	.L006clear_avx
752bc3d5698SJohn Baldwin.L008clear_xmm:
753bc3d5698SJohn Baldwin	andl	$4261412861,%ebp
754bc3d5698SJohn Baldwin	andl	$4278190079,%esi
755bc3d5698SJohn Baldwin.L006clear_avx:
756bc3d5698SJohn Baldwin	andl	$4026525695,%ebp
757bc3d5698SJohn Baldwin	andl	$4294967263,8(%edi)
758bc3d5698SJohn Baldwin.L007done:
759bc3d5698SJohn Baldwin	movl	%esi,%eax
760bc3d5698SJohn Baldwin	movl	%ebp,%edx
761bc3d5698SJohn Baldwin.L000nocpuid:
762bc3d5698SJohn Baldwin	popl	%edi
763bc3d5698SJohn Baldwin	popl	%esi
764bc3d5698SJohn Baldwin	popl	%ebx
765bc3d5698SJohn Baldwin	popl	%ebp
766bc3d5698SJohn Baldwin	ret
767bc3d5698SJohn Baldwin.size	OPENSSL_ia32_cpuid,.-.L_OPENSSL_ia32_cpuid_begin
768bc3d5698SJohn Baldwin.globl	OPENSSL_rdtsc
769bc3d5698SJohn Baldwin.type	OPENSSL_rdtsc,@function
770bc3d5698SJohn Baldwin.align	16
771bc3d5698SJohn BaldwinOPENSSL_rdtsc:
772bc3d5698SJohn Baldwin.L_OPENSSL_rdtsc_begin:
773*c0855eaaSJohn Baldwin	#ifdef __CET__
774*c0855eaaSJohn Baldwin
775*c0855eaaSJohn Baldwin.byte	243,15,30,251
776*c0855eaaSJohn Baldwin	#endif
777*c0855eaaSJohn Baldwin
778bc3d5698SJohn Baldwin	xorl	%eax,%eax
779bc3d5698SJohn Baldwin	xorl	%edx,%edx
780bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P,%ecx
781bc3d5698SJohn Baldwin	btl	$4,(%ecx)
782bc3d5698SJohn Baldwin	jnc	.L009notsc
783bc3d5698SJohn Baldwin	.byte	0x0f,0x31
784bc3d5698SJohn Baldwin.L009notsc:
785bc3d5698SJohn Baldwin	ret
786bc3d5698SJohn Baldwin.size	OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin
787bc3d5698SJohn Baldwin.globl	OPENSSL_instrument_halt
788bc3d5698SJohn Baldwin.type	OPENSSL_instrument_halt,@function
789bc3d5698SJohn Baldwin.align	16
790bc3d5698SJohn BaldwinOPENSSL_instrument_halt:
791bc3d5698SJohn Baldwin.L_OPENSSL_instrument_halt_begin:
792*c0855eaaSJohn Baldwin	#ifdef __CET__
793*c0855eaaSJohn Baldwin
794*c0855eaaSJohn Baldwin.byte	243,15,30,251
795*c0855eaaSJohn Baldwin	#endif
796*c0855eaaSJohn Baldwin
797bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P,%ecx
798bc3d5698SJohn Baldwin	btl	$4,(%ecx)
799bc3d5698SJohn Baldwin	jnc	.L010nohalt
800bc3d5698SJohn Baldwin.long	2421723150
801bc3d5698SJohn Baldwin	andl	$3,%eax
802bc3d5698SJohn Baldwin	jnz	.L010nohalt
803bc3d5698SJohn Baldwin	pushfl
804bc3d5698SJohn Baldwin	popl	%eax
805bc3d5698SJohn Baldwin	btl	$9,%eax
806bc3d5698SJohn Baldwin	jnc	.L010nohalt
807bc3d5698SJohn Baldwin	.byte	0x0f,0x31
808bc3d5698SJohn Baldwin	pushl	%edx
809bc3d5698SJohn Baldwin	pushl	%eax
810bc3d5698SJohn Baldwin	hlt
811bc3d5698SJohn Baldwin	.byte	0x0f,0x31
812bc3d5698SJohn Baldwin	subl	(%esp),%eax
813bc3d5698SJohn Baldwin	sbbl	4(%esp),%edx
814bc3d5698SJohn Baldwin	addl	$8,%esp
815bc3d5698SJohn Baldwin	ret
816bc3d5698SJohn Baldwin.L010nohalt:
817bc3d5698SJohn Baldwin	xorl	%eax,%eax
818bc3d5698SJohn Baldwin	xorl	%edx,%edx
819bc3d5698SJohn Baldwin	ret
820bc3d5698SJohn Baldwin.size	OPENSSL_instrument_halt,.-.L_OPENSSL_instrument_halt_begin
821bc3d5698SJohn Baldwin.globl	OPENSSL_far_spin
822bc3d5698SJohn Baldwin.type	OPENSSL_far_spin,@function
823bc3d5698SJohn Baldwin.align	16
824bc3d5698SJohn BaldwinOPENSSL_far_spin:
825bc3d5698SJohn Baldwin.L_OPENSSL_far_spin_begin:
826*c0855eaaSJohn Baldwin	#ifdef __CET__
827*c0855eaaSJohn Baldwin
828*c0855eaaSJohn Baldwin.byte	243,15,30,251
829*c0855eaaSJohn Baldwin	#endif
830*c0855eaaSJohn Baldwin
831bc3d5698SJohn Baldwin	pushfl
832bc3d5698SJohn Baldwin	popl	%eax
833bc3d5698SJohn Baldwin	btl	$9,%eax
834bc3d5698SJohn Baldwin	jnc	.L011nospin
835bc3d5698SJohn Baldwin	movl	4(%esp),%eax
836bc3d5698SJohn Baldwin	movl	8(%esp),%ecx
837bc3d5698SJohn Baldwin.long	2430111262
838bc3d5698SJohn Baldwin	xorl	%eax,%eax
839bc3d5698SJohn Baldwin	movl	(%ecx),%edx
840bc3d5698SJohn Baldwin	jmp	.L012spin
841bc3d5698SJohn Baldwin.align	16
842bc3d5698SJohn Baldwin.L012spin:
843bc3d5698SJohn Baldwin	incl	%eax
844bc3d5698SJohn Baldwin	cmpl	(%ecx),%edx
845bc3d5698SJohn Baldwin	je	.L012spin
846bc3d5698SJohn Baldwin.long	529567888
847bc3d5698SJohn Baldwin	ret
848bc3d5698SJohn Baldwin.L011nospin:
849bc3d5698SJohn Baldwin	xorl	%eax,%eax
850bc3d5698SJohn Baldwin	xorl	%edx,%edx
851bc3d5698SJohn Baldwin	ret
852bc3d5698SJohn Baldwin.size	OPENSSL_far_spin,.-.L_OPENSSL_far_spin_begin
853bc3d5698SJohn Baldwin.globl	OPENSSL_wipe_cpu
854bc3d5698SJohn Baldwin.type	OPENSSL_wipe_cpu,@function
855bc3d5698SJohn Baldwin.align	16
856bc3d5698SJohn BaldwinOPENSSL_wipe_cpu:
857bc3d5698SJohn Baldwin.L_OPENSSL_wipe_cpu_begin:
858*c0855eaaSJohn Baldwin	#ifdef __CET__
859*c0855eaaSJohn Baldwin
860*c0855eaaSJohn Baldwin.byte	243,15,30,251
861*c0855eaaSJohn Baldwin	#endif
862*c0855eaaSJohn Baldwin
863bc3d5698SJohn Baldwin	xorl	%eax,%eax
864bc3d5698SJohn Baldwin	xorl	%edx,%edx
865bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P,%ecx
866bc3d5698SJohn Baldwin	movl	(%ecx),%ecx
867bc3d5698SJohn Baldwin	btl	$1,(%ecx)
868bc3d5698SJohn Baldwin	jnc	.L013no_x87
869bc3d5698SJohn Baldwin	andl	$83886080,%ecx
870bc3d5698SJohn Baldwin	cmpl	$83886080,%ecx
871bc3d5698SJohn Baldwin	jne	.L014no_sse2
872bc3d5698SJohn Baldwin	pxor	%xmm0,%xmm0
873bc3d5698SJohn Baldwin	pxor	%xmm1,%xmm1
874bc3d5698SJohn Baldwin	pxor	%xmm2,%xmm2
875bc3d5698SJohn Baldwin	pxor	%xmm3,%xmm3
876bc3d5698SJohn Baldwin	pxor	%xmm4,%xmm4
877bc3d5698SJohn Baldwin	pxor	%xmm5,%xmm5
878bc3d5698SJohn Baldwin	pxor	%xmm6,%xmm6
879bc3d5698SJohn Baldwin	pxor	%xmm7,%xmm7
880bc3d5698SJohn Baldwin.L014no_sse2:
881bc3d5698SJohn Baldwin.long	4007259865,4007259865,4007259865,4007259865,2430851995
882bc3d5698SJohn Baldwin.L013no_x87:
883bc3d5698SJohn Baldwin	leal	4(%esp),%eax
884bc3d5698SJohn Baldwin	ret
885bc3d5698SJohn Baldwin.size	OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin
886bc3d5698SJohn Baldwin.globl	OPENSSL_atomic_add
887bc3d5698SJohn Baldwin.type	OPENSSL_atomic_add,@function
888bc3d5698SJohn Baldwin.align	16
889bc3d5698SJohn BaldwinOPENSSL_atomic_add:
890bc3d5698SJohn Baldwin.L_OPENSSL_atomic_add_begin:
891*c0855eaaSJohn Baldwin	#ifdef __CET__
892*c0855eaaSJohn Baldwin
893*c0855eaaSJohn Baldwin.byte	243,15,30,251
894*c0855eaaSJohn Baldwin	#endif
895*c0855eaaSJohn Baldwin
896bc3d5698SJohn Baldwin	movl	4(%esp),%edx
897bc3d5698SJohn Baldwin	movl	8(%esp),%ecx
898bc3d5698SJohn Baldwin	pushl	%ebx
899bc3d5698SJohn Baldwin	nop
900bc3d5698SJohn Baldwin	movl	(%edx),%eax
901bc3d5698SJohn Baldwin.L015spin:
902bc3d5698SJohn Baldwin	leal	(%eax,%ecx,1),%ebx
903bc3d5698SJohn Baldwin	nop
904bc3d5698SJohn Baldwin.long	447811568
905bc3d5698SJohn Baldwin	jne	.L015spin
906bc3d5698SJohn Baldwin	movl	%ebx,%eax
907bc3d5698SJohn Baldwin	popl	%ebx
908bc3d5698SJohn Baldwin	ret
909bc3d5698SJohn Baldwin.size	OPENSSL_atomic_add,.-.L_OPENSSL_atomic_add_begin
910bc3d5698SJohn Baldwin.globl	OPENSSL_cleanse
911bc3d5698SJohn Baldwin.type	OPENSSL_cleanse,@function
912bc3d5698SJohn Baldwin.align	16
913bc3d5698SJohn BaldwinOPENSSL_cleanse:
914bc3d5698SJohn Baldwin.L_OPENSSL_cleanse_begin:
915*c0855eaaSJohn Baldwin	#ifdef __CET__
916*c0855eaaSJohn Baldwin
917*c0855eaaSJohn Baldwin.byte	243,15,30,251
918*c0855eaaSJohn Baldwin	#endif
919*c0855eaaSJohn Baldwin
920bc3d5698SJohn Baldwin	movl	4(%esp),%edx
921bc3d5698SJohn Baldwin	movl	8(%esp),%ecx
922bc3d5698SJohn Baldwin	xorl	%eax,%eax
923bc3d5698SJohn Baldwin	cmpl	$7,%ecx
924bc3d5698SJohn Baldwin	jae	.L016lot
925bc3d5698SJohn Baldwin	cmpl	$0,%ecx
926bc3d5698SJohn Baldwin	je	.L017ret
927bc3d5698SJohn Baldwin.L018little:
928bc3d5698SJohn Baldwin	movb	%al,(%edx)
929bc3d5698SJohn Baldwin	subl	$1,%ecx
930bc3d5698SJohn Baldwin	leal	1(%edx),%edx
931bc3d5698SJohn Baldwin	jnz	.L018little
932bc3d5698SJohn Baldwin.L017ret:
933bc3d5698SJohn Baldwin	ret
934bc3d5698SJohn Baldwin.align	16
935bc3d5698SJohn Baldwin.L016lot:
936bc3d5698SJohn Baldwin	testl	$3,%edx
937bc3d5698SJohn Baldwin	jz	.L019aligned
938bc3d5698SJohn Baldwin	movb	%al,(%edx)
939bc3d5698SJohn Baldwin	leal	-1(%ecx),%ecx
940bc3d5698SJohn Baldwin	leal	1(%edx),%edx
941bc3d5698SJohn Baldwin	jmp	.L016lot
942bc3d5698SJohn Baldwin.L019aligned:
943bc3d5698SJohn Baldwin	movl	%eax,(%edx)
944bc3d5698SJohn Baldwin	leal	-4(%ecx),%ecx
945bc3d5698SJohn Baldwin	testl	$-4,%ecx
946bc3d5698SJohn Baldwin	leal	4(%edx),%edx
947bc3d5698SJohn Baldwin	jnz	.L019aligned
948bc3d5698SJohn Baldwin	cmpl	$0,%ecx
949bc3d5698SJohn Baldwin	jne	.L018little
950bc3d5698SJohn Baldwin	ret
951bc3d5698SJohn Baldwin.size	OPENSSL_cleanse,.-.L_OPENSSL_cleanse_begin
952bc3d5698SJohn Baldwin.globl	CRYPTO_memcmp
953bc3d5698SJohn Baldwin.type	CRYPTO_memcmp,@function
954bc3d5698SJohn Baldwin.align	16
955bc3d5698SJohn BaldwinCRYPTO_memcmp:
956bc3d5698SJohn Baldwin.L_CRYPTO_memcmp_begin:
957*c0855eaaSJohn Baldwin	#ifdef __CET__
958*c0855eaaSJohn Baldwin
959*c0855eaaSJohn Baldwin.byte	243,15,30,251
960*c0855eaaSJohn Baldwin	#endif
961*c0855eaaSJohn Baldwin
962bc3d5698SJohn Baldwin	pushl	%esi
963bc3d5698SJohn Baldwin	pushl	%edi
964bc3d5698SJohn Baldwin	movl	12(%esp),%esi
965bc3d5698SJohn Baldwin	movl	16(%esp),%edi
966bc3d5698SJohn Baldwin	movl	20(%esp),%ecx
967bc3d5698SJohn Baldwin	xorl	%eax,%eax
968bc3d5698SJohn Baldwin	xorl	%edx,%edx
969bc3d5698SJohn Baldwin	cmpl	$0,%ecx
970bc3d5698SJohn Baldwin	je	.L020no_data
971bc3d5698SJohn Baldwin.L021loop:
972bc3d5698SJohn Baldwin	movb	(%esi),%dl
973bc3d5698SJohn Baldwin	leal	1(%esi),%esi
974bc3d5698SJohn Baldwin	xorb	(%edi),%dl
975bc3d5698SJohn Baldwin	leal	1(%edi),%edi
976bc3d5698SJohn Baldwin	orb	%dl,%al
977bc3d5698SJohn Baldwin	decl	%ecx
978bc3d5698SJohn Baldwin	jnz	.L021loop
979bc3d5698SJohn Baldwin	negl	%eax
980bc3d5698SJohn Baldwin	shrl	$31,%eax
981bc3d5698SJohn Baldwin.L020no_data:
982bc3d5698SJohn Baldwin	popl	%edi
983bc3d5698SJohn Baldwin	popl	%esi
984bc3d5698SJohn Baldwin	ret
985bc3d5698SJohn Baldwin.size	CRYPTO_memcmp,.-.L_CRYPTO_memcmp_begin
986bc3d5698SJohn Baldwin.globl	OPENSSL_instrument_bus
987bc3d5698SJohn Baldwin.type	OPENSSL_instrument_bus,@function
988bc3d5698SJohn Baldwin.align	16
989bc3d5698SJohn BaldwinOPENSSL_instrument_bus:
990bc3d5698SJohn Baldwin.L_OPENSSL_instrument_bus_begin:
991*c0855eaaSJohn Baldwin	#ifdef __CET__
992*c0855eaaSJohn Baldwin
993*c0855eaaSJohn Baldwin.byte	243,15,30,251
994*c0855eaaSJohn Baldwin	#endif
995*c0855eaaSJohn Baldwin
996bc3d5698SJohn Baldwin	pushl	%ebp
997bc3d5698SJohn Baldwin	pushl	%ebx
998bc3d5698SJohn Baldwin	pushl	%esi
999bc3d5698SJohn Baldwin	pushl	%edi
1000bc3d5698SJohn Baldwin	movl	$0,%eax
1001bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P,%edx
1002bc3d5698SJohn Baldwin	btl	$4,(%edx)
1003bc3d5698SJohn Baldwin	jnc	.L022nogo
1004bc3d5698SJohn Baldwin	btl	$19,(%edx)
1005bc3d5698SJohn Baldwin	jnc	.L022nogo
1006bc3d5698SJohn Baldwin	movl	20(%esp),%edi
1007bc3d5698SJohn Baldwin	movl	24(%esp),%ecx
1008bc3d5698SJohn Baldwin	.byte	0x0f,0x31
1009bc3d5698SJohn Baldwin	movl	%eax,%esi
1010bc3d5698SJohn Baldwin	movl	$0,%ebx
1011bc3d5698SJohn Baldwin	clflush	(%edi)
1012bc3d5698SJohn Baldwin.byte	240
1013bc3d5698SJohn Baldwin	addl	%ebx,(%edi)
1014bc3d5698SJohn Baldwin	jmp	.L023loop
1015bc3d5698SJohn Baldwin.align	16
1016bc3d5698SJohn Baldwin.L023loop:
1017bc3d5698SJohn Baldwin	.byte	0x0f,0x31
1018bc3d5698SJohn Baldwin	movl	%eax,%edx
1019bc3d5698SJohn Baldwin	subl	%esi,%eax
1020bc3d5698SJohn Baldwin	movl	%edx,%esi
1021bc3d5698SJohn Baldwin	movl	%eax,%ebx
1022bc3d5698SJohn Baldwin	clflush	(%edi)
1023bc3d5698SJohn Baldwin.byte	240
1024bc3d5698SJohn Baldwin	addl	%eax,(%edi)
1025bc3d5698SJohn Baldwin	leal	4(%edi),%edi
1026bc3d5698SJohn Baldwin	subl	$1,%ecx
1027bc3d5698SJohn Baldwin	jnz	.L023loop
1028bc3d5698SJohn Baldwin	movl	24(%esp),%eax
1029bc3d5698SJohn Baldwin.L022nogo:
1030bc3d5698SJohn Baldwin	popl	%edi
1031bc3d5698SJohn Baldwin	popl	%esi
1032bc3d5698SJohn Baldwin	popl	%ebx
1033bc3d5698SJohn Baldwin	popl	%ebp
1034bc3d5698SJohn Baldwin	ret
1035bc3d5698SJohn Baldwin.size	OPENSSL_instrument_bus,.-.L_OPENSSL_instrument_bus_begin
1036bc3d5698SJohn Baldwin.globl	OPENSSL_instrument_bus2
1037bc3d5698SJohn Baldwin.type	OPENSSL_instrument_bus2,@function
1038bc3d5698SJohn Baldwin.align	16
1039bc3d5698SJohn BaldwinOPENSSL_instrument_bus2:
1040bc3d5698SJohn Baldwin.L_OPENSSL_instrument_bus2_begin:
1041*c0855eaaSJohn Baldwin	#ifdef __CET__
1042*c0855eaaSJohn Baldwin
1043*c0855eaaSJohn Baldwin.byte	243,15,30,251
1044*c0855eaaSJohn Baldwin	#endif
1045*c0855eaaSJohn Baldwin
1046bc3d5698SJohn Baldwin	pushl	%ebp
1047bc3d5698SJohn Baldwin	pushl	%ebx
1048bc3d5698SJohn Baldwin	pushl	%esi
1049bc3d5698SJohn Baldwin	pushl	%edi
1050bc3d5698SJohn Baldwin	movl	$0,%eax
1051bc3d5698SJohn Baldwin	leal	OPENSSL_ia32cap_P,%edx
1052bc3d5698SJohn Baldwin	btl	$4,(%edx)
1053bc3d5698SJohn Baldwin	jnc	.L024nogo
1054bc3d5698SJohn Baldwin	btl	$19,(%edx)
1055bc3d5698SJohn Baldwin	jnc	.L024nogo
1056bc3d5698SJohn Baldwin	movl	20(%esp),%edi
1057bc3d5698SJohn Baldwin	movl	24(%esp),%ecx
1058bc3d5698SJohn Baldwin	movl	28(%esp),%ebp
1059bc3d5698SJohn Baldwin	.byte	0x0f,0x31
1060bc3d5698SJohn Baldwin	movl	%eax,%esi
1061bc3d5698SJohn Baldwin	movl	$0,%ebx
1062bc3d5698SJohn Baldwin	clflush	(%edi)
1063bc3d5698SJohn Baldwin.byte	240
1064bc3d5698SJohn Baldwin	addl	%ebx,(%edi)
1065bc3d5698SJohn Baldwin	.byte	0x0f,0x31
1066bc3d5698SJohn Baldwin	movl	%eax,%edx
1067bc3d5698SJohn Baldwin	subl	%esi,%eax
1068bc3d5698SJohn Baldwin	movl	%edx,%esi
1069bc3d5698SJohn Baldwin	movl	%eax,%ebx
1070bc3d5698SJohn Baldwin	jmp	.L025loop2
1071bc3d5698SJohn Baldwin.align	16
1072bc3d5698SJohn Baldwin.L025loop2:
1073bc3d5698SJohn Baldwin	clflush	(%edi)
1074bc3d5698SJohn Baldwin.byte	240
1075bc3d5698SJohn Baldwin	addl	%eax,(%edi)
1076bc3d5698SJohn Baldwin	subl	$1,%ebp
1077bc3d5698SJohn Baldwin	jz	.L026done2
1078bc3d5698SJohn Baldwin	.byte	0x0f,0x31
1079bc3d5698SJohn Baldwin	movl	%eax,%edx
1080bc3d5698SJohn Baldwin	subl	%esi,%eax
1081bc3d5698SJohn Baldwin	movl	%edx,%esi
1082bc3d5698SJohn Baldwin	cmpl	%ebx,%eax
1083bc3d5698SJohn Baldwin	movl	%eax,%ebx
1084bc3d5698SJohn Baldwin	movl	$0,%edx
1085bc3d5698SJohn Baldwin	setne	%dl
1086bc3d5698SJohn Baldwin	subl	%edx,%ecx
1087bc3d5698SJohn Baldwin	leal	(%edi,%edx,4),%edi
1088bc3d5698SJohn Baldwin	jnz	.L025loop2
1089bc3d5698SJohn Baldwin.L026done2:
1090bc3d5698SJohn Baldwin	movl	24(%esp),%eax
1091bc3d5698SJohn Baldwin	subl	%ecx,%eax
1092bc3d5698SJohn Baldwin.L024nogo:
1093bc3d5698SJohn Baldwin	popl	%edi
1094bc3d5698SJohn Baldwin	popl	%esi
1095bc3d5698SJohn Baldwin	popl	%ebx
1096bc3d5698SJohn Baldwin	popl	%ebp
1097bc3d5698SJohn Baldwin	ret
1098bc3d5698SJohn Baldwin.size	OPENSSL_instrument_bus2,.-.L_OPENSSL_instrument_bus2_begin
1099bc3d5698SJohn Baldwin.globl	OPENSSL_ia32_rdrand_bytes
1100bc3d5698SJohn Baldwin.type	OPENSSL_ia32_rdrand_bytes,@function
1101bc3d5698SJohn Baldwin.align	16
1102bc3d5698SJohn BaldwinOPENSSL_ia32_rdrand_bytes:
1103bc3d5698SJohn Baldwin.L_OPENSSL_ia32_rdrand_bytes_begin:
1104*c0855eaaSJohn Baldwin	#ifdef __CET__
1105*c0855eaaSJohn Baldwin
1106*c0855eaaSJohn Baldwin.byte	243,15,30,251
1107*c0855eaaSJohn Baldwin	#endif
1108*c0855eaaSJohn Baldwin
1109bc3d5698SJohn Baldwin	pushl	%edi
1110bc3d5698SJohn Baldwin	pushl	%ebx
1111bc3d5698SJohn Baldwin	xorl	%eax,%eax
1112bc3d5698SJohn Baldwin	movl	12(%esp),%edi
1113bc3d5698SJohn Baldwin	movl	16(%esp),%ebx
1114bc3d5698SJohn Baldwin	cmpl	$0,%ebx
1115bc3d5698SJohn Baldwin	je	.L027done
1116bc3d5698SJohn Baldwin	movl	$8,%ecx
1117bc3d5698SJohn Baldwin.L028loop:
1118bc3d5698SJohn Baldwin.byte	15,199,242
1119bc3d5698SJohn Baldwin	jc	.L029break
1120bc3d5698SJohn Baldwin	loop	.L028loop
1121bc3d5698SJohn Baldwin	jmp	.L027done
1122bc3d5698SJohn Baldwin.align	16
1123bc3d5698SJohn Baldwin.L029break:
1124bc3d5698SJohn Baldwin	cmpl	$4,%ebx
1125bc3d5698SJohn Baldwin	jb	.L030tail
1126bc3d5698SJohn Baldwin	movl	%edx,(%edi)
1127bc3d5698SJohn Baldwin	leal	4(%edi),%edi
1128bc3d5698SJohn Baldwin	addl	$4,%eax
1129bc3d5698SJohn Baldwin	subl	$4,%ebx
1130bc3d5698SJohn Baldwin	jz	.L027done
1131bc3d5698SJohn Baldwin	movl	$8,%ecx
1132bc3d5698SJohn Baldwin	jmp	.L028loop
1133bc3d5698SJohn Baldwin.align	16
1134bc3d5698SJohn Baldwin.L030tail:
1135bc3d5698SJohn Baldwin	movb	%dl,(%edi)
1136bc3d5698SJohn Baldwin	leal	1(%edi),%edi
1137bc3d5698SJohn Baldwin	incl	%eax
1138bc3d5698SJohn Baldwin	shrl	$8,%edx
1139bc3d5698SJohn Baldwin	decl	%ebx
1140bc3d5698SJohn Baldwin	jnz	.L030tail
1141bc3d5698SJohn Baldwin.L027done:
1142bc3d5698SJohn Baldwin	xorl	%edx,%edx
1143bc3d5698SJohn Baldwin	popl	%ebx
1144bc3d5698SJohn Baldwin	popl	%edi
1145bc3d5698SJohn Baldwin	ret
1146bc3d5698SJohn Baldwin.size	OPENSSL_ia32_rdrand_bytes,.-.L_OPENSSL_ia32_rdrand_bytes_begin
1147bc3d5698SJohn Baldwin.globl	OPENSSL_ia32_rdseed_bytes
1148bc3d5698SJohn Baldwin.type	OPENSSL_ia32_rdseed_bytes,@function
1149bc3d5698SJohn Baldwin.align	16
1150bc3d5698SJohn BaldwinOPENSSL_ia32_rdseed_bytes:
1151bc3d5698SJohn Baldwin.L_OPENSSL_ia32_rdseed_bytes_begin:
1152*c0855eaaSJohn Baldwin	#ifdef __CET__
1153*c0855eaaSJohn Baldwin
1154*c0855eaaSJohn Baldwin.byte	243,15,30,251
1155*c0855eaaSJohn Baldwin	#endif
1156*c0855eaaSJohn Baldwin
1157bc3d5698SJohn Baldwin	pushl	%edi
1158bc3d5698SJohn Baldwin	pushl	%ebx
1159bc3d5698SJohn Baldwin	xorl	%eax,%eax
1160bc3d5698SJohn Baldwin	movl	12(%esp),%edi
1161bc3d5698SJohn Baldwin	movl	16(%esp),%ebx
1162bc3d5698SJohn Baldwin	cmpl	$0,%ebx
1163bc3d5698SJohn Baldwin	je	.L031done
1164bc3d5698SJohn Baldwin	movl	$8,%ecx
1165bc3d5698SJohn Baldwin.L032loop:
1166bc3d5698SJohn Baldwin.byte	15,199,250
1167bc3d5698SJohn Baldwin	jc	.L033break
1168bc3d5698SJohn Baldwin	loop	.L032loop
1169bc3d5698SJohn Baldwin	jmp	.L031done
1170bc3d5698SJohn Baldwin.align	16
1171bc3d5698SJohn Baldwin.L033break:
1172bc3d5698SJohn Baldwin	cmpl	$4,%ebx
1173bc3d5698SJohn Baldwin	jb	.L034tail
1174bc3d5698SJohn Baldwin	movl	%edx,(%edi)
1175bc3d5698SJohn Baldwin	leal	4(%edi),%edi
1176bc3d5698SJohn Baldwin	addl	$4,%eax
1177bc3d5698SJohn Baldwin	subl	$4,%ebx
1178bc3d5698SJohn Baldwin	jz	.L031done
1179bc3d5698SJohn Baldwin	movl	$8,%ecx
1180bc3d5698SJohn Baldwin	jmp	.L032loop
1181bc3d5698SJohn Baldwin.align	16
1182bc3d5698SJohn Baldwin.L034tail:
1183bc3d5698SJohn Baldwin	movb	%dl,(%edi)
1184bc3d5698SJohn Baldwin	leal	1(%edi),%edi
1185bc3d5698SJohn Baldwin	incl	%eax
1186bc3d5698SJohn Baldwin	shrl	$8,%edx
1187bc3d5698SJohn Baldwin	decl	%ebx
1188bc3d5698SJohn Baldwin	jnz	.L034tail
1189bc3d5698SJohn Baldwin.L031done:
1190bc3d5698SJohn Baldwin	xorl	%edx,%edx
1191bc3d5698SJohn Baldwin	popl	%ebx
1192bc3d5698SJohn Baldwin	popl	%edi
1193bc3d5698SJohn Baldwin	ret
1194bc3d5698SJohn Baldwin.size	OPENSSL_ia32_rdseed_bytes,.-.L_OPENSSL_ia32_rdseed_bytes_begin
1195bc3d5698SJohn Baldwin.hidden	OPENSSL_cpuid_setup
1196bc3d5698SJohn Baldwin.hidden	OPENSSL_ia32cap_P
1197bc3d5698SJohn Baldwin.comm	OPENSSL_ia32cap_P,16,4
1198bc3d5698SJohn Baldwin.section	.init
1199bc3d5698SJohn Baldwin	call	OPENSSL_cpuid_setup
1200*c0855eaaSJohn Baldwin
1201*c0855eaaSJohn Baldwin	.section ".note.gnu.property", "a"
1202*c0855eaaSJohn Baldwin	.p2align 2
1203*c0855eaaSJohn Baldwin	.long 1f - 0f
1204*c0855eaaSJohn Baldwin	.long 4f - 1f
1205*c0855eaaSJohn Baldwin	.long 5
1206*c0855eaaSJohn Baldwin0:
1207*c0855eaaSJohn Baldwin	.asciz "GNU"
1208*c0855eaaSJohn Baldwin1:
1209*c0855eaaSJohn Baldwin	.p2align 2
1210*c0855eaaSJohn Baldwin	.long 0xc0000002
1211*c0855eaaSJohn Baldwin	.long 3f - 2f
1212*c0855eaaSJohn Baldwin2:
1213*c0855eaaSJohn Baldwin	.long 3
1214*c0855eaaSJohn Baldwin3:
1215*c0855eaaSJohn Baldwin	.p2align 2
1216*c0855eaaSJohn Baldwin4:
1217bc3d5698SJohn Baldwin#endif
1218