o
    8ήcp                     @   s|   d dl 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r<e  dS dS )    N)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   I/tmp/pip-target-vg8gfxp4/lib/python/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      |  d| d S )N
BINARY_ADDassertInr   r   r   r   r   _check_dump_bytecode1      z$TestDebugOutput._check_dump_bytecodec                 C   r7   )NzCFG dominatorsr9   r;   r   r   r   _check_dump_cfg4   r=   zTestDebugOutput._check_dump_cfgc                 C      |  d| |  d| d S )Nz--IR DUMP: simple_cuda--zconst(float, 1.5)r9   r;   r   r   r   _check_dump_ir7      zTestDebugOutput._check_dump_irc                 C   r7   )Nz--LLVM DUMPr9   r;   r   r   r   _check_dump_llvm;   r=   z TestDebugOutput._check_dump_llvmc                 C   r?   )Nz--ASSEMBLY simple_cudaz!Generated by NVIDIA NVVM Compilerr9   r;   r   r   r   _check_dump_assembly>   rA   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!   r6   r;   r   r   r   test_dump_bytecodeB      
z"TestDebugOutput.test_dump_bytecodec                 C   rD   )NDUMP_IRTr)   rF   r;   r   r   r   test_dump_irG   rH   zTestDebugOutput.test_dump_irc                 C   rD   )NDUMP_CFGTr(   rF   r;   r   r   r   test_dump_cfgL   rH   zTestDebugOutput.test_dump_cfgc                 C   rD   )N	DUMP_LLVMTr*   rF   r;   r   r   r   test_dump_llvmQ   rH   zTestDebugOutput.test_dump_llvmc                 C   rD   )NDUMP_ASSEMBLYTr+   rF   r;   r   r   r   test_dump_assemblyV   rH   z"TestDebugOutput.test_dump_assemblyN)__name__
__module____qualname__r!   r&   r6   r<   r>   r@   rB   rC   rG   rJ   rL   rN   rP   r   r   r   r   r      s    r   __main__)numpyr   numba.cuda.testingr   r   numba.tests.supportr   r   r   numbar   r   unittestr   r   rQ   mainr   r   r   r   <module>   s    L