a
    þ
þd@  ã                   @   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 )
é    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                   @   s`   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dS )ÚTestInspectc                 C   s   t  ¡ jjS ©N)r   Zcurrent_contextZdeviceZcompute_capability)Úself© r   úm/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/numba/cuda/tests/cudapy/test_inspect.pyÚcc   s    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   s   d S r   r   ©ÚxÚyr   r   r   Úfoo   s    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   ÚtypeannoZllvmZ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   s   d S r   r   r   r   r   r   r   1   s    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#   ZllvmirsZasmdictr   r   r   Útest_polytyped0   s4    
zTestInspect.test_polytypedc                 C   sX   d}|  ¡ D ]}d|v r||v rd}q|  |¡ |  d|¡ |  d|¡ |  d|¡ d S )NFz.textTZS2RZBRAZEXIT)ÚsplitÚ
assertTruer   )r   ÚkernelÚnameZsassZseen_functionÚliner   r   r   Ú_test_inspect_sass]   s    
zTestInspect._test_inspect_sassz"nvdisasm needed for inspect_sass()c                 C   sF   t d d d… td d d… f}t |¡dd„ ƒ}|  |d| |¡¡ d S )Nr%   c                 S   s.   t  d¡}|t| ƒk r*| |  || 7  < d S ©Nr%   ©r   Zgridr)   ©r   r   Úir   r   r   Úaddo   s    
z0TestInspect.test_inspect_sass_eager.<locals>.addr5   )r   r   r   r   r0   Úinspect_sass)r   r"   r5   r   r   r   Útest_inspect_sass_eagerk   s    
z#TestInspect.test_inspect_sass_eagerc                 C   st   t jdd„ ƒ}t d¡ tj¡}t d¡ tj¡}|d ||ƒ td d d… td d d… f}|  |d| |¡¡ d S )Nc                 S   s.   t  d¡}|t| ƒk r*| |  || 7  < d S r1   r2   r3   r   r   r   r5   y   s    
z/TestInspect.test_inspect_sass_lazy.<locals>.addé
   )r%   r8   r%   r5   )	r   r   ÚnpZarangeZastyper   r   r0   r6   )r   r5   r   r   Ú	signaturer   r   r   Útest_inspect_sass_lazyw   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 sF0    Y  |  dt|jƒ¡ d S )Nr%   c                 S   s   d| d< d S )Nr   r   )r   r   r   r   Úf‰   s    z9TestInspect.test_inspect_sass_nvdisasm_missing.<locals>.fznvdisasm is required)	r   r   r   ÚassertRaisesÚRuntimeErrorr6   r   ÚstrÚ	exception)r   r<   Zraisesr   r   r   Ú"test_inspect_sass_nvdisasm_missing†   s
    
&z.TestInspect.test_inspect_sass_nvdisasm_missingN)Ú__name__Ú
__module__Ú__qualname__Úpropertyr   r$   r*   r0   r   r7   r;   r   rA   r   r   r   r   r   
   s   
 -

r   Ú__main__)Únumpyr9   Úior   Znumbar   r   r   r   r   Znumba.cuda.testingr   r	   r
   r   r   r   rB   Úmainr   r   r   r   Ú<module>   s    	