idjp @ddlZddlZddlZddlmZmZddlmZedkoeduZ e rpddl Z ddl Z ddl Z ddl Z ejejejejedddlmZe jdZdd ZnddlmZdd lmZmZed d d d d d d dZGddeZGddZdZ eD]\Z Z!e!D]Z"e#ee e" e re j$dSdS)N)syspath)DistutilsError__main__z..) CCompilerOptc/Ktj|i|} |Vtj|dS#tj|wxYwN)tempfilemkdtempshutilrmtree)argskwargstmpdirs ]/opt/cloudlinux/venv/lib/python3.11/site-packages/numpy/distutils/tests/test_ccompiler_opt.pytempdirr sU!42622 "LLL M& ! ! ! ! !FM& ! ! ! !s /Ac(|st|dSr )AssertionError)exprmsgs rassert_rs" & %% % & &)rr)gccclangicciccwmsvc)rr)rrfcc)r)x86x64ppc64ppc64learmhfaarch64s390xnoarchcHeZdZdZd dZdZdZdZedddZ d S) FakeCCompilerOptrcH||_||_tj|dfi|dSr )fake_trap_filesfake_trap_flagsr__init__)self trap_files trap_flagsrrs rr-zFakeCCompilerOpt.__init__)s3))dD33F33333rctjd|j|j|S)Nz <<<< march : {} compiler : {} ---------------- {} >>>> )textwrapdedentformatcc_marchcc_namereportr.s r__repr__zFakeCCompilerOpt.__repr__.s;   VDM4< ? ? @rc t|tsJt|tsJ|jr4|D]1}tj|j|r|d2|jr4|D]1}tj|j|r|d2t|d|gt|zS)Nz%source is trapped by a fake interfacez#flag is trapped by a fake interface ) isinstancelistr+rematch dist_errorr,zipjoinlen)r.sourcesflagsrsrcfs r dist_compilezFakeCCompilerOpt.dist_compile8s'4(()))%&&'''   M M M8D0#66MOO$KLLL   K K K8D0!44KOO$IJJJ7SXXe__-G <===rctjSr )r) fake_infor8s r dist_infozFakeCCompilerOpt.dist_infoFs ))rF)stderrcdSr )rLrs rdist_logzFakeCCompilerOpt.dist_logIs rN)rr) __name__ __module__ __qualname__rJr-r9rHrK staticmethodrOrNrrr)r)'sI4444 @@@ > > >***$    \   rr)ceZdZdZdZdZdZdZdZdZ dZ dZ dd Z dd Z dd Zifd ZifdZdZdZdZdZdZdZdZdZdZdZdZdZdZdS)_Test_CCompilerOptNc,dt_d|_dS)NT)r) conf_nocache_optr8s r setup_classz_Test_CCompilerOpt.setup_classQs(,% rcL|j|jdft_t|i|SNr)archccr)rJ)r.rrs rnoptz_Test_CCompilerOpt.noptUs)&*i"%="0000rcP|js||_|jSr )rXr^r8s roptz_Test_CCompilerOpt.optYs#y $ DIyrc4|jSr )r`r5r8s rmarchz_Test_CCompilerOpt.march^sxxzz""rc4|jSr )r`r6r8s rr6z_Test_CCompilerOpt.cc_nameasxxzz!!rc |t_||dd|dd|dd|dd}t 5}t j|d }t|d 5}| |dddn #1swxYwYgi}| |g} | D]\} } t j |  d d d } t| } | dkrd} nN| d kr| d} n-dd| zdz} | | || < dddn #1swxYwY|j|\}}|r|dgzn|}d|D}t|tkst#fd|Dst%d|d||fS)Nbaselinemindispatchmaxr/rr0 cpu_baseline cpu_dispatchr/r0ztest_targets.cw.r(r;)crg|]4}t|trdd|zdzn|5S)rpr;rq)r<tuplerB).0tars r z2_Test_CCompilerOpt.get_targets..sP   &0U%;%; DC c ! !   rc3 K|]}|vV dSr rN)rttgtargetss r z1_Test_CCompilerOpt.get_targets..s'3S3SaAM3S3S3S3S3S3SrzE'sources_status' returns different targets than the compiled targets z != )r)conf_target_groupsr^getrosrrBopenwrite try_dispatchbasenamesplitrCupperappendsources_statusallr)r.targetsgroupsrr`rfilerGgflags fake_objectssourcerEgtarglen has_baselinerys @r get_targetsz_Test_CCompilerOpt.get_targetsds.4+iiJ66J66zz,33zz,33    YY %&7<<(899DdC !A    ! ! ! ! ! ! ! ! ! ! ! ! ! ! !HF++TF33L!- % % }V,,22377"=4yy199%DDQYY7==??DD .s299;;D%%%$t  % % % % % % % % % % % % % % % %*!$ 24 8 g,8E'ZL((g      w<<3x== ( (3S3S3S3S73S3S3S0S0S ( .%ggxx1  s71G6C GC GC CGGGc .tdddd}|}|}|||}|||}|||||dz|z|dz|z|dz|z|dz|zfD]}||d}|n|rlt |tr/|D]\} } | dddvr| d z|| <n(t |tsJ|dddvr|d z }|S) Nr r"r$r)r!r#r%r_roz)}$?\.+*$)dictrbr6r|popr<itemsstr) r.r map2originrbr6 map_marchmap_cckeyregexkvs r arg_regexz_Test_CCompilerOpt.arg_regexsf      gNN5%00 11 7Iv CK' ! Og % CK& Of $   CJJsD))E !  !%&& !!KKMM++DAqv[00#$s7a+"%--...:[00SLE rrc |jd i|}|dS||||dd|dd}d|}|s't |dkrt d|zdStj||tj st d|d |d dS) Nr/rr0rir;r!expected empty features, not "%s"zdispatch features " " not match ""rN) rr^r|rBcpu_dispatch_namesrCrr>r? IGNORECASE)r.rgrerr?r`featuress rexpectz_Test_CCompilerOpt.expect(((( = Fii!zz,33zz,33   88C224455 8}}!!$7(B Fxx77  .;C88UUUK   rc |jd i|}|dS||||dd|dd}d|}|s't |dkrt d|zdStj||tj st d|d |d dS) Nr/rr0rir;rrzbaseline features "rrrN) rr^r|rBcpu_baseline_namesrCrr>r?r)r.rergrr?r`rs rexpect_baselinez"_Test_CCompilerOpt.expect_baselinerrc |jd i|}|dS||||dd|dd}d|}|s't |dkrt d|zdStj||st d|d |d dS) Nr/rr0rir;rzexpected empty flags not "%s"zflags "rrrN) rr^r|rBcpu_baseline_flagsrCrr>r?)r.rergrr?r`rEs r expect_flagsz_Test_CCompilerOpt.expect_flagss(((( = Fii!zz,33zz,33   //1122 5zzQ$3e; Fxu%%  ./4uueee<   rc 6|jdi|}|dS|jd||d|\}}d|}|s't|dkrt d|zdSt j||t jst d|d|ddS) Nrrr;rz expected empty targets, not "%s"z targets "rrrN)rrrBrCrr>r?r)r.rrrr?rs rexpect_targetsz!_Test_CCompilerOpt.expect_targetss(((( = F%T%OgfOOOO ((7## 7||q  $6@ Fxw 66  .18%%%@   rc |jdi|}|dSt|tsJ|||\}}|D]x\}}||vrt d|z||} |s%t | dkrt d|ztj|| st d|d| d|dydS) Nrzexpected to find target "%s"rz+expected to find empty flags in target "%s"rz " flags "rrN) rr<rrrrrCr>r?) r.rrr match_dictr tar_flags match_tar match_flagsrEs rexpect_target_flagsz&_Test_CCompilerOpt.expect_target_flagss'#T^--f--   F*d++,,,'''GG 9&0&6&6&8&8   "I{ ))$2Y>i(E u::??(E Q8K// $n8A 555+++V   rc|jdkrdnd}|jdkrdnd}|}tt |d|jztt |d|z tt |d|jztt |d|z dS)Nr"r rrcc_on_cc_is_)r\r]r`rgetattr)r. wrong_archwrong_ccr`s rtest_interfacez!_Test_CCompilerOpt.test_interfaces $ W 4 4WW% $W 4 4WW%hhjjX 122333GCJ!6777888X/00111GCH!455566666rcdD]j\}}|||}t|dksJt|dksJkdS)N))rnoner[)z none +nonez none - 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 +NONErjrkr)r^rCrr)r.rergr`s rtest_args_emptyz"_Test_CCompilerOpt.test_args_emptys# 7 7 Hh)))IICs--//00A5555s--//00A55555 7 7rc|dkrdSdD];\}} |||td#t$rY8wxYwdS)Nunknown))zunkown_feature - max +minzunknown max min)z#avx2z$vsxrz+excepted an exception for invalid arguments)rbr^rr)r.rergs rtest_args_validationz'_Test_CCompilerOpt.test_args_validation-s ::<<9 $ $ F#    Hh  xh GGG$%RSSS!      s&A  AAc|ddddd|ddd d d|d d ddd |d d ddd dS)Nz sse vsx neonssevsxneonr)r r"r$rz)sse41 avx avx2 vsx2 vsx3 neon_vfpv4 asimdzsse41 avx avx2 vsx2 vsx3zneon_vfpv4 asimdz sse neon vsx)rer r"r$zavx2 vsx3 asimdhp)rr8s r test_skipz_Test_CCompilerOpt.test_skip;s U&"     7$&     ^"B     *="B      rc |dddd dD]F\}}d|d|d }||d |z|| ||d |z|| Gd D]4}|D]/}||dd|z05|dddD]}||ddS)Nzfma3 avx2 asimd vsx3zsse .* sse41 .* fma3.*avx2z vsx vsx2 vsx3zneon neon_fp16 neon_vfpv4 asimd)r r"r$)fma3avx2)avx512favx512cdz .* sse42 .* z .*rz.* sse42 .* %s$)x86_gccx86_iccx86_iccwz .* avx .* %s$)r)rr avx512_skxz.*%sr;)x86_msvcrvsx vsx2)r#)r neon_fp16 neon_vfpv4asimd)r%)rrB)r.f0f1diffrGffs r test_impliesz_Test_CCompilerOpt.test_impliesSsm  "0#5       FB.0RR4D  )B.t !     '",t !     K  A  $$R#chhqkk1%  UJ777= O OA  ,M N N N N O Orc dD]}|dkr|dkr!||ddddd||ddd d ddd ||d dddd||ddddddd|dddddddd|dddd |ddd d d d d !|d"kr$td#|zdS#t$r+|d"krtd$YdSwxYw)%N)rhnativerrz.*cpu_(sse|vsx|neon|vx).cr)r/r r"r$r&z".*cpu_(sse3|vsx2|neon_vfpv4|vxe).czsse sse2rzneon neon_fp16vx)r/r r"r$r%r#r&z.*cpu_(popcnt|vsx3).cz sse .* sse41rzneon 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 .*zvsx vsx2 vsx3 vsx4.*z vx vxe vxe2.*)rrrrr$r"r&rfz sse sse2 sse3zneon 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).*.*)r0r r"r$r&r%rexcepted an exception for %sexcepted no exceptions)r6rrbrr)r.os rtest_args_optionsz$_Test_CCompilerOpt.test_args_options|s"  AH}}6!9!9 KK6b"     KK?e3CBd     KK2"*2#     KKWKLB3,%      E7j    3B    ? KKKDd    zz||y(($2TZZ\\A)( ? ? ?zz||y(($%=>>>)(( ?s AD&&1EEc |dddd|dkrdndddddd |d dd |d dd|dd|dd|dd|dddS)Nz'sse sse2 vsx vsx2 neon neon_fp16 vx vxez -msse -msse2z /arch:SSE2r rz -mcpu=power8z"-mfpu=neon-fp16 -mfp16-format=ieeez-mzvector -march=arch12) rrrr ppc64_gcc ppc64_clang armhf_gccr%r&rz;-mfp16-format=ieee -mfpu=neon-fp-armv8 -march=armv8-a\+simd)r%rasimdhpz-march=armv8.2-a\+fp16z=-mfp16-format=ieee -mfpu=neon-fp-armv8 -march=armv8.2-a\+fp16) aarch64_gccrasimddpz-march=armv8.2-a\+dotprod)rasimdfhmz-march=armv8.2-a\+fp16\+fp16fmlzasimddp asimdhp asimdfhmz(-march=armv8.2-a\+dotprod\+fp16\+fp16fmlrz-mzvector -march=arch13)r&)rrbr8s r test_flagsz_Test_CCompilerOpt.test_flagss@  5"N!%)ZZ\\U%:%:\\%&:+    T     1V     #?      $F      &C      ,      rc,dD]} ||dddd|dkr$td|zZ#t$r*|dkrtdYwxYwdS)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)r r$r"r&rrr)rrbrrr.rs rtest_targets_exceptionsz*_Test_CCompilerOpt.test_targets_exceptionss  C CG C##"Bb$::<<9,,(6E-" C C C::<<9,,()ABBB-, C3 C CsAA1BBc FdD]}||ddddddS)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*/ rrrrr)r r"r$r&rrrs rtest_targets_syntaxz&_Test_CCompilerOpt.test_targets_syntaxsN ! ! G>   fD"     ?! ! rc |dddddd|dd d d d d d|dd ddd dd|dd dddddddd dS)Nz /*@targets sse sse2 sse41 avx avx2 avx512f vsx vsx2 vsx3 vsx4 neon neon_fp16 asimdhp asimddp vx vxe vxe2 */ zavx vsx2 asimd vx vxe avx512f avx2zasimddp asimdhpz vsx4 vsx3vxe2)rer r$r"r&z /*@targets sse41 avx avx2 avx512f vsx2 vsx3 vsx4 asimd asimdhp asimddp vx vxe vxe2 */ rz"sse41 avx2 vsx2 asimd asimddp vxe2z avx2 sse41 asimddp asimdvsx2)rergr 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 neonzvxe vx)rer/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 sse2zavx512cd avx2 avx sse2z vsx3 vsx2 vsx vsx3 vsx2z8asimdfhm asimddp asimdhp asimd neon_vfpv4 neon_fp16 neonzasimdfhm asimddp asimdhp asimd) rerrrrr"r#r$r%rr8s r test_targetsz_Test_CCompilerOpt.test_targetss  -&7{    "FO6    BF.    9-,-!L4#      rc |ddddddd|d d d d d d|dddd|dkrdndddddD]*}|d|zddiddiddiddiddi+|dddiddidd idd!iddidS)"Nz /*@targets $keep_baseline sse2 sse42 avx2 avx512f vsx2 vsx3 neon neon_vfpv4 asimd asimddp vx vxe vxe2 */ zsse41 avx2 vsx2 asimd vsx3 vxezavx512f avx2 sse42 sse2rzasimddp asimd neon_vfpv4 neonrz vxe2 vxe vx)rer r"r$r%r&z /*@targets $keep_baseline $keep_sort avx512f sse42 avx2 sse2 vsx2 vsx3 asimd neon neon_vfpv4 asimddp vxe vxe2 */ zavx512f sse42 avx2 sse2rzasimd neon neon_vfpv4 asimddpz asimd asimddpzvxe 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 */ zavx512f avx2 sse42 sse41 sse2r zavx512f avx2 sse2r)rrrrr"r$r%)z$maxoptz$autovecz/*@targets baseline %s */rez.*-O3.*z.*/O3.*z.*/O2.*r)rrrrrz/*@targets baseline $werror */z .*-Werror.*z .*/Werror.*z.*/WX.*)rrbr)r.policys rtest_targets_policiesz(_Test_CCompilerOpt.test_targets_policies]sv  6)1#!    &  *1#    &  434 --)(3A1##    &.  F  $ $+f4 *I0F +:i2H#D) %       ,M*M0J]+:i2H% !     rc |dtdddd|dtd d d d ddddS)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)rr 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_2zavx512f avx2 avx sse42 sse41rvsx3zasimdfhm asimddp asimdzasimdfhm asimddp)rr r"r#r$r%)rrr8s rtest_targets_groupsz&_Test_CCompilerOpt.test_targets_groupss  -&,      /*&1      rc|ddd|ddddd |d d ddd |ddddddS)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) */ zavx512f f16c avxrr)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 */ zfma3 avx2 \(fma3 avx2\)r)rrrrrr8s rtest_targets_multiz%_Test_CCompilerOpt.test_targets_multis   -(      #(    (     /V  rr)rPrQrRr\r]rYr^r`rbr6rrrrrrrrrrrrrrrrrrrr rNrrrUrUMs D B111 ###"""***X>***.0"35.777 7 7 7      0'O'O'OR6?6?6?p% % % NCCC<"""H> > > @J J J X* * * X1 1 1 1 1 rrUctr0tjd|dz|z||Stjd|dz|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_standaloner2r3r4)r\r]s rnew_testrs X_.   #:?"     ?   #:?"    rr )%r>r2r}rrdistutils.errorsrrP __package__r unittest contextlibr r rabspathrBdirname__file__ ccompiler_optrcontextmanagerrrnumpy.distutils.ccompiler_opt numpy.testingrarch_compilersr)rUrrr\ compilersr]execmainrNrrrsh++++++J&>;$+> /1111111111111111HOOLDL<4<+A+A4!H!HIIJJJ******"""&&&&&;:::::........ 1 1  %     $ $ $ $ $ |$ $ $ Ly  y  y  y  y  y  y  y  v$&++--!!OD)!! XXdB      !HMOOOOOr