B
    us^Y                 @   s  d Z ddlmZmZmZ dgZddlZddlZddlZddl	Z	ej
d dkrZddlmZ nddlmZ ddlZddlZddlmZ d$d
dZd%ddZd&ddZd'ddZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZejdreZnfejdr2eZnRejd krDeZn@ejd!rXeZn,ejd"rleZnejd#reZneZe ZdS )(aa  
cpuinfo

Copyright 2002 Pearu Peterson all rights reserved,
Pearu Peterson <pearu@cens.ioc.ee>
Permission to use, modify, and distribute this software is given under the
terms of the NumPy (BSD style) license.  See LICENSE.txt that came with
this distribution for specifics.

NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
Pearu Peterson

    )divisionabsolute_importprint_functioncpuN   )getstatusoutput)get_exceptionr      c             C   sh   yt | \}}W n. tk
r>   t }tjt|t|d dS X t|r`t	||kr`d|fS d|fS )N)
stacklevel)F TF)
r   EnvironmentErrorr   warningswarnstrUserWarningos	WIFEXITEDWEXITSTATUS)cmdsuccessful_statusr   statusoutpute r   c/home/fristb/BIRCH/lib-linux-x86_64/python/lib64/python3.7/site-packages/numpy/distutils/cpuinfo.py	getoutput    s    r   c             K   s@   i }x6|D ].}t || | |d d\}}|r
| ||< q
W |S )Nr
   )r   r   )r   strip)r   r   kwinfokeyokr   r   r   r   command_info+   s    

r"   c             c   s>   t | ||d d\}}|sd S x| D ]}| V  q(W d S )Nr
   )r   r   )r   
splitlinesr   )r   r   r   r!   r   liner   r   r   command_by_line4   s    r%   c             C   sV   i }xLt | ||d dD ]6}dd ||dD }t|dkr|d ||d < qW |S )Nr
   )r   r   c             S   s   g | ]}|  qS r   )r   ).0sr   r   r   
<listcomp>A   s    z*key_value_from_command.<locals>.<listcomp>   r   )r%   splitlen)r   sepr   r   dr$   lr   r   r   key_value_from_command<   s    r/   c               @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )CPUInfoBasezkHolds CPU information and provides methods for requiring
    the availability of various CPU features.
    c             C   s    y| S  t k
r   Y nX d S )N)	Exception)selffuncr   r   r   	_try_callK   s    zCPUInfoBase._try_callc             C   sX   | dsLt| d| rDt| d| }t|tjrL| j|fddS ndd S t|d S )N_c             S   s   | |S )Nr   )r3   attrr   r   r   <lambda>V       z)CPUInfoBase.__getattr__.<locals>.<lambda>c               S   s   d S )Nr   r   r   r   r   r7   X   r8   )
startswithhasattrgetattr
isinstancetypes
MethodTyper4   AttributeError)r2   namer6   r   r   r   __getattr__Q   s    
zCPUInfoBase.__getattr__c             C   s   dS )Nr
   r   )r2   r   r   r   	_getNCPUs[   s    zCPUInfoBase._getNCPUsc             C   s&   t  d }td|d}|S )Nr   z(\d+)bitr
   )platformarchitecturerecompilesearchgroup)r2   abitsnbitsr   r   r   __get_nbits^   s    zCPUInfoBase.__get_nbitsc             C   s   |   dkS )N32)_CPUInfoBase__get_nbits)r2   r   r   r   	_is_32bitc   s    zCPUInfoBase._is_32bitc             C   s   |   dkS )N64)rM   )r2   r   r   r   	_is_64bitf   s    zCPUInfoBase._is_64bitN)
__name__
__module____qualname____doc__r4   rA   rB   rM   rN   rP   r   r   r   r   r0   F   s   
r0   c               @   s  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% ZeZd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"d>d? Z#d@dA Z$dBdC Z%dDdE Z&dFdG Z'e'Z(dHdI Z)dJdK Z*dLdM Z+dNdO Z,dPdQ Z-dRdS Z.dTdU Z/dVdW Z0dXdY Z1dZd[ Z2d\d] Z3dS )^LinuxCPUInfoNc       
      C   s   | j d k	rd S i g}td\}}|r4| |d d< ytd}W n. tk
rn   t }tjt|t	dd Y njX x^|D ]V}dd |
d	d
D }t|dkrqv|\}}	|r||d kr|i  |	|d |< qvW |  || j_ d S )Nzuname -mr   uname_mz/proc/cpuinfor)   )r   c             S   s   g | ]}|  qS r   )r   )r&   r'   r   r   r   r(   {   s    z)LinuxCPUInfo.__init__.<locals>.<listcomp>:r
   )r   r   r   openr   r   r   r   r   r   r*   r+   appendclose	__class__)
