o
    i                     @   sd   d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z
 G dd deZedkr0e   dS dS )    N)TestCaseoverride_config)njit)typesc                   @   s    e Zd ZdZdd Zdd ZdS )TestPassManagerOptimizationzT Tests that pass manager is not overriding the intended
    optimization level.
    c                 C   sB   t dd || ||W  d    S 1 sw   Y  d S )NOPTr   )r   compileinspect_llvm)selffnsig r   d/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/numba/tests/test_optimisation_pipelines.py_get_llvmir   s   
$z'TestPassManagerOptimization._get_llvmirc                    s  t ddddd }tjf}| j||d}t|}|j|jd  jj	  fdd	|j
D }| t|d
 |d }dd	 |jD }| t|d
 |d }dd	 |jD }	h d}
d}|	D ]}|j|
v rp|
|j |sod}q^|
rv|rv nq^| t|
dd d S )NTnumpy)debugerror_modelc                 S   s$   | d }|d }|| }t | |S )NgGz?gQ@)print)abcdr   r   r   foo   s
   z=TestPassManagerOptimization.test_override_config.<locals>.foo)r   r   c                    s   g | ]	}|j  kr|qS r   name.0xr   r   r   
<listcomp>"       zDTestPassManagerOptimization.test_override_config.<locals>.<listcomp>   c                 S   s   g | ]}|qS r   r   r   r   r   r   r   %   s    c                 S   s   g | ]	}|j d kr|qS )call)opcoder   r   r   r   r   *   r   >   faddfdivfmulFz#Function was optimized unexpectedly)r   r   float64r   llvmparse_assembly	overloads
signaturesfndescmangled_name	functionsassertEquallenblocksassertGreaterinstructionsr"   remove)r
   r   r   full_irmodulefuncsfuncr0   blockinstrs	op_expectstartedr   r   r   r   test_override_config   s6   



z0TestPassManagerOptimization.test_override_configN)__name__
__module____qualname____doc__r   r<   r   r   r   r   r   	   s    r   __main__)unittestnumba.tests.supportr   r   numbar   
numba.corer   llvmlite.bindingbindingr'   r   r=   mainr   r   r   r   <module>   s    0