| Index: third_party/boringssl/linux-x86_64/crypto/cpu-x86_64-asm.S
|
| diff --git a/third_party/boringssl/linux-x86_64/crypto/cpu-x86_64-asm.S b/third_party/boringssl/linux-x86_64/crypto/cpu-x86_64-asm.S
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9eef154e9e7eb2809556231b112d54dbd3348496
|
| --- /dev/null
|
| +++ b/third_party/boringssl/linux-x86_64/crypto/cpu-x86_64-asm.S
|
| @@ -0,0 +1,143 @@
|
| +#if defined(__x86_64__)
|
| +.text
|
| +
|
| +.globl OPENSSL_ia32_cpuid
|
| +.hidden OPENSSL_ia32_cpuid
|
| +.type OPENSSL_ia32_cpuid,@function
|
| +.align 16
|
| +OPENSSL_ia32_cpuid:
|
| +
|
| +
|
| + movq %rdi,%rdi
|
| + movq %rbx,%r8
|
| +
|
| + xorl %eax,%eax
|
| + movl %eax,8(%rdi)
|
| + cpuid
|
| + movl %eax,%r11d
|
| +
|
| + xorl %eax,%eax
|
| + cmpl $1970169159,%ebx
|
| + setne %al
|
| + movl %eax,%r9d
|
| + cmpl $1231384169,%edx
|
| + setne %al
|
| + orl %eax,%r9d
|
| + cmpl $1818588270,%ecx
|
| + setne %al
|
| + orl %eax,%r9d
|
| + jz .Lintel
|
| +
|
| + cmpl $1752462657,%ebx
|
| + setne %al
|
| + movl %eax,%r10d
|
| + cmpl $1769238117,%edx
|
| + setne %al
|
| + orl %eax,%r10d
|
| + cmpl $1145913699,%ecx
|
| + setne %al
|
| + orl %eax,%r10d
|
| + jnz .Lintel
|
| +
|
| +
|
| +
|
| +
|
| + movl $2147483648,%eax
|
| + cpuid
|
| +
|
| +
|
| + cmpl $2147483649,%eax
|
| + jb .Lintel
|
| + movl %eax,%r10d
|
| + movl $2147483649,%eax
|
| + cpuid
|
| +
|
| +
|
| + orl %ecx,%r9d
|
| + andl $2049,%r9d
|
| +
|
| + cmpl $2147483656,%r10d
|
| + jb .Lintel
|
| +
|
| + movl $2147483656,%eax
|
| + cpuid
|
| +
|
| + movzbq %cl,%r10
|
| + incq %r10
|
| +
|
| + movl $1,%eax
|
| + cpuid
|
| +
|
| + btl $28,%edx
|
| + jnc .Lgeneric
|
| + shrl $16,%ebx
|
| + cmpb %r10b,%bl
|
| + ja .Lgeneric
|
| + andl $4026531839,%edx
|
| + jmp .Lgeneric
|
| +
|
| +.Lintel:
|
| + cmpl $4,%r11d
|
| + movl $-1,%r10d
|
| + jb .Lnocacheinfo
|
| +
|
| + movl $4,%eax
|
| + movl $0,%ecx
|
| + cpuid
|
| + movl %eax,%r10d
|
| + shrl $14,%r10d
|
| + andl $4095,%r10d
|
| +
|
| + cmpl $7,%r11d
|
| + jb .Lnocacheinfo
|
| +
|
| + movl $7,%eax
|
| + xorl %ecx,%ecx
|
| + cpuid
|
| + movl %ebx,8(%rdi)
|
| +
|
| +.Lnocacheinfo:
|
| + movl $1,%eax
|
| + cpuid
|
| +
|
| + andl $3220176895,%edx
|
| + cmpl $0,%r9d
|
| + jne .Lnotintel
|
| + orl $1073741824,%edx
|
| +.Lnotintel:
|
| + btl $28,%edx
|
| + jnc .Lgeneric
|
| + andl $4026531839,%edx
|
| + cmpl $0,%r10d
|
| + je .Lgeneric
|
| +
|
| + orl $268435456,%edx
|
| + shrl $16,%ebx
|
| + cmpb $1,%bl
|
| + ja .Lgeneric
|
| + andl $4026531839,%edx
|
| +.Lgeneric:
|
| + andl $2048,%r9d
|
| + andl $4294965247,%ecx
|
| + orl %ecx,%r9d
|
| +
|
| + movl %edx,%r10d
|
| + btl $27,%r9d
|
| + jnc .Lclear_avx
|
| + xorl %ecx,%ecx
|
| +.byte 0x0f,0x01,0xd0
|
| + andl $6,%eax
|
| + cmpl $6,%eax
|
| + je .Ldone
|
| +.Lclear_avx:
|
| + movl $4026525695,%eax
|
| + andl %eax,%r9d
|
| + andl $4294967263,8(%rdi)
|
| +.Ldone:
|
| + movl %r9d,4(%rdi)
|
| + movl %r10d,0(%rdi)
|
| + movq %r8,%rbx
|
| + .byte 0xf3,0xc3
|
| +.size OPENSSL_ia32_cpuid,.-OPENSSL_ia32_cpuid
|
| +
|
| +#endif
|
|
|