r2   r   r!   r   for   r$   
name_valuer@   valuer   r   r   __init__m   s*    


zLinuxCPUInfo.__init__c             C   s   d S )Nr   )r2   r   r   r   	_not_impl   r8   zLinuxCPUInfo._not_implc             C   s   | j d d dkS )Nr   	vendor_idAuthenticAMD)r   )r2   r   r   r   _is_AMD   s    zLinuxCPUInfo._is_AMDc             C   s   |   o| jd d dkS )Nr   model2)rd   r   )r2   r   r   r   _is_AthlonK6_2   s    zLinuxCPUInfo._is_AthlonK6_2c             C   s   |   o| jd d dkS )Nr   re   3)rd   r   )r2   r   r   r   _is_AthlonK6_3   s    zLinuxCPUInfo._is_AthlonK6_3c             C   s   t d| jd d d k	S )Nz	.*?AMD-K6r   z
model name)rE   matchr   )r2   r   r   r   _is_AthlonK6   s    zLinuxCPUInfo._is_AthlonK6c             C   s   t d| jd d d k	S )Nz	.*?AMD-K7r   z
model name)rE   rj   r   )r2   r   r   r   _is_AthlonK7   s    zLinuxCPUInfo._is_AthlonK7c             C   s   t d| jd d d k	S )Nz.*?Athlon\(tm\) MP\br   z
model name)rE   rj   r   )r2   r   r   r   _is_AthlonMP   s    zLinuxCPUInfo._is_AthlonMPc             C   s   |   o| jd d dkS )Nr   family15)is_AMDr   )r2   r   r   r   	_is_AMD64   s    zLinuxCPUInfo._is_AMD64c             C   s   t d| jd d d k	S )Nz.*?Athlon\(tm\) 64\br   z
model name)rE   rj   r   )r2   r   r   r   _is_Athlon64   s    zLinuxCPUInfo._is_Athlon64c             C   s   t d| jd d d k	S )Nz.*?Athlon HX\br   z
model name)rE   rj   r   )r2   r   r   r   _is_AthlonHX   s    zLinuxCPUInfo._is_AthlonHXc             C   s   t d| jd d d k	S )Nz.*?Opteron\br   z
model name)rE   rj   r   )r2   r   r   r   _is_Opteron   s    zLinuxCPUInfo._is_Opteronc             C   s   t d| jd d d k	S )Nz.*?Hammer\br   z
model name)rE   rj   r   )r2   r   r   r   
_is_Hammer   s    zLinuxCPUInfo._is_Hammerc             C   s   | j d d dkS )Nr   r   Alpha)r   )r2   r   r   r   	_is_Alpha   s    zLinuxCPUInfo._is_Alphac             C   s   |   o| jd d dkS )Nr   z	cpu modelEV4)is_Alphar   )r2   r   r   r   _is_EV4   s    zLinuxCPUInfo._is_EV4c             C   s   |   o| jd d dkS )Nr   z	cpu modelEV5)ry   r   )r2   r   r   r   _is_EV5   s    zLinuxCPUInfo._is_EV5c             C   s   |   o| jd d dkS )Nr   z	cpu modelEV56)ry   r   )r2   r   r   r   _is_EV56   s    zLinuxCPUInfo._is_EV56c             C   s   |   o| jd d dkS )Nr   z	cpu modelPCA56)ry   r   )r2   r   r   r   	_is_PCA56   s    zLinuxCPUInfo._is_PCA56c             C   s   | j d d dkS )Nr   rb   GenuineIntel)r   )r2   r   r   r   	_is_Intel   s    zLinuxCPUInfo._is_Intelc             C   s   | j d d dkS )Nr   r   i486)r   )r2   r   r   r   _is_i486   s    zLinuxCPUInfo._is_i486c             C   s   |   o| jd d dkS )Nr   z
cpu family5)is_Intelr   )r2   r   r   r   _is_i586   s    zLinuxCPUInfo._is_i586c             C   s   |   o| jd d dkS )Nr   z
cpu family6)r   r   )r2   r   r   r   _is_i686   s    zLinuxCPUInfo._is_i686c             C   s   t d| jd d d k	S )Nz
.*?Celeronr   z
model name)rE   rj   r   )r2   r   r   r   _is_Celeron   s    zLinuxCPUInfo._is_Celeronc             C   s   t d| jd d d k	S )Nz
.*?Pentiumr   z
model name)rE   rj   r   )r2   r   r   r   _is_Pentium   s    zLinuxCPUInfo._is_Pentiumc             C   s   t d| jd d d k	S )Nz.*?Pentium.*?II\br   z
model name)rE   rj   r   )r2   r   r   r   _is_PentiumII   s    zLinuxCPUInfo._is_PentiumIIc             C   s   t d| jd d d k	S )Nz.*?PentiumPro\br   z
model name)rE   rj   r   )r2   r   r   r   _is_PentiumPro   s    zLinuxCPUInfo._is_PentiumProc             C   s   t d| jd d d k	S )Nz.*?Pentium.*?MMX\br   z
model name)rE   rj   r   )r2   r   r   r   _is_PentiumMMX   s    zLinuxCPUInfo._is_PentiumMMXc             C   s   t d| jd d d k	S )Nz.*?Pentium.*?III\br   z
model name)rE   rj   r   )r2   r   r   r   _is_PentiumIII   s    zLinuxCPUInfo._is_PentiumIIIc             C   s   t d| jd d d k	S )Nz.*?Pentium.*?(IV|4)\br   z
model name)rE   rj   r   )r2   r   r   r   _is_PentiumIV   s    zLinuxCPUInfo._is_PentiumIVc             C   s   t d| jd d d k	S )Nz.*?Pentium.*?M\br   z
model name)rE   rj   r   )r2   r   r   r   _is_PentiumM   s    zLinuxCPUInfo._is_PentiumMc             C   s   |   o|  S )N)is_PentiumIVhas_sse3)r2   r   r   r   _is_Prescott   s    zLinuxCPUInfo._is_Prescottc             C   sX   |   oV| jd d dks,| jd d dkoV|  oV|   oVtd| jd d d k	S )Nr   z
cpu familyr   ro   z	.*?\blm\bflags)r   r   r   	has_ssse3rE   rj   )r2   r   r   r   
_is_Nocona   s
    zLinuxCPUInfo._is_Noconac             C   s*   |   o(|  o(td| jd d d k	S )Nz.*?Core\(TM\)2\br   z
model name)is_64bitr   rE   rj   r   )r2   r   r   r   	_is_Core2   s    zLinuxCPUInfo._is_Core2c             C   s   t d| jd d d k	S )Nz.*?Itanium\br   rn   )rE   rj   r   )r2   r   r   r   _is_Itanium   s    zLinuxCPUInfo._is_Itaniumc             C   s   t d| jd d t jd k	S )Nz	.*?XEON\br   z
model name)rE   rj   r   
IGNORECASE)r2   r   r   r   _is_XEON  s    zLinuxCPUInfo._is_XEONc             C   s   t | jdkS )Nr
   )r+   r   )r2   r   r   r   _is_singleCPU  s    zLinuxCPUInfo._is_singleCPUc             C   s
   t | jS )N)r+   r   )r2   r   r   r   rB     s    zLinuxCPUInfo._getNCPUsc             C   s   | j d d dkS )Nr   fdiv_bugyes)r   )r2   r   r   r   _has_fdiv_bug  s    zLinuxCPUInfo._has_fdiv_bugc             C   s   | j d d dkS )Nr   f00f_bugr   )r   )r2   r   r   r   _has_f00f_bug  s    zLinuxCPUInfo._has_f00f_bugc             C   s   t d| jd d d k	S )Nz
