Ë
    èÿæit  ã                   ó$  — d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
 dZerd dlmZ  ej                  dd	«       d
ddœZ ej"                   e j$                  «       dk7  d«       G d„ de
«      «       Zedk(  r ej*                  «        yy)é    N)Útypes)Únjit)Úconfig)ÚTestCaseF)ÚbindingÚ z--debug-only=loop-vectorizeúskylake-avx512)ÚNUMBA_CPU_NAMEÚNUMBA_CPU_FEATURESÚx86_64zx86_64 only testc                   ó¶   — e Zd ZdZd
d„Z ej                  e¬«      d„ «       Z ej                  ddie¥¬«      d„ «       Z	 ej                  e¬«      d„ «       Z
y	)ÚTestVectorizationzP
    Tests to assert that code which should vectorize does indeed vectorize
    c                 óÊ   — | j                  t        j                  d«       | j                  t        j                  d«        t	        ||¬«      |«      }|j                  |«      S )Nr	   r   ©Úfastmath)ÚassertEqualr   ÚCPU_NAMEÚCPU_FEATURESr   Úinspect_llvm)ÚselfÚfuncÚ
args_tupler   Újitteds        ús/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_vectorization.pyÚgen_irzTestVectorization.gen_ir   sQ   € Ø×ÑœŸ™Ð*:Ô;Ø×Ñœ×,Ñ,¨bÔ1à4”�j¨8Ô4°TÓ:ˆØ×"Ñ" :Ó.Ð.ó    )Úenvvarsc                 ó¤   — d„ }| j                  |t        j                  d d d…   fd¬«      }| j                  d|«       | j                  d|«       y )Nc                 ód   — d}t        j                  | «      D ]  }||j                  «       z  }Œ |S )Nr   )ÚnpÚnditerÚitem)ÚxÚaccÚvs      r   Údo_sumz2TestVectorization.test_nditer_loop.<locals>.do_sum%   s-   € ØˆCÜ—Y‘Y˜q–\�Ø�q—v‘v“x‘‘ð "àˆJr   é   Tr   úvector.bodyúllvm.loop.isvectorized)r   r   Úfloat64ÚassertIn)r   r&   Úllvm_irs      r   Útest_nditer_loopz"TestVectorization.test_nditer_loop"   sJ   € ò	ð —+‘+˜f¤u§}¡}±S°q°SÑ'9Ð&;Àd�+ÓKˆØ�‰�m WÔ-Ø�‰Ð.°Õ8r   ÚNUMBA_SLP_VECTORIZEÚ1c                 ó’   — d„ }t         j                  }| j                  ||fdz  |d d d…   fz   d¬«      }| j                  d|«       y )Nc                 ó\   — | | |z   z  |d<   |||z   z  |d<   | | |z   z  |d<   |||z   z  |d<   y )Nr   r'   é   é   © )Úa1Úa2Úb1Úb2ÚAs        r   Úfooz'TestVectorization.test_slp.<locals>.foo8   sF   € Ø˜˜b™‘>ˆAˆa‰DØ˜˜b™‘>ˆAˆa‰DØ˜˜b™‘>ˆAˆa‰DØ˜˜b™‘>ˆAˆaŠDr   é   r'   Tr   z
2 x double)r   r*   r   r+   )r   r:   Útyr,   s       r   Útest_slpzTestVectorization.test_slp1   sI   € ò	"ô �]‰]ˆØ—+‘+˜c R E¨A¡I°±C°a°C±°
Ñ$:Àd�+ÓKˆØ�‰�l GÕ,r   c                 ó¾   — d„ }| j                  |t        j                  t        j                  «      fd¬«      }| j	                  d|«       | j	                  d|«       y )Nc                 óH   — d}| D ]  }|t        j                  |«      z  }Œ |S )Ng        )r    Úsqrt)Úlstr$   r"   s      r   Úsum_sqrt_listz@TestVectorization.test_instcombine_effect.<locals>.sum_sqrt_listJ   s(   € ØˆCÛ�Ø”r—w‘w˜t“}Ñ$‘ð àˆJr   Tr   r(   r)   )r   r   ÚListTyper*   r+   )r   rB   r,   s      r   Útest_instcombine_effectz)TestVectorization.test_instcombine_effectB   sP   € ò	ð —+‘+˜m¬e¯n©n¼U¿]¹]Ó.KÐ-MØ'+ð ó -ˆà�‰�m WÔ-Ø�‰Ð.°Õ8r   N)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úrun_test_in_subprocessÚ_skylake_envr-   r=   rD   r4   r   r   r   r      s|   „ ñó/ð %€X×$Ñ$¨\Ô:ñ
9ó ;ð
9ð %€X×$Ñ$Ø&¨Ð<¨|Ð<ôñ-óð-ð %€X×$Ñ$¨\Ô:ñ9ó ;ñ9r   r   Ú__main__)ÚplatformÚnumpyr    Únumbar   Úunittestr   Ú
numba.corer   Únumba.tests.supportr   Ú_DEBUGÚllvmliter   ÚllvmÚ
set_optionrJ   ÚskipIfÚmachiner   rE   Úmainr4   r   r   Ú<module>rY      s›   ðÛ Û Ý Û Ý Ý Ý (à	€Ù	Ý(à€D‡O�O�BÐ5Ô6ð 'Øñ€ð €‡�Ð!�×!Ñ!Ó# xÑ/Ð1CÓDô<9˜ó <9ó Eð<9ð~ ˆzÒØ€H‡M�M…Oð r   