§
    ƒÛg	S  ã                   ó|  — d Z ddlZddlmZ ddlZddlmZmZm	Z	m
Z
 ddlZddlmZmZmZmZmZmZmZmZ ddlmZ ddlmZmZ  G d„ d	e¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z!e"dk    r ej#        ¦   «          dS dS )z¾
Tests for sub-components of parfors.
These tests are aimed to produce a good-enough coverage of parfor passes
so that refactoring on these passes are easier with faster testing turnaround.
é    N©Úreduce)ÚnjitÚtypeofÚprangeÚpndindex)ÚtypingÚrewritesÚtyped_passesÚuntyped_passesÚinline_closurecallÚcompilerÚcpuÚerrors)Ú
cpu_target)ÚTestCaseÚis_parfors_unsupportedc                   ó   — e Zd Zd„ ZdS )Ú
MyPipelinec                 óö   — t          j        ¦   «         | _        || j        _        || j        _        || j        _        || j        _        d | j        _        d | j        _        d | j        _	        i | j        _
        d S ©N)r   Ú	StateDictÚstateÚ	typingctxÚ	targetctxÚargsÚfunc_irÚtypemapÚreturn_typeÚ	calltypesÚmetadata)Úselfr   r   r   Útest_irs        úU/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_parfors_passes.pyÚ__init__zMyPipeline.__init__   sg   € ÝÔ'Ñ)Ô)ˆŒ
Ø(ˆŒ
ÔØ(ˆŒ
ÔØˆŒ
ŒØ$ˆŒ
ÔØ!ˆŒ
ÔØ!%ˆŒ
ÔØ#ˆŒ
ÔØ ˆŒ
ÔÐÐó    N)Ú__name__Ú
__module__Ú__qualname__r%   © r&   r$   r   r      s#   € € € € € ð	!ð 	!ð 	!ð 	!ð 	!r&   r   c                   ól   — e Zd Zed	d„¦   «         Zed„ ¦   «         Zed	d„¦   «         Zd„ Zd„ Zd„ Z	d„ Z
dS )
ÚBaseTestNc                 ó"  — t          j        ¦   «         }t          j        |¦  «        }t	          j        |¦  «        }t          j        d¦  «        }t          ||||¦  «        }t          j	        ||¦  «        5  | 
                    ¦   «          | 
                    ¦   «          t          j        |j        j        |d¬¦  «        }	|	                     ¦   «          t           j                             d|j        ¦  «         t'          j        ¦   «                              |j        ¦  «         t-          j        |j        j        |j        j        |j        j        |j        j        d ¦  «        \  |j        _        |j        _        |j        _        }
t-          j        ¦   «                              |j        ¦  «         t>          j         j!         "                    ¦   «         }t>          j         j!         #                    |j        j        |j        j        |j        j        |j        j        |j        j        ||j$        |¬¦  «        }|                     ¦   «          t           j                             d|j        ¦  «         ||||fcd d d ¦  «         S # 1 swxY w Y   d S )NT)Útypedzbefore-inference)ÚswappedÚreplace_functions_mapzafter-inference)%r	   ÚContextr   Ú
CPUContextr   Úrun_frontendÚParallelOptionsr   r   Únested_contextÚrefreshr   ÚInlineClosureCallPassr   r   Úrunr
   Úrewrite_registryÚapplyr   ÚReconstructSSAÚrun_passr   Útype_inference_stager   r   r   r   r   r    ÚPreLowerStripPhisÚnumbaÚparforsÚparforÚParforDiagnosticsÚPreParforPassÚreplaced_fns)ÚclsÚ	test_funcr   Úswap_mapr   r   r#   ÚoptionsÚtpÚinline_passÚ_ÚdiagnosticsÚpreparfor_passs                r$   Ú_run_parforzBaseTest._run_parfor)   sw  € õ ”NÑ$Ô$ˆ	Ý”N 9Ñ-Ô-ˆ	ÝÔ'¨	Ñ2Ô2ˆÝÔ% dÑ+Ô+ˆå˜	 9¨d°GÑ<Ô<ˆåÔ& y°)Ñ<Ô<ð (	<ð (	<Ø×ÒÑÔÐØ×ÒÑÔÐå,ÔBØ”Ô  '°ðñ ô ˆKð �OŠOÑÔÐåÔ%×+Ò+Ð,>ÀÄÑIÔIÐIåÔ)Ñ+Ô+×4Ò4°R´XÑ>Ô>Ð>õ Ô1Ø”Ô" B¤HÔ$6¸¼Ô8HØ””˜tñô ñØ”Ô Ø”Ô$Ø”Ô"Øõ Ô*Ñ,Ô,×5Ò5°b´hÑ?Ô?Ð?åœ-Ô.×@Ò@ÑBÔBˆKå"œ]Ô1×?Ò?Ø”Ô Ø”Ô Ø”Ô"Ø”Ô"Ø”Ô"ØØ#Ô0Ø&.ð @ñ 	ô 	ˆNð ×ÒÑ Ô Ð åÔ%×+Ò+Ð,=¸r¼xÑHÔHÐHØ�w ¨^Ð;ðQ(	<ð (	<ð (	<ð (	<ñ (	<ô (	<ð (	<ð (	<ð (	<ð (	<ð (	<ð (	<øøøð (	<ð (	<ð (	<ð (	<ð (	<ð (	<s   Á7H JÊJÊJc                 óÚ  — |                       ||¦  «        \  }}}}t          j        ¦   «         }t          j        j                             |j        j        |j        j	        |j        j
        |j        j        |j        j        |j        j        |||j        j        |¬¦
  «
        }|                     ¦   «          |                      |¦  «        }	|	                     |j        j        ¦  «         |	S )N)rL   )rN   r   ÚFlagsr?   r@   rA   Ú
ParforPassr   r   r   r    r   r   r   r!   Ú_pre_runÚsub_pass_classr8   Úblocks)
rE   rF   r   rI   rH   rL   rK   ÚflagsÚparfor_passÚsub_passs
             r$   Úrun_parfor_sub_passzBaseTest.run_parfor_sub_pass^   sÏ   € à&)§o¢o°iÀÑ&FÔ&FÑ#ˆˆG�[ !å”Ñ Ô ˆÝ”mÔ*×5Ò5ØŒHÔØŒHÔØŒHÔØŒHÔ ØŒHÔØŒHÔØØØŒHÔØ#ð 6ñ 
