§
    2@Äj?  ã            	       óž  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZ d dlmZmZmZ d dlZ ej        ej        d¦  «        Zdddd	œZd
d
dd	œZdddœZi dej        e j        g“dej        e j        g“dg “dej        e j        g“dej        e j        g“de j        g“de j        g“de j        g“de j        g“dg “de j         g“de j!        g“dg “dg “dg “dg “dg “i dej"        e j"        g“de j#        g“d e j$        g“d!g “d"g “d#g “d$g “d%ej%        e j%        g“d&g “d'g “d(g “d)g “d*ej&        e j&        g“d+ej'        e j'        g“d,g “d-g “d.g “¥g g g ej(        e j(        gej)        e j)        gej*        e j*        gg d/œ¥Z+g d0¢Z,d1„ e+ -                    ¦   «         D ¦   «         Z+d2„ e+ -                    ¦   «         D ¦   «         Z.d3„ e+ -                    ¦   «         D ¦   «         Z/d?d5„Z0d6„ Z1d7„ Z2e G d8„ d9e¦  «        ¦   «         Z3e3 4                    ¦   «          d:„ Z5d;„ Z6e G d<„ d=e¦  «        ¦   «         Z7e8d>k    r ej9        ¦   «          dS dS )@é    N)ÚnjitÚprange)Úconfig)ÚTestCaseÚtagÚoverride_env_configz"SVML tests need SVML to be presentÚnehalemÚhaswellzskylake-avx512)é   é   é   Ú z-prefer-256-bit)ÚNUMBA_CPU_NAMEÚNUMBA_CPU_FEATURESÚsinÚcosÚpowÚexpÚlogÚacosÚacoshÚasinÚasinhÚatan2ÚatanÚatanhÚcbrtÚcdfnormÚ
cdfnorminvÚceilÚcosdÚcoshÚerfÚerfcÚerfcinvÚerfinvÚexp10Úexp2Úexpm1ÚfloorÚfmodÚhypotÚinvsqrtÚlog10Úlog1pÚlog2ÚlogbÚ	nearbyint)ÚrintÚroundÚsindÚsinhÚtanÚtanhÚtrunc)r7   r.   r)   r/   r8   r   c                 ó@   — i | ]\  }}t          |¦  «        d k    ¯||“ŒS )r   )Úlen)Ú.0ÚkÚvs      úFC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_svml.pyú
<dictcomp>r@   U   s)   € Ð@Ð@Ð@‘t�q˜!µS¸±V´V¸a²Z°Zˆa�°Z°Z°Zó    c                 ó4   — g | ]\  }}d d„ |D ¦   «         v ¯|‘ŒS )z<ufuncc                 ó^   — g | ]*}t          |¦  «                             d ¦  «        d         ‘Œ+S ©ú r   ©ÚstrÚsplit©r<   Úps     r?   ú
<listcomp>z<listcomp>.<listcomp>X   ó/   € Ð3Ð3Ð3¨A•3�q‘6”6—<’< Ñ$Ô$ QÔ'Ð3Ð3Ð3rA   © ©r<   Úfr>   s      r?   rK   rK   W   sE   € ð 5ð 5ð 5‘T�Q˜°8Ø3Ð3°Ð3Ñ3Ô3ð44ð 44ˆqð 44ð 44ð 44rA   c                 ó4   — g | ]\  }}d d„ |D ¦   «         v ¯|‘ŒS )z	<built-inc                 ó^   — g | ]*}t          |¦  «                             d ¦  «        d         ‘Œ+S rD   rF   rI   s     r?   rK   z<listcomp>.<listcomp>Z   rL   rA   rM   rN   s      r?   rK   rK   Y   sE   € ð 5ð 5ð 5‘T�Q˜°;Ø3Ð3°Ð3Ñ3Ô3ð44ð 44ˆqð 44ð 44ð 44rA   ú        c                 óp  — |dk    r-d                      d„ |D ¦   «         ¦  «        }|›|›d| ›d|›d�}	nŒ|dk    r@|›|›d| ›dd                      |¦  «        ›d	�}	|	|                     d
¦  «        rd|z  ndz  }	nF|dk    s|dk    sJ ‚d                      d„ |D ¦   «         ¦  «        } dj        di t          ¦   «         ¤Ž}	|dk    p|dk    }
|
r| dz   n| }|
r|dz  n|}|rdnd}t          j        rd|z   nd|z   }d|||fz  }|dk    r|g}d|g}n#|g}g }|dk    r|
s|dk    r|dd||dz  |fz  gz  }|	||fS )zƒ
    For a given function and its usage modes,
    returns python code and assembly patterns it should and should not generate
    Úscalarú,c                 ó   — g | ]}|d z   ‘ŒS )z[0]rM   ©r<   Úas     r?   rK   z!func_patterns.<locals>.<listcomp>e   ó   € Ð3Ð3Ð3¨˜Q˜u™WÐ3Ð3Ð3rA   z[0] += math.ú(z)
