ozone: evdev: Sync caps lock LED state to evdev
[chromium-blink-merge.git] / third_party / boringssl / mac-x86_64 / crypto / cpu-x86_64-asm.S
blob0dde04d8fcba7c1b058d373d73a5bda2ea2c1c7a
1 #if defined(__x86_64__)
2 .text   
4 .globl  _OPENSSL_ia32_cpuid
5 .private_extern _OPENSSL_ia32_cpuid
7 .p2align        4
8 _OPENSSL_ia32_cpuid:
11         movq    %rdi,%rdi
12         movq    %rbx,%r8
14         xorl    %eax,%eax
15         movl    %eax,8(%rdi)
16         cpuid
17         movl    %eax,%r11d
19         xorl    %eax,%eax
20         cmpl    $1970169159,%ebx
21         setne   %al
22         movl    %eax,%r9d
23         cmpl    $1231384169,%edx
24         setne   %al
25         orl     %eax,%r9d
26         cmpl    $1818588270,%ecx
27         setne   %al
28         orl     %eax,%r9d
29         jz      L$intel
31         cmpl    $1752462657,%ebx
32         setne   %al
33         movl    %eax,%r10d
34         cmpl    $1769238117,%edx
35         setne   %al
36         orl     %eax,%r10d
37         cmpl    $1145913699,%ecx
38         setne   %al
39         orl     %eax,%r10d
40         jnz     L$intel
45         movl    $2147483648,%eax
46         cpuid
49         cmpl    $2147483649,%eax
50         jb      L$intel
51         movl    %eax,%r10d
52         movl    $2147483649,%eax
53         cpuid
56         orl     %ecx,%r9d
57         andl    $2049,%r9d
59         cmpl    $2147483656,%r10d
60         jb      L$intel
62         movl    $2147483656,%eax
63         cpuid
65         movzbq  %cl,%r10
66         incq    %r10
68         movl    $1,%eax
69         cpuid
71         btl     $28,%edx
72         jnc     L$generic
73         shrl    $16,%ebx
74         cmpb    %r10b,%bl
75         ja      L$generic
76         andl    $4026531839,%edx
77         jmp     L$generic
79 L$intel:
80         cmpl    $4,%r11d
81         movl    $-1,%r10d
82         jb      L$nocacheinfo
84         movl    $4,%eax
85         movl    $0,%ecx
86         cpuid
87         movl    %eax,%r10d
88         shrl    $14,%r10d
89         andl    $4095,%r10d
91         cmpl    $7,%r11d
92         jb      L$nocacheinfo
94         movl    $7,%eax
95         xorl    %ecx,%ecx
96         cpuid
97         movl    %ebx,8(%rdi)
99 L$nocacheinfo:
100         movl    $1,%eax
101         cpuid
103         andl    $3220176895,%edx
104         cmpl    $0,%r9d
105         jne     L$notintel
106         orl     $1073741824,%edx
107 L$notintel:
108         btl     $28,%edx
109         jnc     L$generic
110         andl    $4026531839,%edx
111         cmpl    $0,%r10d
112         je      L$generic
114         orl     $268435456,%edx
115         shrl    $16,%ebx
116         cmpb    $1,%bl
117         ja      L$generic
118         andl    $4026531839,%edx
119 L$generic:
120         andl    $2048,%r9d
121         andl    $4294965247,%ecx
122         orl     %ecx,%r9d
124         movl    %edx,%r10d
125         btl     $27,%r9d
126         jnc     L$clear_avx
127         xorl    %ecx,%ecx
128 .byte   0x0f,0x01,0xd0
129         andl    $6,%eax
130         cmpl    $6,%eax
131         je      L$done
132 L$clear_avx:
133         movl    $4026525695,%eax
134         andl    %eax,%r9d
135         andl    $4294967263,8(%rdi)
136 L$done:
137         movl    %r9d,4(%rdi)
138         movl    %r10d,0(%rdi)
139         movq    %r8,%rbx
140         .byte   0xf3,0xc3
143 #endif