
    G/Phjp              
       @   d dl Z d dlZd dlZd dlmZmZ d dlmZ edk    oedu Z	e	rpd dl
Z
d dlZd dlZd dlZej                             ej         ej         ej        e          d                               d dlmZ ej        d             Zdd	Znd dlmZ d d
lmZmZ  edddddddd          Z G d de          Z G d d          Zd Z	 e                                D ]\  Z Z!e!D ]Z" e# ee e"                      e	r e
j$                     dS dS )    N)syspath)DistutilsError__main__z..)CCompilerOptc               /      K   t          j        | i |}	 |V  t          j        |           d S # t          j        |           w xY wN)tempfilemkdtempshutilrmtree)argskwargstmpdirs      h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/distutils/tests/test_ccompiler_opt.pytempdirr      sU      !42622	"LLLM&!!!!!FM&!!!!s	   / A c                 (    | st          |          d S r	   )AssertionError)exprmsgs     r   assert_r      s"     	& %%%	& 	&    )r   r   )gccclangicciccwmsvc)r   r   )r   r   fcc)r   )x86x64ppc64ppc64learmhfaarch64s390xnoarchc                   H    e Zd ZdZd
dZd Zd Zd Zeddd            Z	d	S )FakeCCompilerOptr   c                 H    || _         || _        t          j        | d fi | d S r	   )fake_trap_filesfake_trap_flagsr   __init__)self
trap_files
trap_flagsr   r   s        r   r-   zFakeCCompilerOpt.__init__)   s3    ))dD33F33333r   c                     t          j        d                              | j        | j        |                                           S )Nz            <<<<
            march    : {}
            compiler : {}
            ----------------
            {}
            >>>>
        )textwrapdedentformatcc_marchcc_namereportr.   s    r   __repr__zFakeCCompilerOpt.__repr__.   s;         VDM4<??	@r   c                    t          |t                    sJ t          |t                    sJ | j        r4|D ]1}t          j        | j        |          r|                     d           2| j        r4|D ]1}t          j        | j        |          r|                     d           2t          |d                    |          gt          |          z            S )Nz%source is trapped by a fake interfacez#flag is trapped by a fake interface )

isinstancelistr+   rematch
dist_errorr,   zipjoinlen)r.   sourcesflagsr   srcfs         r   dist_compilezFakeCCompilerOpt.dist_compile8   s    '4(()))%&&''' 	M M M8D0#66 MOO$KLLL 	K K K8D0!44 KOO$IJJJ7SXXe__-G<===r   c                     t           j        S r	   )r)   	fake_infor8   s    r   	dist_infozFakeCCompilerOpt.dist_infoF   s    ))r   F)stderrc                     d S r	    )rL   r   s     r   dist_logzFakeCCompilerOpt.dist_logI   s    r   N)r   r   )
__name__
__module____qualname__rJ   r-   r9   rH   rK   staticmethodrO   rN   r   r   r)   r)   '   s        I4 4 4 4
@ @ @> > >* * * $     \  r   r)   c                       e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d Zdd
ZddZddZi fdZi fdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )_Test_CCompilerOptNc                 ,    dt           _        d | _        d S )NT)r)   conf_nocache_optr8   s    r   setup_classz_Test_CCompilerOpt.setup_classQ   s    (,%			r   c                 L    | j         | j        dft          _        t          |i |S Nr   )archccr)   rJ   )r.   r   r   s      r   noptz_Test_CCompilerOpt.noptU   s)    &*i"%="0000r   c                 P    | j         s|                                 | _         | j         S r	   )rX   r^   r8   s    r   optz_Test_CCompilerOpt.optY   s#    y 	$		DIyr   c                 4    |                                  j        S r	   )r`   r5   r8   s    r   marchz_Test_CCompilerOpt.march^   s    xxzz""r   c                 4    |                                  j        S r	   )r`   r6   r8   s    r   r6   z_Test_CCompilerOpt.cc_namea   s    xxzz!!r   c           	         |t           _        |                     |                    dd          |                    dd          |                    dd          |                    dd                    }t	                      5 }t
          j                            |d	          }t          |d
          5 }|	                    |           d d d            n# 1 swxY w Y   g i }|
                    |g          }	|	D ]\  }
}t          j        |
                              d          dd         }t          |          }|dk    rd}nN|dk    r|d                                         }n-dd                    |          z   dz                                   }                    |           |||<   	 d d d            n# 1 swxY w Y   |j        |         \  }}|r|dgz   n|}d |D             }t          |          t                    k    st#          fd|D                       st%          d|d          ||fS )Nbaselinemindispatchmaxr/   r   r0   cpu_baselinecpu_dispatchr/   r0   ztest_targets.cw.   r   (r;   )c                 r    g | ]4}t          |t                    rd d                    |          z   dz   n|5S )rp   r;   rq   )r<   tuplerB   ).0tars     r   
