ó
\K]c           @` sO  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z
 d  d l m Z d  d l m Z m Z m Z d  d l m Z m Z m Z d  d l m Z d  d l m Z d  d l m Z d  d	 l m Z d  d
 l m Z d  d l m Z d  d l  j! Z" d d l# m$ Z$ m% Z% e ƒ  Z& e& j' d ƒ e j( e j j) d ƒ d ƒ Z* e j( e j+ ƒ  d$ k d ƒ Z, d e- f d „  ƒ  YZ. d e j% f d „  ƒ  YZ/ d e j% f d „  ƒ  YZ0 e j1 e j2 d% k d ƒ d e j% f d „  ƒ  Yƒ Z3 d e$ e% f d  „  ƒ  YZ4 d! e j% f d" „  ƒ  YZ5 e6 d# k rKe j7 ƒ  n  d S(&   i    (   t   absolute_importt   divisiont   print_functionN(   t   unittest_support(   t   njitt   targetst   typing(   t   compile_isolatedt   Flagst   types(   t   rtsys(   t   nrtopt(   t	   intrinsic(   t	   signature(   t   impl_ret_untracked(   t   iri   (   t   MemoryLeakMixint   TestCaset   nrtt   linuxs   linux only testt   i386t   x86_64s   x86 only testt   Dummyc           B` s    e  Z d  Z d „  Z d „  Z RS(   i    c         C` s   t  |  ƒ j d 7_ d  S(   Ni   (   t   typet   alive(   t   self(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   __init__$   s    c         C` s   t  |  ƒ j d 8_ d  S(   Ni   (   R   R   (   R   (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   __del__'   s    (   t   __name__t
   __module__R   R   R   (    (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyR   !   s   	t   TestNrtMemInfoNotInitializedc           B` s   e  Z d  Z e Z d „  Z RS(   sn   
    Unit test for checking the use of the NRT fails if the
    initialization sequence has not been run.
    c         C` s¬   i d d 6d d f d 6d	 d 6} x„ | j  ƒ  D]v \ } } z] |  j t ƒ ) } t t _ t t | ƒ } | | Œ  Wd  QXd } |  j | t | j	 ƒ ƒ Wd  t
 t _ Xq. Wd  S(
   Nt   libraryt   meminfo_newt   meminfo_allocs'   Runtime must be initialized before use.(    (    (    (    (   (    (   t   itemst   assertRaisest   RuntimeErrort   FalseR
   t   _initt   getattrt   assertInt   strt	   exceptiont   True(   R   t   methodst   metht   argst   raisest   fnt   msg(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   test_init_fail2   s    

	(   R   R   t   __doc__R%   t   _numba_parallel_test_R2   (    (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyR   +   s   t   TestNrtMemInfoc           B` sz   e  Z d  Z d „  Z d „  Z d „  Z e j e j	 d	 k  d ƒ d „  ƒ Z
 e j e j	 d
 k  d ƒ d „  ƒ Z d „  Z RS(   s2   
    Unit test for core MemInfo functionality
    c         C` s#   d t  _ t j j t j ƒ  ƒ d  S(   Ni    (   R   R   R   t   cput
   CPUContextR   t   Context(   R   (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   setUpJ   s    	c         C` sÄ   t  ƒ  } |  j t  j d ƒ d } t j | | ƒ } |  j | j d ƒ ~ |  j t  j d ƒ | j ƒ  |  j | j d ƒ |  j t  j d ƒ | j ƒ  |  j | j d ƒ ~ |  j t  j d ƒ d  S(   Ni   IþÊ­Þ    i   i    (   R   t   assertEqualR   R
   R    t   refcountt   acquiret   release(   R   t   dt   addrt   mi(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   test_meminfo_refct_1P   s    	

c         C` sò   t  ƒ  } |  j t  j d ƒ d } t j | | ƒ } |  j | j d ƒ ~ |  j t  j d ƒ x t d ƒ D] } | j ƒ  qj W|  j | j d ƒ |  j t  j d ƒ x t d ƒ D] } | j ƒ  q± W|  j | j d ƒ ~ |  j t  j d ƒ d  S(   Ni   IþÊ­Þ    id   i    ie   (	   R   R:   R   R
   R    R;   t   rangeR<   R=   (   R   R>   R?   R@   t   ctt   _(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   test_meminfo_refct_2a   s     	i   s   memoryview not supportedc         C` s  t  ƒ  } |  j t  j d ƒ d } t j | | ƒ } |  j | j d ƒ t | ƒ } |  j | j d ƒ |  j | | j ƒ |  j | j	 ƒ |  j
 | | j ƒ |  j | j ƒ |  j | j d ƒ |  j | j d ƒ ~ ~ |  j t  j d ƒ ~ |  j t  j d ƒ d  S(   Ni   IþÊ­Þ    i    (   R   R:   R   R
   R    R;   t
   memoryviewt   datat   assertFalset   readonlyt   assertIst   objt
   assertTruet   c_contiguoust   itemsizet   ndim(   R   R>   R?   R@   t   mview(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   test_fake_memoryviewt   s$    	c         C` sù  d d l  m } m } m } m } t j t j ƒ } | j d } t	 j
 | d t ƒ} | j } | | | j ƒ | | d ƒ ƒ }	 x+ t d ƒ D] }
 |  j |	 j |
 d ƒ qŽ Wx% t d ƒ D] }
 |
 d |	 j |
 <q¼ Wt | ƒ } |  j | j | ƒ |  j | j ƒ |  j | | j ƒ |  j | j ƒ |  j | j d ƒ |  j | j d ƒ ~ t j d | d | j | j d	 | ƒ } ~ t j j t j | j ƒ d | ƒ | d 7} x/ t d ƒ D]! }
 |  j |	 j |
 |
 d
 ƒ q·W|  j | j  j | ƒ ~ d  S(   Ni    (   t   c_uint32t   c_void_pt   POINTERt   casti
   t   safeIËËËË    i   t   dtypet   shapet   bufferi   (   t   ctypesRR   RS   RT   RU   t   npRW   t   uint32RN   R
   R!   R+   RG   RB   R:   t   contentsRF   t   nbytesRH   RI   RJ   RK   RL   RM   RO   t   ndarrayt   testingt   assert_equalt   aranget   size(   R   RR   RS   RT   RU   RW   t   bytesizeR@   R?   t   c_arrt   iRP   t   arr(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   test_memoryview‹   s6    "	"	#
c         C` sž  d d l  m } m } m } m } t j t j ƒ } | j d } t	 j
 | d t ƒ} |  j | j d ƒ | j } | | | ƒ | | d ƒ ƒ }	 x+ t d ƒ D] }
 |  j |	 j |
 d ƒ qž Wx% t d ƒ D] }
 |
 d |	 j |
 <qÌ Wt j d | d | | j d	 | ƒ } |  j | j d ƒ ~ t j j t j | j ƒ d | ƒ | d 7} x/ t d ƒ D]! }
 |  j |	 j |
 |
 d
 ƒ q\W|  j | j  j | ƒ ~ d  S(   Ni    (   RR   RS   RT   RU   i
   RV   i   IËËËË    RW   RX   RY   i   (   RZ   RR   RS   RT   RU   R[   RW   R\   RN   R
   R!   R+   R:   R;   RG   RB   R]   R_   R`   Ra   Rb   Rc   (   R   RR   RS   RT   RU   RW   Rd   R@   R?   Re   Rf   Rg   (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   test_bufferµ   s*    "		#
(   i   (   i   (   R   R   R3   R9   RA   RE   t   unittestt   skipIft   syst   version_infoRQ   Rh   Ri   (    (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyR5   E   s   			$$*i   i   s+   need Python 3.4+ for the tracemalloc modulet   TestTracemallocc           B` s    e  Z d  Z d „  Z d „  Z RS(   sB   
    Test NRT-allocated memory can be tracked by tracemalloc.
    c         C` s`   d d  l  } | j ƒ  z8 | j ƒ  } | ƒ  } | j ƒ  } ~ | j | d ƒ SWd  | j ƒ  Xd  S(   Ni    t   lineno(   t   tracemalloct   startt   take_snapshott
   compare_tot   stop(   R   t   funcRp   t   beforet   rest   after(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   measure_memory_diffá   s    
	c         ` s  d ‰  t  j ‰ t ‡  ‡ f d †  ƒ ‰ ‡ f d †  } ‡ f d †  } | j j d } ˆ ƒ  |  j | ƒ } | d } |  j | j ˆ  ƒ |  j | j ˆ  d d d	 ƒ| j	 d } |  j
 t j j | j ƒ d
 ƒ |  j
 | j | ƒ |  j | ƒ } | d } |  j | j ˆ  d ƒ d  S(   Ni@B c           ` s   t  j ˆ  ˆ ƒ S(   s<   
            Allocate and return a large array.
            (   R[   t   empty(    (   t   NRW   (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   alloc_nrt_memoryò   s    c           ` s   ˆ  ƒ  S(   N(    (    (   R|   (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   keep_memoryù   s    c           ` s   ˆ  ƒ  d  S(   N(    (    (   R|   (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   release_memoryü   s    i   i    g=
×£p=ð?R1   sp   Unexpected allocation overhead encountered. May be due to difference in CPython builds or running under coverages   test_nrt.pyg{®Gáz„?(   R[   t   int8R   t   __code__t   co_firstlinenoRy   t   assertGreaterEqualRc   t
   assertLesst	   tracebackR:   t   ost   patht   basenamet   filenameRo   (   R   R}   R~   t   alloc_linenot   difft   statt   frame(    (   R{   R|   RW   s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   test_snapshotî   s$    	

(   R   R   R3   Ry   R   (    (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyRn   Ú   s   	t   TestNRTIssuec           B` s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         ` s   t  d „  ƒ ‰  t  ‡  f d †  ƒ ‰ t  ‡ f d †  ƒ } d } t j j | d f ƒ } | | | ƒ } | j | | ƒ } t j j | | ƒ d S(   sO   
        GitHub Issue #1244 https://github.com/numba/numba/issues/1244
        c         S` s%   |  \ } } t  j | d | d ƒ S(   Ni   (   t   matht   sqrt(   t   vectort   xt   y(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   calculate_2D_vector_mag  s    c         ` sP   t  j d d t  j ƒ} ˆ  |  ƒ } |  \ } } | | | d <| | | d <| S(   Ni   RW   i    i   (   R[   Rz   t   float64(   R‘   t   normalized_vectort   magR’   R“   (   R”   (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   normalize_2D_vector$  s    c         ` sw   t  j |  d f d t  j ƒ} xR t |  ƒ D]D } | | } ˆ  | ƒ } | d | | d f <| d | | d f <q+ W| S(   Ni   RW   i    i   (   R[   Rz   R•   RB   (   t   num_vectorst   vectorst   normalized_vectorsRf   R‘   R–   (   R˜   (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   normalize_vectors0  s    
i
   i   N(   R   R[   t   randomt   py_funcR`   t   assert_almost_equal(   R   Rœ   R™   t   test_vectorst   gott   expected(    (   R”   R˜   s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt    test_issue_with_refct_op_pruning  s    c      	   C` s‡   d „  } t  | d t j t j t j t j d d ƒ f ƒ ƒ } | j ƒ  \ } } |  j | d ƒ |  j | t j	 d d t j ƒƒ d  S(   Nc           S` s   d t  j d d t  j ƒf S(   Ng        i   RW   (   R[   t   zerost   int32(    (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   fH  s    i   t   Cy                RW   (    (
   R   R	   t   Tuplet
   complex128t   ArrayR¥   t   entry_pointt   assertPreciseEqualR[   R¤   (   R   R¦   t   crest   zRg   (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   test_incref_after_castE  s    		!c         C` sZ   t  d „  ƒ } | ƒ  \ } } t j j | | ƒ t j j | t j d d t j ƒƒ d  S(   Nc          S` s;   t  j d d t  j ƒ}  t  j d d t  j ƒ} |  | f S(   Ni
   RW   (   R[   t   onesR•   (   t   at   b(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyR¦   W  s    i
   RW   (   R   R[   R`   Ra   R°   R•   (   R   R¦   R±   R²   (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   test_refct_pruning_issue_1511V  s    c         C` sz   t  d „  ƒ } t j d d d d d d d d d d g
 g ƒ } | j | d d ƒ } | | d d ƒ } |  j | | ƒ d  S(   Nc         S` s|   t  j |  d k ƒ } t | d ƒ d k r: d } d } n | d d } | d d } | d | } | d | } | | f S(   Ni   i    (   R[   t   wheret   len(   t   imageR’   R“   t   next_loct   y_offsett   x_offsett
   next_loc_xt
   next_loc_y(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   udtb  s    	i   i    i   (   R   R[   t   arrayRž   R:   (   R   R¼   R±   t   expectR¡   (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   test_refct_pruning_issue_1526a  s
    0(   R   R   R£   R¯   R³   R¿   (    (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyRŽ     s   	+		t   TestRefCtPruningc           B` s5   e  Z d  Z d „  Z d „  Z e e d „  ƒ ƒ Z RS(   s¡  
define i32 @"MyFunction"(i8** noalias nocapture %retptr, { i8*, i32 }** noalias nocapture %excinfo, i8* noalias nocapture readnone %env, double %arg.vt.0, double %arg.vt.1, double %arg.vt.2, double %arg.vt.3, double %arg.bounds.0, double %arg.bounds.1, double %arg.bounds.2, double %arg.bounds.3, i8* %arg.xs.0, i8* nocapture readnone %arg.xs.1, i64 %arg.xs.2, i64 %arg.xs.3, double* nocapture readonly %arg.xs.4, i64 %arg.xs.5.0, i64 %arg.xs.6.0, i8* %arg.ys.0, i8* nocapture readnone %arg.ys.1, i64 %arg.ys.2, i64 %arg.ys.3, double* nocapture readonly %arg.ys.4, i64 %arg.ys.5.0, i64 %arg.ys.6.0, i8* %arg.aggs_and_cols.0.0, i8* nocapture readnone %arg.aggs_and_cols.0.1, i64 %arg.aggs_and_cols.0.2, i64 %arg.aggs_and_cols.0.3, i32* nocapture %arg.aggs_and_cols.0.4, i64 %arg.aggs_and_cols.0.5.0, i64 %arg.aggs_and_cols.0.5.1, i64 %arg.aggs_and_cols.0.6.0, i64 %arg.aggs_and_cols.0.6.1) local_unnamed_addr {
entry:
tail call void @NRT_incref(i8* %arg.xs.0)
tail call void @NRT_incref(i8* %arg.ys.0)
tail call void @NRT_incref(i8* %arg.aggs_and_cols.0.0)
%.251 = icmp sgt i64 %arg.xs.5.0, 0
br i1 %.251, label %B42.preheader, label %B160

B42.preheader:                                    ; preds = %entry
%0 = add i64 %arg.xs.5.0, 1
br label %B42

B42:                                              ; preds = %B40.backedge, %B42.preheader
%lsr.iv3 = phi i64 [ %lsr.iv.next, %B40.backedge ], [ %0, %B42.preheader ]
%lsr.iv1 = phi double* [ %scevgep2, %B40.backedge ], [ %arg.xs.4, %B42.preheader ]
%lsr.iv = phi double* [ %scevgep, %B40.backedge ], [ %arg.ys.4, %B42.preheader ]
%.381 = load double, double* %lsr.iv1, align 8
%.420 = load double, double* %lsr.iv, align 8
%.458 = fcmp ole double %.381, %arg.bounds.1
%not..432 = fcmp oge double %.381, %arg.bounds.0
%"$phi82.1.1" = and i1 %.458, %not..432
br i1 %"$phi82.1.1", label %B84, label %B40.backedge

B84:                                              ; preds = %B42
%.513 = fcmp ole double %.420, %arg.bounds.3
%not..487 = fcmp oge double %.420, %arg.bounds.2
%"$phi106.1.1" = and i1 %.513, %not..487
br i1 %"$phi106.1.1", label %B108.endif.endif.endif, label %B40.backedge

B160:                                             ; preds = %B40.backedge, %entry
tail call void @NRT_decref(i8* %arg.ys.0)
tail call void @NRT_decref(i8* %arg.xs.0)
tail call void @NRT_decref(i8* %arg.aggs_and_cols.0.0)
store i8* null, i8** %retptr, align 8
ret i32 0

B108.endif.endif.endif:                           ; preds = %B84
%.575 = fmul double %.381, %arg.vt.0
%.583 = fadd double %.575, %arg.vt.1
%.590 = fptosi double %.583 to i64
%.630 = fmul double %.420, %arg.vt.2
%.638 = fadd double %.630, %arg.vt.3
%.645 = fptosi double %.638 to i64
tail call void @NRT_incref(i8* %arg.aggs_and_cols.0.0)              ; GONE 1
tail call void @NRT_decref(i8* null)                                ; GONE 2
tail call void @NRT_incref(i8* %arg.aggs_and_cols.0.0), !noalias !0 ; GONE 3
%.62.i.i = icmp slt i64 %.645, 0
%.63.i.i = select i1 %.62.i.i, i64 %arg.aggs_and_cols.0.5.0, i64 0
%.64.i.i = add i64 %.63.i.i, %.645
%.65.i.i = icmp slt i64 %.590, 0
%.66.i.i = select i1 %.65.i.i, i64 %arg.aggs_and_cols.0.5.1, i64 0
%.67.i.i = add i64 %.66.i.i, %.590
%.84.i.i = mul i64 %.64.i.i, %arg.aggs_and_cols.0.5.1
%.87.i.i = add i64 %.67.i.i, %.84.i.i
%.88.i.i = getelementptr i32, i32* %arg.aggs_and_cols.0.4, i64 %.87.i.i
%.89.i.i = load i32, i32* %.88.i.i, align 4, !noalias !3
%.99.i.i = add i32 %.89.i.i, 1
store i32 %.99.i.i, i32* %.88.i.i, align 4, !noalias !3
tail call void @NRT_decref(i8* %arg.aggs_and_cols.0.0), !noalias !0 ; GONE 4
tail call void @NRT_decref(i8* %arg.aggs_and_cols.0.0)              ; GONE 5
br label %B40.backedge

B40.backedge:                                     ; preds = %B108.endif.endif.endif, %B84, %B42
%scevgep = getelementptr double, double* %lsr.iv, i64 1
%scevgep2 = getelementptr double, double* %lsr.iv1, i64 1
%lsr.iv.next = add i64 %lsr.iv3, -1
%.294 = icmp sgt i64 %lsr.iv.next, 1
br i1 %.294, label %B42, label %B160
}
    c         C` s´  |  j  } t | j ƒ  ƒ } g  | D] } d | k r" | ^ q" } g  | D] } d | k rG | ^ qG } t j | ƒ } t | j ƒ  ƒ } g  | D] } d | k r | ^ q } g  | D] } d | k r² | ^ q² }	 |  j | | ƒ |  j | |	 ƒ t | ƒ t | ƒ }
 t | ƒ t |	 ƒ } |
 | B} |  j | |
 | Aƒ d j | ƒ } x< d d d d d g D]% } d	 j	 | ƒ } |  j
 | | ƒ q_W|  j t t | j ƒ  ƒ ƒ t | ƒ ƒ d  S(
   Nt
   NRT_increft
   NRT_decrefs   
i   i   i   i   i   s	   ; GONE {}(   t   sample_llvm_irt   listt
   splitlinesR   t   _remove_redundant_nrt_refctt   assertNotEqualt   setR:   t   joint   formatR(   Rµ   (   R   t   input_irt   input_linest   lnt   before_increfst   before_decrefst	   output_irt   output_linest   after_increfst   after_decrefst   pruned_increfst   pruned_decrefst   combinedt   pruned_linesRf   t   gone(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   test_refct_pruning_op_recognizeÃ  s&    	%%%%
c         ` s¯   t  d „  ƒ ‰ t  d „  ƒ ‰  t  ‡  ‡ f d †  ƒ ‰ t  d t ƒ ‡ f d †  ƒ } | j d ƒ t | j | j d ƒ ƒ } t t j d | ƒ ƒ } |  j	 t
 | ƒ d ƒ d	 S(
   s   testcase from #2350c         S` s,   t  j | ƒ s( | | |  f c d 7<n  d  S(   Ni   (   R[   t   isnan(   R’   R“   t   aggt   field(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   _append_non_naä  s    c         S` sX   t  j | ƒ sT t  j | | |  f ƒ r; | | | |  f <qT | | |  f c | 7<n  d  S(   N(   R[   RÚ   (   R’   R“   RÛ   RÜ   (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   _appendé  s    c         ` s*   ˆ |  | | | ƒ ˆ  |  | | | ƒ d  S(   N(    (   R’   R“   RÛ   RÜ   (   RÞ   RÝ   (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   appendñ  s    t   no_cpython_wrapperc         ` sS   xL t  |  j d ƒ D]7 } x. t  |  j d ƒ D] } ˆ  | | |  | ƒ q. Wq Wd  S(   Ni    i   (   RB   RX   (   Rg   RÜ   Rf   t   j(   Rß   (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   extendø  s    s   (f4[:,::1], f4)i    s!   (NRT_incref|NRT_decref)\([^\)]+\)N(   R   R+   t   compileR)   t   inspect_llvmt
   signaturesRÄ   t   ret   finditerR:   Rµ   (   R   Râ   t   llvmirt   refops(    (   RÞ   RÝ   Rß   s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt    test_refct_pruning_with_branchesâ  s    c         ` so   t  j ƒ  t  j ƒ  t  j ƒ  t  j ƒ  t d „  ƒ ‰  t d g ƒ ‡  f d †  ƒ } |  j | d ƒ d ƒ d S(   st   The InlineAsm class from llvmlite.ir has no 'name' attr the refcount
        pruning pass should be tolerant to thisc         S` s   d „  } t  | | | ƒ | f S(   Nc      	   S` s   | \ } } t  j t  j d ƒ t  j d ƒ t  j d ƒ g ƒ } | j | d d | | f d d d t ƒ} t |  | | j | ƒ S(   Ni@   s   mov $2, $0; imul $1, $0s   =r,r,rt   namet   asm_mult   side_effect(   R   t   FunctionTypet   IntTypet   asmR%   R   t   return_type(   t   cgctxt   buildert   sigR.   t   arg_0t   arg_1t   ftyt   mul(    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   codegen  s    	(   R   (   t   tyctxR’   R“   Rù   (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   bar  s    	s   int64(int64)c         ` s   |  d 7}  ˆ  |  d ƒ } | S(   Ni   i   (    (   R’   R®   (   Rû   (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   foo  s    
i
   i   N(   t   llvmt
   initializet   initialize_native_targett   initialize_native_asmprintert   initialize_native_asmparserR   R   R:   (   R   Rü   (    (   Rû   s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   test_inline_asm  s    



(   R   R   RÃ   RÙ   Rê   t
   linux_onlyt   x86_onlyR  (    (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyRÀ   y  s
   H		$t   __main__(   R   R   (   i   i   (8   t
   __future__R    R   R   R   R…   t   platformRl   Ræ   t   numpyR[   t   numbaR   Rj   R   R   R   t   numba.compilerR   R   R	   t   numba.runtimeR
   R   t   numba.extendingR   t   numba.typingR   t   numba.targets.imputilsR   t   llvmliteR   t   llvmlite.bindingt   bindingRý   t   supportR   R   t   enable_nrt_flagsRÈ   Rk   t
   startswithR  t   machineR  t   objectR   R   R5   t
   skipUnlessRm   Rn   RŽ   RÀ   R   t   main(    (    (    s3   lib/python2.7/site-packages/numba/tests/test_nrt.pyt   <module>   sB   			
•	=`¬