Únumpyz += np.ú)Úintz.astype(np.%s)
ú
Úranger   c                 ó   — g | ]}|d z   ‘ŒS )z[i]rM   rW   s     r?   rK   z!func_patterns.<locals>.<listcomp>l   rY   rA   zP{pad}for i in {mode}({res}.size):
{pad}{pad}{res}[i] += math.{func}({arg_list})
Úfloat32Ú	complex64rO   r   r   Ú_haz$_ú$z__svml_%s%d%s,Ú__svml_r   Úint32z%zmmrM   )ÚjoinÚ
startswithÚformatÚlocalsr   ÚIS_OSX)ÚfuncÚargsÚresÚdtypeÚmodeÚvlenÚfastmathÚpadÚarg_listÚbodyÚis_f32rO   r>   Ú	prec_suffÚscalar_funcÚ	svml_funcÚcontainsÚavoidss                     r?   Úfunc_patternsr|   ]   sé  € ð ˆxÒÐØ—8’8Ð3Ð3¨dÐ3Ñ3Ô3Ñ4Ô4ˆØ-0¨S°#°#°#°t°t°t¸X¸X¸XÐFˆˆØ	�ŠˆØ&) c¨3¨3¨3°°°°c·h²h¸t±n´n°n°nÐEˆØ¨e×.>Ò.>¸uÑ.EÔ.EÐOÐ" UÑ*Ð*È4ÑOˆˆà�wŠˆ $¨(Ò"2Ð"2Ð"2Ð2Ø—8’8Ð3Ð3¨dÐ3Ñ3Ô3Ñ4Ô4ˆðð Aäð"ð "å™œð"ð "ˆð �iÒÐ7 5¨KÒ#7€FØÐ$ˆˆS‰ˆ €AØÐ"ˆˆQ‰ˆ˜d€AàÐ)�� E€IÝ"œMÐ4�$�q‘&�&¨s°1©u€KØ  A q¨)Ð#4Ñ4€IØˆxÒÐØ�=ˆØ˜YÐ'ˆˆà�;ˆØˆà�1Š9ˆ9˜&ˆ9 E¨WÒ$4Ð$4Ø�vÐ/°1°a¸±c¸9Ð2EÑEÐFÑFˆFØ�˜6Ð!Ð!rA   c                 ó   — | › d|› |› d|› �S )z, Returns pretty name for given set of modes Ú_rM   )ro   rp   rq   Únames       r?   Úusecase_namer€   ˆ   s%   € ð Ð)Ð)�dÐ)˜DÐ)Ð) 4Ð)Ð)Ð)rA   c           
      óD  — t          | |||¦  «        } dj        di t          ¦   «         ¤Ž}t          |dk    rt          nt
          ¦  «        }|                      d¦  «        r|                     t          ¦  «        }t          ¦   «         }t          ¦   «         }|D ]K}	t          |	dgd| |||¦  «        \  }
}}| 
                    |¦  «         ||
z  }| 
                    |¦  «         ŒL|dz  }i }t          |t          ¦   «         |¦  «         |||         _        ||         ||fS )z? Combine multiple function calls under single umbrella usecase z\def {name}(n):
        x   = np.empty(n*8, dtype=np.{dtype})
        ret = np.empty_like(x)
