
    ܙd	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        ?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$$	N9--	'	22%d++	9dG<<&y)<< (	< (	<,B '  K OO%++,>III)++44RX>>> 1"BH$68Ht  $" *,,55bh???-.@@BBK"]1??  """#0&. @ 	 	N    %++,=rx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    &)ooi&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??tX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&&eT$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(??????fbj111c2:...sy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*em.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AaaaDHr&   r*      reasonslicerX   rk   len	rewrittenrs   rf   r"   r   rW   records       r$   test_setitem_full_slicez.TestConvertSetItemPass.test_setitem_full_slice       	 	 	 ++Ir::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AbqbE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AabbE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Qbh///AAaDHr&   r*   r   r   masked_assign_broadcast_scalarr   r   s       r$   test_setitem_gather_if_scalarz4TestConvertSetItemPass.test_setitem_gather_if_scalar   s    	 	 	 ++Ir::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Qbh///AQAQ4AaDHr&   r*   r   r   masked_assign_arrayr   r   s       r$   test_setitem_gather_if_arrayz3TestConvertSetItemPass.test_setitem_gather_if_array   s    	 	 	 ++Ir::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    	 	 	 	 	
 ++Ir::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    	 	 	 	 	
 ++Ir::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 	0Bbk** 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bk** , ,''+++, , , , , , , , , , , , , , ,	, 	,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    q5Lr&   ry   c                 ,    g | ]}t          |          S r*   r   .0xs     r$   
<listcomp>z=TestConvertNumpyPass.test_numpy_arrayexpr.<locals>.<listcomp>      ,,,!F1II,,,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1v,,t,,,++Ix@@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,    61"::
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1v,,t,,,++Ix@@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    q528A;;&&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    	' 	' 	' GBKKGG1v,,t,,,++Ix@@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     		!QV$$Aq5Lr&   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    	 	 	 GBKKGBKK1v,,t,,,++Ix@@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      s1ayy 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    	< 	< 	< GBKKt,,t,,,++Ix@@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#cAg,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 GBKKt,,t,,,++Ix@@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AYY  QHr&   r*   r   r   loopr   r   s       r$   test_prange_reduce_simplez-TestConvertLoopPass.test_prange_reduce_simple  s    	 	 	 ++Ir::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AYY  A!Jr&   r*   r   r   r   r   r   s       r$   test_prange_map_simplez*TestConvertLoopPass.test_prange_map_simple      	 	 	 ++Ir::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Aq\\  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Aq!__  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'1a&//CAYY + +q + +A1IIIQU*IIII+Jr&   r*   r   r   r   r   r   s       r$   test_prange_map_inner_loopz.TestConvertLoopPass.test_prange_map_inner_loop  s    	 	 	 ++Ir::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'1a&//CAYY + + + +A1IIIQU*IIII+Jr&   r*   r
  r   r   r   r   s       r$   test_prange_map_nested_prangez1TestConvertLoopPass.test_prange_map_nested_prange  s    	 	 	 ++Ir::X/00!4448-...( 	7 	7FVH-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AYY  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    	 	 	 ++Ir::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AYY  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  s1vJr&   r*   r   r   r   r   r   s       r$   test_init_prangez$TestConvertLoopPass.test_init_prange  s    	 	 	 ++Ir::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'1a&//CC	** ' 's1vA&Jr&   r*   r   r   r   r   r   s       r$   test_pndindexz!TestConvertLoopPass.test_pndindex  s    	 	 	 ++Ir::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,,,++Ix@@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YF6#fk1Q3./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,,,++Ix@@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    )CIaL))C6#aaa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,,,++Ix@@X/00!444( 	7 	7FVH-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    HHQKKK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,,,++Ix@@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        ])9N% % % % % % % % % 
 
 
% % %"% % %"% % %"
 
 
 % % %$% % %$, , , , , ,", , ,$, , , , ,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mmv,,t,,,++Ix@@8!<<<(891===)+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!99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mmv,,t,,,++Ix@@8!<<<(891===)+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mmv,,t,,,=':??AA%&&&++IxJJ8!<<<(891===)+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HMOOOOO r&   