
    ܙdk                     &   d dl Z d dlZd dlmZ d dlZd dlmZmZ d dl	m
Z
mZ d dlmZ dZerd dlmZ  ej        dd	            ej         e j                    d
k    d           G d de                      Zedk    r ej                     dS dS )    N)types)override_env_configTestCase)compile_isolatedFlags)FastMathOptionsF)binding z--debug-only=loop-vectorizex86_64zx86_64 only testc                   ^    e Zd ZdZddZd Z ej        ddi          d             Zd	 Z	d
S )TestVectorizationzP
    Tests to assert that code which should vectorize does indeed vectorize
    Fc                 h   t          dd          5  t          dd          5  t                      }t          |          |_        d|_        t          |||          }|j                                        cd d d            cd d d            S # 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NNUMBA_CPU_NAMEzskylake-avx512NUMBA_CPU_FEATURESr
   T)flags)r   r   r   fastmathnrtr   libraryget_llvm_str)selffunc
args_tupler   _flagsjitteds         >lib/python3.11/site-packages/numba/tests/test_vectorization.pygen_irzTestVectorization.gen_ir   sP    .
 
 	1 	13R88	1 	1 WWF-h77FOFJ%dJfEEEF>..00	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s5   B'AB6B'B	B'B	B''B+.B+c                     d }|                      |t          j        d d d         fd          }|                     d|           |                     d|           d S )Nc                 f    d}t          j        |           D ]}||                                z  }|S )Nr   )npnditeritem)xaccvs      r   do_sumz2TestVectorization.test_nditer_loop.<locals>.do_sum!   s6    CYq\\    qvvxxJ       Tr   vector.bodyllvm.loop.isvectorized)r   r   float64assertIn)r   r%   llvm_irs      r   test_nditer_loopz"TestVectorization.test_nditer_loop   si    	 	 	 ++fu}SSqS'9&;d+KKmW---.88888r&   NUMBA_SLP_VECTORIZE1)envvarsc                     d }t           j        }|                     ||fdz  |d d d         fz   d          }|                     d|           d S )Nc                 ^    | | |z   z  |d<   |||z   z  |d<   | | |z   z  |d<   |||z   z  |d<   d S )Nr   r'          )a1a2b1b2As        r   fooz'TestVectorization.test_slp.<locals>.foo2   sJ    b>AaDb>AaDb>AaDb>AaDDDr&      r'   Tr(   z
2 x double)r   r+   r   r,   )r   r<   tyr-   s       r   test_slpzTestVectorization.test_slp-   sb    
	" 	" 	" ]++cREAICCaC
$:d+KKlG,,,,,r&   c                     d }|                      |t          j        t          j                  fd          }|                     d|           |                     d|           d S )Nc                 B    d}| D ]}|t          j        |          z  }|S )Ng        )r   sqrt)lstr#   r!   s      r   sum_sqrt_listz@TestVectorization.test_instcombine_effect.<locals>.sum_sqrt_listC   s/    C % %rwt}}$Jr&   Tr(   r)   r*   )r   r   ListTyper+   r,   )r   rD   r-   s      r   test_instcombine_effectz)TestVectorization.test_instcombine_effect<   sp    	 	 	 ++menU].K.K-M'+  - -mW---.88888r&   N)F)
__name__
__module____qualname____doc__r   r.   r   run_test_in_subprocessr?   rF   r6   r&   r   r   r      s         1 1 1 1
9 
9 
9 %X$.CS-IJJJ- - KJ-9 9 9 9 9r&   r   __main__)platformnumpyr   numbar   unittestnumba.tests.supportr   r   numba.core.compilerr   r   numba.core.cpu_optionsr   _DEBUGllvmliter	   llvm
set_optionskipIfmachiner   rG   mainr6   r&   r   <module>r[      s*               = = = = = = = = 7 7 7 7 7 7 7 7 2 2 2 2 2 2		 7((((((DOB5666 !!##x/1CDD;9 ;9 ;9 ;9 ;9 ;9 ;9 ED;9| zHMOOOOO r&   