o 6ay@sddlZddlZddlZddlZddlmZddZGdddZejdZ e Z e de ej Z ejje p;e d d Gd d d eZe d e ej Zejje pWe dd GdddeZe de ej Zejje pse dd GdddeZdS)N)__cpu_features__c Cs$d}t|t|}}||krdSttdd}ztdd }|d}Wdn1s/wYWntyK}z t|}WYd}~nd}~wwzddl}|jdgtd d d } | } Wntyw}z t|} WYd}~nd}~wwddl } | j d ||| fd d} t d|||| f)NT' /proc/cpuinforir /bin/true1 LD_SHOW_AUXVenva ########################################### ### Extra debugging information ########################################### ------------------------------------------- --- NumPy Detections ------------------------------------------- %s ------------------------------------------- --- SYS / CPUINFO ------------------------------------------- %s.... ------------------------------------------- --- SYS / AUXV ------------------------------------------- %s  )prefixz9Failure Detection NAME: '%s' ACTUAL: %s DESIRED: %s %s) strrreplaceopenread Exception subprocess check_outputdictdecodetextwrapindentAssertionError) actualdesiredfname__tracebackhide__detectedfdcpuinfoerrrauxvr error_reportr%D/usr/lib/python3/dist-packages/numpy/core/tests/test_cpu_features.pyassert_features_equalsB    r'c@sNeZdZgZiZiZeZddZddZ ddZ ddZ d d Z d d Z d S) AbstractTestcCsdSNr%selfr%r%r& load_flags9szAbstractTest.load_flagscstjD]\}}fdd|D}tt|t||q jD]}|}t|}t|||q%dS)Ncsg|]}|qSr%)cpu_have).0fr*r%r& ?sz.AbstractTest.test_features..) r,features_groupsitemsr'rgetallfeaturesr-)r+gnamer5 test_features feature_namer-npy_haver%r*r&r7<s   zAbstractTest.test_featurescCs@|j||}t|tr||jvS|D] }||jvrdSqdS)NTF) features_mapr3 isinstancerfeatures_flags)r+r8 map_namesr/r%r%r&r-Gs   zAbstractTest.cpu_havecCs|||_dSr))get_cpuinfo_itemr<)r+ magic_keyr%r%r&load_flags_cpuinfoPszAbstractTest.load_flags_cpuinfocCst}td0}|D]$}||sq dd|ddD}t|dkr.||d}q Wd|S1s:wY|S)NrcSg|]}|qSr%stripr.sr%r%r&r0Yz1AbstractTest.get_cpuinfo_item..:)setr startswithsplitlenunionupper)r+r?valuesr line flags_valuer%r%r&r>Ss    zAbstractTest.get_cpuinfo_itemcCs~ddl}|jdgtddd}|dD](}|dsqdd |d d D}t|d kr<|j|d  |_qdS) Nrrrr r  sAT_HWCAPcSrAr%rBrDr%r%r&r0drFz0AbstractTest.load_flags_auxv..:rHrI) rrrrLrKrMr<rNrOr)r+rr#at hwcap_valuer%r%r&load_flags_auxv^s  zAbstractTest.load_flags_auxvN)__name__ __module__ __qualname__r5r1r:rJr<r,r7r-r@r>rWr%r%r%r&r(3s   r(linuxz^(amd64|x86|i386|i686)zOnly for Linux and x86)reasonc @sdeZdZgdZegdgdgdgdgdgddZed d d d d dddddd ZddZdS)Test_X86_Features)MMXSSESSE2SSE3SSSE3SSE41POPCNTSSE42AVXF16CXOPFMA4FMA3AVX2AVX512FAVX512CDAVX512ERAVX512PF AVX5124FMAPS AVX5124VNNIWAVX512VPOPCNTDQAVX512VLAVX512BWAVX512DQ AVX512VNNI AVX512IFMA AVX512VBMI AVX512VBMI2 AVX512BITALG)rlrmrnro)rlrmrnrorprqrr)rlrmrtrurs)rlrmrtrursrv)rlrmrtrursrwrx) rlrmrtrursrwrxrvryrzrr) AVX512_KNL AVX512_KNM AVX512_SKX AVX512_CLX AVX512_CNL AVX512_ICLPNISSE4_1SSE4_2FMA AVX512_VNNI AVX512_BITALG AVX512_VBMI2 AVX512_4FMAPS AVX512_4VNNIWAVX512_VPOPCNTDQ) rarcrerjrvrzryrprqrrcCs|ddS)Nflags)r@r*r%r%r&r,szTest_X86_Features.load_flagsN)rXrYrZr5rr1r:r,r%r%r%r&r]ms   r]z^(powerpc|ppc)64zOnly for Linux and Powerc@s(eZdZgdZedddZddZdS)Test_POWER_Features)VSXVSX2VSX3 ARCH_2_07 ARCH_3_00)rrcCs |dSr))rWr*r%r%r&r,s zTest_POWER_Features.load_flagsN)rXrYrZr5rr:r,r%r%r%r&rs  rz^(arm|aarch64)zOnly for Linux and ARMc@s0eZdZgdZeddgddgdZddZdS) Test_ARM_Features)NEONASIMDFPHPASIMDHPASIMDDPASIMDFHMrHALFVFPV4) NEON_FP16 NEON_VFPV4cCsh|d|d}|rtdtt|dknd}tdts"|r,tdddd|_ dStd d |_ dS) NFeatureszCPU architecture0rz^(aarch64|AARCH64)r)rrr)AESSHA1SHA2PMULLCRC32)r) r@r>intnextiterrematchmachinerr:)r+arch is_rootfs_v8r%r%r&r,s     zTest_ARM_Features.load_flagsN)rXrYrZr5rr1r,r%r%r%r&rs r)sysplatformrpytestnumpy.core._multiarray_umathrr'r(rKis_linuxrr IGNORECASEis_x86markskipifr]is_powerris_armrr%r%r%r&s / 7