
    ܙd                         d dl 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 d dlmZ d dlmZmZ  G d	 d
e          Z G d de          Zedk    r ej                     dS dS )    N)njit)overload)ConfigStack)FlagsDEFAULT_FLAGS)types)default_mangler)TestCaseunittestc                       e Zd Zd ZdS )TestCompilerFlagCachedOverloadc                    d t                    d             }t          d          fd            t                      fd            } |            \  }}|                     |d           |                     |d           d S )	Nc                      d S N r       ?lib/python3.11/site-packages/numba/tests/test_compiler_flags.pyfastmath_statuszQTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.fastmath_status   s    Dr   c                  h    t                                                      } | j        rdndfd}|S )NHas fastmathNo fastmathc                       S r   r   )vals   r   codegenzeTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.ov_fastmath_status.<locals>.codegen   s    
r   )r   topfastmath)flagsr   r   s     @r   ov_fastmath_statuszTTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.ov_fastmath_status   sH    MM%%''E$)NE..C     Nr   T)r   c                                    S r   r   )r   s   r   set_fastmathzNTestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.set_fastmath   s    "?$$$r   c                  4                 }              }| |fS r   r   )abr   r    s     r   foozETestCompilerFlagCachedOverload.test_fastmath_in_overload.<locals>.foo    s$    !!AAq6Mr   r   r   )r   r   assertEqual)selfr   r$   r"   r#   r   r    s        @@r   test_fastmath_in_overloadz8TestCompilerFlagCachedOverload.test_fastmath_in_overload   s    	 	 	 
/	"	"	 	 
#	"	 
t				% 	% 	% 	% 
		% 
	 	 	 	 	 
	
 suu1M***N+++++r   N)__name__
__module____qualname__r'   r   r   r   r   r      s#        , , , , ,r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestFlagManglingc                       fd}t                      } ||            |t                     t                      }d|_        d|_        d|_         ||           d S )Nc                     |                                  }|                     |          }                    ||                                            d S r   )get_mangle_stringdemangler%   summary)r   mangledoutr&   s      r   checkz-TestFlagMangling.test_demangle.<locals>.check/   sI    --//G..))CS%--//22222r   T)r   r   no_cpython_wrappernrtr   )r&   r4   r   s   `  r   test_demanglezTestFlagMangling.test_demangle-   sx    	3 	3 	3 	3 	3 e 	m #' 	er   c                     t                      }d|_        d|_        |                     t	          |                                          t	          |                                                     d S )NT)r   r6   auto_parallel
assertLesslenr/   r1   )r&   r   s     r   test_mangled_flags_is_shorterz.TestFlagMangling.test_mangled_flags_is_shorterC   sX    	"E335566EMMOO8L8LMMMMMr   c                 |   t                      }d|_        d|_        d|_        d|_        |                     t          |                                          t          |                                                     |	                    |                                          }| 
                    d|           d S )NTalways0x)r   r6   r9   r   inliner:   r;   r/   r1   r0   assertNotIn)r&   r   	demangleds      r   /test_mangled_flags_with_fastmath_parfors_inlinez@TestFlagMangling.test_mangled_flags_with_fastmath_parfors_inlineJ   s    	"E335566EMMOO8L8LMMMNN5#:#:#<#<==	y)))))r   c                    d}t           j        f}t                      }d|_        d|_        t          |||                                g          }d}t          j        d|t          |          d                   }|
                    d          }t          |          t          |          z   }|||t          |          z            }	t          j        |	          }
|                     |
|                                           dS )	z,Test demangling of flags from mangled symbolr$   T
myhardware)abi_tags_Z3fooBz[0-9]+Nr   )r   int32r   r6   target_backendr	   r/   rematchr;   groupintr0   r%   r1   )r&   fnameargtypesr   nameprefixmsizebaseabi_mangledrB   s              r   $test_demangling_from_mangled_symbolsz5TestFlagMangling.test_demangling_from_mangled_symbolsV   s     ;<	+8u'>'>'@'@&A
 
 
 HXtCKKLL122wwqzz6{{SYY&4s4yy 001N;//	EMMOO44444r   N)r(   r)   r*   r7   r<   rC   rV   r   r   r   r,   r,   +   sS          ,N N N
* 
* 
*5 5 5 5 5r   r,   __main__)rJ   numbar   numba.core.extendingr   numba.core.targetconfigr   numba.core.compilerr   r   
numba.corer   numba.core.funcdescr	   numba.tests.supportr
   r   r   r,   r(   mainr   r   r   <module>r`      s   				       ) ) ) ) ) ) / / / / / / 4 4 4 4 4 4 4 4       / / / / / / 2 2 2 2 2 2 2 2, , , , ,X , , ,<@5 @5 @5 @5 @5x @5 @5 @5F zHMOOOOO r   