r[   ÚcomplexÚxÚretz        return retrM   )r€   ri   rj   ÚsetÚnumpy_funcsÚother_funcsrh   Ú
differenceÚcomplex_funcs_excluder|   ÚupdateÚexecÚglobalsÚ__doc__)ro   rp   rq   rr   r   ru   Úfuncsrz   r{   rO   ÚbÚcrX   Úldicts                 r?   Úcombo_svml_usecaser’   Ž   s;  € õ ˜˜t T¨4Ñ0Ô0€Dð+ð $ä$*ð7ð 7å-3©X¬Xð7ð 7€Dõ ˜t wš˜•�µKÑ@Ô@€EØ×Ò˜	Ñ"Ô"ð 8Ø× Ò Õ!6Ñ7Ô7ˆÝ‰uŒu€HÝ‰UŒU€Fàð ð ˆÝ  C 5¨%°¸¸dÀHÑMÔM‰ˆˆ1ˆaØ�Š�aÑÔÐØ�‰	ˆØ�Š˜ÑÔÐÐØÐ Ñ €Dà€EÝˆ�w‰yŒy˜%Ñ Ô Ð Ø€Eˆ$„KÔØ�Œ;˜ &Ð(Ð(rA   c                   ó¸   — e Zd ZdZdZ ej        d                     dg ee	¦  «        z   ¦  «        ¦  «        Z
ed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )	ÚTestSVMLGenerationz; Tests all SVML-generating functions produce desired calls Fú|z\$[a-z_]\w+,c                 ó¾   — t          | |¦  «        }	  |¦   «         \  }}n%# t          $ r t          j        ¦   «         }d}Y nw xY w|                     ||dœ¦  «         d S )NF)ÚstatusÚmsg)ÚgetattrÚ	ExceptionÚ	tracebackÚ
format_excÚput)ÚclsÚtestnameÚoutqueueÚmethodÚokr˜   s         r?   Ú	mp_runnerzTestSVMLGeneration.mp_runner±   s{   € å˜˜hÑ'Ô'ˆð	Ø�f‘h”h‰GˆB��øÝð 	ð 	ð 	ÝÔ&Ñ(Ô(ˆCØˆBˆBˆBð	øøøð 	�Š ¨3Ð/Ð/Ñ0Ô0Ð0Ð0Ð0s   ’   AÁAc                 ó’  ‡ ‡‡‡‡‡	‡
— ‰                      d¦  «        r‰dk    rd S ‰                      d¦  «        o‰dk    }t          j        fŠ	t          ˆ ˆˆˆˆ	ˆfd„¦   «         }t	          ‰‰‰‰d         ¦  «        }d|› �Š
t          ‰ ‰
|¦  «         t          j        | d¦  «        ˆ
fd	„¦   «         }t          ‰ d
|› �|¦  «         d S )Nr‚   r[   r]   r   c            	      óº  •‡	— t          ‰‰‰‰d         ‰d         ¦  «        \  } }}t          dt          ‰         ¦  «        5  t          dt          ‰         ¦  «        5  	  t	          ‰‰d         ‰d         ¬¦  «        | ¦  «        }n%# t
          $ r t          d| j        z   ¦  «        ‚w xY w	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                     ‰¦  «        Š	ˆ	fd„|D ¦   «         }ˆ	fd	„|D ¦   «         }| o| }d
                     ˆ
