1*c0909341SAndroid Build Coastguard Worker; Copyright © 2018, VideoLAN and dav1d authors 2*c0909341SAndroid Build Coastguard Worker; Copyright © 2018, Two Orioles, LLC 3*c0909341SAndroid Build Coastguard Worker; All rights reserved. 4*c0909341SAndroid Build Coastguard Worker; 5*c0909341SAndroid Build Coastguard Worker; Redistribution and use in source and binary forms, with or without 6*c0909341SAndroid Build Coastguard Worker; modification, are permitted provided that the following conditions are met: 7*c0909341SAndroid Build Coastguard Worker; 8*c0909341SAndroid Build Coastguard Worker; 1. Redistributions of source code must retain the above copyright notice, this 9*c0909341SAndroid Build Coastguard Worker; list of conditions and the following disclaimer. 10*c0909341SAndroid Build Coastguard Worker; 11*c0909341SAndroid Build Coastguard Worker; 2. Redistributions in binary form must reproduce the above copyright notice, 12*c0909341SAndroid Build Coastguard Worker; this list of conditions and the following disclaimer in the documentation 13*c0909341SAndroid Build Coastguard Worker; and/or other materials provided with the distribution. 14*c0909341SAndroid Build Coastguard Worker; 15*c0909341SAndroid Build Coastguard Worker; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16*c0909341SAndroid Build Coastguard Worker; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17*c0909341SAndroid Build Coastguard Worker; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18*c0909341SAndroid Build Coastguard Worker; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 19*c0909341SAndroid Build Coastguard Worker; ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20*c0909341SAndroid Build Coastguard Worker; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21*c0909341SAndroid Build Coastguard Worker; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22*c0909341SAndroid Build Coastguard Worker; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23*c0909341SAndroid Build Coastguard Worker; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24*c0909341SAndroid Build Coastguard Worker; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25*c0909341SAndroid Build Coastguard Worker 26*c0909341SAndroid Build Coastguard Worker%include "config.asm" 27*c0909341SAndroid Build Coastguard Worker%include "ext/x86/x86inc.asm" 28*c0909341SAndroid Build Coastguard Worker 29*c0909341SAndroid Build Coastguard WorkerSECTION .text 30*c0909341SAndroid Build Coastguard Worker 31*c0909341SAndroid Build Coastguard Workercglobal cpu_cpuid, 0, 5, 0, regs, leaf, subleaf 32*c0909341SAndroid Build Coastguard Worker mov r4, regsmp 33*c0909341SAndroid Build Coastguard Worker mov eax, leafm 34*c0909341SAndroid Build Coastguard Worker mov ecx, subleafm 35*c0909341SAndroid Build Coastguard Worker%if ARCH_X86_64 36*c0909341SAndroid Build Coastguard Worker mov r5, rbx 37*c0909341SAndroid Build Coastguard Worker%endif 38*c0909341SAndroid Build Coastguard Worker cpuid 39*c0909341SAndroid Build Coastguard Worker mov [r4+4*0], eax 40*c0909341SAndroid Build Coastguard Worker mov [r4+4*1], ebx 41*c0909341SAndroid Build Coastguard Worker mov [r4+4*2], edx 42*c0909341SAndroid Build Coastguard Worker mov [r4+4*3], ecx 43*c0909341SAndroid Build Coastguard Worker%if ARCH_X86_64 44*c0909341SAndroid Build Coastguard Worker mov rbx, r5 45*c0909341SAndroid Build Coastguard Worker%endif 46*c0909341SAndroid Build Coastguard Worker RET 47*c0909341SAndroid Build Coastguard Worker 48*c0909341SAndroid Build Coastguard Workercglobal cpu_xgetbv, 0, 0, 0, xcr 49*c0909341SAndroid Build Coastguard Worker movifnidn ecx, xcrm 50*c0909341SAndroid Build Coastguard Worker xgetbv 51*c0909341SAndroid Build Coastguard Worker%if ARCH_X86_64 52*c0909341SAndroid Build Coastguard Worker shl rdx, 32 53*c0909341SAndroid Build Coastguard Worker or rax, rdx 54*c0909341SAndroid Build Coastguard Worker%endif 55*c0909341SAndroid Build Coastguard Worker RET 56