
    xKgt                     $   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        b/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_vectorization.pygen_irzTestVectorization.gen_ir   sQ    *:;,,b14j84T:"":..    )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YYq\qvvx "Jr      Tr   vector.bodyllvm.loop.isvectorized)r   r   float64assertIn)r   r&   llvm_irs      r   test_nditer_loopz"TestVectorization.test_nditer_loop"   sJ    	 ++fu}}SqS'9&;d+KmW-.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>AaDb>AaDb>AaDb>AaDr      r'   Tr   z
2 x double)r   r*   r   r+   )r   r:   tyr,   s       r   test_slpzTestVectorization.test_slp1   sI    	" ]]++cREAICaC
$:d+KlG,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rwwt}$ Jr   Tr   r(   r)   )r   r   ListTyper*   r+   )r   rB   r,   s      r   test_instcombine_effectz)TestVectorization.test_instcombine_effectB   sP    	 ++mennU]].K-M'+  -mW-.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          (		(DOOB56 ' !!!#x/1CD<9 <9 E<9~ zHMMO r   