o
    ƒnócB  ã                   @  sX   d dl mZ ddlmZmZmZ ddlmZ ddlmZmZ G dd„ deƒZ	d	d
„ Z
dS )é    )Úannotationsé   )ÚmesonlibÚ	compilersÚmlog)Úbuildé   )ÚExtensionModuleÚ
ModuleInfoc                      s2   e Zd ZeddddZ‡ fdd„Zdd„ Z‡  ZS )	Ú
SimdModuleZSIMDz0.42.0T)Zunstablec                   s(   t ƒ  |¡ d| _| j d| ji¡ d S )N)
ZmmxZsseZsse2Zsse3Zssse3Zsse41Zsse42ZavxZavx2ZneonÚcheck)ÚsuperÚ__init__ÚisetsÚmethodsÚupdater   )ÚselfÚinterpreter©Ú	__class__© úvhome/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/modules/simd.pyr      s
   
ÿzSimdModule.__init__c                 C  s¾  g }t |ƒdkrt d¡‚|d }t|tƒst d¡‚d|vr$t d¡‚d|v r-t d¡‚i }| ¡ D ]\}}|| jvrD|dkrD|||< q3|d }	t|	tjjƒsUt d	¡‚t	 
¡ }
| jD ]~}||vrcq\|| }|	 |¡}|d u r|t d
| t d¡¡ q\|r“|	 ||j¡d s“t d
| t d¡¡ q\t d
| t d¡¡ dd| f|
jd| ¡  < |d | }d|i}| |¡ |	 ¡ d }t ||¡}|| }|||< | | j d |g|¡¡ q\||
gS )Nr   z6Check requires one argument, a name prefix for checks.r   zArgument must be a string.ÚcompilerzMust specify compiler keywordÚsourcesz2SIMD module does not support the "sources" keywordz,Compiler argument must be a compiler object.zCompiler supports %s:ZNOZYESÚ1zCompiler supports %s.ZHAVE_Ú_Ú_args)Úlenr   ZMesonExceptionÚ
isinstanceÚstrÚitemsr   r   ZCompilerr   ZConfigurationDataZget_instruction_set_argsr   ÚlogZredZhas_multi_argumentsÚenvironmentZgreenÚvaluesÚupperr   Zget_languageZextract_as_listÚappendr   Zfunc_static_lib)r   ÚstateÚargsÚkwargsÚresultÚprefixZbasic_kwargsÚkeyÚvaluer   ZconfZisetZ
iset_fnameÚlibnameZ
lib_kwargsZlangarg_keyZold_lang_argsZall_lang_argsr   r   r   r   +   sT   




€



zSimdModule.check)Ú__name__Ú
__module__Ú__qualname__r
   ÚINFOr   r   Ú__classcell__r   r   r   r   r      s    r   c                  O  s   t | i |¤ŽS )N)r   )r'   r(   r   r   r   Ú
initializeW   s   r3   N)Ú
__future__r   Ú r   r   r   r   r	   r
   r   r3   r   r   r   r   Ú<module>   s   B