HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/numpy/distutils/tests/__pycache__/test_ccompiler_opt.cpython-310.pyc
o

6��a�l�	@sFddlZddlZddlZddlmZmZddlmZedko!eduZ	e	rWddl
Z
ddlZddlZddl
Z
ej�e�e�e�e�d���ddlmZejdd��Zdd
d�ZnddlmZddlmZmZed
d
dddddd�ZGdd�de�ZGdd�d�Zdd�Z	e��D]\Z Z!e!D]	Z"e#ee e"��q�q�e	r�e
�$�dSdS)�N)�sys�path)�DistutilsError�__main__z..)�CCompilerOptc	os6�tj|i|��}z|VWt�|�dSt�|�w�N)�tempfile�mkdtemp�shutil�rmtree)�args�kwargs�tmpdir�r�J/usr/lib/python3/dist-packages/numpy/distutils/tests/test_ccompiler_opt.py�tempdirs
�r�cCs|st|��dSr)�AssertionError)�expr�msgrrr�assert_s�r)rr)�gcc�clang�icc�iccw�msvc)rr)r)�x86�x64�ppc64�ppc64le�armhf�aarch64�noarchc@sDeZdZdZddd�Zdd�Zdd�Zdd	�Zed
d�dd
��Z	dS)�FakeCCompilerOptrcOs$||_||_tj|dfi|��dSr)�fake_trap_files�fake_trap_flagsr�__init__)�self�
trap_files�
trap_flagsrr
rrrr&(szFakeCCompilerOpt.__init__cCst�d��|j|j|���S)Nz�            <<<<
            march    : {}
            compiler : {}
            ----------------
            {}
            >>>>
        )�textwrap�dedent�format�cc_march�cc_name�report�r'rrr�__repr__-s�zFakeCCompilerOpt.__repr__cKs�t|t�sJ�t|t�sJ�|jr"|D]}t�|j|�r!|�d�q|jr6|D]}t�|j|�r5|�d�q't|d�|�gt	|��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�frrr�dist_compile7s
�
�zFakeCCompilerOpt.dist_compilecCstjSr)r#�	fake_infor0rrr�	dist_infoEszFakeCCompilerOpt.dist_infoF)�stderrcGsdSrr)rBrrrr�dist_logHszFakeCCompilerOpt.dist_logN)rr)
�__name__�
__module__�__qualname__r@r&r1r?rA�staticmethodrCrrrrr#&s

r#c@s�eZdZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zd5dd�Zd5dd�Z
d5dd�Zifdd�Zifdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�ZdS)6�_Test_CCompilerOptNcCsdt_d|_dS)NT)r#�conf_nocache�_optr0rrr�setupPs
z_Test_CCompilerOpt.setupcOs|j|jdft_t|i|��S�Nr)�arch�ccr#r@)r'rr
rrr�noptTsz_Test_CCompilerOpt.noptcCs|js|��|_|jSr)rJrOr0rrr�optXs
z_Test_CCompilerOpt.optcC�
|��jSr)rPr-r0rrr�march]�
z_Test_CCompilerOpt.marchcCrQr)rPr.r0rrrr.`rSz_Test_CCompilerOpt.cc_namec	s�|t_|j|�dd�|�dd�|�dd�|�dd�d�}t��p}tj�|d	�}t|d
��
}|�	|�Wd�n1s<wYg�i}|�
|g�}	|	D]:\}
}t�|
��d�dd
�}t
|�}
|
dkrhd}n|
dkrs|d��}ndd�|�d��}��|�|||<qMWd�n1s�wY|j|\}}|r�|dgn|}dd�|D�}t
|�t
��ks�t�fdd�|D��s�td|�f��||fS)N�baseline�min�dispatch�maxr(rr)��cpu_baseline�cpu_dispatchr(r)ztest_targets.c�w�.����r�(r2�)cSs,g|]}t|t�rdd�|�dn|�qS)r_r2r`)r3�tupler9)�.0�tarrrr�
<listcomp>�s��z2_Test_CCompilerOpt.get_targets.<locals>.<listcomp>c3s�|]}|�vVqdSrr)rb�t��gtargetsrr�	<genexpr>�s�z1_Test_CCompilerOpt.get_targets.<locals>.<genexpr>zM'sources_status' returns different targets than the compiled targets
%s != %s)r#�conf_target_groupsrO�getr�osrr9�open�write�try_dispatch�basename�splitr:�upper�append�sources_status�allr)r'�targets�groupsr
rPr�filer>�gflags�fake_objects�sourcer<�gtar�glen�has_baselinerrfr�get_targetscsN



��

