B
      ›\5  ã               @   s|   d dl mZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZ ddlmZmZmZ G dd	„ d	eƒZG d
d„ deƒZdS )é    )Úprint_functionÚabsolute_import)Úbinding)Úcore)Úutils)ÚBaseCPUCodegenÚCodeLibraryé   )Ú
DATALAYOUTÚTRIPLEÚhlcc               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚHSACodeLibraryc             C   s   d S )N© )ÚselfZ	ll_moduler   r   ú0lib/python3.7/site-packages/numba/roc/codegen.pyÚ_optimize_functions   s    z"HSACodeLibrary._optimize_functionsc             C   s   d S )Nr   )r   r   r   r   Ú_optimize_final_module   s    z%HSACodeLibrary._optimize_final_modulec             C   s   d S )Nr   )r   r   r   r   Ú_finalize_specific   s    z!HSACodeLibrary._finalize_specificc             C   s*   t  ¡ }| t| jƒ¡ | ¡ }t|jƒS )z2
        Get the human-readable assembly.
        )r   ÚModuleZ	load_llvmÚstrZ_final_moduleÚfinalizeZhsail)r   ÚmÚoutr   r   r   Úget_asm_str   s    zHSACodeLibrary.get_asm_strN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   
   s   r   c               @   s8   e Zd ZeZdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dS )ÚJITHSACodegenc             C   s4   t |jƒg kstdƒ‚ttj | _t | j¡| _	d S )NzModule isn't empty)
ÚlistZglobal_variablesÚAssertionErrorr
   r   ZMACHINE_BITSZ_data_layoutÚllZcreate_target_dataZ_target_data)r   Úllvm_moduler   r   r   Ú_init!   s    zJITHSACodegen._initc             C   s   t  |¡}t|_|S )N)Úlcr   r   Ztriple)r   ÚnameZ	ir_moduler   r   r   Ú_create_empty_module&   s    
z"JITHSACodegen._create_empty_modulec             C   s   t ‚d S )N)ÚNotImplementedError)r   r   r   r   Ú_module_pass_manager+   s    z"JITHSACodegen._module_pass_managerc             C   s   t ‚d S )N)r&   )r   r!   r   r   r   Ú_function_pass_manager.   s    z$JITHSACodegen._function_pass_managerc             C   s   d S )Nr   )r   Úmoduler   r   r   Ú_add_module1   s    zJITHSACodegen._add_moduleN)
r   r   r   r   Z_library_classr"   r%   r'   r(   r*   r   r   r   r   r      s   r   N)Z
__future__r   r   Zllvmliter   r    Zllvmlite.llvmpyr   r#   Znumbar   Znumba.targets.codegenr   r   r   r
   r   r   r   r   r   r   r   Ú<module>   s   