ô 
ˆð 	×ÒÑÔÐà×%Ò% kÑ2Ô2ˆØ�Š�[Ô(Ô/Ñ0Ô0Ð0àˆr&   c                 ó>   — |                       |||¦  «        \  }}}}|S r   )rN   )rE   rF   r   rG   rI   rH   rL   rM   s           r$   Úrun_parfor_pre_passzBaseTest.run_parfor_pre_passv   s-   € à36·?²?Ø�t˜Xñ4
ô 4
Ñ0ˆˆG�[ .ð Ðr&   c                 ó\   —  t          d¬¦  «        |¦  «        } ||i |¤Ž} ||i |¤Ž}||fS )NT)Úparallel)r   )r"   Úfuncr   ÚkwargsÚcfuncÚexpectÚgots          r$   Ú_run_parallelzBaseTest._run_parallel}   sN   € Ø#•˜dÐ#Ñ#Ô# DÑ)Ô)ˆØ��tÐ&˜vÐ&Ð&ˆØˆe�TÐ$˜VÐ$Ð$ˆØ�sˆ{Ðr&   c                 ól   — t           rd S  | j        |g|¢R i |¤Ž\  }}|                      ||¦  «         d S r   )r   rb   ÚassertPreciseEqual©r"   r]   r   r^   r`   ra   s         r$   Úrun_parallelzBaseTest.run_parallelƒ   sQ   € Ý!ð 	àˆFØ(�dÔ(¨Ð?°Ð?Ð?Ð?¸Ð?Ð?‰ˆ�Ø×Ò ¨Ñ,Ô,Ð,Ð,Ð,r&   c                 ó   — t           rd S  | j        |g|¢R i |¤Ž\  }}|                      |t          j        ¦  «         |                      |t          j        ¦  «         |                      |j        |j        ¦  «         d S r   )r   rb   ÚassertIsInstanceÚnpÚndarrayÚassertEqualÚshapere   s         r$   Úrun_parallel_check_output_arrayz(BaseTest.run_parallel_check_output_arrayŠ   s…   € Ý!ð 	àˆFØ(�dÔ(¨Ð?°Ð?Ð?Ð?¸Ð?Ð?‰ˆ�à×Ò˜f¥b¤jÑ1Ô1Ð1Ø×Ò˜c¥2¤:Ñ.Ô.Ð.Ø×Ò˜œ s¤yÑ1Ô1Ð1Ð1Ð1r&   c                 óp   — |D ]2}|                       |d         t          j        j        j        ¦  «         Œ3d S )NÚnew)rh   r?   r@   rA   ÚParfor)r"   ÚrecordsÚrecs      r$   Úcheck_recordszBaseTest.check_records”   sD   € Øð 	Kð 	KˆCØ×!Ò! # e¤*­e¬mÔ.BÔ.IÑJÔJÐJÐJð	Kð 	Kr&   r   )r'   r(   r)   ÚclassmethodrN   rX   rZ   rb   rf   rm   rs   r*   r&   r$   r,   r,   (   s¯   € € € € € Øð2<ð 2<ð 2<ñ „[ð2<ðh ðð ñ „[ðð. ðð ð ñ „[ððð ð ð-ð -ð -ð2ð 2ð 2ðKð Kð Kð Kð Kr&   r,   c                   óN   — e Zd Zej        j        j        Zd„ Zd„ Z	d„ Z
d„ Zd„ ZdS )ÚTestConvertSetItemPassc                 ó0  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «         |                      |¦  «         d S )Nc                  ó@   — d} t          j        | ¦  «        }d|d d …<   |S )Né
   é   ©ri   Úones©ÚnÚas     r$   Ú	test_implzATestConvertSetItemPass.test_setitem_full_slice.<locals>.test_impl�   s&   € ØˆAÝ”˜‘
”
ˆAØˆAˆaˆaˆa‰DØˆHr&   r*   é   ÚreasonÚslice©rX   rk   ÚlenÚ	rewrittenrs   rf   ©r"   r€   rW   Úrecords       r$   Útest_setitem_full_slicez.TestConvertSetItemPass.test_setitem_full_sliceœ   óŸ   € ð	ð 	ð 	ð ×+Ò+¨I°rÑ:Ô:ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨7Ñ3Ô3Ð3Ø×Ò˜8Ô-Ñ.Ô.Ð.à×Ò˜)Ñ$Ô$Ð$Ð$Ð$r&   c                 ó0  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «         |                      |¦  «         d S )Nc                  ó@   — d} t          j        | ¦  «        }d|d d…<   |S )Nry   rz   é   r{   r}   s     r$   r€   zGTestConvertSetItemPass.test_setitem_slice_stop_bound.<locals>.test_impl¬   s&   € ØˆAÝ”˜‘
”
ˆAØˆAˆbˆqˆb‰EØˆHr&   r*   r�   r‚   rƒ   r„   r‡   s       r$   Útest_setitem_slice_stop_boundz4TestConvertSetItemPass.test_setitem_slice_stop_bound«   rŠ   r&   c                 ó0  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «         |                      |¦  «         d S )Nc                  ó@   — d} t          j        | ¦  «        }d|dd …<   |S )Nry   rz   é   r{   r}   s     r$   r€   zHTestConvertSetItemPass.test_setitem_slice_start_bound.<locals>.test_impl»   s&   € ØˆAÝ”˜‘
”
ˆAØˆAˆaˆbˆb‰EØˆHr&   r*   r�   r‚   rƒ   r„   r‡   s       r$   Útest_setitem_slice_start_boundz5TestConvertSetItemPass.test_setitem_slice_start_boundº   rŠ   r&   c                 ó0  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «         |                      |¦  «         d S )Nc                  ó|   — d} t          j        | ¦  «        }t          j        |t           j        ¬¦  «        }d||<   |S )Nry   ©Údtyperz   ©ri   r|   Ú	ones_likeÚbool_)r~   r   Úbs      r$   r€   zGTestConvertSetItemPass.test_setitem_gather_if_scalar.<locals>.test_implÊ   s8   € ØˆAÝ”˜‘
”
ˆAÝ”˜Q¥b¤hÐ/Ñ/Ô/ˆAØˆAˆa‰DØˆHr&   r*   r�   r‚   Úmasked_assign_broadcast_scalarr„   r‡   s       r$   Útest_setitem_gather_if_scalarz4TestConvertSetItemPass.test_setitem_gather_if_scalarÉ   s    € ð	ð 	ð 	ð ×+Ò+¨I°rÑ:Ô:ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)Ð+KÑLÔLÐLØ×Ò˜8Ô-Ñ.Ô.Ð.à×Ò˜)Ñ$Ô$Ð$Ð$Ð$r&   c                 ó0  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «         |                      |¦  «         d S )Nc                  ó°   — d} t          j        | ¦  «        }t          j        |t           j        ¬¦  «        }t          j        |¦  «        }||         ||<   |S )Nry   r•   r—   )r~   r   rš   Úcs       r$   r€   zFTestConvertSetItemPass.test_setitem_gather_if_array.<locals>.test_implÚ   sI   € ØˆAÝ”˜‘
”
ˆAÝ”˜Q¥b¤hÐ/Ñ/Ô/ˆAÝ”˜Q‘”ˆAØ�Q”4ˆAˆa‰DØˆHr&   r*   r�   r‚   Úmasked_assign_arrayr„   r‡   s       r$   Útest_setitem_gather_if_arrayz3TestConvertSetItemPass.test_setitem_gather_if_arrayÙ   s    € ð	ð 	ð 	ð ×+Ò+¨I°rÑ:Ô:ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)Ð+@ÑAÔAÐAØ×Ò˜8Ô-Ñ.Ô.Ð.à×Ò˜)Ñ$Ô$Ð$Ð$Ð$r&   N)r'   r(   r)   r?   r@   rA   ÚConvertSetItemPassrS   r‰   rŽ   r’   rœ   r¡   r*   r&   r$   rv   rv   ™   sl   € € € € € Ø”]Ô)Ô<€Nð%ð %ð %ð%ð %ð %ð%ð %ð %ð%ð %ð %ð %ð %ð %ð %ð %r&   rv   c                   ó`   — e Zd Zej        j        j        Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd	S )
ÚTestConvertNumpyPassc                 ó6  ‡— ˆfd„}|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «         |                      |¦  «         d S )Nc                  ó"   •— d}  ‰| ¦  «        }|S ©Nry   r*   ©r~   r   Úfns     €r$   r€   z>TestConvertNumpyPass.check_numpy_allocators.<locals>.test_implï   ó   ø€ ØˆAØ��1‘”ˆAØˆHr&   r*   r�   r‚   Únumpy_allocatorr„   ©r"   r©   r€   rW   rˆ   s    `   r$   Úcheck_numpy_allocatorsz+TestConvertNumpyPass.check_numpy_allocatorsî   s«   ø€ ð	ð 	ð 	ð 	ð 	ð
 ×+Ò+¨I°rÑ:Ô:ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)Ð+<Ñ=Ô=Ð=Ø×Ò˜8Ô-Ñ.Ô.Ð.à×Ò˜)Ñ$Ô$Ð$Ð$Ð$r&   c                 ó6  ‡— ˆfd„}|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «         |                      |¦  «         d S )Nc                  ó"   •— d}  ‰| ¦  «        }|S r§   r*   r¨   s     €r$   r€   z:TestConvertNumpyPass.check_numpy_random.<locals>.test_implý   rª   r&   r*   r�   r‚   r«   )rX   rk   r…   r†   rs   rm   r¬   s    `   r$   Úcheck_numpy_randomz'TestConvertNumpyPass.check_numpy_randomü   s«   ø€ ð	ð 	ð 	ð 	ð 	ð
 ×+Ò+¨I°rÑ:Ô:ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)Ð+<Ñ=Ô=Ð=Ø×Ò˜8Ô-Ñ.Ô.Ð.à×,Ò,¨YÑ7Ô7Ð7Ð7Ð7r&   c                 óÎ   — t           j        t           j        g}|D ]I}|                      |j        ¦  «        5  |                      |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒJd S r   )ri   r|   ÚzerosÚsubTestr'   r­   ©r"   Úfnsr©   s      r$   Útest_numpy_allocatorsz*TestConvertNumpyPass.test_numpy_allocators
  s§   € ÝŒw�œÐ!ˆØð 	0ð 	0ˆBØ—’˜bœkÑ*Ô*ð 0ð 0Ø×+Ò+¨BÑ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0øð	0ð 	0s   ·AÁA	Á A	c                 óÂ   — t           j        j        g}|D ]I}|                      |j        ¦  «        5  |                      |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒJd S r   )ri   Úrandomr³   r'   r°   r´   s      r$   Útest_numpy_randomz&TestConvertNumpyPass.test_numpy_random  s¦   € ÝŒyÔÐ ˆØð 	,ð 	,ˆBØ—’˜bœkÑ*Ô*ð ,ð ,Ø×'Ò'¨Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,øð	,ð 	,s   ±AÁA	ÁA	c                 ón  — d„ }t          j        d¦  «        x}}||f}d„ |D ¦   «         }|                      ||¦  «        }|                      t	          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «          | j        |g|¢R Ž  d S )Nc                 ó   — | |z   S r   r*   ©r   rš   s     r$   r€   z<TestConvertNumpyPass.test_numpy_arrayexpr.<locals>.test_impl  s   € Ø�q‘5ˆLr&   ry   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   ©r   ©Ú.0Úxs     r$   ú