���&��z_Test_CCompilerOpt.get_targetsc	Ks�tddddd�}|��}|��}|�||�}|�||�}|||||d||d||d||d|fD]}|�|d�}|durDnq6|rxt|t�re|��D]\}	}
|
dd�dvrb|
d	||	<qP|St|t�slJ�|dd�dvrx|d	7}|S)
Nrrr r)rrr!r�_r^z)}$?\.+*�$)�dictrRr.rj�popr3�items�str)r'r
�
map2originrRr.�	map_march�map_cc�key�regex�k�vrrr�	arg_regex�s<�



��
��z_Test_CCompilerOpt.arg_regexrcKs�|jd	i|��}|durdS|j|||�dd�|�dd�d�}d�|���}|s6t|�dkr4td|��dSt�||tj	�sFtd||f��dS)
Nr(rr)rXr2r�!expected empty features, not "%s"z%dispatch features "%s" not match "%s"r)
r�rOrjr9�cpu_dispatch_namesr:rr5r6�
IGNORECASE)r'rVrTr
r6rP�featuresrrr�expect��(

��
��z_Test_CCompilerOpt.expectcKs�|jd	i|��}|durdS|j|||�dd�|�dd�d�}d�|���}|s6t|�dkr4td|��dSt�||tj	�sFtd||f��dS)
Nr(rr)rXr2rr�z%baseline features "%s" not match "%s"r)
r�rOrjr9�cpu_baseline_namesr:rr5r6r�)r'rTrVr
r6rPr�rrr�expect_baseline�r�z"_Test_CCompilerOpt.expect_baselinecKs�|jd	i|��}|durdS|j|||�dd�|�dd�d�}d�|���}|s6t|�dkr4td|��dSt�||�sDtd||f��dS)
Nr(rr)rXr2rzexpected empty flags not "%s"zflags "%s" not match "%s"r)	r�rOrjr9�cpu_baseline_flagsr:rr5r6)r'rTrVr
r6rPr<rrr�expect_flags�s(

��
��z_Test_CCompilerOpt.expect_flagscKs�|jdi|��}|durdS|jd||d�|��\}}d�|�}|s0t|�dkr.td|��dSt�||tj�s@td||f��dS)N�rurvr2rz expected empty targets, not "%s"ztargets "%s" not match "%s"r)r�r~r9r:rr5r6r�)r'rurvr
r6rrrr�expect_targets�s 
�
��z!_Test_CCompilerOpt.expect_targetsc
Ks�|jdi|��}|durdSt|t�sJ�|j||d�\}}|��D]/\}}||vr0td|��||}	|sBt|	�dkrBtd|��t�||	�sQtd||	|f��q"dS)Nr�zexpected to find target "%s"rz+expected to find empty flags in target "%s"z"%s" flags "%s" not match "%s"r)	r�r3r�r~r�rr:r5r6)
r'rurvr
�
match_dictr�	tar_flags�	match_tar�match_flagsr<rrr�expect_target_flags�s,�����z&_Test_CCompilerOpt.expect_target_flagscCs�|jdkrdnd}|jdkrdnd}|��}tt|d|j��tt|d|��tt|d|j��tt|d|��dS)Nrrrr�cc_on_�cc_is_)rMrNrPr�getattr)r'�
wrong_arch�wrong_ccrPrrr�test_interfacesz!_Test_CCompilerOpt.test_interfacecCsHdD]\}}|j||d�}t|���dksJ�t|���dks!J�qdS)N))r�nonerL)z
none +noneznone - none)z	none -maxz	min - max)z+vsx2 -VSX2zvsx avx2 avx512f -max)z#max -vsx - avx + avx512f neon -MAX z+min -min + max -max -vsx + avx2 -avx2 +NONE�rYrZr)rOr:r�r�)r'rTrVrPrrr�test_args_emptys
	�z"_Test_CCompilerOpt.test_args_emptyc	CsJ|��dkrdSdD]\}}z|j||d�td��ty"Yq