<listcomp>z2_Test_CCompilerOpt.get_targets.<locals>.<listcomp>   sP     
 
 
 &0U%;%;DCc!!
 
 
r   c              3       K   | ]}|v V  	d S r	   rN   )rt   tgtargetss     r   	<genexpr>z1_Test_CCompilerOpt.get_targets.<locals>.<genexpr>   s'      3S3SaAM3S3S3S3S3S3Sr   zE'sources_status' returns different targets than the compiled targets
z != )r)   conf_target_groupsr^   getr   osr   rB   openwritetry_dispatchbasenamesplitrC   upperappendsources_statusallr   )r.   targetsgroupsr   r`   r   filerG   gflagsfake_objectssourcerE   gtarglenhas_baselinery   s                  @r   get_targetsz_Test_CCompilerOpt.get_targetsd   s   .4+iiJ66J66zz,33zz,33	  
 
 YY 	%&7<<(899DdC !A   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !HF++TF33L!- % %}V,,22377"=4yy199%DDQYY7==??DD  .s299;;D%%%$t%	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%* !$ 24 8g,8E'ZL((g
 

 
 
 w<<3x==((3S3S3S3S73S3S3S0S0S( .%ggxx1  
 s7   1G6CGC	GC	 CGGGc           	      .   t          dddd          }|                                 }|                                 }|                    ||          }|                    ||          }|||||dz   |z   |dz   |z   |dz   |z   |dz   |z   fD ]}|                    |d           }| n|rlt          |t                     r/|                                D ]\  }	}
|
dd          dvr|
d	z   ||	<   n(t          |t                    sJ |dd          dvr|d	z  }|S )
Nr    r"   r$   r   )r!   r#   r%   r   _ro   z)}$?\.+*$)dictrb   r6   r|   popr<   itemsstr)r.   r   
map2originrb   r6   	map_marchmap_cckeyregexkvs              r   	arg_regexz_Test_CCompilerOpt.arg_regex   sf   	
 
 

 

gNN5%00	117IvCK'!Og%CK& Of$
 		 		C JJsD))E  ! 	!%&& !!KKMM + +DAqv[00#$s7a+ "%--...:[00SLEr   r   c           	          | j         di |}|d S |                     |||                    dd          |                    dd                    }d                    |                                          }|s't          |          dk    rt          d|z            d S t          j        ||t          j	                  st          d|d	|d
          d S )Nr/   r   r0   ri   r;   r   !expected empty features, not "%s"zdispatch features "" not match ""rN   )
r   r^   r|   rB   cpu_dispatch_namesrC   r   r>   r?   
IGNORECASE)r.   rg   re   r   r?   r`   featuress          r   expectz_Test_CCompilerOpt.expect      ((((=Fii!zz,33zz,33  
 

 88C224455 	8}}!!$7(B   Fxx77 	 .;C88UUUK  	 	r   c           	          | j         di |}|d S |                     |||                    dd          |                    dd                    }d                    |                                          }|s't          |          dk    rt          d|z            d S t          j        ||t          j	                  st          d|d	|d
          d S )Nr/   r   r0   ri   r;   r   r   zbaseline features "r   r   rN   )
