o
    ۾i                     @   s   d dl Z d dlmZmZ d dlmZ d dlmZ ddiZddiZ	dd	 Z
d
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZG dd deZedkrZe   dS dS )    N)jitnjit)types)TestCaseforceobjTnopythonc                 C   s   t |  }}|| S Nstrabc r   M/home/ubuntu/.local/lib/python3.10/site-packages/numba/tests/test_dataflow.pyassignments   s   r   c                 C   s   t |  } }}|| | S r   r	   )r   r   r   dr   r   r   assignments2   s   r   c                 C   s   | |kr| n|d }|S N   r   r   r   r   r   var_propagate1      r   c                 C   s    d| |kr| n|d d  }|S )Nr      g       @r   r   r   r   r   var_propagate2   s   r   c                 C   s   d| |kr| p| }|S r   r   r   r   r   r   var_propagate3!   r   r   c                 C   s(   d| d o|d  p| d o|d }|S )Nr      r   r   r   r   r   var_propagate4&   s   $r   c                 C   s   d|   k o	dk S   S )Nr      r   )r   r   r   r   chained_compare,   s   r   c                 C   s*   d}d}|| krt dD ]}|}q|| S )N   r   r   range)xir   r   r   r   stack_effect_error1   s   r$   c                 C   s0   t | D ]}d} ||kr || fS q|} || fS )Nr   r    )nr"   r#   r   r   r   	for_break:   s   r&   c                 C   sB   || } }|||}}}|||| f\} }}}| | | | | S r   r   )r   r   r   r   er   r   r   var_swappingD   s   
r(   c                   @   s   e Zd ZefddZefddZdd Zdd Zd	d
 Zdd Z	dd Z
efddZdd ZefddZdd ZefddZdd ZefddZdd ZdS ) TestDataFlowc                 C   >   t }ttjffi ||}dD ]}| |||| qd S )Nr   r   )r   r   r   int32assertPreciseEqualselfflagspyfunccfuncr"   r   r   r   test_assignmentsL   
   zTestDataFlow.test_assignmentsc                 C   sR   t }ttjffi ||}dD ]}| |||| q|tu r'|d d S d S )Nr+   r   )r   r   r   r-   r.   force_pyobj_jit_optr/   r   r   r   test_assignments2R   s   zTestDataFlow.test_assignments2c                 C   s   |  || |j|  d S r   )r.   py_func)r0   funcargsr   r   r   run_propagate_func^   s   zTestDataFlow.run_propagate_funcc                 C   0   t tjtjft}| |d | |d d S Nr   r   r   r   )r   r   intpr   r;   r0   r3   r   r   r   test_var_propagate1a      z TestDataFlow.test_var_propagate1c                 C   r<   r=   )r   r   r@   r   r;   rA   r   r   r   test_var_propagate2f   rC   z TestDataFlow.test_var_propagate2c                 C   s`   t tjtjft}| |d | |d | |d | |d | |d | |d d S )Nr>   r?   )r   r   r,   r   )r   r   r   r,   )r   r   r@   r   r;   rA   r   r   r   test_var_propagate3k   s   z TestDataFlow.test_var_propagate3c                 C   s   t tjtjft}| |d | |d | |d | |d | |d | |d | |d | |d | |d	 d S )
N)r   r   )r   r   )r   r,   )r   r   )r   r   rF   )r,   r   rE   )r,   r,   )r   r   r@   r   r;   rA   r   r   r   test_var_propagate4t   s   z TestDataFlow.test_var_propagate4c                 C   r*   )N)r   r   r   r      )r   r   r   r-   r.   r/   r   r   r   test_chained_compare   r5   z!TestDataFlow.test_chained_comparec                 C      |  t d S r   )rJ   no_pyobj_jit_optr0   r   r   r   test_chained_compare_npm      z%TestDataFlow.test_chained_compare_npmc                 C   r*   )N)r   r   r   r   )r$   r   r   r-   r.   r/   r   r   r   test_stack_effect_error   s
   z$TestDataFlow.test_stack_effect_errorc                 C   rK   r   )rP   rL   rM   r   r   r   test_stack_effect_error_npm   rO   z(TestDataFlow.test_stack_effect_error_npmc                 C   sH   t }ttjfd fi ||}ttddd}| || ||  d S )Nr   r   
   r   )r(   r   r   r-   tupler!   r.   )r0   r1   r2   r3   r:   r   r   r   test_var_swapping   s   zTestDataFlow.test_var_swappingc                 C   rK   r   )rT   rL   rM   r   r   r   test_var_swapping_npm   rO   z"TestDataFlow.test_var_swapping_npmc                 C   sJ   t }ttjtjffi ||}dD ]\}}| |||||| qd S )N))rI   r   )rI      )r&   r   r   r@   r.   )r0   r1   r2   r3   r%   r"   r   r   r   test_for_break   s
   zTestDataFlow.test_for_breakc                 C   rK   r   )rW   rL   rM   r   r   r   test_for_break_npm   rO   zTestDataFlow.test_for_break_npmN)__name__
__module____qualname__r6   r4   r7   r;   rB   rD   rG   rH   rJ   rN   rP   rQ   rT   rU   rW   rX   r   r   r   r   r)   J   s     	r)   __main__)unittestnumbar   r   
numba.corer   numba.tests.supportr   r6   rL   r   r   r   r   r   r   r   r$   r&   r(   r)   rY   mainr   r   r   r   <module>   s(    	
^