wdS)N�unknown))zunkown_feature - max +minzunknown max min)z#avx2z$vsxr�z+excepted an exception for invalid arguments)rRrOrr)r'rTrVrrr�test_args_validation,s��z'_Test_CCompilerOpt.test_args_validationcCsT|jdddddd�|jddd	d
dd�|jdddddd�|jd
d
dddd�dS)Nzsse vsx neon�sse�vsx�neonr�rrr r�z)sse41 avx avx2 vsx2 vsx3 neon_vfpv4 asimdzsse41 avx avx2�	vsx2 vsx3zneon_vfpv4 asimdzsse neon vsx)rTrrr zavx2 vsx3 asimdhp)r�r0rrr�	test_skip:s&���
�z_Test_CCompilerOpt.test_skipcCs�|jddddd�	dD] \}}d||f}|j|d|||d	�|j|d
|||d	�qdD]}|D]}|j|dd
�|�d�q3q/|jddd�dD]	}|j|dd�qLdS)Nzfma3 avx2 asimd vsx3zsse .* sse41 .* fma3.*avx2z
vsx vsx2 vsx3zneon neon_fp16 neon_vfpv4 asimd�rrr )��fma3�avx2)�avx512f�avx512cdz.* sse42 .* %s .*%s$z.* sse42 .* %s$)�x86_gcc�x86_icc�x86_iccwz
.* avx .* %s$)r�)r�r��
avx512_skxz.*%sr2)�x86_msvcr��vsx vsx2)r)r��	neon_fp16�
neon_vfpv4�asimd)r!)r�r9)r'�f0�f1�diffr>�ffrrr�test_impliesRs6������z_Test_CCompilerOpt.test_impliesc
CsdD]9}|dkr|��dkrq|j|ddddd�|j|ddd	d
ddd�|j|dd
ddd�|j|ddddddd�q|jdddddddd�|jddddd�z|jdddddd�|��dkrjtd |����WdSty�|��dkr}td!��YdSw)"N)rW�nativer�rz.*cpu_(sse|vsx|neon).cr)r(rrr z.*cpu_(sse3|vsx2|neon_vfpv4).czsse sse2r�zneon neon_fp16)r(rrr r!rz.*cpu_(popcnt|vsx3).czsse .* sse41r�zneon neon_fp16 .* asimd .*z=.* 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 .*zvsx vsx2 vsx3.*)r�r�r�r�r rrUz
sse sse2 sse3zneon neon_fp16 .* asimd)rrr r!rrz.*cpu_(sse2|vsx2).c)r(rrz".*(-march=native|-xHost|/QxHost).*�.*)r)rrr r��excepted an exception for %s�excepted no exceptions)r.r�rRrr)r'�orrr�test_args_options{sb�������
����z$_Test_CCompilerOpt.test_args_optionscCsj|jdddddddddd�	|jd	dd
d�|jdd
dd�|jddd�|jddd�|jddd�dS)Nz sse sse2 vsx vsx2 neon neon_fp16z-msse -msse2z
/arch:SSE2z-mcpu=power8z-maltivec -mvsx -mpower8-vectorz"-mfpu=neon-fp16 -mfp16-format=ieeer)r�r�r�r��	ppc64_gcc�ppc64_clang�	armhf_gccr!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\+fp16fmlzasimddp asimdhp asimdfhmz(-march=armv8.2-a\+dotprod\+fp16\+fp16fml)r�r0rrr�
test_flags�s:�
����
�z_Test_CCompilerOpt.test_flagsc	CsfdD].}z|j|dddd�|��dkrtd|����Wqty0|��dkr.td��YqwdS)N)zbla 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)rr rr�r�r�)r�rRrr�r'rurrr�test_targets_exceptions�s"�
�����z*_Test_CCompilerOpt.test_targets_exceptionscCs"dD]}|j|ddddd�qdS)N)z(/*@targets $keep_baseline sse vsx neon*/z(/*@targets,$keep_baseline,sse,vsx,neon*/z(/*@targets*$keep_baseline*sse*vsx*neon*/zo
            /*
            ** @targets
            ** $keep_baseline, sse vsx,neon
            */
            z�
            /*
            ************@targets*************
            ** $keep_baseline, sse vsx, neon
            *********************************
            */
            z�
            /*
            /////////////@targets/////////////////
            //$keep_baseline//sse//vsx//neon
            /////////////////////////////////////
            */
            zg
            /*
            @targets
            $keep_baseline
            SSE VSX NEON*/
            r�r�r�rr��r�r�rrr�test_targets_syntax�s
��z&_Test_CCompilerOpt.test_targets_syntaxcCsb|jdddddd�|jddd	d
ddd
�|jddddddd�|jddddddddddd�
dS)Nz�
            /*@targets
                sse sse2 sse41 avx avx2 avx512f
                vsx vsx2 vsx3
                neon neon_fp16 asimdhp asimddp
            */
            zavx vsx2 asimdzavx512f avx2zasimddp asimdhp�vsx3)rTrr rz�
            /*@targets
                sse41 avx avx2 avx512f
                vsx2 vsx3
                asimd asimdhp asimddp
            */
            rzsse41 avx2 vsx2 asimd asimddpz
avx2 sse41�
asimddp asimd�vsx2)rTrVrr rz�
            /*@targets
                sse2 sse41 avx2 avx512f
                vsx2 vsx3
                neon asimdhp asimddp
            */
            z.*(avx2|avx512f|vsx3|asimddp).cz