<listcomp>z=TestConvertNumpyPass.test_numpy_arrayexpr.<locals>.<listcomp>  ó   € Ð,Ð,Ð, !•F˜1‘I”IÐ,Ð,Ð,r&   r�   r‚   Ú	arrayexpr©ri   r|   rX   rk   r…   r†   rs   rf   ©r"   r€   r   rš   r   ÚargtypesrW   rˆ   s           r$   Útest_numpy_arrayexprz)TestConvertNumpyPass.test_numpy_arrayexpr  sÔ   € ð	ð 	ð 	õ ”˜‘”ÐˆˆAà�1ˆvˆØ,Ð, tÐ,Ñ,Ô,ˆà×+Ò+¨I°xÑ@Ô@ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨;Ñ7Ô7Ð7Ø×Ò˜8Ô-Ñ.Ô.Ð.àˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   c                 ón  — d„ }t          j        d¦  «        x}}||f}d„ |D ¦   «         }|                      ||¦  «        }|                      t	          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «          | j        |g|¢R Ž  d S )Nc                 ó€   — t          j        |  ¦  «        t          j        d¦  «        t          j        |¦  «        z  z   S ©Nr�   )ri   ÚsinÚfloat64Úsqrtr¼   s     r$   r€   zBTestConvertNumpyPass.test_numpy_arrayexpr_ufunc.<locals>.test_impl(  s,   € Ý”6˜1˜"‘:”:¥¤
¨1¡¤µ´¸±
´
Ñ :Ñ:Ð:r&   ry   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   r¾   r¿   s     r$   rÂ   zCTestConvertNumpyPass.test_numpy_arrayexpr_ufunc.<locals>.<listcomp>.  rÃ   r&   r�   r‚   rÄ   rÅ   rÆ   s           r$   Útest_numpy_arrayexpr_ufuncz/TestConvertNumpyPass.test_numpy_arrayexpr_ufunc'  sÔ   € ð	;ð 	;ð 	;õ ”˜‘”ÐˆˆAà�1ˆvˆØ,Ð, tÐ,Ñ,Ô,ˆà×+Ò+¨I°xÑ@Ô@ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨;Ñ7Ô7Ð7Ø×Ò˜8Ô-Ñ.Ô.Ð.àˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   c                 ó’  — d„ }t          j        d¦  «        }t          j        d¦  «        }||f}d„ |D ¦   «         }|                      ||¦  «        }|                      t	          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «          | j        |g|¢R Ž  d S )Nc                 ó6   — | |z   t          j        d¦  «        z   S rË   )ri   Úarrayr¼   s     r$   r€   zFTestConvertNumpyPass.test_numpy_arrayexpr_boardcast.<locals>.test_impl9  s   € Ø�q‘5�2œ8 A™;œ;Ñ&Ð&r&   ry   )é   ry   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   r¾   r¿   s     r$   rÂ   zGTestConvertNumpyPass.test_numpy_arrayexpr_boardcast.<locals>.<listcomp>@  rÃ   r&   r�   r‚   rÄ   rÅ   rÆ   s           r$   Útest_numpy_arrayexpr_boardcastz3TestConvertNumpyPass.test_numpy_arrayexpr_boardcast8  sÞ   € ð	'ð 	'ð 	'õ ŒG�B‰KŒKˆÝŒG�GÑÔˆà�1ˆvˆØ,Ð, tÐ,Ñ,Ô,ˆà×+Ò+¨I°xÑ@Ô@ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨;Ñ7Ô7Ð7Ø×Ò˜8Ô-Ñ.Ô.Ð.àˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   c                 ó’  — d„ }t          j        d¦  «        }t          j        d¦  «        }||f}d„ |D ¦   «         }|                      ||¦  «        }|                      t	          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «          | j        |g|¢R Ž  d S )Nc                 óB   — |                       d| j        ¦  «        } | |z   S rË   )ÚreshapeÚsizer¼   s     r$   r€   zETestConvertNumpyPass.test_numpy_arrayexpr_reshaped.<locals>.test_implK  s    € Ø—	’	˜!˜QœVÑ$Ô$ˆAØ�q‘5ˆLr&   ry   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   r¾   r¿   s     r$   rÂ   zFTestConvertNumpyPass.test_numpy_arrayexpr_reshaped.<locals>.<listcomp>S  rÃ   r&   r�   r‚   rÄ   rÅ   rÆ   s           r$   Útest_numpy_arrayexpr_reshapedz2TestConvertNumpyPass.test_numpy_arrayexpr_reshapedJ  sÜ   € ð	ð 	ð 	õ ŒG�B‰KŒKˆÝŒG�B‰KŒKˆà�1ˆvˆØ,Ð, tÐ,Ñ,Ô,ˆà×+Ò+¨I°xÑ@Ô@ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨;Ñ7Ô7Ð7Ø×Ò˜8Ô-Ñ.Ô.Ð.àˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   N)r'   r(   r)   r?   r@   rA   ÚConvertNumpyPassrS   r­   r°   r¶   r¹   rÈ   rÐ   rÖ   rÜ   r*   r&   r$   r¤   r¤   ë   s™   € € € € € Ø”]Ô)Ô:€Nð%ð %ð %ð8ð 8ð 8ð0ð 0ð 0ð,ð ,ð ,ð,ð ,ð ,ð",ð ,ð ,ð",ð ,ð ,ð$,ð ,ð ,ð ,ð ,r&   r¤   c                   ó<   — e Zd Zej        j        j        Zd„ Zd„ Z	dS )ÚTestConvertReducePassc                 óh  — d„ }t          j        d¦  «        }|f}d„ |D ¦   «         }|                      ||¦  «        }|                      t	          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «          | j        |g|¢R Ž  d S )Nc                 ó&   — t          d„ | d¦  «        S )Nc                 ó"   — t          | |¦  «        S r   ©Úmax©rÁ   Úys     r$   ú<lambda>zPTestConvertReducePass.test_reduce_max_basic.<locals>.test_impl.<locals>.<lambda>c  ó   € ¥s¨1¨a¡y¤y€ r&   ç        r   ©Úarrs    r$   r€   z>TestConvertReducePass.test_reduce_max_basic.<locals>.test_implb  s   € ÝÐ0Ð0°#°sÑ;Ô;Ð;r&   ry   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   r¾   r¿   s     r$   rÂ   z?TestConvertReducePass.test_reduce_max_basic.<locals>.<listcomp>g  rÃ   r&   r�   r‚   r   rÅ   ©r"   r€   rÁ   r   rÇ   rW   rˆ   s          r$   Útest_reduce_max_basicz+TestConvertReducePass.test_reduce_max_basica  sÍ   € ð	<ð 	<ð 	<õ ŒG�B‰KŒKˆØˆtˆØ,Ð, tÐ,Ñ,Ô,ˆà×+Ò+¨I°xÑ@Ô@ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨8Ñ4Ô4Ð4Ø×Ò˜8Ô-Ñ.Ô.Ð.àˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   c                 óh  — d„ }t          j        d¦  «        }|f}d„ |D ¦   «         }|                      ||¦  «        }|                      t	          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «          | j        |g|¢R Ž  d S )Nc                 ó:   — t          d„ | | dk             d¦  «        S )Nc                 ó"   — t          | |¦  «        S r   rã   rå   s     r$   rç   zQTestConvertReducePass.test_reduce_max_masked.<locals>.test_impl.<locals>.<lambda>s  rè   r&   r�   ré   r   rê   s    r$   r€   z?TestConvertReducePass.test_reduce_max_masked.<locals>.test_implr  s    € ÝÐ0Ð0°#°c¸A²g´,ÀÑDÔDÐDr&   ry   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   r¾   r¿   s     r$   rÂ   z@TestConvertReducePass.test_reduce_max_masked.<locals>.<listcomp>w  rÃ   r&   r�   r‚   r   rÅ   rí   s          r$   Útest_reduce_max_maskedz,TestConvertReducePass.test_reduce_max_maskedq  sÐ   € ð	Eð 	Eð 	Eõ ŒG�B‰KŒKˆØˆtˆØ,Ð, tÐ,Ñ,Ô,ˆà×+Ò+¨I°xÑ@Ô@ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨8Ñ4Ô4Ð4Ø×Ò˜8Ô-Ñ.Ô.Ð.àˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   N)
r'   r(   r)   r?   r@   rA   ÚConvertReducePassrS   rî   ró   r*   r&   r$   rß   rß   ^  s?   € € € € € Ø”]Ô)Ô;€Nð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,r&   rß   c                   ó„   — e Zd Zej        j        j        Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestConvertLoopPassc                 ó0  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «         |                      |¦  «         d S )Nc                  ó<   — d} d}t          | ¦  «        D ]}||z  }Œ|S ©Né   r   )r   )r~   rŸ   Úis      r$   r€   z@TestConvertLoopPass.test_prange_reduce_simple.<locals>.test_impl†  s1   € ØˆAØˆAÝ˜A‘Y”Yð ð �Ø�Q‘��ØˆHr&   r*   r�   r‚   Úloopr„   r‡   s       r$   Útest_prange_reduce_simplez-TestConvertLoopPass.test_prange_reduce_simple…  sŸ   € ð	ð 	ð 	ð ×+Ò+¨I°rÑ:Ô:ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨6Ñ2Ô2Ð2Ø×Ò˜8Ô-Ñ.Ô.Ð.à×Ò˜)Ñ$Ô$Ð$Ð$Ð$r&   c                 ó0  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «         |                      |¦  «         d S )Nc                  óv   — d} t          j        | ¦  «        }t          | ¦  «        D ]}||xx         |z  cc<   Œ|S ©Nrú   ©ri   r|   r   ©r~   rë   rû   s      r$   r€   z=TestConvertLoopPass.test_prange_map_simple.<locals>.test_impl–  sE   € ØˆAÝ”'˜!‘*”*ˆCÝ˜A‘Y”Yð ð �Ø�A��”˜!‘��‘�ØˆJr&   r*   r�   r‚   rü   r„   r‡   s       r$   Útest_prange_map_simplez*TestConvertLoopPass.test_prange_map_simple•  óŸ   € ð	ð 	ð 	ð ×+Ò+¨I°rÑ:Ô:ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨6Ñ2Ô2Ð2Ø×Ò˜8Ô-Ñ.Ô.Ð.à×Ò˜)Ñ$Ô$Ð$Ð$Ð$r&   c                 ó0  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «         |                      |¦  «         d S )Nc                  óx   — d} t          j        | ¦  «        }t          d| ¦  «        D ]}||xx         |z  cc<   Œ|S )Nrú   rÔ   r  r  s      r$   r€   z;TestConvertLoopPass.test_prange_two_args.<locals>.test_impl¦  sG   € ØˆAÝ”'˜!‘*”*ˆCÝ˜A˜q‘\”\ð ð �Ø�A��”˜!‘��‘�ØˆJr&   r*   r�   r‚   rü   r„   r‡   s       r$   Útest_prange_two_argsz(TestConvertLoopPass.test_prange_two_args¥  r  r&   c                 óö   — d„ }|                       t          j        ¦  «        5 }|                      |d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Nc                  óz   — d} t          j        | ¦  «        }t          d| d¦  «        D ]}||xx         |z  cc<   Œ|S )Nrú   rÔ   é   r  r  s      r$   r€   z=TestConvertLoopPass.test_prange_three_args.<locals>.test_impl¶  sI   € ØˆAÝ”'˜!‘*”*ˆCÝ˜A˜q !‘_”_ð ð �Ø�A��”˜!‘��‘�ØˆJr&   r*   z4Only constant step size of 1 is supported for prange©ÚassertRaisesr   ÚUnsupportedRewriteErrorrX   ÚassertInÚstrÚ	exception©r"   r€   Úraisess      r$   Útest_prange_three_argsz*TestConvertLoopPass.test_prange_three_argsµ  sÃ   € ð	ð 	ð 	ð ×Ò�vÔ=Ñ>Ô>ð 	4À&Ø×$Ò$ Y°Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4à�ŠØBÝ�Ô Ñ!Ô!ñ	
ô 	
ð 	
ð 	
ð 	
ó   £AÁA
ÁA
c                 ó0  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «         |                      |¦  «         d S )Nc                  ó®   — d} t          j        | | f¦  «        }t          | ¦  «        D ],}t          |¦  «        D ]}|||fxx         ||| z  z   z  cc<   ŒŒ-|S r   )ri   r|   r   Úrange©r~   rë   rû   Újs       r$   r€   zATestConvertLoopPass.test_prange_map_inner_loop.<locals>.test_implÅ  sp   € ØˆAÝ”'˜1˜a˜&‘/”/ˆCÝ˜A‘Y”Yð +ð +�Ý˜q™œð +ð +�AØ˜˜1˜�I�I”I  Q¨¡U¡Ñ*�I�I‘I�Ið+àˆJr&   r*   r�   r‚   rü   r„   r‡   s       r$   Útest_prange_map_inner_loopz.TestConvertLoopPass.test_prange_map_inner_loopÄ  sŸ   € ð	ð 	ð 	ð ×+Ò+¨I°rÑ:Ô:ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨6Ñ2Ô2Ð2Ø×Ò˜8Ô-Ñ.Ô.Ð.à×Ò˜)Ñ$Ô$Ð$Ð$Ð$r&   c                 ó2  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |                      |j        ¦  «         |j        D ]}|                      |d         d¦  «         Œ|                      |¦  «         d S )Nc                  ó®   — d} t          j        | | f¦  «        }t          | ¦  «        D ],}t          |¦  «        D ]}|||fxx         ||| z  z   z  cc<   ŒŒ-|S r   r  r  s       r$   r€   zDTestConvertLoopPass.test_prange_map_nested_prange.<locals>.test_implÖ  sp   € ØˆAÝ”'˜1˜a˜&‘/”/ˆCÝ˜A‘Y”Yð +ð +�Ý ™œð +ð +�AØ˜˜1˜�I�I”I  Q¨¡U¡Ñ*�I�I‘I�Ið+àˆJr&   r*   r
  r‚   rü   r„   r‡   s       r$   Útest_prange_map_nested_prangez1TestConvertLoopPass.test_prange_map_nested_prangeÕ  sª   € ð	ð 	ð 	ð ×+Ò+¨I°rÑ:Ô:ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4Ø×Ò˜8Ô-Ñ.Ô.Ð.ØÔ(ð 	7ð 	7ˆFØ×Ò˜V HÔ-¨vÑ6Ô6Ð6Ð6à×Ò˜)Ñ$Ô$Ð$Ð$Ð$r&   c                 ó0  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |                      |j        ¦  «         |j        \  }|                      |d         d¦  «         |                      |¦  «         d S )Nc                  ó�   — d} t          j        | ¦  «        }t          | ¦  «        D ]}|||dz   …         }|dxx         dz  cc<   Œ |S )Nrú   r�   r*   r  )r~   rë   rû   Úinners       r$   r€   zATestConvertLoopPass.test_prange_map_none_index.<locals>.test_implç  sV   € ØˆAÝ”'˜!‘*”*ˆCÝ˜A‘Y”Yð ð �Ø˜A  A¡˜Iœ�Ø�b�	�	”	˜Q‘�	�	‘	�	ØˆJr&   r*   r�   r‚   rü   r„   r‡   s       r$   Útest_prange_map_none_indexz.TestConvertLoopPass.test_prange_map_none_indexæ  sŸ   € ð	ð 	ð 	ð ×+Ò+¨I°rÑ:Ô:ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4Ø×Ò˜8Ô-Ñ.Ô.Ð.ØÔ%‰ˆØ×Ò˜ Ô)¨6Ñ2Ô2Ð2à×Ò˜)Ñ$Ô$Ð$Ð$Ð$r&   c                 óö   — d„ }|                       t          j        ¦  «        5 }|                      |d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         d S )Nc                  óp   — d} t          j        | ¦  «        }t          | ¦  «        D ]}|dz  }|||dz
  <   Œ|S )Nrú   r�   r  r  s      r$   r€   zFTestConvertLoopPass.test_prange_map_overwrite_index.<locals>.test_implø  sF   € ØˆAÝ”'˜!‘*”*ˆCÝ˜A‘Y”Yð ð �Ø�Q‘�Ø��A˜‘E‘