.*?\bmmx\br   r   )rE   rj   r   )r2   r   r   r   _has_mmx  s    zLinuxCPUInfo._has_mmxc             C   s   t d| jd d d k	S )Nz
.*?\bsse\br   r   )rE   rj   r   )r2   r   r   r   _has_sse  s    zLinuxCPUInfo._has_ssec             C   s   t d| jd d d k	S )Nz.*?\bsse2\br   r   )rE   rj   r   )r2   r   r   r   	_has_sse2  s    zLinuxCPUInfo._has_sse2c             C   s   t d| jd d d k	S )Nz
.*?\bpni\br   r   )rE   rj   r   )r2   r   r   r   	_has_sse3!  s    zLinuxCPUInfo._has_sse3c             C   s   t d| jd d d k	S )Nz.*?\bssse3\br   r   )rE   rj   r   )r2   r   r   r   
_has_ssse3$  s    zLinuxCPUInfo._has_ssse3c             C   s   t d| jd d d k	S )Nz.*?\b3dnow\br   r   )rE   rj   r   )r2   r   r   r   
_has_3dnow'  s    zLinuxCPUInfo._has_3dnowc             C   s   t d| jd d d k	S )Nz.*?\b3dnowext\br   r   )rE   rj   r   )r2   r   r   r   _has_3dnowext*  s    zLinuxCPUInfo._has_3dnowext)4rQ   rR   rS   r   r`   ra   rd   rg   ri   rk   rl   rm   rq   rr   rs   rt   ru   rw   rz   r|   r~   r   _is_i386r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _is_Xeonr   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   rU   i   sb   rU   c               @   s8  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFdG Z&dHdI Z'dJdK Z(dS )LIRIXCPUInfoNc             C   s(   | j d k	rd S tdddd}|| j_ d S )Nsysconf )r   r
   )r,   r   )r   r/   r\   )r2   r   r   r   r   r`   0  s
    
zIRIXCPUInfo.__init__c             C   s   d S )Nr   )r2   r   r   r   ra   7  r8   zIRIXCPUInfo._not_implc             C   s   | j ddkS )NNUM_PROCESSORS1)r   get)r2   r   r   r   r   9  s    zIRIXCPUInfo._is_singleCPUc             C   s   t | jddS )Nr   r
   )intr   r   )r2   r   r   r   rB   <  s    zIRIXCPUInfo._getNCPUsc             C   s    | j d d  d| kS )N
PROCESSORSr   zr%s)r   r   r*   lower)r2   nr   r   r   	__cputype?  s    zIRIXCPUInfo.__cputypec             C   s
   |  dS )Ni  )_IRIXCPUInfo__cputype)r2   r   r   r   	_is_r2000A  r8   zIRIXCPUInfo._is_r2000c             C   s
   |  dS )Ni  )r   )r2   r   r   r   	_is_r3000B  r8   zIRIXCPUInfo._is_r3000c             C   s
   |  dS )Ni<  )r   )r2   r   r   r   	_is_r3900C  r8   zIRIXCPUInfo._is_r3900c             C   s
   |  dS )Ni  )r   )r2   r   r   r   	_is_r4000D  r8   zIRIXCPUInfo._is_r4000c             C   s
   |  dS )Ni  )r   )r2   r   r   r   	_is_r4100E  r8   zIRIXCPUInfo._is_r4100c             C   s
   |  dS )Ni  )r   )r2   r   r   r   	_is_r4300F  r8   zIRIXCPUInfo._is_r4300c             C   s
   |  dS )Ni0  )r   )r2   r   r   r   	_is_r4400G  r8   zIRIXCPUInfo._is_r4400c             C   s
   |  dS )Ni  )r   )r2   r   r   r   	_is_r4600H  r8   zIRIXCPUInfo._is_r4600c             C   s
   |  dS )Ni*  )r   )r2   r   r   r   	_is_r4650I  r8   zIRIXCPUInfo._is_r4650c             C   s
   |  dS )Ni  )r   )r2   r   r   r   	_is_r5000J  r8   zIRIXCPUInfo._is_r5000c             C   s
   |  dS )Nip  )r   )r2   r   r   r   	_is_r6000K  r8   zIRIXCPUInfo._is_r6000c             C   s
   |  dS )Ni@  )r   )r2   r   r   r   	_is_r8000L  r8   zIRIXCPUInfo._is_r8000c             C   s
   |  dS )Ni'  )r   )r2   r   r   r   
_is_r10000M  r8   zIRIXCPUInfo._is_r10000c             C   s
   |  dS )Ni.  )r   )r2   r   r   r   
_is_r12000N  r8   zIRIXCPUInfo._is_r12000c             C   s
   |  dS )Norion)r   )r2   r   r   r   
_is_rorionO  r8   zIRIXCPUInfo._is_rorionc             C   s&   y| j dS  tk
r    Y nX d S )NMACHINE)r   r   r1   )r2   r   r   r   get_ipQ  s      zIRIXCPUInfo.get_ipc             C   s   | j d d| kS )Nr   zip%s)r   r   r   )r2   r   r   r   r   	__machineT  s    zIRIXCPUInfo.__machinec             C   s
   |  dS )N   )_IRIXCPUInfo__machine)r2   r   r   r   _is_IP19V  r8   zIRIXCPUInfo._is_IP19c             C   s
   |  dS )N   )r   )r2   r   r   r   _is_IP20W  r8   zIRIXCPUInfo._is_IP20c             C   s
   |  dS )N   )r   )r2   r   r   r   _is_IP21X  r8   zIRIXCPUInfo._is_IP21c             C   s
   |  dS )N   )r   )r2   r   r   r   _is_IP22Y  r8   zIRIXCPUInfo._is_IP22c             C   s   |  do|  S )Nr   )r   r   )r2   r   r   r   _is_IP22_4kZ  r8   zIRIXCPUInfo._is_IP22_4kc             C   s   |  do|  S )Nr   )r   r   )r2   r   r   r   _is_IP22_5k[  r8   zIRIXCPUInfo._is_IP22_5kc             C   s
   |  dS )N   )r   )r2   r   r   r   _is_IP24\  r8   zIRIXCPUInfo._is_IP24c             C   s
   |  dS )N   )r   )r2   r   r   r   _is_IP25]  r8   zIRIXCPUInfo._is_IP25c             C   s
   |  dS )N   )r   )r2   r   r   r   _is_IP26^  r8   zIRIXCPUInfo._is_IP26c             C   s
   |  dS )N   )r   )r2   r   r   r   _is_IP27_  r8   zIRIXCPUInfo._is_IP27c             C   s
   |  dS )N   )r   )r2   r   r   r   _is_IP28`  r8   zIRIXCPUInfo._is_IP28c             C   s
   |  dS )N   )r   )r2   r   r   r   _is_IP30a  r8   zIRIXCPUInfo._is_IP30c             C   s
   |  dS )N    )r   )r2   r   r   r   _is_IP32b  r8   zIRIXCPUInfo._is_IP32c             C   s   |  do|  S )Nr   )r   r   )r2   r   r   r   _is_IP32_5kc  r8   zIRIXCPUInfo._is_IP32_5kc             C   s   |  do|  S )Nr   )r   r   )r2   r   r   r   _is_IP32_10kd  r8   zIRIXCPUInfo._is_IP32_10k))rQ   rR   rS   r   r`   ra   r   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   -  sL   r   c               @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 ZdS )4DarwinCPUInfoNc             C   s6   | j d k	rd S tddd}tddd|d< || j_ d S )Narchmachine)r   r   z	sysctl hw=)r,   	sysctl_hw)r   r"   r/   r\   )r2   r   r   r   r   r`   j  s    