fd„‰	 	                    d
¦  «        D ¦   «         ¦  «        }d|› d|› d|› d| j        › �}||fS )Nrr   r   r   r   Úerror_model©rr   r¦   zraised while compiling c                 ó   •— g | ]}|‰v¯|‘Œ	S rM   rM   ©r<   ÚpatternÚasms     €r?   rK   zITestSVMLGeneration._inject_test.<locals>.run_template.<locals>.<listcomp>Ó   s   ø€ ÐLÐLÐL '¸WÈ¸^¸^�g¸^¸^¸^rA   c                 ó   •— g | ]}|‰v ¯|‘Œ	S rM   rM   r©   s     €r?   rK   zITestSVMLGeneration._inject_test.<locals>.run_template.<locals>.<listcomp>Ô   s   ø€ ÐEÐEÐE °gÀ°n°n�W°n°n°nrA   r^   c                 óP   •— g | ]"}‰j                              |¦  «        rd |v¯ |‘Œ#S )ú")Ú
asm_filterÚsearch)r<   Úlinerž   s     €r?   rK   zITestSVMLGeneration._inject_test.<locals>.run_template.<locals>.<listcomp>×   sE   ø€ ð Eð Eð E˜$Ø”N×)Ò)¨$Ñ/Ô/ðEØ8;¸t¸¸ð Ø8C¸¸rA   zWhile expecting z	 and not z,
it contains:
z
when compiling )
r’   r   Úvlen2cpuÚvlen2cpu_featuresr   rš   r�   Úinspect_asmrg   rH   )Úfnrz   r{   Ú	jitted_fnÚmissedÚfoundr¢   Údetailr˜   r«   rž   ro   Úflagsrp   Úsigrq   s            @€€€€€€r?   Úrun_templatez5TestSVMLGeneration._inject_test.<locals>.run_templateÄ   s’  øø€ å#5°e¸TÀ4Ø6;¸JÔ6GØ6;¸F´mñ$Eô $EÑ ˆB�˜&õ %Ð%5µxÀ´~ÑFÔFð Jð JÝ$Ð%9Õ;LÈTÔ;RÑSÔSðJð JðJð!H¥ S°5¸Ô3DØ16°}Ô1Eð!Hñ !Hô !HØHJñ!Lô !L�I�Iøå ð Jð Jð JÝ#Ð$=¸b¼jÑ$HÑIÔIÐIðJøøøð ð	Jð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jð Jð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jð ×'Ò'¨Ñ,Ô,ˆCØLÐLÐLÐL¨XÐLÑLÔLˆFØEÐEÐEÐE¨FÐEÑEÔEˆEØ�Ð) E 	ˆBØ—Y’YðEð Eð Eð E #§)¢)¨D¡/¤/ð Eñ Eô EñFô FˆFð/ 6ð /ð /°Eð /ð /Ø!'ð/ð /à"$¤*ð/ð /ð ð
 �s�7ˆNsN   ÁCÁB9Á'BÂB9Â"B)Â)B9Â-CÂ9B=	Â=CÃ B=	ÃCÃCÃCr   Úrun_zNot implementedc                 ó*  •— t          j        d¦  «        }|                     ¦   «         }|                     t	          | ¦  «        j        ‰	|g¬¦  «        }|                     ¦   «          |                     d¬¦  «        }|j        }|€8|€|  	                    d¦  «         n |dk     r|  	                    d| › d�¦  «         |  
                    |dd	¬
¦  «         |                     ¦   «         }|d         }|d         }|                      ||¬
¦  «         d S )NÚspawn)Útargetrm   é   )ÚtimeoutzProcess timed out.r   zProcess terminated with signal ú.zprocess ended unexpectedly)r˜   r—   r˜   )ÚmpÚget_contextÚQueueÚProcessÚtyper£   Ústartrg   ÚexitcodeÚfailÚassertEqualÚgetÚ
assertTrue)
ÚselfÚctxÚqrJ   Úterm_or_timeoutrÊ   Úoutr—   r˜   rŸ   s
            €r?   Útest_runnerz4TestSVMLGeneration._inject_test.<locals>.test_runnerä   s  ø€ å”. Ñ)Ô)ˆCØ—	’	‘”ˆAØ—’¥4¨¡:¤:Ô#7¸xÈ¸m�ÑLÔLˆAØ�GŠG‰IŒIˆIð  Ÿfšf¨R˜fÑ0Ô0ˆOØ”zˆHØÐ&ØÐ#Ø—I’IÐ2Ñ3Ô3Ð3Ð3Ø ’\�\Ø—I’IÐLÀÀ	ÐLÐLÐLÑMÔMÐMØ×Ò˜X qÐ.JÐÑKÔKÐKØ—%’%‘'”'ˆCØ˜”]ˆFØ�e”*ˆCØ�OŠO˜F¨ˆOÑ,Ô,Ð,Ð,Ð,rA   Útest_)rh   ÚnumbaÚint64Ústaticmethodr€   ÚsetattrÚunittestÚ
