
    J/PhL                         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e                      Zed	k    r ej                     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                       e Zd Zed             Zd Zd Zd Z ed          d             Z	 ed          d             Z
 ed          d	             Z ed
          d             ZdS )TestInspectc                 <    t          j                    j        j        S N)r   current_contextdevicecompute_capability)selfs    d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_inspect.pycczTestInspect.cc   s    #%%,??    c                 |   t           t          f}t          j        |          d             }t	                      }|                    |           |                                }|                     d|           |                     d|           |                                 |	                    |          }|                     d|           |                     d|           |                     d|           |
                    |          }|                     d|           |                     d|           d S )Nc                     d S r    xys     r   fooz'TestInspect.test_monotyped.<locals>.foo       Dr   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asms          r   test_monotypedzTestInspect.test_monotyped   s)   	#	 	 
	 zzt$$$==??eX&&&((333

$$eT""" 	+T222 	/666ooc"" 	eS!!!93?????r   c                    t           j        d             } |d         dd            |d         dd           t                      }|                    |           |                                }|                                 |                     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                     d S r   r   r   s     r   r   z'TestInspect.test_polytyped.<locals>.foo1   r    r   )   r3   r3   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asmdicts         r   test_polytypedzTestInspect.test_polytyped0   su   		 	 
	 	D	!QD	#szzt$$$==??

l))$//:::*H555 ""$$CLL+++tTlG,,,w('222 	eWT4Z0111eWWg%56777 	+WT4Z-@AAA+WWg5E-FGGG 	/t1DEEE/'9I1JKKK//## 	CLL+++tTlG,,,w('222 	eWT4Z0111eWWg%5677777r   c                 &   d}|                                 D ]}d|v r||v rd}|                     |           |                     |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lines         r   _test_inspect_sasszTestInspect._test_inspect_sass]   s    JJLL 	% 	%D$44<< $&&&LMMM 	eT"""eT"""fd#####r   z"nvdisasm needed for inspect_sass()c                     t           d d d         t          d d d         f}t          j        |d          d             }|                     |d|                    |                     d S )Nr3   Tlineinfoc                     t          j        d          }|t          |           k     r| |xx         ||         z  cc<   d S d S Nr3   r   gridr7   r   r   is      r   addz0TestInspect.test_inspect_sass_eager.<locals>.addq   B    	!A3q66zz!! zr   rQ   )r   r   r   r%   rG   inspect_sassr   r,   rQ   s      r   test_inspect_sass_eagerz#TestInspect.test_inspect_sass_eagerm   sw    sss|U33Q3Z(	#	%	%	%	 	 
&	%	
 	UC,<,<S,A,ABBBBBr   c                    t          j        d          d             }t          j        d                              t          j                  }t          j        d                              t          j                  } |d         ||           t
          d d d         t          d d d         f}|                     |d|                    |                     d S )NTrI   c                     t          j        d          }|t          |           k     r| |xx         ||         z  cc<   d S d S rL   rM   rO   s      r   rQ   z/TestInspect.test_inspect_sass_lazy.<locals>.add{   rR   r   
   )r3   rX   r3   rQ   )	r   r%   nparangeastyper   r   rG   rS   )r   rQ   r   r   	signatures        r   test_inspect_sass_lazyz"TestInspect.test_inspect_sass_lazyy   s    	4	 	 	 	 	 
!	 	
 IbMM  **IbMM  ,,E
1a33Q3Z1.	UC,<,<Y,G,GHHHHHr   z@Missing nvdisasm exception only generated when it is not presentc                 :   t          j        t          d d d         f          d             }|                     t                    5 }|                                 d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr3   c                     d| d<   d S )Nr   r   )r   s    r   fz9TestInspect.test_inspect_sass_nvdisasm_missing.<locals>.f   s    AaDDDr   znvdisasm has not been found)	r   r%   r   assertRaisesRuntimeErrorrS   r(   str	exception)r   r`   raisess      r   "test_inspect_sass_nvdisasm_missingz.TestInspect.test_inspect_sass_nvdisasm_missing   s     
733Q3</	"	"	 	 
#	"	 |,, 	NN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	3S9I5J5JKKKKKs   A((A,/A,z&nvdisasm needed for inspect_sass_cfg()c                     t           d d d         t          d d d         f}t          j        |          d             }|                     |                    |          d           d S )Nr3   c                     t          j        d          }|t          |           k     r| |xx         ||         z  cc<   d S d S rL   rM   rO   s      r   rQ   z.TestInspect.test_inspect_sass_cfg.<locals>.add   rR   r   )r\   zdigraph\s*\w\s*{(.|\n)*\n})r   r   r   r%   rA   inspect_sass_cfgrT   s      r   test_inspect_sass_cfgz!TestInspect.test_inspect_sass_cfg   s|    sss|U33Q3Z(	#	 	 
	
 	  3 //)	
 	
 	
 	
 	
r   N)__name__
__module____qualname__propertyr   r0   r:   rG   r   rU   r]   r   rf   rj   r   r   r   r   r   
   s       @ @ X@@ @ @@+8 +8 +8Z$ $ $  ?@@	C 	C A@	C ?@@I I A@I  & ' 'L L' 'L CDD
 
 ED
 
 
r   r   __main__)numpyrY   ior   numbar   r   r   r   r   numba.cuda.testingr	   r
   r   r   r   r   rk   mainr   r   r   <module>ru      s	             5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 57 7 7 7 7 7 7 7 7 7 CDDV
 V
 V
 V
 V
, V
 V
 EDV
r zHMOOOOO r   