zDarwinCPUInfo.__init__c             C   s   d S )Nr   )r2   r   r   r   ra   r  r8   zDarwinCPUInfo._not_implc             C   s   t | jd ddS )Nr   zhw.ncpur
   )r   r   r   )r2   r   r   r   rB   t  s    zDarwinCPUInfo._getNCPUsc             C   s   | j d d dkS )Nr   z
hw.machinezPower Macintosh)r   )r2   r   r   r   _is_Power_Macintoshw  s    z!DarwinCPUInfo._is_Power_Macintoshc             C   s   | j d dkS )Nr   i386)r   )r2   r   r   r   r   z  s    zDarwinCPUInfo._is_i386c             C   s   | j d dkS )Nr   ppc)r   )r2   r   r   r   _is_ppc|  s    zDarwinCPUInfo._is_ppcc             C   s   | j d d| kS )Nr   zppc%s)r   )r2   r   r   r   r   r     s    zDarwinCPUInfo.__machinec             C   s
   |  dS )NiY  )_DarwinCPUInfo__machine)r2   r   r   r   
_is_ppc601  r8   zDarwinCPUInfo._is_ppc601c             C   s
   |  dS )NiZ  )r   )r2   r   r   r   
_is_ppc602  r8   zDarwinCPUInfo._is_ppc602c             C   s
   |  dS )Ni[  )r   )r2   r   r   r   
