]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/i386/x86cpuid.S
Merge bmake-20180512
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / i386 / x86cpuid.S
1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from x86cpuid.pl. */
3 #ifdef PIC
4 .file   "x86cpuid.S"
5 .text
6 .globl  OPENSSL_ia32_cpuid
7 .type   OPENSSL_ia32_cpuid,@function
8 .align  16
9 OPENSSL_ia32_cpuid:
10 .L_OPENSSL_ia32_cpuid_begin:
11         pushl   %ebp
12         pushl   %ebx
13         pushl   %esi
14         pushl   %edi
15         xorl    %edx,%edx
16         pushfl
17         popl    %eax
18         movl    %eax,%ecx
19         xorl    $2097152,%eax
20         pushl   %eax
21         popfl
22         pushfl
23         popl    %eax
24         xorl    %eax,%ecx
25         xorl    %eax,%eax
26         movl    20(%esp),%esi
27         movl    %eax,8(%esi)
28         btl     $21,%ecx
29         jnc     .L000nocpuid
30         .byte   0x0f,0xa2
31         movl    %eax,%edi
32         xorl    %eax,%eax
33         cmpl    $1970169159,%ebx
34         setne   %al
35         movl    %eax,%ebp
36         cmpl    $1231384169,%edx
37         setne   %al
38         orl     %eax,%ebp
39         cmpl    $1818588270,%ecx
40         setne   %al
41         orl     %eax,%ebp
42         jz      .L001intel
43         cmpl    $1752462657,%ebx
44         setne   %al
45         movl    %eax,%esi
46         cmpl    $1769238117,%edx
47         setne   %al
48         orl     %eax,%esi
49         cmpl    $1145913699,%ecx
50         setne   %al
51         orl     %eax,%esi
52         jnz     .L001intel
53         movl    $2147483648,%eax
54         .byte   0x0f,0xa2
55         cmpl    $2147483649,%eax
56         jb      .L001intel
57         movl    %eax,%esi
58         movl    $2147483649,%eax
59         .byte   0x0f,0xa2
60         orl     %ecx,%ebp
61         andl    $2049,%ebp
62         cmpl    $2147483656,%esi
63         jb      .L001intel
64         movl    $2147483656,%eax
65         .byte   0x0f,0xa2
66         movzbl  %cl,%esi
67         incl    %esi
68         movl    $1,%eax
69         xorl    %ecx,%ecx
70         .byte   0x0f,0xa2
71         btl     $28,%edx
72         jnc     .L002generic
73         shrl    $16,%ebx
74         andl    $255,%ebx
75         cmpl    %esi,%ebx
76         ja      .L002generic
77         andl    $4026531839,%edx
78         jmp     .L002generic
79 .L001intel:
80         cmpl    $4,%edi
81         movl    $-1,%esi
82         jb      .L003nocacheinfo
83         movl    $4,%eax
84         movl    $0,%ecx
85         .byte   0x0f,0xa2
86         movl    %eax,%esi
87         shrl    $14,%esi
88         andl    $4095,%esi
89 .L003nocacheinfo:
90         movl    $1,%eax
91         xorl    %ecx,%ecx
92         .byte   0x0f,0xa2
93         andl    $3220176895,%edx
94         cmpl    $0,%ebp
95         jne     .L004notintel
96         orl     $1073741824,%edx
97         andb    $15,%ah
98         cmpb    $15,%ah
99         jne     .L004notintel
100         orl     $1048576,%edx
101 .L004notintel:
102         btl     $28,%edx
103         jnc     .L002generic
104         andl    $4026531839,%edx
105         cmpl    $0,%esi
106         je      .L002generic
107         orl     $268435456,%edx
108         shrl    $16,%ebx
109         cmpb    $1,%bl
110         ja      .L002generic
111         andl    $4026531839,%edx
112 .L002generic:
113         andl    $2048,%ebp
114         andl    $4294965247,%ecx
115         movl    %edx,%esi
116         orl     %ecx,%ebp
117         cmpl    $7,%edi
118         movl    20(%esp),%edi
119         jb      .L005no_extended_info
120         movl    $7,%eax
121         xorl    %ecx,%ecx
122         .byte   0x0f,0xa2
123         movl    %ebx,8(%edi)
124 .L005no_extended_info:
125         btl     $27,%ebp
126         jnc     .L006clear_avx
127         xorl    %ecx,%ecx
128 .byte   15,1,208
129         andl    $6,%eax
130         cmpl    $6,%eax
131         je      .L007done
132         cmpl    $2,%eax
133         je      .L006clear_avx
134 .L008clear_xmm:
135         andl    $4261412861,%ebp
136         andl    $4278190079,%esi
137 .L006clear_avx:
138         andl    $4026525695,%ebp
139         andl    $4294967263,8(%edi)
140 .L007done:
141         movl    %esi,%eax
142         movl    %ebp,%edx
143 .L000nocpuid:
144         popl    %edi
145         popl    %esi
146         popl    %ebx
147         popl    %ebp
148         ret
149 .size   OPENSSL_ia32_cpuid,.-.L_OPENSSL_ia32_cpuid_begin
150 .globl  OPENSSL_rdtsc
151 .type   OPENSSL_rdtsc,@function
152 .align  16
153 OPENSSL_rdtsc:
154 .L_OPENSSL_rdtsc_begin:
155         xorl    %eax,%eax
156         xorl    %edx,%edx
157         call    .L009PIC_me_up
158 .L009PIC_me_up:
159         popl    %ecx
160         leal    OPENSSL_ia32cap_P-.L009PIC_me_up(%ecx),%ecx
161         btl     $4,(%ecx)
162         jnc     .L010notsc
163         .byte   0x0f,0x31
164 .L010notsc:
165         ret
166 .size   OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin
167 .globl  OPENSSL_instrument_halt
168 .type   OPENSSL_instrument_halt,@function
169 .align  16
170 OPENSSL_instrument_halt:
171 .L_OPENSSL_instrument_halt_begin:
172         call    .L011PIC_me_up
173 .L011PIC_me_up:
174         popl    %ecx
175         leal    OPENSSL_ia32cap_P-.L011PIC_me_up(%ecx),%ecx
176         btl     $4,(%ecx)
177         jnc     .L012nohalt
178 .long   2421723150
179         andl    $3,%eax
180         jnz     .L012nohalt
181         pushfl
182         popl    %eax
183         btl     $9,%eax
184         jnc     .L012nohalt
185         .byte   0x0f,0x31
186         pushl   %edx
187         pushl   %eax
188         hlt
189         .byte   0x0f,0x31
190         subl    (%esp),%eax
191         sbbl    4(%esp),%edx
192         addl    $8,%esp
193         ret
194 .L012nohalt:
195         xorl    %eax,%eax
196         xorl    %edx,%edx
197         ret
198 .size   OPENSSL_instrument_halt,.-.L_OPENSSL_instrument_halt_begin
199 .globl  OPENSSL_far_spin
200 .type   OPENSSL_far_spin,@function
201 .align  16
202 OPENSSL_far_spin:
203 .L_OPENSSL_far_spin_begin:
204         pushfl
205         popl    %eax
206         btl     $9,%eax
207         jnc     .L013nospin
208         movl    4(%esp),%eax
209         movl    8(%esp),%ecx
210 .long   2430111262
211         xorl    %eax,%eax
212         movl    (%ecx),%edx
213         jmp     .L014spin
214 .align  16
215 .L014spin:
216         incl    %eax
217         cmpl    (%ecx),%edx
218         je      .L014spin
219 .long   529567888
220         ret
221 .L013nospin:
222         xorl    %eax,%eax
223         xorl    %edx,%edx
224         ret
225 .size   OPENSSL_far_spin,.-.L_OPENSSL_far_spin_begin
226 .globl  OPENSSL_wipe_cpu
227 .type   OPENSSL_wipe_cpu,@function
228 .align  16
229 OPENSSL_wipe_cpu:
230 .L_OPENSSL_wipe_cpu_begin:
231         xorl    %eax,%eax
232         xorl    %edx,%edx
233         call    .L015PIC_me_up
234 .L015PIC_me_up:
235         popl    %ecx
236         leal    OPENSSL_ia32cap_P-.L015PIC_me_up(%ecx),%ecx
237         movl    (%ecx),%ecx
238         btl     $1,(%ecx)
239         jnc     .L016no_x87
240         andl    $83886080,%ecx
241         cmpl    $83886080,%ecx
242         jne     .L017no_sse2
243         pxor    %xmm0,%xmm0
244         pxor    %xmm1,%xmm1
245         pxor    %xmm2,%xmm2
246         pxor    %xmm3,%xmm3
247         pxor    %xmm4,%xmm4
248         pxor    %xmm5,%xmm5
249         pxor    %xmm6,%xmm6
250         pxor    %xmm7,%xmm7
251 .L017no_sse2:
252 .long   4007259865,4007259865,4007259865,4007259865,2430851995
253 .L016no_x87:
254         leal    4(%esp),%eax
255         ret
256 .size   OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin
257 .globl  OPENSSL_atomic_add
258 .type   OPENSSL_atomic_add,@function
259 .align  16
260 OPENSSL_atomic_add:
261 .L_OPENSSL_atomic_add_begin:
262         movl    4(%esp),%edx
263         movl    8(%esp),%ecx
264         pushl   %ebx
265         nop
266         movl    (%edx),%eax
267 .L018spin:
268         leal    (%eax,%ecx,1),%ebx
269         nop
270 .long   447811568
271         jne     .L018spin
272         movl    %ebx,%eax
273         popl    %ebx
274         ret
275 .size   OPENSSL_atomic_add,.-.L_OPENSSL_atomic_add_begin
276 .globl  OPENSSL_indirect_call
277 .type   OPENSSL_indirect_call,@function
278 .align  16
279 OPENSSL_indirect_call:
280 .L_OPENSSL_indirect_call_begin:
281         pushl   %ebp
282         movl    %esp,%ebp
283         subl    $28,%esp
284         movl    12(%ebp),%ecx
285         movl    %ecx,(%esp)
286         movl    16(%ebp),%edx
287         movl    %edx,4(%esp)
288         movl    20(%ebp),%eax
289         movl    %eax,8(%esp)
290         movl    24(%ebp),%eax
291         movl    %eax,12(%esp)
292         movl    28(%ebp),%eax
293         movl    %eax,16(%esp)
294         movl    32(%ebp),%eax
295         movl    %eax,20(%esp)
296         movl    36(%ebp),%eax
297         movl    %eax,24(%esp)
298         call    *8(%ebp)
299         movl    %ebp,%esp
300         popl    %ebp
301         ret
302 .size   OPENSSL_indirect_call,.-.L_OPENSSL_indirect_call_begin
303 .globl  OPENSSL_cleanse
304 .type   OPENSSL_cleanse,@function
305 .align  16
306 OPENSSL_cleanse:
307 .L_OPENSSL_cleanse_begin:
308         movl    4(%esp),%edx
309         movl    8(%esp),%ecx
310         xorl    %eax,%eax
311         cmpl    $7,%ecx
312         jae     .L019lot
313         cmpl    $0,%ecx
314         je      .L020ret
315 .L021little:
316         movb    %al,(%edx)
317         subl    $1,%ecx
318         leal    1(%edx),%edx
319         jnz     .L021little
320 .L020ret:
321         ret
322 .align  16
323 .L019lot:
324         testl   $3,%edx
325         jz      .L022aligned
326         movb    %al,(%edx)
327         leal    -1(%ecx),%ecx
328         leal    1(%edx),%edx
329         jmp     .L019lot
330 .L022aligned:
331         movl    %eax,(%edx)
332         leal    -4(%ecx),%ecx
333         testl   $-4,%ecx
334         leal    4(%edx),%edx
335         jnz     .L022aligned
336         cmpl    $0,%ecx
337         jne     .L021little
338         ret
339 .size   OPENSSL_cleanse,.-.L_OPENSSL_cleanse_begin
340 .globl  OPENSSL_ia32_rdrand
341 .type   OPENSSL_ia32_rdrand,@function
342 .align  16
343 OPENSSL_ia32_rdrand:
344 .L_OPENSSL_ia32_rdrand_begin:
345         movl    $8,%ecx
346 .L023loop:
347 .byte   15,199,240
348         jc      .L024break
349         loop    .L023loop
350 .L024break:
351         cmpl    $0,%eax
352         cmovel  %ecx,%eax
353         ret
354 .size   OPENSSL_ia32_rdrand,.-.L_OPENSSL_ia32_rdrand_begin
355 .globl  OPENSSL_ia32_rdseed
356 .type   OPENSSL_ia32_rdseed,@function
357 .align  16
358 OPENSSL_ia32_rdseed:
359 .L_OPENSSL_ia32_rdseed_begin:
360         movl    $8,%ecx
361 .L025loop:
362 .byte   15,199,248
363         jc      .L026break
364         loop    .L025loop
365 .L026break:
366         cmpl    $0,%eax
367         cmovel  %ecx,%eax
368         ret
369 .size   OPENSSL_ia32_rdseed,.-.L_OPENSSL_ia32_rdseed_begin
370 .hidden OPENSSL_cpuid_setup
371 .hidden OPENSSL_ia32cap_P
372 .comm   OPENSSL_ia32cap_P,16,4
373 .section        .init
374         call    OPENSSL_cpuid_setup
375 #else
376 .file   "x86cpuid.S"
377 .text
378 .globl  OPENSSL_ia32_cpuid
379 .type   OPENSSL_ia32_cpuid,@function
380 .align  16
381 OPENSSL_ia32_cpuid:
382 .L_OPENSSL_ia32_cpuid_begin:
383         pushl   %ebp
384         pushl   %ebx
385         pushl   %esi
386         pushl   %edi
387         xorl    %edx,%edx
388         pushfl
389         popl    %eax
390         movl    %eax,%ecx
391         xorl    $2097152,%eax
392         pushl   %eax
393         popfl
394         pushfl
395         popl    %eax
396         xorl    %eax,%ecx
397         xorl    %eax,%eax
398         movl    20(%esp),%esi
399         movl    %eax,8(%esi)
400         btl     $21,%ecx
401         jnc     .L000nocpuid
402         .byte   0x0f,0xa2
403         movl    %eax,%edi
404         xorl    %eax,%eax
405         cmpl    $1970169159,%ebx
406         setne   %al
407         movl    %eax,%ebp
408         cmpl    $1231384169,%edx
409         setne   %al
410         orl     %eax,%ebp
411         cmpl    $1818588270,%ecx
412         setne   %al
413         orl     %eax,%ebp
414         jz      .L001intel
415         cmpl    $1752462657,%ebx
416         setne   %al
417         movl    %eax,%esi
418         cmpl    $1769238117,%edx
419         setne   %al
420         orl     %eax,%esi
421         cmpl    $1145913699,%ecx
422         setne   %al
423         orl     %eax,%esi
424         jnz     .L001intel
425         movl    $2147483648,%eax
426         .byte   0x0f,0xa2
427         cmpl    $2147483649,%eax
428         jb      .L001intel
429         movl    %eax,%esi
430         movl    $2147483649,%eax
431         .byte   0x0f,0xa2
432         orl     %ecx,%ebp
433         andl    $2049,%ebp
434         cmpl    $2147483656,%esi
435         jb      .L001intel
436         movl    $2147483656,%eax
437         .byte   0x0f,0xa2
438         movzbl  %cl,%esi
439         incl    %esi
440         movl    $1,%eax
441         xorl    %ecx,%ecx
442         .byte   0x0f,0xa2
443         btl     $28,%edx
444         jnc     .L002generic
445         shrl    $16,%ebx
446         andl    $255,%ebx
447         cmpl    %esi,%ebx
448         ja      .L002generic
449         andl    $4026531839,%edx
450         jmp     .L002generic
451 .L001intel:
452         cmpl    $4,%edi
453         movl    $-1,%esi
454         jb      .L003nocacheinfo
455         movl    $4,%eax
456         movl    $0,%ecx
457         .byte   0x0f,0xa2
458         movl    %eax,%esi
459         shrl    $14,%esi
460         andl    $4095,%esi
461 .L003nocacheinfo:
462         movl    $1,%eax
463         xorl    %ecx,%ecx
464         .byte   0x0f,0xa2
465         andl    $3220176895,%edx
466         cmpl    $0,%ebp
467         jne     .L004notintel
468         orl     $1073741824,%edx
469         andb    $15,%ah
470         cmpb    $15,%ah
471         jne     .L004notintel
472         orl     $1048576,%edx
473 .L004notintel:
474         btl     $28,%edx
475         jnc     .L002generic
476         andl    $4026531839,%edx
477         cmpl    $0,%esi
478         je      .L002generic
479         orl     $268435456,%edx
480         shrl    $16,%ebx
481         cmpb    $1,%bl
482         ja      .L002generic
483         andl    $4026531839,%edx
484 .L002generic:
485         andl    $2048,%ebp
486         andl    $4294965247,%ecx
487         movl    %edx,%esi
488         orl     %ecx,%ebp
489         cmpl    $7,%edi
490         movl    20(%esp),%edi
491         jb      .L005no_extended_info
492         movl    $7,%eax
493         xorl    %ecx,%ecx
494         .byte   0x0f,0xa2
495         movl    %ebx,8(%edi)
496 .L005no_extended_info:
497         btl     $27,%ebp
498         jnc     .L006clear_avx
499         xorl    %ecx,%ecx
500 .byte   15,1,208
501         andl    $6,%eax
502         cmpl    $6,%eax
503         je      .L007done
504         cmpl    $2,%eax
505         je      .L006clear_avx
506 .L008clear_xmm:
507         andl    $4261412861,%ebp
508         andl    $4278190079,%esi
509 .L006clear_avx:
510         andl    $4026525695,%ebp
511         andl    $4294967263,8(%edi)
512 .L007done:
513         movl    %esi,%eax
514         movl    %ebp,%edx
515 .L000nocpuid:
516         popl    %edi
517         popl    %esi
518         popl    %ebx
519         popl    %ebp
520         ret
521 .size   OPENSSL_ia32_cpuid,.-.L_OPENSSL_ia32_cpuid_begin
522 .globl  OPENSSL_rdtsc
523 .type   OPENSSL_rdtsc,@function
524 .align  16
525 OPENSSL_rdtsc:
526 .L_OPENSSL_rdtsc_begin:
527         xorl    %eax,%eax
528         xorl    %edx,%edx
529         leal    OPENSSL_ia32cap_P,%ecx
530         btl     $4,(%ecx)
531         jnc     .L009notsc
532         .byte   0x0f,0x31
533 .L009notsc:
534         ret
535 .size   OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin
536 .globl  OPENSSL_instrument_halt
537 .type   OPENSSL_instrument_halt,@function
538 .align  16
539 OPENSSL_instrument_halt:
540 .L_OPENSSL_instrument_halt_begin:
541         leal    OPENSSL_ia32cap_P,%ecx
542         btl     $4,(%ecx)
543         jnc     .L010nohalt
544 .long   2421723150
545         andl    $3,%eax
546         jnz     .L010nohalt
547         pushfl
548         popl    %eax
549         btl     $9,%eax
550         jnc     .L010nohalt
551         .byte   0x0f,0x31
552         pushl   %edx
553         pushl   %eax
554         hlt
555         .byte   0x0f,0x31
556         subl    (%esp),%eax
557         sbbl    4(%esp),%edx
558         addl    $8,%esp
559         ret
560 .L010nohalt:
561         xorl    %eax,%eax
562         xorl    %edx,%edx
563         ret
564 .size   OPENSSL_instrument_halt,.-.L_OPENSSL_instrument_halt_begin
565 .globl  OPENSSL_far_spin
566 .type   OPENSSL_far_spin,@function
567 .align  16
568 OPENSSL_far_spin:
569 .L_OPENSSL_far_spin_begin:
570         pushfl
571         popl    %eax
572         btl     $9,%eax
573         jnc     .L011nospin
574         movl    4(%esp),%eax
575         movl    8(%esp),%ecx
576 .long   2430111262
577         xorl    %eax,%eax
578         movl    (%ecx),%edx
579         jmp     .L012spin
580 .align  16
581 .L012spin:
582         incl    %eax
583         cmpl    (%ecx),%edx
584         je      .L012spin
585 .long   529567888
586         ret
587 .L011nospin:
588         xorl    %eax,%eax
589         xorl    %edx,%edx
590         ret
591 .size   OPENSSL_far_spin,.-.L_OPENSSL_far_spin_begin
592 .globl  OPENSSL_wipe_cpu
593 .type   OPENSSL_wipe_cpu,@function
594 .align  16
595 OPENSSL_wipe_cpu:
596 .L_OPENSSL_wipe_cpu_begin:
597         xorl    %eax,%eax
598         xorl    %edx,%edx
599         leal    OPENSSL_ia32cap_P,%ecx
600         movl    (%ecx),%ecx
601         btl     $1,(%ecx)
602         jnc     .L013no_x87
603         andl    $83886080,%ecx
604         cmpl    $83886080,%ecx
605         jne     .L014no_sse2
606         pxor    %xmm0,%xmm0
607         pxor    %xmm1,%xmm1
608         pxor    %xmm2,%xmm2
609         pxor    %xmm3,%xmm3
610         pxor    %xmm4,%xmm4
611         pxor    %xmm5,%xmm5
612         pxor    %xmm6,%xmm6
613         pxor    %xmm7,%xmm7
614 .L014no_sse2:
615 .long   4007259865,4007259865,4007259865,4007259865,2430851995
616 .L013no_x87:
617         leal    4(%esp),%eax
618         ret
619 .size   OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin
620 .globl  OPENSSL_atomic_add
621 .type   OPENSSL_atomic_add,@function
622 .align  16
623 OPENSSL_atomic_add:
624 .L_OPENSSL_atomic_add_begin:
625         movl    4(%esp),%edx
626         movl    8(%esp),%ecx
627         pushl   %ebx
628         nop
629         movl    (%edx),%eax
630 .L015spin:
631         leal    (%eax,%ecx,1),%ebx
632         nop
633 .long   447811568
634         jne     .L015spin
635         movl    %ebx,%eax
636         popl    %ebx
637         ret
638 .size   OPENSSL_atomic_add,.-.L_OPENSSL_atomic_add_begin
639 .globl  OPENSSL_indirect_call
640 .type   OPENSSL_indirect_call,@function
641 .align  16
642 OPENSSL_indirect_call:
643 .L_OPENSSL_indirect_call_begin:
644         pushl   %ebp
645         movl    %esp,%ebp
646         subl    $28,%esp
647         movl    12(%ebp),%ecx
648         movl    %ecx,(%esp)
649         movl    16(%ebp),%edx
650         movl    %edx,4(%esp)
651         movl    20(%ebp),%eax
652         movl    %eax,8(%esp)
653         movl    24(%ebp),%eax
654         movl    %eax,12(%esp)
655         movl    28(%ebp),%eax
656         movl    %eax,16(%esp)
657         movl    32(%ebp),%eax
658         movl    %eax,20(%esp)
659         movl    36(%ebp),%eax
660         movl    %eax,24(%esp)
661         call    *8(%ebp)
662         movl    %ebp,%esp
663         popl    %ebp
664         ret
665 .size   OPENSSL_indirect_call,.-.L_OPENSSL_indirect_call_begin
666 .globl  OPENSSL_cleanse
667 .type   OPENSSL_cleanse,@function
668 .align  16
669 OPENSSL_cleanse:
670 .L_OPENSSL_cleanse_begin:
671         movl    4(%esp),%edx
672         movl    8(%esp),%ecx
673         xorl    %eax,%eax
674         cmpl    $7,%ecx
675         jae     .L016lot
676         cmpl    $0,%ecx
677         je      .L017ret
678 .L018little:
679         movb    %al,(%edx)
680         subl    $1,%ecx
681         leal    1(%edx),%edx
682         jnz     .L018little
683 .L017ret:
684         ret
685 .align  16
686 .L016lot:
687         testl   $3,%edx
688         jz      .L019aligned
689         movb    %al,(%edx)
690         leal    -1(%ecx),%ecx
691         leal    1(%edx),%edx
692         jmp     .L016lot
693 .L019aligned:
694         movl    %eax,(%edx)
695         leal    -4(%ecx),%ecx
696         testl   $-4,%ecx
697         leal    4(%edx),%edx
698         jnz     .L019aligned
699         cmpl    $0,%ecx
700         jne     .L018little
701         ret
702 .size   OPENSSL_cleanse,.-.L_OPENSSL_cleanse_begin
703 .globl  OPENSSL_ia32_rdrand
704 .type   OPENSSL_ia32_rdrand,@function
705 .align  16
706 OPENSSL_ia32_rdrand:
707 .L_OPENSSL_ia32_rdrand_begin:
708         movl    $8,%ecx
709 .L020loop:
710 .byte   15,199,240
711         jc      .L021break
712         loop    .L020loop
713 .L021break:
714         cmpl    $0,%eax
715         cmovel  %ecx,%eax
716         ret
717 .size   OPENSSL_ia32_rdrand,.-.L_OPENSSL_ia32_rdrand_begin
718 .globl  OPENSSL_ia32_rdseed
719 .type   OPENSSL_ia32_rdseed,@function
720 .align  16
721 OPENSSL_ia32_rdseed:
722 .L_OPENSSL_ia32_rdseed_begin:
723         movl    $8,%ecx
724 .L022loop:
725 .byte   15,199,248
726         jc      .L023break
727         loop    .L022loop
728 .L023break:
729         cmpl    $0,%eax
730         cmovel  %ecx,%eax
731         ret
732 .size   OPENSSL_ia32_rdseed,.-.L_OPENSSL_ia32_rdseed_begin
733 .hidden OPENSSL_cpuid_setup
734 .hidden OPENSSL_ia32cap_P
735 .comm   OPENSSL_ia32cap_P,16,4
736 .section        .init
737         call    OPENSSL_cpuid_setup
738 #endif