o
    ºiL  ã                   @   s„   d dl Zd dlmZ d dlmZmZmZmZm	Z	 d dl
mZmZ d dl
mZmZmZ edƒG dd„ deƒƒZed	kr@e ¡  dS dS )
é    N)ÚStringIO)ÚcudaÚfloat32Úfloat64Úint32Úintp)ÚunittestÚCUDATestCase)Úskip_on_cudasimÚskip_with_nvdisasmÚskip_without_nvdisasmz0Simulator does not generate code to be inspectedc                   @   sp   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zed	ƒd
d„ ƒZ	ed	ƒdd„ ƒZ
edƒdd„ ƒZedƒdd„ ƒZdS )ÚTestInspectc                 C   s   t  ¡ jjS ©N)r   Úcurrent_contextÚdeviceÚcompute_capability)Úself© r   úa/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/numba/cuda/tests/cudapy/test_inspect.pyÚcc   ó   zTestInspect.ccc                 C   s¨   t tf}t |¡dd„ ƒ}tƒ }|j|d | ¡ }|  d|¡ |  d|¡ | ¡  | 	|¡}|  d|¡ |  d|¡ |  d|¡ | 
|¡}|  d|¡ |  d|¡ d S )	Nc                 S   ó   d S r   r   ©ÚxÚyr   r   r   Úfoo   ó   z'TestInspect.test_monotyped.<locals>.foo©Úfiler   z(float32, int32)úcuda.kernel.wrapperúdefine linkonce_odr i32z!Generated by NVIDIA NVVM Compiler)r   r   r   Újitr   Úinspect_typesÚgetvalueÚassertInÚcloseÚinspect_llvmÚinspect_asm)r   Úsigr   r   ÚtypeannoÚllvmÚasmr   r   r   Útest_monotyped   s    


zTestInspect.test_monotypedc                 C   s~  t jdd„ ƒ}|d ddƒ |d ddƒ tƒ }|j|d | ¡ }| ¡  |  d t¡|¡ |  d	|¡ | 	¡ }|  
d
t|ƒ¡ |  ttf|¡ |  ttf|¡ |  d|ttf ¡ |  d|ttf ¡ |  d|ttf ¡ |  d|ttf ¡ |  d|ttf ¡ |  d|ttf ¡ | ¡ }|  
d
t|ƒ¡ |  ttf|¡ |  ttf|¡ |  d|ttf ¡ |  d|ttf ¡ d S )Nc                 S   r   r   r   r   r   r   r   r   1   r   z'TestInspect.test_polytyped.<locals>.foo)é   r-   r-   g333333ó?g333333@r   z
({0}, {0})z(float64, float64)é   r   r   r    )r   r!   r   r"   r#   r%   r$   Úformatr   r&   ÚassertEqualÚlenr   r'   )r   r   r   r)   ÚllvmirsÚasmdictr   r   r   Útest_polytyped0   s4   
zTestInspect.test_polytypedc                 C   sd   d}|  ¡ D ]}d|v r||v rd}q|  |¡ |  |d¡ |  d|¡ |  d|¡ |  d|¡ d S )NFz.textTz*//## File ".*/test_inspect.py", line [0-9]ÚS2RÚBRAÚEXIT)ÚsplitÚ
assertTrueÚassertRegexr$   )r   ÚkernelÚnameÚsassÚseen_functionÚliner   r   r   Ú_test_inspect_sass]   s   €
zTestInspect._test_inspect_sassz"nvdisasm needed for inspect_sass()c                 C   sJ   t d d d… td d d… f}tj|dddd„ ƒ}|  |d| |¡¡ d S )Nr-   T©Úlineinfoc                 S   ó2   t  d¡}|t| ƒk r| |  || 7  < d S d S ©Nr-   ©r   Úgridr1   ©r   r   Úir   r   r   Úaddq   ó   
ÿz0TestInspect.test_inspect_sass_eager.<locals>.addrI   )r   r   r   r!   r@   Úinspect_sass©r   r(   rI   r   r   r   Útest_inspect_sass_eagerm   s   
z#TestInspect.test_inspect_sass_eagerc                 C   sz   t jdddd„ ƒ}t d¡ tj¡}t d¡ tj¡}|d ||ƒ td d d… td d d… f}|  |d| |¡¡ d S )	NTrA   c                 S   rC   rD   rE   rG   r   r   r   rI   {   rJ   z/TestInspect.test_inspect_sass_lazy.<locals>.addé
   )r-   rN   r-   rI   )	r   r!   ÚnpÚarangeÚastyper   r   r@   rK   )r   rI   r   r   Ú	signaturer   r   r   Útest_inspect_sass_lazyy   s   

z"TestInspect.test_inspect_sass_lazyz@Missing nvdisasm exception only generated when it is not presentc                 C   sf   t  td d d… f¡dd„ ƒ}|  t¡}| ¡  W d   ƒ n1 s#w   Y  |  dt|jƒ¡ d S )Nr-   c                 S   s   d| d< d S )Nr   r   )r   r   r   r   Úf‹   r   z9TestInspect.test_inspect_sass_nvdisasm_missing.<locals>.fznvdisasm has not been found)	r   r!   r   ÚassertRaisesÚRuntimeErrorrK   r$   ÚstrÚ	exception)r   rT   Úraisesr   r   r   Ú"test_inspect_sass_nvdisasm_missingˆ   s   

ÿz.TestInspect.test_inspect_sass_nvdisasm_missingz&nvdisasm needed for inspect_sass_cfg()c                 C   sF   t d d d… td d d… f}t |¡dd„ ƒ}|  |j|dd¡ d S )Nr-   c                 S   rC   rD   rE   rG   r   r   r   rI   ˜   rJ   z.TestInspect.test_inspect_sass_cfg.<locals>.add)rR   zdigraph\s*\w\s*{(.|\n)*\n})r   r   r   r!   r:   Úinspect_sass_cfgrL   r   r   r   Útest_inspect_sass_cfg”   s   

þz!TestInspect.test_inspect_sass_cfgN)Ú__name__Ú
__module__Ú__qualname__Úpropertyr   r,   r4   r@   r   rM   rS   r   rZ   r\   r   r   r   r   r   
   s    
 -



r   Ú__main__)ÚnumpyrO   Úior   Únumbar   r   r   r   r   Únumba.cuda.testingr   r	   r
   r   r   r   r]   Úmainr   r   r   r   Ú<module>   s     ÿ