_is_ppc603  r8   zDarwinCPUInfo._is_ppc603c             C   s
   |  dS )N603e)r   )r2   r   r   r   _is_ppc603e  r8   zDarwinCPUInfo._is_ppc603ec             C   s
   |  dS )Ni\  )r   )r2   r   r   r   
_is_ppc604  r8   zDarwinCPUInfo._is_ppc604c             C   s
   |  dS )N604e)r   )r2   r   r   r   _is_ppc604e  r8   zDarwinCPUInfo._is_ppc604ec             C   s
   |  dS )Nil  )r   )r2   r   r   r   
_is_ppc620  r8   zDarwinCPUInfo._is_ppc620c             C   s
   |  dS )Niv  )r   )r2   r   r   r   
_is_ppc630  r8   zDarwinCPUInfo._is_ppc630c             C   s
   |  dS )Ni  )r   )r2   r   r   r   
_is_ppc740  r8   zDarwinCPUInfo._is_ppc740c             C   s
   |  dS )Ni  )r   )r2   r   r   r   _is_ppc7400  r8   zDarwinCPUInfo._is_ppc7400c             C   s
   |  dS )Ni  )r   )r2   r   r   r   _is_ppc7450  r8   zDarwinCPUInfo._is_ppc7450c             C   s
   |  dS )Ni  )r   )r2   r   r   r   
_is_ppc750  r8   zDarwinCPUInfo._is_ppc750c             C   s
   |  dS )Ni  )r   )r2   r   r   r   