sse41 sse2zasimdhp neon)rTr(rrr 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 sse2zavx512cd avx2 avx sse2z
vsx3 vsx2 vsx�	vsx3 vsx2z8asimdfhm asimddp asimdhp asimd neon_vfpv4 neon_fp16 neonzasimdfhm asimddp asimdhp asimd)	rTr�r�r�r�rrr r!r�r0rrr�test_targetss8���

�z_Test_CCompilerOpt.test_targetsc
Cs�|jddddddd�|jdd	d
ddd
�|jddddddddd�dD]}|jd|ddiddiddiddiddid�q$|jdddiddiddiddiddid�dS)Nz�
            /*@targets
                $keep_baseline
                sse2 sse42 avx2 avx512f
                vsx2 vsx3
                neon neon_vfpv4 asimd asimddp
            */
            zsse41 avx2 vsx2 asimd vsx3zavx512f avx2 sse42 sse2r�zasimddp asimd neon_vfpv4 neonr�)rTrrr r!z�
            /*@targets
                $keep_baseline $keep_sort
                avx512f sse42 avx2 sse2
                vsx2 vsx3
                asimd neon neon_vfpv4 asimddp
            */
            zavx512f sse42 avx2 sse2r�zasimd neon neon_vfpv4 asimddpz
asimd asimddp)rrr r!z�
            /*@targets
                $keep_baseline $keep_sort $autovec
                avx512f avx2 sse42 sse41 sse2
                vsx3 vsx2
                asimddp asimd neon_vfpv4 neon
            */
            zavx512f avx2 sse42 sse41 sse2zavx512f avx2 sse2)r�r�r�r�rr r!)z$maxoptz$autovecz/*@targets baseline %s */rTz.*-O3.*z.*/O3.*z.*/O2.*r�)rrrrr�z/*@targets baseline $werror */z.*-Werror.*z.*/Werror.*z.*/WX.*)r�r�)r'�policyrrr�test_targets_policiesOsL����
�z(_Test_CCompilerOpt.test_targets_policiesc	Cs>|jdtdd�dddd�|jdtd	d
d�dd
dddd�dS)NzK
            /*@targets $keep_baseline baseline #test_group */
            z�
                    $keep_baseline
                    asimddp sse2 vsx2 avx2 vsx3
                    avx512f asimdhp
                )�
test_groupzavx512f avx2 sse2 baselinezvsx3 vsx2 baselinezasimddp asimdhp baseline)rvrrr 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_2zavx512f avx2 avx sse42 sse41r�r�zasimdfhm asimddp asimdzasimdfhm asimddp)rvrrrr r!)r�r�r0rrr�test_targets_groups�s*��	�
�z&_Test_CCompilerOpt.test_targets_groupscCsN|jdddd�|jdddddd	�|jd
dddd�|jd
ddddd�dS)Nzm
            /*@targets
                (avx512_clx avx512_cnl) (asimdhp asimddp)
            */
            z\(avx512_clx avx512_cnl\)z\(asimdhp asimddp\))rr z�
            /*@targets
                f16c (sse41 avx sse42) (sse3 avx2 avx512f)
                vsx2 (vsx vsx3 vsx2)
                (neon neon_vfpv4 asimd asimdhp asimddp)
            */
            zavx512f f16c avxr�r�)rrrr z�
            /*@targets $keep_sort
                (sse41 avx sse42) (sse3 avx2 avx512f)
                (vsx vsx3 vsx2)
                (asimddp neon neon_vfpv4 asimd asimdhp)
            */
            zavx avx512fr�zz
            /*@targets $keep_sort
                fma3 avx2 (fma3 avx2) (avx2 fma3) avx2 fma3
            */
            zfma3 avx2 \(fma3 avx2\)r�)r�r�r�r�r�r0rrr�test_targets_multi�s0�
��

�z%_Test_CCompilerOpt.test_targets_multi�r)rDrErFrMrNrKrOrPrRr.r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrHLs8,


	)6!$;G,rHcCs@trt�d�j|d|||d�St�d�j|d|||d�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()
    r)�
class_namerMrNzo    class TestCCompilerOpt_{class_name}(_Test_CCompilerOpt):
        arch = '{arch}'
        cc   = '{cc}'
    )�
is_standaloner*r+r,)rMrNrrr�new_test�s�
�r�r�)%r5r*rkrr�distutils.errorsrrD�__package__r��unittest�
contextlibrr
rr�abspathr9�dirname�__file__�
ccompiler_optr�contextmanagerrr�numpy.distutils.ccompiler_opt�
numpy.testingr��arch_compilersr#rHr�r�rM�	compilersrN�exec�mainrrrr�<module>sL  
�
&,	��