�
ØˆJr&   r*   z Overwrite of parallel loop indexr  r  s      r$   Útest_prange_map_overwrite_indexz3TestConvertLoopPass.test_prange_map_overwrite_index÷  sÃ   € ð	ð 	ð 	ð ×Ò�vÔ=Ñ>Ô>ð 	4À&Ø×$Ò$ Y°Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4à�ŠØ.Ý�Ô Ñ!Ô!ñ	
ô 	
ð 	
ð 	
ð 	
r  c                 ó0  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |                      |j        ¦  «         |j        \  }|                      |d         d¦  «         |                      |¦  «         d S )Nc                  óú   — d} t          j        | ¦  «        }t          j        j                             ¦   «          d}t          j        j                             t          |¦  «        ¦  «        D ]}|||         z  }Œ|S rù   )ri   r|   r?   r@   rA   Úinit_prangeÚinternal_pranger…   )r~   rë   Úvalrû   s       r$   r€   z7TestConvertLoopPass.test_init_prange.<locals>.test_impl  sl   € ØˆAÝ”'˜!‘*”*ˆCÝŒMÔ ×,Ò,Ñ.Ô.Ð.ØˆCÝ”]Ô)×9Ò9½#¸c¹(¼(ÑCÔCð ð �Ø�s˜1”v‘��ØˆJr&   r*   r�   r‚   rü   r„   r‡   s       r$   Útest_init_prangez$TestConvertLoopPass.test_init_prange  sŸ   € ð	ð 	ð 	ð ×+Ò+¨I°rÑ:Ô:ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4Ø×Ò˜8Ô-Ñ.Ô.Ð.ØÔ%‰ˆØ×Ò˜ Ô)¨6Ñ2Ô2Ð2à×Ò˜)Ñ$Ô$Ð$Ð$Ð$r&   c                 ó0  — d„ }|                       |d¦  «        }|                      t          |j        ¦  «        d¦  «         |                      |j        ¦  «         |j        \  }|                      |d         d¦  «         |                      |¦  «         d S )Nc                  ó�   — d} t          j        | | f¦  «        }d}t          |j        ¦  «        D ]}||d         |d         z  z  }Œ|S )Nrú   r   r�   )ri   r|   r   rl   )r~   rë   r)  Úidxs       r$   r€   z4TestConvertLoopPass.test_pndindex.<locals>.test_impl  sS   € ØˆAÝ”'˜1˜a˜&‘/”/ˆCØˆCÝ ¤	Ñ*Ô*ð 'ð '�Ø�s˜1”v  A¤‘Ñ&��ØˆJr&   r*   r�   r‚   rü   r„   r‡   s       r$   Útest_pndindexz!TestConvertLoopPass.test_pndindex  sŸ   € ð	ð 	ð 	ð ×+Ò+¨I°rÑ:Ô:ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4Ø×Ò˜8Ô-Ñ.Ô.Ð.àÔ%‰ˆØ×Ò˜ Ô)¨6Ñ2Ô2Ð2à×Ò˜)Ñ$Ô$Ð$Ð$Ð$r&   c                 ó¶  — d„ }d}t          j        t          j        |¦  «        ¦  «                             |¦  «        }|f}d„ |D ¦   «         }|                      ||¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «          | j	        |g|¢R Ž  d S )Nc                 ó*   — t          j        | ¦  «        S r   ©ri   Úsumrê   s    r$   r€   z5TestConvertLoopPass.test_numpy_sum.<locals>.test_impl,  s   € Ý”6˜#‘;”;Ðr&   ©é   é   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   r¾   r¿   s     r$   rÂ   z6TestConvertLoopPass.test_numpy_sum.<locals>.<listcomp>2  rÃ   r&   r�   r‚   rü   ©
ri   ÚarangeÚprodrÙ   rX   rk   r…   r†   rs   rf   ©r"   r€   rl   rë   r   rÇ   rW   rˆ   s           r$   Útest_numpy_sumz"TestConvertLoopPass.test_numpy_sum+  sê   € ð	ð 	ð 	ð ˆÝŒi�œ ™œÑ'Ô'×/Ò/°Ñ6Ô6ˆØˆvˆØ,Ð, tÐ,Ñ,Ô,ˆà×+Ò+¨I°xÑ@Ô@ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨6Ñ2Ô2Ð2Ø×Ò˜8Ô-Ñ.Ô.Ð.ØˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   c                 ó¶  — d„ }d}t          j        t          j        |¦  «        ¦  «                             |¦  «        }|f}d„ |D ¦   «         }|                      ||¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «          | j	        |g|¢R Ž  d S )Nc                 ó^   — | d d …df         }t          j        | |dk    dd…f         ¦  «        S )Nr   rÔ   r�   r
  r1  )rë   Úsliceds     r$   r€   zGTestConvertLoopPass.test_numpy_sum_bool_array_masked.<locals>.test_impl<  s5   € Ø˜˜˜˜A˜”YˆFÝ”6˜#˜f¨šk¨1¨Q¨3Ð.Ô/Ñ0Ô0Ð0r&   r3  c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   r¾   r¿   s     r$   rÂ   zHTestConvertLoopPass.test_numpy_sum_bool_array_masked.<locals>.<listcomp>C  rÃ   r&   r�   r‚   rü   r7  r:  s           r$   Ú test_numpy_sum_bool_array_maskedz4TestConvertLoopPass.test_numpy_sum_bool_array_masked;  sê   € ð	1ð 	1ð 	1ð ˆÝŒi�œ ™œÑ'Ô'×/Ò/°Ñ6Ô6ˆØˆvˆØ,Ð, tÐ,Ñ,Ô,ˆà×+Ò+¨I°xÑ@Ô@ˆØ×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨6Ñ2Ô2Ð2Ø×Ò˜8Ô-Ñ.Ô.Ð.ØˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   c                 ó¸  — d„ }d}t          j        t          j        |¦  «        ¦  «                             |¦  «        }|f}d„ |D ¦   «         }|                      ||¦  «        }|                      t          |j        ¦  «        d¦  «         |j        D ]}|                      |d         d¦  «         Œ|                      |j        ¦  «          | j	        |g|¢R Ž  d S )Nc                 ó|   — t          j        | j        d         ¦  «        }t          j        | d d …|f         ¦  «        S rË   )ri   r8  rl   r2  )rë   Úsels     r$   r€   zFTestConvertLoopPass.test_numpy_sum_int_array_masked.<locals>.test_implM  s3   € Ý”)˜CœI aœLÑ)Ô)ˆCÝ”6˜#˜a˜a˜a ˜fœ+Ñ&Ô&Ð&r&   r3  c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   r¾   r¿   s     r$   rÂ   zGTestConvertLoopPass.test_numpy_sum_int_array_masked.<locals>.<listcomp>T  rÃ   r&   r
  r‚   rü   r7  r:  s           r$   Útest_numpy_sum_int_array_maskedz3TestConvertLoopPass.test_numpy_sum_int_array_maskedL  sõ   € ð	'ð 	'ð 	'ð ˆÝŒi�œ ™œÑ'Ô'×/Ò/°Ñ6Ô6ˆØˆvˆØ,Ð, tÐ,Ñ,Ô,ˆà×+Ò+¨I°xÑ@Ô@ˆà×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ(ð 	7ð 	7ˆFØ×Ò˜V HÔ-¨vÑ6Ô6Ð6Ð6Ø×Ò˜8Ô-Ñ.Ô.Ð.ØˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   c                 ó¶  — d„ }d}t          j        t          j        |¦  «        ¦  «                             |¦  «        }|f}d„ |D ¦   «         }|                      ||¦  «        }|                      t          |j        ¦  «        d¦  «         |j        \  }|                      |d         d¦  «         |                      |j        ¦  «          | j	        |g|¢R Ž  d S )Nc                 ó0   — |                       d¦  «         | S )NrÔ   )Úfillrê   s    r$   r€   z=TestConvertLoopPass.test_numpy_fill_method.<locals>.test_impl_  s   € Ø�HŠH�Q‰KŒKˆKØˆJr&   r3  c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   r¾   r¿   s     r$   rÂ   z>TestConvertLoopPass.test_numpy_fill_method.<locals>.<listcomp>f  rÃ   r&   r�   r‚   rü   r7  r:  s           r$   Útest_numpy_fill_methodz*TestConvertLoopPass.test_numpy_fill_method^  sê   € ð	ð 	ð 	ð ˆÝŒi�œ ™œÑ'Ô'×/Ò/°Ñ6Ô6ˆØˆvˆØ,Ð, tÐ,Ñ,Ô,ˆà×+Ò+¨I°xÑ@Ô@ˆà×Ò�˜XÔ/Ñ0Ô0°!Ñ4Ô4Ð4ØÔ%‰ˆØ×Ò˜ Ô)¨6Ñ2Ô2Ð2Ø×Ò˜8Ô-Ñ.Ô.Ð.ØˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   N)r'   r(   r)   r?   r@   rA   ÚConvertLoopPassrS   rý   r  r  r  r  r  r!  r$  r*  r.  r;  r@  rE  rJ  r*   r&   r$   rö   rö   ‚  só   € € € € € Ø”]Ô)Ô9€Nð%ð %ð %ð %ð %ð %ð %ð %ð %ð 