_is_ppc403  r8   zDarwinCPUInfo._is_ppc403c             C   s
   |  dS )Ni  )r   )r2   r   r   r   
_is_ppc505  r8   zDarwinCPUInfo._is_ppc505c             C   s
   |  dS )Ni!  )r   )r2   r   r   r   
_is_ppc801  r8   zDarwinCPUInfo._is_ppc801c             C   s
   |  dS )Ni5  )r   )r2   r   r   r   
_is_ppc821  r8   zDarwinCPUInfo._is_ppc821c             C   s
   |  dS )Ni7  )r   )r2   r   r   r   
_is_ppc823  r8   zDarwinCPUInfo._is_ppc823c             C   s
   |  dS )Ni\  )r   )r2   r   r   r   
_is_ppc860  r8   zDarwinCPUInfo._is_ppc860)rQ   rR   rS   r   r`   ra   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r   r   r   r   g  s4   r   c               @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 ZdS )4SunOSCPUInfoNc             C   sn   | j d k	rd S tdddddd}tddd	|d
< x0tdD ]$}td|}|r:|d|d< P q:W || j_ d S )Nr   machuname_iz
isainfo -bz
isainfo -n)r   r  r  	isainfo_b	isainfo_nzuname -Xr   )r,   uname_Xzpsrinfo -v 0z+\s*The (?P<p>[\w\d]+) processor operates atp	processor)r   r"   r/   r%   rE   rj   rH   r\   )r2   r   r$   mr   r   r   r`     s    
zSunOSCPUInfo.__init__c             C   s   d S )Nr   )r2   r   r   r   ra     r8   zSunOSCPUInfo._not_implc             C   s   | j d dkS )Nr  r   )r   )r2   r   r   r   r     s    zSunOSCPUInfo._is_i386c             C   s   | j d dkS )Nr  sparc)r   )r2   r   r   r   	_is_sparc  s    zSunOSCPUInfo._is_sparcc             C   s   | j d dkS )Nr  sparcv9)r   )r2   r   r   r   _is_sparcv9  s    zSunOSCPUInfo._is_sparcv9c             C   s   t | jd ddS )Nr	  NumCPUr
   )r   r   r   )r2   r   r   r   rB     s    zSunOSCPUInfo._getNCPUsc             C   s   | j d dkS )Nr   sun4)r   )r2   r   r   r   _is_sun4  s    zSunOSCPUInfo._is_sun4c             C   s   t d| jd d k	S )NSUNWr  )rE   rj   r   )r2   r   r   r   _is_SUNW  s    zSunOSCPUInfo._is_SUNWc             C   s   t d| jd d k	S )Nz.*SPARCstation-5r  )rE   rj   r   )r2   r   r   r   _is_sparcstation5  s    zSunOSCPUInfo._is_sparcstation5c             C   s   t d| jd d k	S )Nz	.*Ultra-1r  )rE   rj   r   )r2   r   r   r   
