o
    it                     @   s   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r4d dlmZ edd	 d
ddZee  dkdG dd de
ZedkrUe  dS dS )    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                   @   s^   e Zd ZdZdddZejeddd Zejdd	iedd
d Z	ejeddd Z
dS )TestVectorizationzP
    Tests to assert that code which should vectorize does indeed vectorize
    Fc                 C   s6   |  tjd |  tjd t||d|}||S )Nr   r   fastmath)assertEqualr   CPU_NAMECPU_FEATURESr   inspect_llvm)selffunc
args_tupler   jitted r   [/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/numba/tests/test_vectorization.pygen_ir   s   
zTestVectorization.gen_ir)envvarsc                 C   sB   dd }| j |tjd d d fdd}| d| | d| d S )Nc                 S   s$   d}t | D ]}|| 7 }q|S )Nr   )npnditeritem)xaccvr   r   r   do_sum%   s   z2TestVectorization.test_nditer_loop.<locals>.do_sum   Tr   vector.bodyllvm.loop.isvectorized)r   r   float64assertIn)r   r!   llvm_irr   r   r   test_nditer_loop"   s   z"TestVectorization.test_nditer_loopNUMBA_SLP_VECTORIZE1c                 C   sD   dd }t j}| j||fd |d d d f dd}| d| d S )Nc                 S   sD   | | |  |d< |||  |d< | | |  |d< |||  |d< d S )Nr   r"         r   )a1a2b1b2Ar   r   r   foo8   s   z'TestVectorization.test_slp.<locals>.foo   r"   Tr   z
2 x double)r   r%   r   r&   )r   r2   tyr'   r   r   r   test_slp1   s   &zTestVectorization.test_slpc                 C   s>   dd }| j |ttjfdd}| d| | d| d S )Nc                 S   s    d}| D ]	}|t |7 }q|S )Ng        )r   sqrt)lstr   r   r   r   r   sum_sqrt_listJ   s   z@TestVectorization.test_instcombine_effect.<locals>.sum_sqrt_listTr   r#   r$   )r   r   ListTyper%   r&   )r   r8   r'   r   r   r   test_instcombine_effectB   s   z)TestVectorization.test_instcombine_effectN)F)__name__
__module____qualname____doc__r   r   run_test_in_subprocess_skylake_envr(   r5   r:   r   r   r   r   r      s    





r   __main__)platformnumpyr   numbar   unittestr   
numba.corer   numba.tests.supportr   _DEBUGllvmliter   llvm
set_optionr@   skipIfmachiner   r;   mainr   r   r   r   <module>   s&    ?