ó
\K]c           @` sĪ   d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z d  d l j	 Z
 d   Z d   Z d   Z d e
 j f d     YZ e d	 k r  e
 j   n  d S(
   i    (   t   print_functiont   divisiont   absolute_importN(   t   rocc         C` s   t  j d  } t  j j d t j  } d | | <t  j t  j  |  | d } t  j j	 | | d  t  j t  j  | | |  | <d  S(   Ni    i    i   (
   R   t   get_local_idt   sharedt   arrayt   numbat   uint32t   barriert   CLK_GLOBAL_MEM_FENCEt   atomict   add(   t   aryt   tidt   smt   bin(    (    sA   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_atomics.pyt
   atomic_add	   s    
c         C` sŠ   t  j d  } t  j d  } t  j j d t j  } |  | | f | | | f <t  j t  j  t  j j	 | | | f d  t  j t  j  | | | f |  | | f <d  S(   Ni    i   i   i   (   i   i   (
   R   R   R   R   R   R   R	   R
   R   R   (   R   t   txt   tyR   (    (    sA   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_atomics.pyt   atomic_add2   s    c         C` sģ   t  j d  } t  j d  } t  j j d t j  } |  | | f | | | f <t  j t  j  t  j j	 | | t j
 |  f d  t  j t  j  | | | f |  | | f <d  S(   Ni    i   i   i   (   i   i   (   R   R   R   R   R   R   R	   R
   R   R   t   uint64(   R   R   R   R   (    (    sA   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_atomics.pyt   atomic_add3   s    %t   TestHsaAtomicsc           B` s#   e  Z d    Z d   Z d   Z RS(   c         C` sž   t  j j d d d d j t  j  } | j   } t j d  t  } | d |  t  j	 d d t  j } x+ t
 | j  D] } | | | c d 7<q~ W|  j t  j | | k   d  S(   Ni    i    t   sizes   void(uint32[:])i   t   dtype(   i   i    (   t   npt   randomt   randintt   astypeR   t   copyR   t   jitR   t   zerost   rangeR   t
   assertTruet   all(   t   selfR   t   origt   hsa_atomic_addt   goldt   i(    (    sA   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_atomics.pyt   test_atomic_add+   s    'c         C` s   t  j j d d d d j t  j  j d d  } | j   } t j d  t	  } | d d f |  |  j
 t  j | | d k   d  S(	   Ni    i    R   i   i   s   void(uint32[:,:])i   (   i   i   (   R   R   R   R   R   t   reshapeR   R   R   R   R"   R#   (   R$   R   R%   t   hsa_atomic_add2(    (    sA   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_atomics.pyt   test_atomic_add27   s
    3c         C` s   t  j j d d d d j t  j  j d d  } | j   } t j d  t	  } | d d f |  |  j
 t  j | | d k   d  S(	   Ni    i    R   i   i   s   void(uint32[:,:])i   (   i   i   (   R   R   R   R   R   R*   R   R   R   R   R"   R#   (   R$   R   R%   t   hsa_atomic_add3(    (    sA   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_atomics.pyt   test_atomic_add3>   s
    3(   t   __name__t
   __module__R)   R,   R.   (    (    (    sA   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_atomics.pyR   *   s   		t   __main__(   t
   __future__R    R   R   t   numpyR   R   R   t   numba.unittest_supportt   unittest_supportt   unittestR   R   R   t   TestCaseR   R/   t   main(    (    (    sA   lib/python2.7/site-packages/numba/roc/tests/hsapy/test_atomics.pyt   <module>   s   			