_is_ultra1  s    zSunOSCPUInfo._is_ultra1c             C   s   t d| jd d k	S )Nz.*Ultra-250r  )rE   rj   r   )r2   r   r   r   _is_ultra250  s    zSunOSCPUInfo._is_ultra250c             C   s   t d| jd d k	S )Nz	.*Ultra-2r  )rE   rj   r   )r2   r   r   r   
_is_ultra2  s    zSunOSCPUInfo._is_ultra2c             C   s   t d| jd d k	S )Nz
.*Ultra-30r  )rE   rj   r   )r2   r   r   r   _is_ultra30  s    zSunOSCPUInfo._is_ultra30c             C   s   t d| jd d k	S )Nz	.*Ultra-4r  )rE   rj   r   )r2   r   r   r   
_is_ultra4  s    zSunOSCPUInfo._is_ultra4c             C   s   t d| jd d k	S )Nz.*Ultra-5_10r  )rE   rj   r   )r2   r   r   r   _is_ultra5_10  s    zSunOSCPUInfo._is_ultra5_10c             C   s   t d| jd d k	S )Nz	.*Ultra-5r  )rE   rj   r   )r2   r   r   r   
_is_ultra5  s    zSunOSCPUInfo._is_ultra5c             C   s   t d| jd d k	S )Nz
.*Ultra-60r  )rE   rj   r   )r2   r   r   r   _is_ultra60  s    zSunOSCPUInfo._is_ultra60c             C   s   t d| jd d k	S )Nz
.*Ultra-80r  )rE   rj   r   )r2   r   r   r   _is_ultra80  s    zSunOSCPUInfo._is_ultra80c             C   s   t d| jd d k	S )Nz.*Ultra-Enterpriser  )rE   rj   r   )r2   r   r   r   _is_ultraenterprice  s    z SunOSCPUInfo._is_ultraenterpricec             C   s   t d| jd d k	S )Nz.*Ultra-Enterprise-10000r  )rE   rj   r   )r2   r   r   r   _is_ultraenterprice10k  s    z#SunOSCPUInfo._is_ultraenterprice10kc             C   s   t d| jd d k	S )Nz
.*Sun-Firer  )rE   rj   r   )r2   r   r   r   _is_sunfire  s    zSunOSCPUInfo._is_sunfirec             C   s   t d| jd d k	S )Nz.*Ultrar  )rE   rj   r   )r2   r   r   r   	_is_ultra  s    zSunOSCPUInfo._is_ultrac             C   s   | j d dkS )Nr  sparcv7)r   )r2   r   r   r   _is_cpusparcv7  s    zSunOSCPUInfo._is_cpusparcv7c             C   s   | j d dkS )Nr  sparcv8)r   )r2   r   r   r   _is_cpusparcv8  s    zSunOSCPUInfo._is_cpusparcv8c             C   s   | j d dkS )Nr  r  )r   )r2   r   r   r   _is_cpusparcv9  s    zSunOSCPUInfo._is_cpusparcv9)rQ   rR   rS   r   r`   ra   r   r  r  rB   r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r%  r'  r(  r   r   r   r   r    s4   r  c               @   s  e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Z d;d< Z!d=d> Z"d?d@ Z#dS )AWin32CPUInfoNz,HARDWARE\DESCRIPTION\System\CentralProcessorc             C   s  | j d k	rd S g }y>tjd dkr.dd l}ndd l}tdtj}||j	| j
}d}xy|||}W n |jk
r   P Y qZX |d7 }|d|i |||}d}xy|||\}	}
}W n |jk
r   P Y qX |d }|
|d |	< |	dkr||
}|rt|d|d d	< t|d
|d d< t|d|d d< qW qZW W n( tk
rz   tt d d Y nX || j_ d S )Nr   r   zFfamily\s+(?P<FML>\d+)\s+model\s+(?P<MDL>\d+)\s+stepping\s+(?P<STP>\d+)r
   	ProcessorrX   
IdentifierFMLFamilyMDLModelSTPSteppingz
(ignoring))r   sysversion_infowinreg_winregrE   rF   r   OpenKeyHKEY_LOCAL_MACHINEpkeyEnumKeyerrorrZ   	EnumValuerG   r   rH   r1   printexc_infor\   )r2   r   r4  prgxchndpnumprocphndpidxr@   r_   vtpesrchr   r   r   r`     sH    