r   r^   r|   rB   cpu_baseline_namesrC   r   r>   r?   r   )r.   re   rg   r   r?   r`   r   s          r   expect_baselinez"_Test_CCompilerOpt.expect_baseline   r   r   c           	          | j         di |}|d S |                     |||                    dd          |                    dd                    }d                    |                                          }|s't          |          dk    rt          d|z            d S t          j        ||          st          d|d	|d
          d S )Nr/   r   r0   ri   r;   r   zexpected empty flags not "%s"zflags "r   r   rN   )	r   r^   r|   rB   cpu_baseline_flagsrC   r   r>   r?   )r.   re   rg   r   r?   r`   rE   s          r   expect_flagsz_Test_CCompilerOpt.expect_flags   s    ((((=Fii!zz,33zz,33  
 

 //1122 	5zzQ$3e;   Fxu%% 	 ./4uueee<  	 	r   c                 6    | j         di |}|d S  | j        d||d|\  }}d                    |          }|s't          |          dk    rt	          d|z            d S t          j        ||t
          j                  st	          d|d|d          d S )	Nr   r   r;   r   z expected empty targets, not "%s"z	targets "r   r   rN   )r   r   rB   rC   r   r>   r?   r   )r.   r   r   r   r?   r   s         r   expect_targetsz!_Test_CCompilerOpt.expect_targets   s    ((((=F%T%OgfOOOO
((7## 	7||q  $6@   Fxw66 	 .18%%%@  	 	r   c           
          | j         di |}|d S t          |t                    sJ |                     ||          \  }}|                                D ]x\  }}||vrt          d|z            ||         }	|s%t          |	          dk    rt          d|z            t          j        ||	          st          d|d|	d|d          yd S )	Nr   zexpected to find target "%s"r   z+expected to find empty flags in target "%s"r   z	" flags "r   rN   )	r   r<   r   r   r   r   rC   r>   r?   )
r.   r   r   r   
match_dictr   	tar_flags	match_tarmatch_flagsrE   s
             r   expect_target_flagsz&_Test_CCompilerOpt.expect_target_flags   s'   #T^--f--
