§
    ƒÛgk  ã                   ó&  — 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         úT/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_vectorization.pyÚgen_irzTestVectorization.gen_ir   sP  € Ý ØÐ.ñ
ô 
ð 	1ð 	1åÐ3°RÑ8Ô8ð	1ð 	1õ ‘W”WˆFÝ-¨hÑ7Ô7ˆFŒOØˆFŒJÝ% d¨J¸fÐEÑEÔEˆFØ”>×.Ò.Ñ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Ý”Y˜q‘\”\ð  ð  �Ø�q—v’v‘x”x‘��Øˆ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   € ð	ð 	ð 	ð —+’+˜f¥u¤}°S°S°q°SÔ'9Ð&;Àd�+ÑKÔKˆØ�Š�m WÑ-Ô-Ð-Ø�ŠÐ.°Ñ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™‘>ˆAˆa‰DØ˜˜b™‘>ˆAˆa‰DØ˜˜b™‘>ˆAˆa‰DØ˜˜b™‘>ˆAˆa‰DˆDˆDr&   é   r'   Tr(   z
2 x double)r   r+   r   r,   )r   r<   Útyr-   s       r   Útest_slpzTestVectorization.test_slp-   sb   € ð
	"ð 	"ð 	"õ Œ]ˆØ—+’+˜c R E¨A¡I°°C°C°a°C´°
Ñ$:Àd�+ÑKÔKˆØ�Š�l GÑ,Ô,Ð,Ð,Ð,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Øð %ð %�Ø•r”w˜t‘}”}Ñ$��ØˆJr&   Tr(   r)   r*   )r   r   ÚListTyper+   r,   )r   rD   r-   s      r   Útest_instcombine_effectz)TestVectorization.test_instcombine_effect<   sp   € ð	ð 	ð 	ð —+’+˜m­e¬n½U¼]Ñ.KÔ.KÐ-MØ'+ð ñ -ô -ˆà�Š�m WÑ-Ô-Ð-Ø�ŠÐ.°Ñ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Ô$Ð.CÀSÐ-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Ø(Ð(Ð(Ð(Ð(Ð(à€D„O�BÐ5Ñ6Ô6Ð6ð €„Ð!�Ô!Ñ#Ô# xÒ/Ð1CÑDÔDð;9ð ;9ð ;9ð ;9ð ;9˜ñ ;9ô ;9ñ EÔDð;9ð| ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr&   