skipUnless)rž   ro   rp   rq   rº   Úskippedr¼   ÚpostfixrÔ   r»   rŸ   s   `````    @@r?   Ú_inject_testzTestSVMLGeneration._inject_test»   s  øøøøøøø€ ð ×Ò˜IÑ&Ô&ð 	¨4°7ª?¨?ØˆFà×"Ò" 5Ñ)Ô)Ð7¨d°aªiˆÝŒ{ˆnˆå	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 
Œð	õ6 ˜u d¨D°%¸´-Ñ@Ô@ˆØ#˜'Ð#Ð#ˆÝ��X˜|Ñ,Ô,Ð,å	Ô	 ˜[Ð*;Ñ	<Ô	<ð	-ð 	-ð 	-ð 	-ñ 
=Ô	<ð	-õ* 	�Ð&˜WÐ&Ð&¨Ñ4Ô4Ð4Ð4Ð4rA   c                 ó  — ddddœddddœg}dD ];}t           D ]1}|D ],}dD ]'}|                      |||t          |¦  «        ¦  «         Œ(Œ-Œ2Œ<d	D ]7}t          | | t	          d
¦  «        t          | |¦  «        ¦  «        ¦  «         Œ8d S )NFr[   Úusecase)rr   r¦   r   TÚfastmath_usecase)rb   Úfloat64ra   rf   )rT   r_   r   r[   )Útest_int32_range4_usecaseÚ	important)r²   rÞ   ÚdictrÙ   r   r™   )rž   Ú	flag_listro   rq   rº   rp   Úns          r?   ÚautogeneratezTestSVMLGeneration.autogenerateü   sô   € à!&°gØ%ð'ð 'à!%°WØ.ð0ð 0ð2ˆ	ð
 Dð 	Ið 	IˆEÝ ð Ið I�Ø&ð Ið I�EØ Dð Ið I˜Ø×(Ò(¨°°d½DÀ¹K¼KÑHÔHÐHÐHðIðIðIð
ð 	?ð 	?ˆAå�C˜Ð,�C Ñ,Ô,­W°S¸!©_¬_Ñ=Ô=Ñ>Ô>Ð>Ð>ð	?ð 	?rA   N)Ú__name__Ú
__module__Ú__qualname__r�   Ú_numba_parallel_test_ÚreÚcompilerg   ÚlistÚ
svml_funcsr¯   Úclassmethodr£   rÞ   rè   rM   rA   r?   r”   r”   ¨   s¡   € € € € € àEÐEð "Ðà�”˜CŸHšH oÐ%6°t°t¸JÑ7GÔ7GÑ%GÑHÔHÑIÔI€Jàð1ð 1ñ „[ð1ð ð>5ð >5ñ „[ð>5ð@ ð?ð ?ñ „[ð?ð ?ð ?rA   r”   c                 ó*   — t          j        | ¦  «        S ©N)Úmathr   )rƒ   s    r?   Úmath_sin_scalarrõ     s   € ÝŒ8�A‰;Œ;ÐrA   c                 ó¼   — t          j        | t           j        ¬¦  «        }t          | ¦  «        D ]+}t	          j        t          j        |¦  «        ¦  «        ||<   Œ,|S ©N©ro   ©ÚnpÚemptyrâ   r_   rô   r   ©rç   r„   rƒ   s      r?   Úmath_sin_looprý     sO   € Ý
Œ(�1�BœJÐ
'Ñ
'Ô
'€CÝ�1‰XŒXð )ð )ˆÝ”�"œ* Q™-œ-Ñ(Ô(ˆˆA‰ˆØ€JrA   c                   óö   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zddœd	„Z	d
„ Z
 ej        e¬¦  «        d„ ¦   «         Zd„ Z ej        e¬¦  «        d„ ¦   «         Zd„ Z ej        ddie¥¬¦  «        d„ ¦   «         Zd„ ZdS )ÚTestSVMLz  Tests SVML behaves as expected Fc                 óÔ   — |rJ ‚t          d„ |D ¦   «         ¦  «        } t          |¦  «        |¦  «        } t          |d¬¦  «        |¦  «        }|j        |         |j        |         fS )Nc                 ó6   — g | ]}t          j        |¦  «        ‘ŒS rM   )rÖ   Útypeof)r<   rƒ   s     r?   rK   z$TestSVML.compile.<locals>.<listcomp>%  s    € Ð3Ð3Ð3¨•U”\ !‘_”_Ð3Ð3Ð3rA   T©rr   )Útupler   Ú	overloads)rÏ   rl   rm   Úkwargsr»   ÚstdÚfasts          r?   rî   zTestSVML.compile#  sq   € ØÐÐˆzÝÐ3Ð3¨dÐ3Ñ3Ô3Ñ4Ô4ˆà�d�3‰iŒi˜‰oŒoˆØ'�t�C $Ð'Ñ'Ô'¨Ñ-Ô-ˆàŒ}˜SÔ! 4¤>°#Ô#6Ð6Ð6rA   c                 óÔ  — |st          ¦   «         S g }|D ]Å}t          |t          j        ¦  «        r)|                     |                     d¦  «        ¦  «         ŒEt          |t          j        ¦  «        r(|                     |                     ¦   «         ¦  «         Œ‡t          |t          j        ¦  «        r|                     |¦  «         Œ·t          d¦  «        ‚t          |¦  «        S )Nr=   z%Unsupported argument type encountered)
r  Ú
isinstancerú   ÚndarrayÚappendÚcopyÚnumberÚnumbersÚNumberÚ
ValueError)rÏ   rm   Únew_argsrƒ   s       r?   Ú	copy_argszTestSVML.copy_args,  sÔ   € Øð 	Ý‘7”7ˆNØˆØð 	Jð 	JˆAÝ˜!�RœZÑ(Ô(ð JØ—’ §¢ s¡¤Ñ,Ô,Ð,Ð,Ý˜A�rœyÑ)Ô)ð JØ—’ §¢¡¤Ñ)Ô)Ð)Ð)Ý˜A�wœ~Ñ.Ô.ð JØ—’ Ñ"Ô"Ð"Ð"å Ð!HÑIÔIÐIÝ�X‰ŒÐrA   c                 óê   —  | j         |g|¢R Ž \  }} | | j        |Ž Ž } |j         | j        |Ž Ž } |j         | j        |Ž Ž }t          j        j        ||fi |¤Ž t          j        j        ||fi |¤Ž d S ró   )rî   r  Úentry_pointrú   ÚtestingÚassert_almost_equal)	rÏ   Úpyfuncrm   r  ÚjitstdÚjitfastÚpy_expectedÚjitstd_resultÚjitfast_results	            r?   Úcheck_resultzTestSVML.check_result;  s¬   € Ø&˜$œ, vÐ5°Ð5Ð5Ð5‰ˆ�ð �f˜n˜dœn¨dÐ3Ð4ˆð +˜Ô*¨N¨D¬N¸DÐ,AÐBˆð -˜Ô,¨n¨d¬n¸dÐ.CÐDˆõ 	Œ
Ô& }°kÐLÐLÀVÐLÐLÐLÝ
Œ
Ô& ~°{ÐMÐMÀfÐMÐMÐMÐMÐMrA   c                 óä   — |                      dd ¦  «        }|                      dd ¦  «        } | j        |g|¢R Ž \  }}|r|                      ||¦  «         |r|                      ||¦  «         d S d S )NÚstd_patternÚfast_pattern)Úpoprî   Úcheck_svml_presence)rÏ   r  rm   r  r   r!  r  r  s           r?   Ú	check_asmzTestSVML.check_asmK  s“   € Ø—j’j °Ñ5Ô5ˆØ—z’z .°$Ñ7Ô7ˆð '˜$œ, vÐ5°Ð5Ð5Ð5‰ˆ�Øð 	:Ø×$Ò$ V¨[Ñ9Ô9Ð9Øð 	<Ø×$Ò$ W¨lÑ;Ô;Ð;Ð;Ð;ð	<ð 	<rA   Úboth©Úwhatc                óŠ   — |dv sJ ‚|dk    s|dk    r | j         |g|¢R i |¤Ž |dk    s|dk    r | j        |g|¢R i |¤Ž d S d S )N)r%  Úresultr«   r%  r)  r«   )r  r$  )rÏ   r  r'  rm   r  s        r?   ÚcheckzTestSVML.checkW  sŠ   € ØÐ0Ð0Ð0Ð0Ð0Ø�6Š>ˆ>˜T XÒ-Ð-ØˆDÔ˜fÐ6 tÐ6Ð6Ð6¨vÐ6Ð6Ð6Ø�6Š>ˆ>˜T Uš]˜]ØˆDŒN˜6Ð3 DÐ3Ð3Ð3¨FÐ3Ð3Ð3Ð3Ð3ð +˜]rA   c                 ód   — |j                              ¦   «         }|                      ||¦  «         d S ró   )ÚlibraryÚget_asm_strÚassertIn)rÏ   rl   rª   r«   s       r?   r#  zTestSVML.check_svml_presence^  s/   € ØŒl×&Ò&Ñ(Ô(ˆØ�Š�g˜sÑ#Ô#Ð#Ð#Ð#rA   )Úenvvarsc                 óž   — t           j        rdnd}|                      t          dd|¬¦  «         |                      t          dd|¬¦  «         d S )Nz$_sinz$sinç      @r«   )r'  r   )r'  r!  )r   rk   r*  rõ   )rÏ   Úpats     r?   Útest_scalar_context_asmz TestSVML.test_scalar_context_asmb  sN   € õ  œÐ2ˆgˆg¨FˆØ�
Š
•? B¨UÀˆ
ÑDÔDÐDØ�
Š
•? B¨UÀˆ
ÑEÔEÐEÐEÐErA   c                 ó@   — |                       t          dd¬¦  «         d S )Nr1  r)  r&  )r*  rõ   ©rÏ   s    r?   Útest_scalar_context_resultz#TestSVML.test_scalar_context_resulti  s    € à�
Š
•? B¨Xˆ
Ñ6Ô6Ð6Ð6Ð6rA   c                 óL   — d}d}|                       t          dd||¬¦  «         d S )Nz__svml_sin8_ha,z__svml_sin8,é
   r«   )r'  r   r!  ©r*  rý   )rÏ   r  r  s      r?   Útest_svml_asmzTestSVML.test_svml_asmm  s>   € ð  ˆØˆØ�
Š
•= "¨5¸cØ $ð 	ñ 	&ô 	&ð 	&ð 	&ð 	&rA   c                 ó@   — |                       t          dd¬¦  «         d S )Nr8  r)  r&  r9  r5  s    r?   Útest_svml_resultzTestSVML.test_svml_resultv  s    € à�
Š
•= "¨8ˆ
Ñ4Ô4Ð4Ð4Ð4rA   ÚNUMBA_DISABLE_INTEL_SVMLÚ1c                 ó&  — d„ }t           j        f} t          |¦  «        |¦  «        } t          |d¬¦  «        |¦  «        }|j        |         |j        |         f}|D ]1}|j                             ¦   «         }|                      d|¦  «         Œ2d S )Nc                 ó¼   — t          j        | t           j        ¬¦  «        }t          | ¦  «        D ]+}t	          j        t          j        |¦  «        ¦  «        ||<   Œ,|S r÷   rù   rü   s      r?   rý   z2TestSVML.test_svml_disabled.<locals>.math_sin_loop~  sO   € Ý”(˜1¥B¤JÐ/Ñ/Ô/ˆCÝ˜1‘X”Xð 1ð 1�Ýœ¥"¤*¨Q¡-¤-Ñ0Ô0��A‘�ØˆJrA   Tr  Ú
__svml_sin)rÖ   rf   r   r  r,  r-  ÚassertNotIn)rÏ   rý   r»   r  r  Úfnsrµ   r«   s           r?   Útest_svml_disabledzTestSVML.test_svml_disabledz  s¬   € ð	ð 	ð 	õ Œ{ˆnˆØ�d�3‰iŒi˜Ñ&Ô&ˆØ'�t�C $Ð'Ñ'Ô'¨Ñ6Ô6ˆØŒm˜CÔ  $¤.°Ô"5Ð5ˆð ð 	0ð 	0ˆBØ”*×(Ò(Ñ*Ô*ˆCØ×Ò˜\¨3Ñ/Ô/Ð/Ð/ð	0ð 	0rA   c                 ó¼   — t          dhd¬¦  «        d„ ¦   «         } |d¦  «         |                      d|                     |j        d         ¦  «        v ¦  «         d S )Nr  r[   r§   c                 óò   — t          j        | dz  t           j        ¬¦  «        }t          j        |¦  «        }t	          |j        ¦  «        D ]*}||xx         t          j        ||         ¦  «        z  cc<   Œ+|S )Nr   rø   )rú   rû   râ   Ú
empty_liker_   Úsizerô   r"   )rç   rƒ   r„   Úis       r?   Úimplz@TestSVML.test_svml_working_in_non_isolated_context.<locals>.impl�  sk   € å”(˜1˜q™5­¬
Ð3Ñ3Ô3ˆAÝ”- Ñ"Ô"ˆCÝ˜3œ8‘_”_ð *ð *�Ø�A��”�$œ) A a¤D™/œ/Ñ)��‘�ØˆJrA   é   Úintel_svmlccr   )r   rÎ   Úinspect_llvmÚ
signatures)rÏ   rJ  s     r?   Ú)test_svml_working_in_non_isolated_contextz2TestSVML.test_svml_working_in_non_isolated_contextŽ  sl   € Ý	˜�x¨WÐ	5Ñ	5Ô	5ð	ð 	ñ 
6Ô	5ð	ð 	ˆˆQ‰ŒˆØ�Š˜¨$×*;Ò*;¸D¼OÈAÔ<NÑ*OÔ*OÐOÑPÔPÐPÐPÐPrA   N)ré   rê   rë   r�   rì   rî   r  r  r$  r*  r#  r   Úrun_test_in_subprocessÚ_skylake_axv512_envvarsr3  r6  r:  r<  rD  rO  rM   rA   r?   rÿ   rÿ     sj  € € € € € à*Ð*ð "Ðð7ð 7ð 7ðð ð ðNð Nð Nð 
<ð 
<ð 
<ð )/ð 4ð 4ð 4ð 4ð 4ð$ð $ð $ð %€XÔ$Ð-DÐEÑEÔEðFð Fñ FÔEðFð7ð 7ð 7ð %€XÔ$Ð-DÐEÑEÔEð&ð &ñ FÔEð&ð5ð 5ð 5ð %€XÔ$Ð.HÈ#ð .IØ0Gð.Ið Jñ Jô Jð0ð 0ñJô Jð0ð$	Qð 	Qð 	Qð 	Qð 	QrA   rÿ   Ú__main__)rR   ):rô   r[   rú   r  rí   r›   ÚmultiprocessingrÄ   rÖ   r   r   Ú
numba.corer   Únumba.tests.supportr   r   r   rÚ   rÛ   Ú
USING_SVMLÚ
needs_svmlr²   r³   rQ  r   r   r   r   r   r   r   r   r   r   r"   r#   r$   r)   r.   r/   r6   r7   r8   rð   r‰   Úitemsr†   r‡   r|   r€   r’   r”   rè   rõ   rý   rÿ   ré   ÚmainrM   rA   r?   ú<module>rZ     sã  ðØ €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ €€€à ˆXÔ  Ô!2Ø!EñGô G€
ð ˜YÐ+;Ð<Ð<€ð ˜rÐ&7Ð8Ð8Ð ð
 .>Ø1BðDð DÐ ð*Ø	�”˜œÐ!ð*à	�”˜œÐ!ð*ð 
�"ð*ð 
�”˜œÐ!ð	*ð
 
�”˜œÐ!ð*ð �”	ˆ{ð*ð �”
ˆ|ð*ð �”	ˆ{ð*ð �”
ˆ|ð*ð �"ð*ð �”	ˆ{ð*ð �”
ˆ|ð*ð �"ð*ð �"ð*ð �"ð*ð  �"ð!*ð" �"ð#*ð *ð$ �”˜œÐ#ð%*ð& 
�”ˆzð'*ð( �”	ˆ{ð)*ð* �"ð+*ð, �"ð-*ð. �"ð/*ð0 �"ð1*ð2 �”˜$œ*Ð%ð3*ð4 �"ð5*ð6 �"ð7*ð8 �"ð9*ð: �"ð;*ð< �”˜$œ*Ð%ð=*ð> �”˜$œ*Ð%ð?*ð@ �"ðA*ðB �"ðC*ðD �"ðE*ð *ðF ØØØ”˜œÐ#Ø”˜œÐ!Ø”˜œÐ#ØðS*ð *ð *€
ðX JÐIÐIÐ ð AÐ@˜z×/Ò/Ñ1Ô1Ð@Ñ@Ô@€
ð5ð 5˜Z×-Ò-Ñ/Ô/ð 5ñ 5ô 5€ð5ð 5˜Z×-Ò-Ñ/Ô/ð 5ñ 5ô 5€ð("ð ("ð ("ð ("ðV*ð *ð *ð)ð )ð )ð4 ðb?ð b?ð b?ð b?ð b?˜ñ b?ô b?ñ „ðb?ðJ × Ò Ñ !Ô !Ð !ðð ð ðð ð ð ðzQð zQð zQð zQð zQˆxñ zQô zQñ „ðzQðz ˆzÒÐØ€H„M�O„O€O€O€Oð ÐrA   