B
     \P                 @   s  d dl mZmZmZ d dlmZ d dlmZmZm	Z	m
Z
mZmZ d dlmZ e ZejZejZejZeG dd deZeG dd deZeG d	d
 d
eZeG dd deZeG dd deZeG dd deZeG dd deZeG dd deZeG dd deZeG dd deZeG dd deZG dd deZ eG dd de Z!eG dd  d e Z"G d!d" d"e
Z#eG d#d$ d$eZ$eG d%d& d&e	Z%eG d'd( d(eZ&eG d)d* d*eZ'eee(e d+S ),    )print_functiondivisionabsolute_import)types)AttributeTemplateConcreteTemplateAbstractTemplateMacroTemplate	signatureRegistry)rocc               @   s"   e Zd ZejZeejej	gZ
dS )Hsa_get_global_idN)__name__
__module____qualname__r   Zget_global_idkeyr
   r   intpuint32cases r   r   0lib/python3.7/site-packages/numba/roc/hsadecl.pyr      s   r   c               @   s"   e Zd ZejZeejej	gZ
dS )Hsa_get_local_idN)r   r   r   r   Zget_local_idr   r
   r   r   r   r   r   r   r   r   r      s   r   c               @   s"   e Zd ZejZeejej	gZ
dS )Hsa_get_group_idN)r   r   r   r   Zget_group_idr   r
   r   r   r   r   r   r   r   r   r   !   s   r   c               @   s"   e Zd ZejZeejej	gZ
dS )Hsa_get_num_groupsN)r   r   r   r   Zget_num_groupsr   r
   r   r   r   r   r   r   r   r   r   '   s   r   c               @   s   e Zd ZejZeejgZ	dS )Hsa_get_work_dimN)
r   r   r   r   Zget_work_dimr   r
   r   r   r   r   r   r   r   r   -   s   r   c               @   s"   e Zd ZejZeejej	gZ
dS )Hsa_get_global_sizeN)r   r   r   r   Zget_global_sizer   r
   r   r   r   r   r   r   r   r   r   3   s   r   c               @   s"   e Zd ZejZeejej	gZ
dS )Hsa_get_local_sizeN)r   r   r   r   Zget_local_sizer   r
   r   r   r   r   r   r   r   r   r   9   s   r   c               @   s*   e Zd ZejZeejej	eejgZ
dS )Hsa_barrierN)r   r   r   r   Zbarrierr   r
   r   voidr   r   r   r   r   r   r   ?   s   r   c               @   s"   e Zd ZejZeejej	gZ
dS )Hsa_mem_fenceN)r   r   r   r   Z	mem_fencer   r
   r   r   r   r   r   r   r   r   r   F   s   r   c               @   s   e Zd ZejZeejgZ	dS )Hsa_wavebarrierN)
r   r   r   r   Zwavebarrierr   r
   r   r   r   r   r   r   r   r    L   s   r    c               @   s(   e Zd ZejZdd ejejB D Z	dS )Hsa_activelanepermute_wavewidthc             C   s    g | ]}t ||tj|tjqS r   )r
   r   r   Zbool_).0Ztyr   r   r   
<listcomp>V   s   z*Hsa_activelanepermute_wavewidth.<listcomp>N)
r   r   r   r   Zactivelanepermute_wavewidthr   r   Zinteger_domainZreal_domainr   r   r   r   r   r!   R   s   r!   c               @   sT   e Zd ZeejejejeejejejeejejejeejejejgZdZ	dS )_Hsa_ds_permutingFN)
r   r   r   r
   r   Zint32Zint64Zfloat32r   Zunsafe_castingr   r   r   r   r$   Z   s
   r$   c               @   s   e Zd ZejZdS )Hsa_ds_permuteN)r   r   r   r   Z