ð 
ð 
ð%ð %ð %ð"%ð %ð %ð"%ð %ð %ð"
ð 
ð 
ð %ð %ð %ð$%ð %ð %ð$,ð ,ð ,ð ,ð ,ð ,ð",ð ,ð ,ð$,ð ,ð ,ð ,ð ,r&   rö   c                   ó:   — e Zd Z G d„ d¦  «        Zd„ Zd„ Zd„ ZdS )ÚTestPreParforPassc                   ó   — e Zd Zd„ Zd„ ZdS )ú TestPreParforPass.sub_pass_classc                 ó   — d S r   r*   )r"   Úpass_statess     r$   r%   z)TestPreParforPass.sub_pass_class.__init__s  ó   € ØˆDr&   c                 ó   — d S r   r*   )r"   rT   s     r$   r8   z$TestPreParforPass.sub_pass_class.runv  rR  r&   N)r'   r(   r)   r%   r8   r*   r&   r$   rS   rO  r  s2   € € € € € ð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r&   rS   c                 ó  — d„ }t          j        d¦  «        }|f}d„ |D ¦   «         }|                      ||¦  «        }|                      |j        d         d¦  «         |                      |j        d         d¦  «          | j        |g|¢R Ž  d S )Nc                 ó<   — t          j        d| j        ¬¦  «        }|S )Nrú   r•   )ri   r|   r–   r¼   s     r$   r€   z:TestPreParforPass.test_dtype_conversion.<locals>.test_impl{  s   € Ý”˜ !¤'Ð*Ñ*Ô*ˆAØˆHr&   ry   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   r¾   r¿   s     r$   rÂ   z;TestPreParforPass.test_dtype_conversion.<locals>.<listcomp>�  rÃ   r&   Úreplaced_funcr   Úreplaced_dtyper�   ©ri   r8  rZ   rk   Ústatsrf   ©r"   r€   rë   r   rÇ   Úpre_passs         r$   Útest_dtype_conversionz'TestPreParforPass.test_dtype_conversiony  s«   € ð	ð 	ð 	õ Œi˜‰mŒmˆØˆvˆØ,Ð, tÐ,Ñ,Ô,ˆà×+Ò+¨I°xÑ@Ô@ˆØ×Ò˜œ¨Ô8¸!Ñ<Ô<Ð<Ø×Ò˜œÐ(8Ô9¸1Ñ=Ô=Ð=ØˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   c                 ó  — d„ }t          j        d¦  «        }|f}d„ |D ¦   «         }|                      ||¦  «        }|                      |j        d         d¦  «         |                      |j        d         d¦  «          | j        |g|¢R Ž  d S )Nc                 ó*   — t          j        | ¦  «        S r   r1  ©r   s    r$   r€   z9TestPreParforPass.test_sum_replacement.<locals>.test_impl‰  ó   € Ý”6˜!‘9”9Ðr&   ry   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   r¾   r¿   s     r$   rÂ   z:TestPreParforPass.test_sum_replacement.<locals>.<listcomp>Ž  rÃ   r&   rW  r�   rX  r   rY  r[  s         r$   Útest_sum_replacementz&TestPreParforPass.test_sum_replacementˆ  s«   € ð	ð 	ð 	õ Œi˜‰mŒmˆØˆvˆØ,Ð, tÐ,Ñ,Ô,ˆà×+Ò+¨I°xÑ@Ô@ˆØ×Ò˜œ¨Ô8¸!Ñ<Ô<Ð<Ø×Ò˜œÐ(8Ô9¸1Ñ=Ô=Ð=ØˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   c                 óš  — d„ }t          j        d¦  «        }|f}d„ |D ¦   «         }t          j        j        j                             ¦   «         }|                     d¦  «         |                      |||¦  «        }|  	                    |j
        d         d¦  «         |  	                    |j
        d         d¦  «          | j        |g|¢R Ž  d S )Nc                 ó*   — t          j        | ¦  «        S r   r1  r`  s    r$   r€   z9TestPreParforPass.test_replacement_map.<locals>.test_impl–  ra  r&   ry   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r*   r¾   r¿   s     r$   rÂ   z:TestPreParforPass.test_replacement_map.<locals>.<listcomp>›  rÃ   r&   )r2  ÚnumpyrW  r   rX  )ri   r8  r?   r@   rA   Úswap_functions_mapÚcopyÚpoprZ   rk   rZ  rf   )r"   r€   rë   r   rÇ   rG   r\  s          r$   Útest_replacement_mapz&TestPreParforPass.test_replacement_map•  sÙ   € ð	ð 	ð 	õ Œi˜‰mŒmˆØˆvˆØ,Ð, tÐ,Ñ,Ô,ˆå”=Ô'Ô:×?Ò?ÑAÔAˆØ�ŠÐ%Ñ&Ô&Ð&Ø×+Ò+¨I°xÀÑJÔJˆØ×Ò˜œ¨Ô8¸!Ñ<Ô<Ð<Ø×Ò˜œÐ(8Ô9¸1Ñ=Ô=Ð=ØˆÔ˜)Ð+ dÐ+Ð+Ð+Ð+Ð+Ð+r&   N)r'   r(   r)   rS   r]  rc  rk  r*   r&   r$   rM  rM  q  si   € € € € € ðð ð ð ð ñ ô ð ð,ð ,ð ,ð,ð ,ð ,ð,ð ,ð ,ð ,ð ,r&   rM  Ú__main__)$Ú__doc__ÚunittestÚ	functoolsr   rg  ri   r?   r   r   r   r   Únumba.parfors.parforÚ
numba.corer	   r
   r   r   r   r   r   r   Únumba.core.registryr   Únumba.tests.supportr   r   Úobjectr   r,   rv   r¤   rß   rö   rM  r'   Úmainr*   r&   r$   ú<module>rv     sr  ððð ð
 €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø Ð Ð Ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð +Ð *Ð *Ð *Ð *Ð *Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bð
!ð 
!ð 
!ð 
!ð 
!�ñ 
!ô 
!ð 
!ðnKð nKð nKð nKð nKˆxñ nKô nKð nKðbO%ð O%ð O%ð O%ð O%˜Xñ O%ô O%ð O%ðdp,ð p,ð p,ð p,ð p,˜8ñ p,ô p,ð p,ðf!,ð !,ð !,ð !,ð !,˜Hñ !,ô !,ð !,ðHl,ð l,ð l,ð l,ð l,˜(ñ l,ô l,ð l,ð^1,ð 1,ð 1,ð 1,ð 1,˜ñ 1,ô 1,ð 1,ðh ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr&   