o
    ۾i                     @   s   d dl Zd dlmZ d dlmZmZ d dlmZm	Z	m
Z
 d dlmZmZ d dlZdd ZedG d	d
 d
eZedkrBe  dS dS )    N)	PYVERSION)skip_on_cudasimCUDATestCase)override_configcaptured_stderrcaptured_stdout)cudafloat64c                 C   s   t d}| | d ||< d S )N         ?)r   grid)ABi r   V/home/ubuntu/.local/lib/python3.10/site-packages/numba/cuda/tests/cudapy/test_debug.pysimple_cuda   s   
r   z&Simulator does not produce debug dumpsc                   @   st   e Z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dd Zdd Zdd Zdd ZdS )TestDebugOutputc              	   C   s   t  N}t ;}ttd d  td d  ft}tdddtj}t	|}|d || | 
t|d | W d    n1 sEw   Y  W d    n1 sTw   Y  | |  | S )Nr   r
   
   )r
   r   r   )r   r   r   jitr	   r   nplinspaceastype
zeros_like
assertTrueallcloseassertFalsegetvalue)selferroutcfuncr   r   r   r   r   compile_simple_cuda   s   "

z#TestDebugOutput.compile_simple_cudac                 O   s   | j tg|R i | d S )N)assertRaisesAssertionError)r   argskwargsr   r   r   assert_fails!   s   zTestDebugOutput.assert_failsc                 C   sr   t g dd}|D ]}||v sJ d||< q
t| D ]\}}t| d| }|r/|| q| t|| qd S )N)bytecodecfgirllvmassemblyFTz_check_dump_%s)dictfromkeyssorteditemsgetattrr#   r$   )r   r    enabled_dumps	all_dumpsnameenabled
check_methr   r   r   check_debug_output$   s   


z"TestDebugOutput.check_debug_outputc                 C   s8   t dv r| d| d S t dv r| d| d S tt )N))      )r8      )r8      zBINARY_OP(arg=0))r8   r   
BINARY_ADD)r   assertInNotImplementedErrorr   r    r   r   r   _check_dump_bytecode2   s
   z$TestDebugOutput._check_dump_bytecodec                 C   s   |  d| d S )NzCFG dominatorsr=   r?   r   r   r   _check_dump_cfg;   s   zTestDebugOutput._check_dump_cfgc                 C      |  d| |  d| d S )Nz--IR DUMP: simple_cuda--zconst(float, 1.5)rA   r?   r   r   r   _check_dump_ir>      zTestDebugOutput._check_dump_irc                 C   rC   )Nz--LLVM DUMPz!"kernel", i32 1rA   r?   r   r   r   _check_dump_llvmB   rE   z TestDebugOutput._check_dump_llvmc                 C   rC   )Nz--ASSEMBLY simple_cudaz!Generated by NVIDIA NVVM CompilerrA   r?   r   r   r   _check_dump_assemblyF   rE   z$TestDebugOutput._check_dump_assemblyc                 C   D   t dd |  }W d    n1 sw   Y  | |dg d S )NDUMP_BYTECODETr(   r   r"   r7   r?   r   r   r   test_dump_bytecodeJ      
z"TestDebugOutput.test_dump_bytecodec                 C   rH   )NDUMP_IRTr*   rJ   r?   r   r   r   test_dump_irO   rL   zTestDebugOutput.test_dump_irc                 C   rH   )NDUMP_CFGTr)   rJ   r?   r   r   r   test_dump_cfgT   rL   zTestDebugOutput.test_dump_cfgc                 C   rH   )N	DUMP_LLVMTr+   rJ   r?   r   r   r   test_dump_llvmY   rL   zTestDebugOutput.test_dump_llvmc                 C   rH   )NDUMP_ASSEMBLYTr,   rJ   r?   r   r   r   test_dump_assembly^   rL   z"TestDebugOutput.test_dump_assemblyN)__name__
__module____qualname__r"   r'   r7   r@   rB   rD   rF   rG   rK   rN   rP   rR   rT   r   r   r   r   r      s    	r   __main__)numpyr   numba.core.utilsr   numba.cuda.testingr   r   numba.tests.supportr   r   r   numbar   r	   unittestr   r   rU   mainr   r   r   r   <module>   s    S