"zWin32CPUInfo.__init__c             C   s   d S )Nr   )r2   r   r   r   ra     r8   zWin32CPUInfo._not_implc             C   s   | j d d dkS )Nr   VendorIdentifierrc   )r   )r2   r   r   r   rd     s    zWin32CPUInfo._is_AMDc             C   s   |   o| jd d dkS )Nr   r-     )rp   r   )r2   r   r   r   	_is_Am486  s    zWin32CPUInfo._is_Am486c             C   s   |   o| jd d dkS )Nr   r-  rG  )rp   r   )r2   r   r   r   
_is_Am5x86  s    zWin32CPUInfo._is_Am5x86c             C   s,   |   o*| jd d dko*| jd d dkS )Nr   r-     r/  )r   r
   r)   r   )rp   r   )r2   r   r   r   	_is_AMDK5  s    zWin32CPUInfo._is_AMDK5c             C   s,   |   o*| jd d dko*| jd d dkS )Nr   r-  rJ  r/  )      )rp   r   )r2   r   r   r   	_is_AMDK6#  s    zWin32CPUInfo._is_AMDK6c             C   s,   |   o*| jd d dko*| jd d dkS )Nr   r-  rJ  r/     )rp   r   )r2   r   r   r   _is_AMDK6_2'  s    zWin32CPUInfo._is_AMDK6_2c             C   s,   |   o*| jd d dko*| jd d dkS )Nr   r-  rJ  r/  	   )rp   r   )r2   r   r   r   _is_AMDK6_3+  s    zWin32CPUInfo._is_AMDK6_3c             C   s   |   o| jd d dkS )Nr   r-  rL  )rp   r   )r2   r   r   r   	_is_AMDK7/  s    zWin32CPUInfo._is_AMDK7c             C   s   |   o| jd d dkS )Nr   r-     )rp   r   )r2   r   r   r   rq   6  s    zWin32CPUInfo._is_AMD64c             C   s   | j d d dkS )Nr   rF  r   )r   )r2   r   r   r   r   ;  s    zWin32CPUInfo._is_Intelc             C   s   | j d d dkS )Nr   r-  r   )r   )r2   r   r   r   r   >  s    zWin32CPUInfo._is_i386c             C   s   | j d d dkS )Nr   r-  rG  )r   )r2   r   r   r   r   A  s    zWin32CPUInfo._is_i486c             C   s   |   o| jd d dkS )Nr   r-  rJ  )r   r   )r2   r   r   r   r   D  s    zWin32CPUInfo._is_i586c             C   s   |   o| jd d dkS )Nr   r-  rL  )r   r   )r2   r   r   r   r   G  s    zWin32CPUInfo._is_i686c             C   s   |   o| jd d dkS )Nr   r-  rJ  )r   r   )r2   r   r   r   r   J  s    zWin32CPUInfo._is_Pentiumc             C   s,   |   o*| jd d dko*| jd d dkS )Nr   r-  rJ  r/  rG  )r   r   )r2   r   r   r   r   M  s    zWin32CPUInfo._is_PentiumMMXc             C   s,   |   o*| jd d dko*| jd d dkS )Nr   r-  rL  r/  r
   )r   r   )r2   r   r   r   r   Q  s    zWin32CPUInfo._is_PentiumProc             C   s,   |   o*| jd d dko*| jd d dkS )Nr   r-  rL  r/  )r   rJ  rL  )r   r   )r2   r   r   r   r   U  s    zWin32CPUInfo._is_PentiumIIc             C   s,   |   o*| jd d dko*| jd d dkS )Nr   r-  rL  r/  )rM  rO  rQ  
      )r   r   )r2   r   r   r   r   Y  s    zWin32CPUInfo._is_PentiumIIIc             C   s   |   o| jd d dkS )Nr   r-  rT  )r   r   )r2   r   r   r   r   ]  s    zWin32CPUInfo._is_PentiumIVc             C   s,   |   o*| jd d dko*| jd d dkS )Nr   r-  rL  r/  )rQ        )r   r   )r2   r   r   r   r   `  s    zWin32CPUInfo._is_PentiumMc             C   s,   |   o*| jd d dko*| jd d dkS )Nr   r-  rL  r/  )rT        )r   r   )r2   r   r   r   r   d  s    zWin32CPUInfo._is_Core2c             C   s   t | jdkS )Nr
   )r+   r   )r2   r   r   r   r   j  s    zWin32CPUInfo._is_singleCPUc             C   s
   t | jS )N)r+   r   )r2   r   r   r   rB   m  s    zWin32CPUInfo._getNCPUsc             C   s`   |   r>| jd d dkr,| jd d dkp<| jd d dkS |  rX| jd d dkS dS d S )	Nr   r-  rJ  r/  rG  )rL  rT  )rJ  rL  rT  F)r   r   rp   )r2   r   r   r   r   p  s    $zWin32CPUInfo._has_mmxc             C   s   |   r>| jd d dkr,| jd d dkp<| jd d dkS |  r|| jd d dkrj| jd d dkpz| jd d dkS dS d S )	Nr   r-  rL  r/  )rM  rO  rQ  rU  rV  rT  )rL  rM  rO  rU  F)r   r   rp   )r2   r   r   r   r   y  s    zWin32CPUInfo._has_ssec             C   s8   |   r |  p|  p|  S |  r0|  S dS d S )NF)r   is_Pentium4is_PentiumMis_Core2rp   is_AMD64)r2   r   r   r   r     s    zWin32CPUInfo._has_sse2c             C   s   |   o| jd d dkS )Nr   r-  )rJ  rL  rT  )rp   r   )r2   r   r   r   r     s    zWin32CPUInfo._has_3dnowc             C   s   |   o| jd d dkS )Nr   r-  )rL  rT  )rp   r   )r2   r   r   r   r     s    zWin32CPUInfo._has_3dnowext)$rQ   rR   rS   r   r8  r`   ra   rd   rH  rI  rK  rN  rP  rR  rS  rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   r   r   r   r   r   r   r   r   r   r)    sB   +		r)  linuxZirixdarwinsunoswin32cygwin)r	   r
   )r	   r
   )r	   r
   )r	   r
   ) rT   
__future__r   r   r   __all__r2  rE   r=   r   r3  
subprocessr   commandsr   rC   numpy.distutils.compatr   r   r"   r%   r/   objectr0   rU   r   r   r  r)  r9   cpuinfor   r   r   r   r   <module>   sJ   

	
 
	# E:.J 6