F*d++,,,'''GG9&0&6&6&8&8 	 	"I{	))$2Y>   i(E u::??(E	Q   8K// $n8A		555+++V  	 	r   c                    | j         dk    rdnd}| j        dk    rdnd}|                                 }t          t	          |d| j         z                        t          t	          |d|z                         t          t	          |d| j        z                        t          t	          |d|z                         d S )Nr"   r    r   r   cc_on_cc_is_)r\   r]   r`   r   getattr)r.   
wrong_archwrong_ccr`   s       r   test_interfacez!_Test_CCompilerOpt.test_interface  s     $	W 4 4WW%
 $W 4 4WW%hhjjX	122333GCJ!6777888X/00111GCH!455566666r   c                     dD ]j\  }}|                      ||          }t          |                                          dk    sJ t          |                                          dk    sJ kd S )N))r   noner[   )z
none +noneznone - none)z	none -maxz	min - max)z+vsx2 -VSX2zvsx avx2 avx512f -max)z#max -vsx - avx + avx512f neon -MAX z+min -min + max -max -vsx + avx2 -avx2 +NONErj   rk   r   )r^   rC   r   r   )r.   re   rg   r`   s       r   test_args_emptyz"_Test_CCompilerOpt.test_args_empty  s    #
 	7 	7Hh )))IICs--//00A5555s--//00A55555	7 	7r   c                     |                                  dk    rd S dD ];\  }}	 |                     ||           t          d          # t          $ r Y 8w xY wd S )Nunknown))zunkown_feature - max +minzunknown max min)z#avx2z$vsxr   z+excepted an exception for invalid arguments)rb   r^   r   r   )r.   re   rg   s      r   test_args_validationz'_Test_CCompilerOpt.test_args_validation-  s    ::<<9$$F#
 	 	Hh		xh	GGG$%RSSS!   	 	s   &A		
AAc                     |                      ddddd           |                      ddd	d
d           |                      ddddd           |                      ddddd           d S )Nzsse vsx neonssevsxneonr   )r    r"   r$   r   z)sse41 avx avx2 vsx2 vsx3 neon_vfpv4 asimdzsse41 avx avx2	vsx2 vsx3zneon_vfpv4 asimdzsse neon vsx)re   r    r"   r$   zavx2 vsx3 asimdhp)r   r8   s    r   	test_skipz_Test_CCompilerOpt.test_skip;  s     	U&" 	 	
 	
 	
 	7$& 	 	
 	
 	
 	^"B 	 	
 	
 	
 	*="B 	 	
 	
 	
 	
 	
r   c           	         |                      dddd           	 dD ]F\  }}d|d|d	}|                      |d
|z  ||           |                      |d|z  ||           GdD ]4}|D ]/}|                      |dd                    |          z             05|                      dd           dD ]}|                      |d           d S )Nzfma3 avx2 asimd vsx3zsse .* sse41 .* fma3.*avx2zvsx vsx2 vsx3zneon neon_fp16 neon_vfpv4 asimd)r    r"   r$   )fma3avx2)avx512favx512cdz.* sse42 .* z .*r   z.* sse42 .* %s$)x86_gccx86_iccx86_iccwz.* avx .* %s$)r   )r   r   
avx512_skxz.*%sr;   )x86_msvcr   vsx vsx2)r#   )r   	neon_fp16
neon_vfpv4asimd)r%   )r   rB   )r.   f0f1diffrG   ffs         r   test_impliesz_Test_CCompilerOpt.test_impliesS  sm    	"0#5 	 	
 	
 	
	

 	 	FB .0RR4D  )B.t !      '",t !    
 K 	 	A  $$R#chhqkk1 %     	UJ777= 	O 	OA  ,M NNNN	O 	Or   c                    dD ]}|dk    r|                                  dk    r!|                     |ddddd           |                     |ddd	d
ddd           |                     |ddddd           |                     |ddddddd           |                     dddddddd           |                     dddd           	 |                     ddd d d d d !           |                                 d"k    r$t          d#|                                 z            d S # t          $ r+ |                                 d"k    rt          d$          Y d S w xY w)%N)rh   nativer   r   z.*cpu_(sse|vsx|neon|vx).cr   )r/   r    r"   r$   r&   z".*cpu_(sse3|vsx2|neon_vfpv4|vxe).czsse sse2r   zneon neon_fp16vx)r/   r    r"   r$   r%   r#   r&   z.*cpu_(popcnt|vsx3).czsse .* sse41r   zneon neon_fp16 .* asimd .*vx vxe vxe2z=.* xop fma4 .* avx512f .* avx512_knl avx512_knm avx512_skx .*z1.* avx512f .* avx512_knl avx512_knm avx512_skx .*z'.* xop fma4 .* avx512f .* avx512_skx .*z.* asimd asimdhp asimddp .*zvsx vsx2 vsx3 vsx4.*zvx vxe vxe2.*)r   r   r   r   r$   r"   r&   rf   zsse sse2 sse3zneon neon_fp16 .* asimd)r    r!   r$   r%   r"   r#   r&   z.*cpu_(sse2|vsx2).c)r/   r    r#   z..*(-march=native|-xHost|/QxHost|-mcpu=a64fx).*.*)r0   r    r"   r$   r&   r%   r   excepted an exception for %sexcepted no exceptions)r6   r   rb   r   r   )r.   os     r   test_args_optionsz$_Test_CCompilerOpt.test_args_options|  s   " 	 	AH}}6!9!9KK6b"     KK?e3CBd    
 KK2"*2#	     KKWKLB3,%  
 
 
 
 	E7j 	 	
 	
 	

 	3B 	 	
 	
 	
	?KKKDd     zz||y(($2TZZ\\A   )(  	? 	? 	?zz||y(($%=>>> )((	?s   AD& &1EEc                    |                      dddd|                                 dk    rdndddddd	
  
         |                      d
dd           |                      ddd           |                      dd           |                      dd           |                      dd           |                      dd           d S )Nz'sse sse2 vsx vsx2 neon neon_fp16 vx vxez-msse -msse2z
/arch:SSE2r    r   z-mcpu=power8z"-mfpu=neon-fp16 -mfp16-format=ieeez-mzvector -march=arch12)	r   r   r   r   	ppc64_gccppc64_clang	armhf_gccr%   r&   r   z;-mfp16-format=ieee -mfpu=neon-fp-armv8 -march=armv8-a\+simd)r%   r   asimdhpz-march=armv8.2-a\+fp16z=-mfp16-format=ieee -mfpu=neon-fp-armv8 -march=armv8.2-a\+fp16)aarch64_gccr   asimddpz-march=armv8.2-a\+dotprod)r   asimdfhmz-march=armv8.2-a\+fp16\+fp16fmlzasimddp asimdhp asimdfhmz(-march=armv8.2-a\+dotprod\+fp16\+fp16fmlr   z-mzvector -march=arch13)r&   )r   rb   r8   s    r   
test_flagsz_Test_CCompilerOpt.test_flags  s@   5"N!%)ZZ\\U%:%:\\%&:+ 	 
	
 
	
 
	
 	T 	 	
 	
 	

 	1V 	 	
 	
 	

 	#? 	 	
 	
 	
 	$F 	 	
 	
 	
 	&C 	 	
 	
 	
 	, 	 	
 	
 	
 	
 	
r   c                 ,   dD ]}	 |                      |dddd           |                                 dk    r$t          d|                                 z            Z# t          $ r* |                                 dk    rt          d          Y w xY wd S )N)zbla blaz
/*@targetsz/*@targets */z/*@targets unknown */z"/*@targets $unknown_policy avx2 */z!/*@targets #unknown_group avx2 */z/*@targets $ */z/*@targets # vsx */z/*@targets #$ vsx */z/*@targets vsx avx2 ) */z/*@targets vsx avx2 (avx2 */z/*@targets vsx avx2 () */z!/*@targets vsx avx2 ($autovec) */z/*@targets vsx avx2 (xxx) */z!/*@targets vsx avx2 (baseline) */r   )r    r$   r"   r&   r   r   r   )r   rb   r   r   r.   r   s     r   test_targets_exceptionsz*_Test_CCompilerOpt.test_targets_exceptions  s    
 	C 	CG C##"Bb $    ::<<9,,(6E   - " C C C::<<9,,()ABBB -,C3	C 	Cs   AA1BBc           	      F    dD ]}|                      |ddddd           d S )N)z+/*@targets $keep_baseline sse vsx neon vx*/z+/*@targets,$keep_baseline,sse,vsx,neon vx*/z+/*@targets*$keep_baseline*sse*vsx*neon*vx*/zs
            /*
            ** @targets
            ** $keep_baseline, sse vsx,neon, vx
            */
            z
            /*
            ************@targets****************
            ** $keep_baseline, sse vsx, neon, vx
            ************************************
            */
            z
            /*
            /////////////@targets/////////////////
            //$keep_baseline//sse//vsx//neon//vx
            /////////////////////////////////////
            */
            zj
            /*
            @targets
            $keep_baseline
            SSE VSX NEON VX*/
            r   r   r   r   r   )r    r"   r$   r&   r   r   r   s     r   test_targets_syntaxz&_Test_CCompilerOpt.test_targets_syntax  sN    
 !	 !	G> fD"      ?!	 !	r   c                     |                      dddddd           |                      dd	d
dddd           |                      dd	ddddd           |                      dd	dddddddd
  
         d S )Nz
            /*@targets
                sse sse2 sse41 avx avx2 avx512f
                vsx vsx2 vsx3 vsx4
                neon neon_fp16 asimdhp asimddp
                vx vxe vxe2
            */
            zavx vsx2 asimd vx vxeavx512f avx2zasimddp asimdhpz	vsx4 vsx3vxe2)re   r    r$   r"   r&   z
            /*@targets
                sse41 avx avx2 avx512f
                vsx2 vsx3 vsx4
                asimd asimdhp asimddp
                vx vxe vxe2
            */
            r   z"sse41 avx2 vsx2 asimd asimddp vxe2z
avx2 sse41asimddp asimdvsx2)re   rg   r    r$   r"   r&   z
            /*@targets
                sse2 sse41 avx2 avx512f
                vsx2 vsx3 vsx4
                neon asimdhp asimddp
                vx vxe vxe2
            */
            z).*(avx2|avx512f|vsx3|vsx4|asimddp|vxe2).cz
sse41 sse2zasimdhp neonzvxe vx)re   r/   r    r"   r$   r&   z
            /*@targets
                sse sse2 avx fma3 avx2 avx512f avx512cd
                vsx vsx2 vsx3
                neon neon_vfpv4 neon_fp16 neon_fp16 asimd asimdhp
                asimddp asimdfhm
            */
            z#avx512cd avx512f avx2 fma3 avx sse2zavx512cd avx2 avx sse2zvsx3 vsx2 vsx	vsx3 vsx2z8asimdfhm asimddp asimdhp asimd neon_vfpv4 neon_fp16 neonzasimdfhm asimddp asimdhp asimd)	re   r   r   r   r   r"   r#   r$   r%   r   r8   s    r   test_targetsz_Test_CCompilerOpt.test_targets  s     -&7{ 	 	
 	
 	
 	 "FO6 	 	
 	
 	
 	 BF. 	 	
 	
 	
 	 9-,-!L4# 	 	
 	
 	
 	
 	
r   c           
         |                      ddddddd           |                      d	d
dddd           |                      dddd|                                 dk    rdndddd           dD ]*}|                     d|z  ddiddiddiddiddi           +|                     dddiddidd idd!iddi           d S )"Nz
            /*@targets
                $keep_baseline
                sse2 sse42 avx2 avx512f
                vsx2 vsx3
                neon neon_vfpv4 asimd asimddp
                vx vxe vxe2
            */
            zsse41 avx2 vsx2 asimd vsx3 vxezavx512f avx2 sse42 sse2r   zasimddp asimd neon_vfpv4 neonr   zvxe2 vxe vx)re   r    r"   r$   r%   r&   z
            /*@targets
                $keep_baseline $keep_sort
                avx512f sse42 avx2 sse2
                vsx2 vsx3
                asimd neon neon_vfpv4 asimddp
                vxe vxe2
            */
            zavx512f sse42 avx2 sse2r   zasimd neon neon_vfpv4 asimddpzasimd asimddpzvxe vxe2)r    r"   r$   r%   r&   z
            /*@targets
                $keep_baseline $keep_sort $autovec
                avx512f avx2 sse42 sse41 sse2
                vsx3 vsx2
                asimddp asimd neon_vfpv4 neon
            */
            zavx512f avx2 sse42 sse41 sse2r    zavx512f avx2 sse2r   )r   r   r   r   r"   r$   r%   )z$maxoptz$autovecz/*@targets baseline %s */re   z.*-O3.*z.*/O3.*z.*/O2.*r   )r   r   r   r   r   z/*@targets baseline $werror */z.*-Werror.*z.*/Werror.*z.*/WX.*)r   rb   r   )r.   policys     r   test_targets_policiesz(_Test_CCompilerOpt.test_targets_policies]  sv    6)1#! 	 	
 	
 	
& 	 *1# 	 	
 	
 	
& 	 434

-- )(3A1## 	 	
 	
 	
& . 	 	F$$+f4	*I0F +:i2H#D)	 %     	  ,M*M0J]+:i2H%	 	! 	
 	
 	
 	
 	
r   c           	          |                      dt          d          ddd           |                      dt          d	d
          ddddd           d S )NzK
            /*@targets $keep_baseline baseline #test_group */
            z
                    $keep_baseline
                    asimddp sse2 vsx2 avx2 vsx3
                    avx512f asimdhp
                )
test_groupzavx512f avx2 sse2 baselinezvsx3 vsx2 baselinezasimddp asimdhp baseline)r   r    r"   r$   z
            /*@targets
             * sse42 avx avx512f
             * #test_group_1
             * vsx2
             * #test_group_2
             * asimddp asimdfhm
            */
            z@
                    VSX2 vsx3 asimd avx2 SSE41
                z@
                    vsx2 vsx3 asImd aVx2 sse41
                )test_group_1test_group_2zavx512f avx2 avx sse42 sse41r   vsx3zasimdfhm asimddp asimdzasimdfhm asimddp)r   r    r"   r#   r$   r%   )r   r   r8   s    r   test_targets_groupsz&_Test_CCompilerOpt.test_targets_groups  s        -&, 	 	
 	
 	
  	 	   /*&1 	 	
 	
 	
 	
 	
r   c                     |                      ddd           |                      ddddd	           |                      d
dddd           |                      ddddd           d S )Nzm
            /*@targets
                (avx512_clx avx512_cnl) (asimdhp asimddp)
            */
            z\(avx512_clx avx512_cnl\)z\(asimdhp asimddp\))r    r$   z
            /*@targets
                f16c (sse41 avx sse42) (sse3 avx2 avx512f)
                vsx2 (vsx vsx3 vsx2)
                (neon neon_vfpv4 asimd asimdhp asimddp)
            */
            zavx512f f16c avxr   r  )r    r"   r#   r$   z
            /*@targets $keep_sort
                (sse41 avx sse42) (sse3 avx2 avx512f)
                (vsx vsx3 vsx2)
                (asimddp neon neon_vfpv4 asimd asimdhp)
                (vx vxe vxe2)
            */
            zavx avx512fr   )r    r"   r$   r&   zz
            /*@targets $keep_sort
                fma3 avx2 (fma3 avx2) (avx2 fma3) avx2 fma3
            */
            zfma3 avx2 \(fma3 avx2\)r   )r   r   r   r   r   r8   s    r   test_targets_multiz%_Test_CCompilerOpt.test_targets_multi  s    
 -( 	 	
 	
 	
 	 #( 	 	
 	
 	
 	 ( 	 	
 	
 	
 	
 /V 	 		
 		
 		
 		
 		
r   r   )rP   rQ   rR   r\   r]   rY   r^   r`   rb   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  rN   r   r   rU   rU   M   s       DB  1 1 1  
# # #" " "* * *X  >   *   *   * .0    " 35    .7 7 77 7 7  
 
 
0'O 'O 'OR6? 6? 6?p%
 %
 %
NC C C<" " "H>
 >
 >
@J
 J
 J
X*
 *
 *
X1
 1
 1
 1
 1
r   rU   c                     t           r0t          j        d                              | dz   |z   | |          S t          j        d                              | dz   |z   | |          S )Na      class TestCCompilerOpt_{class_name}(_Test_CCompilerOpt, unittest.TestCase):
        arch = '{arch}'
        cc   = '{cc}'
        def __init__(self, methodName="runTest"):
            unittest.TestCase.__init__(self, methodName)
            self.setup_class()
    r   )
class_namer\   r]   zo    class TestCCompilerOpt_{class_name}(_Test_CCompilerOpt):
        arch = '{arch}'
        cc   = '{cc}'
    )is_standaloner2   r3   r4   )r\   r]   s     r   new_testr    s     	X_ . 	 	 
#:?" 
 
 
	 ?  	 	 
#:?" 
 
 
	r   r
  )%r>   r2   r}   r   r   distutils.errorsr   rP   __package__r  unittest
contextlibr
   r   r   abspathrB   dirname__file__ccompiler_optr   contextmanagerr   r   numpy.distutils.ccompiler_optnumpy.testingr   arch_compilersr)   rU   r  r   r\   	compilersr]   execmainrN   r   r   <module>r     sh                       + + + + + +J&>;$+> /1111111111111111HOOLDL<4<+A+A4!H!HIIJJJ****** " " "& & & & & ;:::::........ 
1
1%	 	 	$ $ $ $ $| $ $ $Ly

 y

 y

 y

 y

 y

 y

 y

v  $ &++-- ! !OD) ! !XXdB    !  HMOOOOO r   