U
    ,dp                     @   sx   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rte  dS )    N)skip_on_cudasimCUDATestCase)override_configcaptured_stderrcaptured_stdout)cudafloat64c                 C   s   t d}| | d ||< d S )N         ?)r   Zgrid)ABi r   F/tmp/pip-unpacked-wheel-eu7e0c37/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  ~}t l}ttd d  td d  ft}tdddtj}t	|}|d || | 
t|d | W 5 Q R X W 5 Q R X | |  | S )Nr   r	   
   )r	   r   r
   )r   r   r   Zjitr   r   npZlinspaceZastypeZ
zeros_like
assertTrueZallcloseZassertFalsegetvalue)selferroutZcfuncr   r   r   r   r   compile_simple_cuda   s    "
*z#TestDebugOutput.compile_simple_cudac                 O   s   | j tf|| d S )N)assertRaisesAssertionError)r   argskwargsr   r   r   assert_fails    s    zTestDebugOutput.assert_failsc                 C   sx   t dddddgd}|D ]}||ks*td||< qt| D ]2\}}t| d| }|rd|| q@| t|| q@d S )	NbytecodecfgirllvmassemblyFTz_check_dump_%s)dictfromkeysr   sorteditemsgetattrr   )r   r   Zenabled_dumpsZ	all_dumpsnameZenabledZ
check_methr   r   r   check_debug_output#   s    

z"TestDebugOutput.check_debug_outputc                 C   s   |  d| d S )N
BINARY_ADDZassertInr   r   r   r   r   _check_dump_bytecode1   s    z$TestDebugOutput._check_dump_bytecodec                 C   s   |  d| d S )NzCFG dominatorsr,   r-   r   r   r   _check_dump_cfg4   s    zTestDebugOutput._check_dump_cfgc                 C   s   |  d| |  d| d S )Nz--IR DUMP: simple_cuda--zconst(float, 1.5)r,   r-   r   r   r   _check_dump_ir7   s    zTestDebugOutput._check_dump_irc                 C   s   |  d| d S )Nz--LLVM DUMPr,   r-   r   r   r   _check_dump_llvm;   s    z TestDebugOutput._check_dump_llvmc                 C   s   |  d| |  d| d S )Nz--ASSEMBLY simple_cudaz!Generated by NVIDIA NVVM Compilerr,   r-   r   r   r   _check_dump_assembly>   s    z$TestDebugOutput._check_dump_assemblyc              	   C   s0   t dd |  }W 5 Q R X | |dg d S )NZDUMP_BYTECODETr   r   r   r*   r-   r   r   r   test_dump_bytecodeB   s    z"TestDebugOutput.test_dump_bytecodec              	   C   s0   t dd |  }W 5 Q R X | |dg d S )NZDUMP_IRTr!   r3   r-   r   r   r   test_dump_irG   s    zTestDebugOutput.test_dump_irc              	   C   s0   t dd |  }W 5 Q R X | |dg d S )NZDUMP_CFGTr    r3   r-   r   r   r   test_dump_cfgL   s    zTestDebugOutput.test_dump_cfgc              	   C   s0   t dd |  }W 5 Q R X | |dg d S )NZ	DUMP_LLVMTr"   r3   r-   r   r   r   test_dump_llvmQ   s    zTestDebugOutput.test_dump_llvmc              	   C   s0   t dd |  }W 5 Q R X | |dg d S )NZDUMP_ASSEMBLYTr#   r3   r-   r   r   r   test_dump_assemblyV   s    z"TestDebugOutput.test_dump_assemblyN)__name__
__module____qualname__r   r   r*   r.   r/   r0   r1   r2   r4   r5   r6   r7   r8   r   r   r   r   r      s   r   __main__)Znumpyr   Znumba.cuda.testingr   r   Znumba.tests.supportr   r   r   Znumbar   r   Zunittestr   r   r9   mainr   r   r   r   <module>   s   L