ds_permuter   r   r   r   r   r%   c   s   r%   c               @   s   e Zd ZejZdS )Hsa_ds_bpermuteN)r   r   r   r   Zds_bpermuter   r   r   r   r   r&   h   s   r&   c               @   s   e Zd ZejjZdS )Hsa_shared_arrayN)r   r   r   r   sharedZarrayr   r   r   r   r   r'   o   s   r'   c               @   s    e Zd ZeejZdd ZdS )HsaSharedTemplatec             C   s
   t tS )N)r   ZMacror'   )selfmodr   r   r   resolve_arrayw   s    zHsaSharedTemplate.resolve_arrayN)	r   r   r   r   Moduler   r(   r   r,   r   r   r   r   r)   s   s   r)   c               @   s   e Zd ZejjZdd ZdS )Hsa_atomic_addc             C   sP   |rt |\}}}|jdkr0t|j|tj|jS |jdkrLt|j|||jS d S )N   )AssertionErrorndimr
   Zdtyper   r   )r*   argsZkwsZaryidxvalr   r   r   generic   s    


zHsa_atomic_add.genericN)r   r   r   r   atomicaddr   r5   r   r   r   r   r.   }   s   r.   c               @   s    e Zd ZeejZdd ZdS )HsaAtomicTemplatec             C   s
   t tS )N)r   Functionr.   )r*   r+   r   r   r   resolve_add   s    zHsaAtomicTemplate.resolve_addN)	r   r   r   r   r-   r   r6   r   r:   r   r   r   r   r8      s   r8   c               @   s   e Zd Zee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d Zdd ZdS ) HsaModuleTemplatec             C   s
   t tS )N)r   r9   r   )r*   r+   r   r   r   resolve_get_global_id   s    z'HsaModuleTemplate.resolve_get_global_idc             C   s
   t tS )N)r   r9   r   )r*   r+   r   r   r   resolve_get_local_id   s    z&HsaModuleTemplate.resolve_get_local_idc             C   s
   t tS )N)r   r9   r   )r*   r+   r   r   r   resolve_get_global_size   s    z)HsaModuleTemplate.resolve_get_global_sizec             C   s
   t tS )N)r   r9   r   )r*   r+   r   r   r   resolve_get_local_size   s    z(HsaModuleTemplate.resolve_get_local_sizec             C   s
   t tS )N)r   r9   r   )r*   r+   r   r   r   resolve_get_num_groups   s    z(HsaModuleTemplate.resolve_get_num_groupsc             C   s
   t tS )N)r   r9   r   )r*   r+   r   r   r   resolve_get_work_dim   s    z&HsaModuleTemplate.resolve_get_work_dimc             C   s
   t tS )N)r   r9   r   )r*   r+   r   r   r   resolve_get_group_id   s    z&HsaModuleTemplate.resolve_get_group_idc             C   s
   t tS )N)r   r9   r   )r*   r+   r   r   r   resolve_barrier   s    z!HsaModuleTemplate.resolve_barrierc             C   s
   t tS )N)r   r9   r   )r*   r+   r   r   r   resolve_mem_fence   s    z#HsaModuleTemplate.resolve_mem_fencec             C   s
   t tS )N)r   r9   r    )r*   r+   r   r   r   resolve_wavebarrier   s    z%HsaModuleTemplate.resolve_wavebarrierc             C   s
   t tS )N)r   r9   r!   )r*   r+   r   r   r   #resolve_activelanepermute_wavewidth   s    z5HsaModuleTemplate.resolve_activelanepermute_wavewidthc             C   s
   t tS )N)r   r9   r%   )r*   r+   r   r   r   resolve_ds_permute   s    z$HsaModuleTemplate.resolve_ds_permutec             C   s
   t tS )N)r   r9   r&   )r*   r+   r   r   r   resolve_ds_bpermute   s    z%HsaModuleTemplate.resolve_ds_bpermutec             C   s   t tjS )N)r   r-   r   r(   )r*   r+   r   r   r   resolve_shared   s    z HsaModuleTemplate.resolve_sharedc             C   s   t tjS )N)r   r-   r   r6   )r*   r+   r   r   r   resolve_atomic   s    z HsaModuleTemplate.resolve_atomicN)r   r   r   r   r-   r   r   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   r   r   r   r   r;      s    
r;   N))Z
__future__r   r   r   Znumbar   Znumba.typing.templatesr   r   r   r	   r
   r   r   registryregisterZ	intrinsicZregister_attrZintrinsic_attrZregister_globalZintrinsic_globalr   r   r   r   r   r   r   r   r   r    r!   r$   r%   r&   r'   r)   r.   r8   r;   r-   r   r   r   r   <module>   sX    
			3