U
    “Ç-eK  ã                   @   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r€e ¡  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   úc/var/www/html/Darija-Ai-Train/env/lib/python3.8/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 ƒ ~}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ÚnameÚenabledZ
check_methr   r   r   Úcheck_debug_output$   s    ÿþ

z"TestDebugOutput.check_debug_outputc                 C   s&   t dkr|  d|¡ n|  d|¡ d S )N)é   é   zBINARY_OP(arg=0Ú
BINARY_ADD)r   ÚassertIn©r   r   r   r   r   Ú_check_dump_bytecode2   s    z$TestDebugOutput._check_dump_bytecodec                 C   s   |   d|¡ d S )NzCFG dominators©r1   r2   r   r   r   Ú_check_dump_cfg9   s    zTestDebugOutput._check_dump_cfgc                 C   s   |   d|¡ |   d|¡ d S )Nz--IR DUMP: simple_cuda--zconst(float, 1.5)r4   r2   r   r   r   Ú_check_dump_ir<   s    zTestDebugOutput._check_dump_irc                 C   s   |   d|¡ d S )Nz--LLVM DUMPr4   r2   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 Compilerr4   r2   r   r   r   Ú_check_dump_assemblyC   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-   r2   r   r   r   Útest_dump_bytecodeG   s    z"TestDebugOutput.test_dump_bytecodec              	   C   s0   t ddƒ |  ¡ }W 5 Q R X |  |dg¡ d S )NZDUMP_IRTr#   r9   r2   r   r   r   Útest_dump_irL   s    zTestDebugOutput.test_dump_irc              	   C   s0   t ddƒ |  ¡ }W 5 Q R X |  |dg¡ d S )NZDUMP_CFGTr"   r9   r2   r   r   r   Útest_dump_cfgQ   s    zTestDebugOutput.test_dump_cfgc              	   C   s0   t ddƒ |  ¡ }W 5 Q R X |  |dg¡ d S )NZ	DUMP_LLVMTr$   r9   r2   r   r   r   Útest_dump_llvmV   s    zTestDebugOutput.test_dump_llvmc              	   C   s0   t ddƒ |  ¡ }W 5 Q R X |  |dg¡ d S )NZDUMP_ASSEMBLYTr%   r9   r2   r   r   r   Útest_dump_assembly[   s    z"TestDebugOutput.test_dump_assemblyN)Ú__name__Ú
__module__Ú__qualname__r   r    r-   r3   r5   r6   r7   r8   r:   r;   r<   r=   r>   r   r   r   r   r      s   r   Ú__main__)Únumpyr   Znumba.core.utilsr   Znumba.cuda.testingr   r   Znumba.tests.supportr   r   r   Znumbar   r	   Zunittestr   r   r?   Úmainr   r   r   r   Ú<module>   s   P