$F3 ddlZddlZddlZddlZddlZddlmZmZmZddl m Z  d*dZ GddZ Gdd e Z Gd d e ZGd d e ZGdde ZGdde ZGdde ZdZdZdZeezZee eeeededeeeiZejD]<\ZZerejndZedZeedkrdd edZnedZdZ!e"Z#esded Z!n.ejsded!Z!n ej$s ded"e#d#<ej%s ded$e#d%<eD]\Z&Z'e&D]Z(e#)e(e!Z*e'fZ+e"eee(e&Z,e-d'e'j.d(ed(ed(e(e+e,Z/e*r$ej0!e*)e/e/e1e/j.<>dS)+N)targetsclear_floatstatusget_floatstatus)__cpu_baseline__Fct}|s|o|dzdk}||s|o|dzdkz}||s|o|dzdkz}||s|o|dzdkz}|S)Nr)r) divbyzerooverflow underflowinvalidallerrrets n/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib64/python3.11/site-packages/numpy/core/tests/test_simd.pycheck_floatstatusr s}   C  ) /#'aCCO8 /#'a/CC 9 037q.0CCN7 .qQ.C Jc|eZdZdZdZdZdZdZddZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZdZdS) _Test_UtilityNcBt|j|dz|jzS)z To call NPV intrinsics without the attribute 'npyv' and auto suffixing intrinsics according to class attribute 'sfx' _getattrnpyvsfx)selfattrs r __getattr__z_Test_Utility.__getattr__s! ty$*tx"7888rcBt|j|d|jdS)Nrx2r)r intrin_names r_x2z_Test_Utility._x2&s'ty["?"?48"?"?"?@@@rFc|d}||j}t|||z}|rt|}|r d|DSt |S)z[ Create list of consecutive numbers according to number of vector's lanes. Nrcg|]}|dz S)?.0xs r z'_Test_Utility._data..5s)))AG)))r)nlanesrangereversed_is_fplist)rstartcountreverserngs r_dataz_Test_Utility._data)sp =E =KEE55=))  3--C ;;== *))S))) )Cyyrc$|jddkS)Nrurrs r _is_unsignedz_Test_Utility._is_unsigned8x{c!!rc$|jddkS)Nrsr9r:s r _is_signedz_Test_Utility._is_signed;r<rc$|jddkS)Nrfr9r:s rr0z_Test_Utility._is_fp>r<rc:t|jddS)Nr)intrr:s r _scalar_sizez_Test_Utility._scalar_sizeAs48ABB<   rc|r|S||fd|DS)NcLg|] }tt|!Sr()minmax)r*vmax_intmin_ints rr,z+_Test_Utility._int_clip..Is+;;;!C7OOW--;;;r)r0_int_max_int_min)rseqrJrKs @@r _int_clipz_Test_Utility._int_clipDsP ;;== J--//--//;;;;;s;;;;rc|rdS||dd}|r|dzS|S)Nrr )r0 _to_unsignedsetallr?)rmax_us rrLz_Test_Utility._int_maxKsZ ;;== 4!!$++b//2215 ??   A:  rc|rdS|rdS|dz S)Nrr)r0r;rLr:s rrMz_Test_Utility._int_minSsF ;;== 4      11$%%rcnt|jd|jddzd}|dS)Nsetall_urrQrr)r max_unsigs r _true_maskz_Test_Utility._true_maskZs6AGDIzDHQRRL'@AA"EE |rc bt|ttfr.t|jd|jddz|S|jdd}|ddkrd}nd}t|j||dd||S) Nload_urnpyv_rbz cvt_u{0}_b{0}zreinterpret_u{0}_{1}) isinstancer1tuplerrr__name__replaceformat)rvectorr cvt_intrins rrRz_Test_Utility._to_unsigned^s ftUm , , O>749h!""&=>>vFF F/))'266C1v}}, 3 F749j&7&7ABB&E&EFFvNN Nrc tdSNinffloatr:s r _pinfinityz_Test_Utility._pinfinityiU||rc"td Srgrir:s r _ninfinityz_Test_Utility._ninfinitylse }rc tdS)Nnanrir:s r_nanz_Test_Utility._nanorlrc|j}|dkrt}n|d}d|S)Nbaseline__ ) target_namersplitjoin)rtargets r _cpu_featuresz_Test_Utility._cpu_featuresrs?! Z  %FF\\$''FxxrNNF)ra __module__ __qualname__rrrvr r$r6r;r?r0rDrOrLrMrYrRrkrnrqrzr(rrrrs D CK999AAA    """""""""!!!<<<&&& O O O     rrceZdZdZdZddZdZdZdZd Z e j d d d ge j d ddgddgdgdgfdZ dS) _SIMD_BOOLz2 To test all boolean vector types at once cLt|jd|jddzS)Nnlanes_urrr:s r_nlanesz_SIMD_BOOL._nlanes~s#ty*tx|";<<.s&777aQU) 777r)rYr.rr/)rr2r3r4r5rs @rr6z_SIMD_BOOL._datasTOO%% DLLNN##  3--C777737777rc|jdd}t|jd|z}t|jd|d|}|||S)Nrr[cvt_b_u)rrr)rdatalen_strloadcvts r_load_bz_SIMD_BOOL._load_bs_(122,ty(W"455di!=!=!=G!=!=>>s44::rc|}|d}||}||}dt||D}t|d||}||ksJdt||D}t|d||}||ksJdt||D} t|d||} | | ksJt|d |} | |ksJ|jd vrd Sd t||D} t|d ||} | | ksJdt||D}t|d||}||ksJdt||D}t|d||}||ksJd S)z Logical operations for boolean types. Test intrinsics: npyv_xor_##SFX, npyv_and_##SFX, npyv_or_##SFX, npyv_not_##SFX, npyv_andc_b8, npvy_orc_b8, nvpy_xnor_b8 Tr4cg|] \}}||z Sr(r(r*ar^s rr,z5_SIMD_BOOL.test_operators_logical.. :::daAE:::randcg|] \}}||z Sr(r(rs rr,z5_SIMD_BOOL.test_operators_logical..s 999TQ1q5999rorcg|] \}}||z  Sr(r(rs rr,z5_SIMD_BOOL.test_operators_logical..rrxornotb8Nc&g|]\}}||zdzSr(rs rr,z5_SIMD_BOOL.test_operators_logical..s&EEEAa1"f_EEErandcc&g|]\}}||zdzSrr(rs rr,z5_SIMD_BOOL.test_operators_logical..s&DDD1Q!VtODDDrorcc&g|]\}}||z dzSrr(rs rr,z5_SIMD_BOOL.test_operators_logical..s&EEEAq1uX_EEErxnor)r6rziprr)rdata_adata_bvdata_avdata_bdata_andvanddata_orvordata_xorvxorvnot data_andcvandcdata_orcvorc data_xnorvxnors rtest_operators_logicalz!_SIMD_BOOL.test_operators_logicals8D)),,v&&,,v&&::c&&&9&9:::#wtU##GW55x99S%8%8999!gdD!!'733g~~~~::c&&&9&9:::#wtU##GW55x#wtU##G,,v~~~~ 8D ! ! FEEVV1D1DEEE %f%%gw77E!!!!DDFF0C0CDDD#wtU##GW554EEVV1D1DEEE %f%%gw77E!!!!!!rcd}||dfD][}||}||}||}t|}|t|ksJ\dS)NcPtdt|dDS)Nc@g|]\}}t|dk|zS)rrC)r*ir+s rr,z<_SIMD_BOOL.test_tobits....s+%V%V%V41ac!q&kkQ&6%V%V%Vrr)sum enumerate)rs rz(_SIMD_BOOL.test_tobits..s(%V%V9TSTCUCU%V%V%V!W!WrTr)r6rtobitsbin)r data2bitsrvdata data_bitsr bin_tobitss r test_tobitsz_SIMD_BOOL.test_tobitssWW ZZ\\4::d:#;#;< 0 0DLL&&E! $I[[''FVJY/////  0 0rc |jdvrdS|}|d}||}||}t|jd|j}|jdkr6dt |t |zD}|||}n|jdkr>d d t |zd t |zzD}|||||}nL|jd krAd d t |zd t |zzD}|||||||||}||ksJdS)z Pack multiple vectors into one Test intrinsics: npyv_pack_b8_b16 npyv_pack_b8_b32 npyv_pack_b8_b64 )b16b32b64NTrpack_b8_rcg|]}|dzSrr(r*rs rr,z(_SIMD_BOOL.test_pack..sDDDAa$hDDDrrcg|]}|dzSrr(rs rr,z(_SIMD_BOOL.test_pack..HHHAa$hHHHrr rcg|]}|dzSrr(rs rr,z(_SIMD_BOOL.test_pack..rrr )rr6rrrr1)rrrdatarvrdata pack_simdspackvpacks r test_packz_SIMD_BOOL.test_packsw 80 0 0 Fzz|| 4 (( T""e$$DI'<$('<'<==  8u  DD$u++T *BDDDEIfe,,EE X  HH!DKK-!DJJ,*FHHHEIffeU;;EE X  HH!DKK-!DJJ,*FHHHEIffff$uuu>>E~~~~~~rintrinanyrrrQrc|||z}t|}t||}||}||}||ksJdSzX Test intrinsics: npyv_any_##SFX npyv_all_##SFX N)rrevalrrrrrfuncdesiredsimds rtest_operators_crosstestz#_SIMD_BOOL.test_operators_crosstestshdT\\^^344F||v&&$v,,vf~~w&rr{)rar|r}__doc__rr6rrrrpytestmark parametrizerr(rrrrzs===8888 )")")"V000> [Xu~66 [V Q B   & ' ' 76 ' ' 'rrcpeZdZdZdZdZdZej dgddZ dS) _SIMD_INTz2 To test all integer vector types at once c |jdvrdS|||jz }||d}||||}}t |D] | fd|D}|| }||ksJ| fd|D}| | }||ksJt d|D] | fd|D}| | } | |ksJ| fd|D}| | } | |ksJdS) N)u8s8Trcg|]}|zSr(r(r*rr3s rr,z2_SIMD_INT.test_operators_shift..#?#?#?1AJ#?#?#?rcg|]}|z Sr(r(rs rr,z2_SIMD_INT.test_operators_shift..rrrcg|]}|zSr(r(rs rr,z2_SIMD_INT.test_operators_shift..rrcg|]}|z Sr(r(rs rr,z2_SIMD_INT.test_operators_shift..rr) rr6rLr-rMrr.rDshlshrshlishri) rrrrr data_shl_ar data_shr_arrrr3s @rtest_operators_shiftz_SIMD_INT.test_operators_shifts 8| # # FDMMOOdk9::DMMOOT::99V,,dii.?.?4,,..// % %E#?#?#?#?#?#?#?@@J((7E**C*$$$$#?#?#?#?#?#?#?@@J((7E**C*$$$$$1d//1122 & &E#?#?#?#?#?#?#?@@J99We,,D:%%%%#?#?#?#?#?#?#?@@J99We,,D:%%%%% & &rcL|jdvrdS|||jz }||d}||||}}|dt||D}|||}||ksJ|dt||D}| ||}||ksJdS)N)u32s32u64s64Trcg|] \}}||z Sr(r(rs rr,z>_SIMD_INT.test_arithmetic_subadd_saturated.." #J#J#JdaAE#J#J#Jrcg|] \}}||z  Sr(r(rs rr,z>_SIMD_INT.test_arithmetic_subadd_saturated..&rr) rr6rLr-rMrrOraddssubs) rrrrr data_addsr data_subsrs r test_arithmetic_subadd_saturatedz*_SIMD_INT.test_arithmetic_subadd_saturateds 83 3 3 FDMMOOdk9::DMMOOT::99V,,dii.?.?NN#J#Jc&&6I6I#J#J#JKK yy'**y    NN#J#Jc&&6I6I#J#J#JKK yy'**y      rc|}||j}||||}}dt||D}|||}||ksJdt||D}|||}||ksJdS)Nc4g|]\}}t||Sr()rHrs rr,z/_SIMD_INT.test_math_max_min../$>>>$!QC1II>>>rc4g|]\}}t||Sr()rGrs rr,z/_SIMD_INT.test_math_max_min..3rr)r6r-rrrHrG) rrrrrdata_maxsimd_maxdata_minsimd_mins rtest_math_max_minz_SIMD_INT.test_math_max_min*sDK((99V,,dii.?.?>>#ff*=*=>>>88GW--8####>>#ff*=*=>>>88GW--8######rr2)iirdi'c|||}||t|ksJ||t |ksJdS)zf Test intrinsics: npyv_reduce_max_##sfx npyv_reduce_min_##sfx N)rr6 reduce_maxrH reduce_minrG)rr2rs rtest_reduce_max_minz_SIMD_INT.test_reduce_max_min7sm))DJJu--..w''3w<<7777w''3w<<777777rN) rar|r}rrrr rrrrr(rrrrs&&&B!!! $ $ $ [W&C&C&CDD88ED888rrceZdZdZdZdS) _SIMD_FP32z' To only test single precision c~|}|jjstjd|rdnt ||}||| d}fd|D}| |}||ksJdS) Round to nearest even integer, assume CPU control register is set to rounding. Test intrinsics: npyv_round_s32_##SFX z.*(NEON|ASIMD)c6t||dkrdndzS)Nr?r)rIs rrz-_SIMD_FP32.test_conversions..Qss1qAvv4#@AArrc&g|] }|Sr(r()r*r+_rounds rr,z/_SIMD_FP32.test_conversions..Vs!111AffQii111rN) rzrsimd_f64rematchroundrr6subrS round_s32)rfeaturesr data_roundvroundrs @rtest_conversionsz_SIMD_FP32.test_conversionsGs %%''y! bh/@(&K&K BAFFF))DJJLL))((7DKK$4$4551111111 ((######rNrar|r}rr"r(rrrrCs-$$$$$rrceZdZdZdZdS) _SIMD_FP64z' To only test double precision c||}|||d}|||d}dt |t |zD}|||}||ksJdS)rrgc,g|]}t|Sr()rr)s rr,z/_SIMD_FP64.test_conversions..gsFFF1eAhhFFFrN)rr6rrSmulr1r)rrrr r!s rr"z_SIMD_FP64.test_conversions^s ))DJJLL))((7DKK$4$455((7DKK$5$566FFW W (EFFF 11######rNr#r(rrr%r%Zs- $ $ $ $ $rr%c eZdZdZdZdZdZdZej dde j fde j fd e jfd efgd Zej d gd dZdZdZej dgddZej dejdfejdfejdfejdfejdfejdfgdZej d ddgej dedd gd edgedd!gd!edgededgd"d#gd#d"gd$d#gfd%Zd&S)'_SIMD_FPz0 To test all float vector types at once cr||gdz\}}}|||}|dt|||D}||||}||ksJ||||}|||}||ksJ||||} |||} | | ksJ||||} | || d} | | ksJt| |||} | dddt|dddksJ| dddt|dddksJdS)Nc&g|]\}}}||z|zSr(r()r*rr^cs rr,z2_SIMD_FP.test_arithmetic_fused..ss&VVVGAq!a!eaiVVVrrQrr r) rr6addrmuladdmulsubrnmuladdnmulsubr(rSr1 muladdsub)rrrvdata_c vdata_cx2data_fmafmafmsdata_fmsnfma data_nfmanfms data_nfmsfmass rtest_arithmetic_fusedz_SIMD_FP.test_arithmetic_fusedos%)YYtzz||%<%<$=a$?!'HHWg.. 99VVs7GW7U7UVVVWWkk'7G44hkk'7G4488Hi00h||GWg66HHY11 y    ||GWg66HHXt{{277 y    DNN7GW==>>ADqDzT(^^ADqD11111ADqDzT(^^ADqD1111111rcB|||}}}|}||}d||f||f||ff}|D]T\}}|g|jz} |||} | tj | dksJU|| ||d} | |ksJdS)N)rrTnan_okrQ) rkrnrqr6rr-absrSrapproxr() rpinfninfrprr abs_casescaserdata_absvabss rtest_absz_SIMD_FP.test_abss//++T__->-> Cdzz|| $**,,''tTlT4L3*E & @ @MD'y,H88DKK--..D6=$????????xx B8899t||||||rc4|||}}}|}||}ddd|f||f||ff}|D]T\}}|g|jz} |||} | tj | dksJU|d|D} ||} | | ksJdS)N)rN)rOgTrBc6g|]}tj|Sr()mathsqrtr)s rr,z&_SIMD_FP.test_sqrt..s :::ty||:::r) rkrnrqr6rr-rRrSrrE) rrFrGrprr sqrt_casesrIr data_sqrtrRs r test_sqrtz_SIMD_FP.test_sqrts//++T__->-> Cdzz|| $**,,''"Js dC[4QU,W ' A AMD' $+-IIIdkk$//00D6=4@@@@@@@@II::T:::;; yyy      rc |||}}}|}||}||f||f||ff}|D]T\}}|g|jz} |||} | tj | dksJUd|D} ||} | | ksJdS)NTrBcg|]}||zSr(r(r)s rr,z(_SIMD_FP.test_square..s)))qqs)))r) rkrnrqr6rr-squarerSrrE) rrFrGrprr square_casesrIr data_squarerXs r test_squarez_SIMD_FP.test_squares//++T__->-> Cdzz|| $**,,''c T4L4,? ) E EMD'")DK/Kkk$++d"3"344FV];tDDDDDDDD))D))) U##$$$$$$rz intrin, funcceiltruncfloorrintc|}t||}|||}}}||f||f||ff}|D]J\}} | g|jz} |||} | t j| dksJKtdddD]\dD]W| fdt|jD} fd| D} || } | | ksJX]d D]8} || |}fd D} || ksJ9|d krd }nd }|D]c| ||} | |d} | | ksJddS)z Test intrinsics: npyv_rint_##SFX npyv_ceil_##SFX npyv_trunc_##SFX npyv_floor##SFX TrBri)gggffffffg?g?gffffff?c g|] }|zz Sr(r()r*rwr+s rr,z*_SIMD_FP.test_rounding..s!!F!F!Fa1Q3'!F!F!Frc&g|] }|Sr(r()r*r+rs rr,z*_SIMD_FP.test_rounding..s!444!dd1gg444r)g/ Cg/ Cg ?Dg _Dc&g|] }|Sr(r()r*nrs rr,z*_SIMD_FP.test_rounding..s!---a$$q''---rr^)rN)rNgпg333333ӿgܿrrNN) rrkrnrqr-rSrrEr.rrR)rrrr#rFrGrp round_casesrIrr rrry data_szerorcr+s ` @@r test_roundingz_SIMD_FP.test_roundings< v&&//++T__->-> CdSzD$<$> ( D DMD'!4;.JVDKK--..FV]:dCCCCCCCCq%(( , ,A< , ,yy!F!F!F!F!F53E3E!F!F!FGG4444t444 +++++  ,  # #A AAq A----1---J ????? ' ! ! JJ:J ( (A&&vvdkk!nn'='=>>F**4;;t+<+<==JZ''''' ( (rr)rHmaxpmaxnrGminpminnc@|||c}}ddddd|ddd}t |dd}t |d|z}t ||}|jdz}d d gd d gfd d gd d gf|d gd |gfd |g|d gfd d gd d gfd d gd d gff}|D]s\} } || |z} || |z} || | } || | }|| ksJ|| } || }|| ksJt|sdS|dkrd }nfd}d fd f|f|fff}|D]\} } || | g|z}|| | } ||}|tj | dksJ| | } | | } | g|jz} || | }|tj | dksJdS)a Test intrinsics: npyv_max_##sfx npyv_maxp_##sfx npyv_maxn_##sfx npyv_min_##sfx npyv_minp_##sfx npyv_minn_##sfx npyv_reduce_max_##sfx npyv_reduce_maxp_##sfx npyv_reduce_maxn_##sfx npyv_reduce_min_##sfx npyv_reduce_minp_##sfx npyv_reduce_minn_##sfx rr )xpnpnnxnNrr,reduce_rOrN ic^tj|r|ntj|r|n|SNrQisnan)rr^s rrz'_SIMD_FP.test_max_min..s,Z]]ATZ]](Arc\tj|stj|rn|Srxry)rr^rps rrz'_SIMD_FP.test_max_min..s)z!}}< 1 <1rTrB) rkrnrqgetrrr-rrrErS)rrrFrGchk_nanr reduce_intrin hf_nlanescasesop1op2rrrrtest_nanvdata_abrps @r test_max_minz_SIMD_FP.test_max_mins&//++T__->-> dC!1A66::6"##;JJF2A2Ji&&899 v&&KN 4[4+ &#Y"c #BZ"d $$Z$ $#YS "2Yb "    HCiiI ..GiiI ..G4))D6'7++D4<<<<4==D =))D4<<<<<  F a<<HHH"I I $K 3K #J   < .7s222!222r) rkrnrqr6rr-reciprSrrE) rrFrGrprr recip_casesrIr data_reciprs rtest_reciprocalz_SIMD_FP.test_reciprocal,s!//++T__->-> Cdzz|| $**,,''SzD#;t sDkDRV<X ( C CMD'!4;.JJJt{{40011EFM*TBBBBBBBBYY22T22233  5!! """"""rc|||}|dg|jzksJdS)zQ Compare Not NaN. Test intrinsics: npyv_notnan_##SFX rN)notnanrSrqr-)rnnans rtest_special_casesz_SIMD_FP.test_special_cases;sH {{4;;tyy{{3344s4;&&&&&&rr#)r_r]r\r^ct||}tdtdtd fD]F}||}t||t ddksJGdS)NrprhT)rF)rrjrSrr)rr#rdrIs rtest_unary_invalid_fpexceptionz'_SIMD_FP.test_unary_invalid_fpexceptionCs{++,,e uU||m< < .to_bool..[999$DI%999rr(rdrs rto_boolz2_SIMD_FP.test_comparison_with_nan..to_boolZ9999&999 9rr)rNrOc.g|]\}}||Sr(r()r*rr^py_comps rr,z5_SIMD_FP.test_comparison_with_nan..fs'FFF$!Q1 FFFr)rkrnrqrYrr-rSr)rrnp_comprFrGrprr cmp_cases case_operand1 case_operand2rrrrvcmpdata_cmprs ` @rtest_comparison_with_nanz!_SIMD_FP.test_comparison_with_nanNs?//++T__->-> CdOO%%  : : : : :w''XQx#sdC[C[,0 ,5 $ $ (M=#_T[0F#_T[0Fkk-00Gkk-00G766'73344DFFFF#ff2E2EFFFH8##### $ $rrrrrprrrOrNr'c|||jz}t|}t||}||}||}||ksJdSrrr-rrrs rrz!_SIMD_FP.test_operators_crosstestib"4$+-..F||v&&$v,,vf~~w&rN)rar|r}rr@rLrUr[rrrrQr\r]r^rrjrrrroperatorltlegtgeeqnerrjrr(rrr*r*ks2222    ! ! ! % % % [^vty.A djGTZ065/.CDD,(,(DD,(\ [X(((C<C<CZ"d?Z#d@Z$dAZ%dBS)C _SIMD_ALLz* To test all vector types at once c|}||}||ksJ||}||ksJ||}||ksJ||}t |d|jdz}|d|jdz}||ksJ||ksJdS)Nr )r6rloadaloadsloadlr1r-)rr load_data loada_data loads_datar loadl_half data_halfs rtest_memory_loadz_SIMD_ALL.test_memory_loadszz||IIdOO D    ZZ%% T!!!!ZZ%% T!!!! 4  %[[$+q.1 $+q.) Y&&&&}}}}}}rc|}||}dg|jz}|||||ksJdg|jz}|||||ksJdg|jz}|||||ksJdg|jz}||||d|jdz|d|jdzksJ||ksJdg|jz}||||d|jdz||jdzdksJ||ksJdS)Nrr )r6rr-storestoreastoresstorelstoreh)rrrrstore_astore_sstore_lstore_hs rtest_memory_storez_SIMD_ALL.test_memory_storesuzz|| $dk! 5%   }}}}# # GU###$# # GU###$# # GU### Q'4a+@@@@@%# # GU### Q'4 Q+@@@@@%rzintrin, elsizes, scale, fillzself.load_tillz, self.load_till @riz!self.load2_tillz, self.load2_tillr c||vrdSt|\}}|}tt d|jdz}||jdz|jdzgz }|D]a} ||| g|R} ||| } | |z} |d| ||j| z |zzz} | | ksJ|d| dg|j| z zz} | | ksJbdS)Nrr r r)rDrr6r1r.r-)rrelsizesscalefillnpyv_load_tillznpyv_load_tillrlanesrf load_till load_tillz data_till data_tillzs rtest_memory_partial_loadz"_SIMD_ALL.test_memory_partial_loads'     g - - F*.v,,'zz||U1dkAo..// $+q.$+q.11 , ,A&tQ6666I(q11J JARaR4DKMe+C#DDI ))))bqbQC4;q=$99J+++++ , ,rzintrin, elsizes, scale)zself.store_tillrr)zself.store2_tillrr c||vrdSt|}|}|d}||}t t d|jdz}||jdz|jdzgz }|D]V} |} |d| |z| d| |z<|d} || | || | ksJWdS)NTrrr r rDrr6rr1r.r-copy) rrrrnpyv_store_tillrdata_revrrrfr store_tills rtest_memory_partial_storez#_SIMD_ALL.test_memory_partial_stores     g - - Fv,,zz||::d:++ $U1dkAo..// $+q.$+q.11 + +A I"&x%x.Ihqwh D11J OJ5 1 1 1*****  + +r)z self.loadnrr)z self.loadn2rr c ||vrdSt|}tddD]dkr^| |jzt t jtfdt|ddD}ndkr*|d||j|zz}nZ||jzt t jtfdt|D}| |}|}||ksJdS)Nrrc(g|]}| dSrxr(r*rrstrides rr,z6_SIMD_ALL.test_memory_noncont_load..&III4 F +IIIrrQr3c&g|] }|dSrxr(rs rr,z6_SIMD_ALL.test_memory_noncont_load..#AAAq4 6 ?AAAr) rDrr.r6r-r1 itertoolschainrr) rrrr npyv_loadn data_strideloadnrrs @@rtest_memory_noncont_loadz"_SIMD_ALL.test_memory_noncont_loads}     g - - F&\\ Cnn ( (Fzzzz&6'$+*=>>"9?IIIIIU5!R5H5HIIIJ$ 1zz||"1U7mt{E/AB zzt{(:z;;"9?AAAAAE%LLAAAB$D ))K00KJtV,,EK'''''! ( (rz!self.loadn_tillz, self.loadn_tillz#self.loadn2_tillz, self.loadn2_tillc ||vrdSt|\}}ttd|jdz}||jdz|jdzgz }tddD]sdkr^| |jztt jtfdt|ddD}ndkr*|d||j|zz}nZ||jz tt jtfd t|D}t| |}|D]]} | |z} |j| z } |d| || |zzz} || g|R} | | ksJ|d| dg| zz}|| }||ksJ^udS) Nrr r rrrc(g|]}| dSrxr(rs rr,z>_SIMD_ALL.test_memory_noncont_partial_load..rrrQrc&g|] }|dSrxr(rs rr,z>_SIMD_ALL.test_memory_noncont_partial_load.. rr) rDrr1r.r-r6rrrr)rrrrrnpyv_loadn_tillznpyv_loadn_tillrrrfnscalellanesdata_stride_till loadn_tilldata_stride_tillz loadn_tillzrrs @@r test_memory_noncont_partial_loadz*_SIMD_ALL.test_memory_noncont_partial_loadsW     g - - F,0LL)/U1dkAo..// $+q.$+q.11Cnn 8 8Fzzzz&6'$+*=>>"9?IIIIIU5!R5H5HIIIJ$ 1zz||"1U7mt{E/AB zzt{(:z;;"9?AAAAAE%LLAAAB$ tyy5566K 8 8Uv-(465=+AA!-_T61DtDDD !%55555$/$8A3<$G!..tVQ?? "&777777 8 8 8r)z self.storenrr)z self.storen2rr c||vrdSt|}|}||}|j|z}t ddD]}dg|z|jz} t d||z|D]} | |z|z} || | |z| | | |z< dg|z|jz} | dgdzz } || ||| dd| ksJ| dddgdzksJt ddD]}dg| z|jz} t d||z|D]!} | |z|z} || | |z| | |z | pd<"dgdz} | dg| z|jzz } || ||| dd| ksJ| dddgdzksJdg|jz} | } || d| d|<|| d|| | ksJdS)Nrrrrr)rDrr6rr-r.r) rrrr npyv_storenrrhlanesr data_storenr>rstorens rtest_memory_noncont_storez#_SIMD_ALL.test_memory_noncont_stores     g - - F6ll zz|| $%Arll - -F&6/DK7K1fVmV44 9 9Y%)-a%i AagI&&Vf_t{2F tfRi F K . . .$3$<;....#$$r storen_tills r!test_memory_noncont_partial_storez+_SIMD_ALL.test_memory_noncont_partial_store?s     g - - F<<zz|| $U1dkAo..// $+q.$+q.11%Arll 6 6F 6 6!FVOdk9 XagX$4;qw3F)GGq&-88!<<.9   !  56A    rcg|] }|D]}| Sr(r(r/s rr,z*_SIMD_ALL.test_reorder..r1rrrr) r6rr-combinelcombinehcombinerr$r1unzip)rrrrr data_a_lo data_b_lo data_a_hi data_b_hir3r4r5 data_zipl data_ziphvzipr6s r test_reorderz_SIMD_ALL.test_reorders**,, 4 (@(@99V,,dii.?.??DKN?+ ?DKN?+ 4;>??+ 4;>??+ =='229y00000=='229y00000,,w009y0)i2GHHHHHII  9i00     II  9i00     xx)) 9-----s4;q $' 2333tIi88888 9i00(((((   i4 ??!BCC(((((((rc|dkrdSfdtd|jdzD}||t|j}||ksJdS)Nrc `g|]*}tt||dzzD]}|+S)r)r/r.)r*r+rhssizes rr,z0_SIMD_ALL.test_reorder_rev64..sX   aRY 7 788       rr)rDr.r-rev64r)r data_rev64rBrAs @rtest_reorder_rev64z_SIMD_ALL.test_reorder_rev64s!!## B;; F    Q RY77    499U4;%7%78899 """"""rc |}|dkrdS||d|z dz |j z}|dkrddgngd}t D]F fd|D}|jg|R} fd t ||zD}||ksJGdS) z\ Test permuting elements for each 128-bit lane. npyv_permi128_##sfx rNrrr)rr r c g|] }|z z Sr(r()r*shfrpermds rr,z3_SIMD_ALL.test_reorder_permi128..s":::cSE):::rc4g|]\}}|| zzSr(r()r*ejrpermns rr,z3_SIMD_ALL.test_reorder_permi128..s=AqQ!uf*%&r)rDrr6r-r.permi128r) rrAnlane128shflindicesvperm data_vpermrrrJrNs @@@@rtest_reorder_permi128z_SIMD_ALL.test_reorder_permi128s !!## 2:: Fyy&&U a;%"1vv,,,u ' 'A:::::T:::G!DM$1111E%gh&677JJ&&&&& ' 'rz func, intrinrrrrrc$ |r|}n/|||jz }||d}||||}}t ||}| fd}fdt||D}||||} | |ksJdS)NTrc fd|DS)Ncg|]}|k Sr(r(rs rr,zH_SIMD_ALL.test_operators_comparison..to_bool.. rrr(rs rrz4_SIMD_ALL.test_operators_comparison..to_bool rrc.g|]\}}||Sr(r()r*rr^rs rr,z7_SIMD_ALL.test_operators_comparison.. s'???41aDDAJJ???r) r0r6rLr-rMrrrYr) rrrrrrrrrcmprs ` @rtest_operators_comparisonz#_SIMD_ALL.test_operators_comparisons  ;;== ?ZZ\\FFZZ $+ =>>FDMMOOT::99V,,dii.?.?v&&OO%%  : : : : :@???3vv+>+>???gffWg..//hrc|r|}n/|||jz }||d}||||}}|r9||}||}|j|j}}n||}}d|j}}|dt||D} ||||} | | ksJ|dt||D} |t|d||} | | ksJ|dt||D} |t|d||}|| ksJ|d |D}|t|d |}||ksJ|j d vrdSd t||D}|t|d ||}||ksJdS)NTrc|Srxr()rs rrz2_SIMD_ALL.test_operators_logical..srcg|] \}}||z  Sr(r(rs rr,z4_SIMD_ALL.test_operators_logical..  NNN1a!eNNNrcg|] \}}||z Sr(r(rs rr,z4_SIMD_ALL.test_operators_logical..$r_rrcg|] \}}||z Sr(r(rs rr,z4_SIMD_ALL.test_operators_logical..(r_rrcg|]}|Sr(r()r*rs rr,z4_SIMD_ALL.test_operators_logical..,s666Qqb666rrrc g|] \}}||z Sr(r(rs rr,z4_SIMD_ALL.test_operators_logical..2s"FFF1Q!VFFFrr) r0r6rLr-rMrrRrrrr)rrrrr data_cast_a data_cast_bcast cast_datarrrrrrdata_notrrrs rrz _SIMD_ALL.test_operators_logicals ;;== ?ZZ\\FFZZ $+ =>>FDMMOOT::99V,,dii.?.? ;;== 5++G44K++G44K"/1B)DD'-vK)k49)D9NNK0M0MNNNOOtDHHWg..//x9NNK0M0MNNNOOt'GD$''99::g~~~~9NNK0M0MNNNOOt(GD%(('::;;x966+66677t(GD%((1122x 8D ! ! FFFK(E(EFFF *WT6**7G<<== !!!!!!rrrrr)rr r,r )rQrt)rrr r,r )rril)rrQrtrir rrQc|||jz}t|}t||}||}||}||ksJdSrrrs rrz"_SIMD_ALL.test_operators_crosstest6rrcd|jddz}t|jd|d|j}t|jd|jd|}||d}||d|d}||ksJ||}||}||ksJdS)Nr^rcvt_rr)rrrrSr)rbsfx to_boolean from_booleanfalse_vbtrue_vb false_vsfx true_vsfxs rtest_conversion_booleanz!_SIMD_ALL.test_conversion_booleanNsTXabb\!TYYtttTXX(FGG tyy44*HII :dkk!nn--::dkk!nndkk!nn==7""""!\(++  L)) Y&&&&&&rc|jdvrdS|jdtt|jdddzz}t|jd|d|j}|||jz }||}||}|d|jdz}||jdzd}|||fksJdS)zh Test expand intrinsics: npyv_expand_u16_u8 npyv_expand_u32_u16 rrNrrr expand_r) rstrrCrrr6rLr-r)rtotypeexpandrredatadata_lodata_his rtest_conversion_expandz _SIMD_ALL.test_conversion_expand[s 8= ( ( F!STXabb\!2!21!4555$Af$A$Atx$A$ABB 4==??T[899 $u  Q't{A~''*******rc|r|}n/|||jz }||d}||||}}|dt ||D}|||}||ksJ|dt ||D}|||}||ksJdS)NTrcg|] \}}||z Sr(r(rs rr,z4_SIMD_ALL.test_arithmetic_subadd..x DDD1a!eDDDrcg|] \}}||z  Sr(r(rs rr,z4_SIMD_ALL.test_arithmetic_subadd..{s EEEAq1uEEEr) r0r6rLr-rMrrr/r) rrrrrdata_addr/data_subrs rtest_arithmetic_subaddz _SIMD_ALL.test_arithmetic_subaddos ;;== ?ZZ\\FFZZ $+ =>>FDMMOOT::99V,,dii.?.?99DDFF0C0CDDDEExx))hIIEEVV1D1DEEEFFxx))hrc|jdvrdS|r|}n/|||jz }||d}||||}}|dt||D}|||}||ksJdS)N)rrTrcg|] \}}||z Sr(r(rs rr,z1_SIMD_ALL.test_arithmetic_mul..rr) rr0r6rLr-rMrrr()rrrrrdata_mulr(s rtest_arithmetic_mulz_SIMD_ALL.test_arithmetic_muls 8~ % % F ;;== ?ZZ\\FFZZ $+ =>>FDMMOOT::99V,,dii.?.?99DDFF0C0CDDDEEhhw((hrcp|sdS||d}}||||}}|dt||D}|||}||ksJdS)NTrcg|] \}}||z  Sr(r(rs rr,z1_SIMD_ALL.test_arithmetic_div..rr)r0r6rrdiv)rrrrrdata_divrs rtest_arithmetic_divz_SIMD_ALL.test_arithmetic_divs{{}}  Ftzz$z'?'?99V,,dii.?.?99DDFF0C0CDDDEEhhw((hrcl |rdS|fd d g}|tdddz }|tdddz }|}|dkr(|tdd d z }|tdd d z }|d kr(|td d dz }|td d dz }|dkr(|td ddz }|td ddz }|d|Dz }t j||D]\}|ddkr'|||} fd|D}| }| ||}||ksJdS)zn Test integer division intrinsics: npyv_divisor_##sfx npyv_divc_##sfx Ncv|dkr|kr|S|dk|dk}}|dks||kr||zS||z|z |zdzS)z Divide towards zero works with large integers > 2^53, and wrap around overflow similar to what C does. rQrrr()rrsign_asign_dint_mins r trunc_divz3_SIMD_ALL.test_arithmetic_intdiv..trunc_divsa Bww1<<UAEFFAvv6))Av J'A-1 1rrrrr rai ir li illlcg|]}| Sr(r(r)s rr,z4_SIMD_ALL.test_arithmetic_intdiv..s"""!"""rc(g|]}|Sr(r()r*rdivisorrs rr,z4_SIMD_ALL.test_arithmetic_intdiv..s%AAA11g..AAAr) r0rMr.rDrproductrSrr6rdivc) rrbsizedividend data_divc divisor_parmsrrrrs @@@rtest_arithmetic_intdivz _SIMD_ALL.test_arithmetic_intdivs ;;==  F--// 2 2 2 2 2G8} at$$$ av&&&!!## 199 E$u-- -D E$w// /D 2:: E%.. .D E%00 0D 2:: E%.. .D E%00 0D ""T""""!*!24!>!> % % Hgkk'**1-G!||yyH!5!566HAAAAAAAAI LL11M99X}55D9$$$$$ % %rc|jdvrdS|}||}t|}||}||ksJdS)zH Test reduce sum intrinsics: npyv_sum_##sfx )rrrrN)rr6rr)rrrdata_sumvsums rtest_arithmetic_reduce_sumz$_SIMD_ALL.test_arithmetic_reduce_sumsd 87 7 7 Fzz|| $t99xxxrc@|jdvrdSd|j|||jz f}|D]X}||}||}t |}||}||ksJYdS)zQ Test extend reduce sum intrinsics: npyv_sumup_##sfx rwNr)rr-rMrLr6rrsumup)rrrrrrrs rtest_arithmetic_reduce_sumupz&_SIMD_ALL.test_arithmetic_reduce_sumups 8= ( ( FDK$--//$+2MN $ $A::a==DIIdOOE4yyH::e$$D8#####  $ $rc^||}||d}|||}|||}|||}|||||}||ksJ|||||}||ksJ|||}|||||}||ksJ|||||}||ksJ| sdS| ||} | ||||} | | ksJ| |||} | | ksJ| ||||} | |ksJ| |||} | |ksJdS)z Conditional addition and subtraction for all supported data types. Test intrinsics: npyv_ifadd_##SFX, npyv_ifsub_##SFX TrN) rr6rrrrifsubr/ifaddr0rifdivifdivz) rrrr false_maskrrrrrrrs rtest_mask_conditionalz_SIMD_ALL.test_mask_conditionals ))DJJLL))))DJJtJ4455ZZ TYY[[99 [[diikk:: 88GW-- 9gw@@     :wAA88GW-- 9gw@@     :wAA{{}}  F88GW-- 9gw@@    Y99!!!! :wAAZ'::$$$$$$rN)&rar|r}rrrrrrrrrrrr rr,r>rDrUrrrrrrr[rrrurrrrrrrrr(rrrrs$   4 [; *Ha&B ,hFF;KL>,, ,  [5()8++ +  [5#$8(( (, [; ,hF8D .!ff=MN>88 8B [5$%8!%!% !%F [5)*8),), ),V [9<!! !"+++Z$)$)$)L # # #''', [^ g g g g g ."$"$"$"L [Xu~66 [V 666    &   ' '  76 ' ' ' '+++(      -%-%-%^     $ $ $!%!%!%!%!%rr)rrrrr)rr)r)rr]rtr(ru)ztarget 'z$' isn't supported by current machinez' isn't supported by NPYVz"' doesn't support single-precisionrz!' doesn'tsupport double-precisionr)rrrvTestr)reason)FFFFF)2rrQrrrnumpy.core._simdrrrnumpy.core._multiarray_umathrrrrrrr%r*rbool_sfxint_sfxfp_sfxall_sfxtests_registryitemsrvrr simd_widthrw pretty_namelenrxskipdictskip_sfxr rr(clsrr|skip_minhrrtyperatclsrglobalsr(rrrs#HHHHHHHHHH99999905/4    a a a a a a a a Fy'y'y'y'y'y'y'y'vK8K8K8K8K8 K8K8K8\$$$$$$$$.$$$$$$$$"T'T'T'T'T'}T'T'T'lG %G %G %G %G % G %G %G %R ' @  F  j i h j j i ',,K"*J##D))K s;!2#((;//222 !!n DtvvH  :K+KKK Y:@+@@@} BBBBBHUO} :::::HUO%**,,,, s , ,C\\#t,,F6D4W[1s TTTD4Ns|NNjNN;NNNNPTVZ[[D 6/    //555'+GGIIdm $ $ ,,/,,r