hyb
2025-12-31 6cdcd01f77e11b72c323603e27ebdb85b15223c9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
Ë
KñúhôÃã ó¦—ddlZddlZddlZddlZddlZddlmZddlmZm    Z    m
Z
            d)d„Z Gd„d«Z Gd„de «Z Gd    „d
e «ZGd „d e «ZGd „de «ZGd„de «ZGd„de «ZdZdZdZeezZee eeeededeeeiZe
j0«D],\ZZer ej6ndZej;d«Zee«dkDrddjAe«›dZnedZdZ!iZ"esde›dZ!n=ej6sde›d Z!n*ejFs    de›d!e"d"<ejHs    de›d#e"d$<ej1«D]‚\Z%Z&e%D]xZ'e"jQe'e!«Z)e&fZ*e
ee'ed%œZ+e,d&e&jZ›d'e›d'e›d'e'›e*e+«Z.e)r"ej^jCe)¬(«e.«e.e0«e.jZ<ŒzŒ„Œ/y)*éN)Ú__cpu_baseline__)Úclear_floatstatusÚget_floatstatusÚtargetscó¬—t«}|xs|xr|dzdk7}||xs|xr|dzdk7z}||xs|xr|dzdk7z}||xs|xr|dzdk7z}|S)Nérééé)r)Ú    divbyzeroÚoverflowÚ    underflowÚinvalidÚallÚerrÚrets       úNH:\Change_password\venv_build\Lib\site-packages\numpy/_core/tests/test_simd.pyÚcheck_floatstatusrsz€ô Ó
€CØ Ò )Ò
/ #¨¡'¨a¡€C؈CŠO8Ò / #¨¡'¨a¡Ñ/€C؈CÒ 9Ò 0 3¨¡7¨q¡.Ñ0€C؈CŠN7Ò .  q¡¨Q¡Ñ.€CØ €Jócóz—eZdZdZdZdZd„Zd„Zdd„Zd„Z    d„Z
d„Z d„Z d    „Z d
„Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zy)Ú _Test_UtilityNcóN—t|j|dz|jz«S)zŽ
        To call NPV intrinsics without the attribute 'npyv' and
        auto suffixing intrinsics according to class attribute 'sfx'
        Ú_©ÚgetattrÚnpyvÚsfx)ÚselfÚattrs  rÚ __getattr__z_Test_Utility.__getattr__$s"€ô
t—y‘y $¨¡*¨t¯x©xÑ"7Ó8Ð8rcóN—t|j|›d|j›d«S)NrÚx2r)rÚ intrin_names  rÚ_x2z_Test_Utility._x2+s$€Üt—y‘y [ M°°4·8±8°*¸BÐ"?Ó@Ð@rcóė|€d}|€ |j}t|||z«}|r t|«}|j«r|Dcgc]}|dz ‘Œ    c}St    |«Scc}w)z[
        Create list of consecutive numbers according to number of vector's lanes.
        rçð?)ÚnlanesÚrangeÚreversedÚ_is_fpÚlist)rÚstartÚcountÚreverseÚrngÚxs      rÚ_dataz_Test_Utility._data.se€ð ˆ=؈EØ ˆ=Ø—K‘KˆEܐE˜5 5™=Ó)ˆÙ ܘ3“-ˆCØ ;‰;Œ=Ø%(Ö) A˜“GÒ)Ð )ܐC‹yÐùò*sÁ Acó&—|jddk(S)NrÚu©r©rs rÚ _is_unsignedz_Test_Utility._is_unsigned=ó€Øx‰x˜‰{˜cÑ!Ð!rcó&—|jddk(S)NrÚsr4r5s rÚ
_is_signedz_Test_Utility._is_signed@r7rcó&—|jddk(S)NrÚfr4r5s rr*z_Test_Utility._is_fpCr7rcó2—t|jdd«S)Nr)Úintrr5s rÚ _scalar_sizez_Test_Utility._scalar_sizeFs€Ü4—8‘8˜A˜B<ӠРrc    ó¸—|j«r|S|j«}|j«}|Dcgc]}tt    ||«|«‘Œc}Scc}w©N)r*Ú_int_maxÚ_int_minÚminÚmax)rÚseqÚmax_intÚmin_intÚvs     rÚ    _int_clipz_Test_Utility._int_clipIsG€Ø ;‰;Œ=؈JØ—-‘-“/ˆØ—-‘-“/ˆØ7:Ö;°!””C˜˜7“O WÕ-Ò;Ð;ùÒ;s·Acó˜—|j«ry|j|jd««d}|j«r|dzS|S)Néÿÿÿÿrr    )r*Ú _to_unsignedÚsetallr:)rÚmax_us  rrBz_Test_Utility._int_maxPsD€Ø ;‰;Œ=ØØ×!Ñ! $§+¡+¨b£/Ó2°1Ñ5ˆØ ?‰?Ô Ø˜A‘:Р؈ rcón—|j«ry|j«ry|j«dz S)Nrr)r*r6rBr5s rrCz_Test_Utility._int_minXs1€Ø ;‰;Œ=ØØ × Ñ Ô ØØ—‘“ 1Ñ$Ð%Ð%rcód—t|jd|jddz«d«}|dS)NÚsetall_urrLrr)rÚ    max_unsigs  rÚ
_true_maskz_Test_Utility._true_mask_s2€ØA”G˜DŸI™I z°D·H±H¸Q¸R°LÑ'@ÓAÀ"ÓEˆ    Ø˜‰|Ðrc    ó6—t|ttf«r,t|jd|j
ddz«|«S|j jdd«}|ddk(rd}nd}t|j|j|dd|««|«S)    NÚload_urÚnpyv_ÚrÚbz cvt_u{0}_b{0}zreinterpret_u{0}_{1})    Ú
isinstancer+ÚtuplerrrÚ__name__ÚreplaceÚformat)rÚvectorrÚ
cvt_intrins    rrMz_Test_Utility._to_unsignedcs€Ü fœt¤U˜mÔ ,Ø>”7˜4Ÿ9™9 h°·±¸!¸"°Ñ&=Ó>¸vÓFÐ Fà—/‘/×)Ñ)¨'°2Ó6ˆCؐ1‰v˜Š}Ø,‘
à3
ØF”7˜4Ÿ9™9 j×&7Ñ&7¸¸A¸B¸ÀÓ&EÓFÀvÓNÐ Nrcó—td«S©NÚinf©Úfloatr5s rÚ
_pinfinityz_Test_Utility._pinfinitynó €ÜU‹|Ðrcó—td« Srbrdr5s rÚ
_ninfinityz_Test_Utility._ninfinityqs€Üe“ ˆ}Ðrcó—td«S)NÚnanrdr5s rÚ_nanz_Test_Utility._nantrgrcóv—|j}|dk(rt}n|jd«}dj|«S)NÚbaselineÚ__ú )Ú target_namerÚsplitÚjoin)rÚtargets  rÚ _cpu_featuresz_Test_Utility._cpu_featuresws7€Ø×!Ñ!ˆØ ZÒ Ü%‰Fà—\‘\ $Ó'ˆF؏x‰x˜ÓÐr©NNF)r\Ú
__module__Ú __qualname__rrrqr r$r1r6r:r*r?rJrBrCrTrMrfrirlru©rrrrsc„à €Dà
€Cà€Kò9òAó ò"ò"ò"ò!ò<òò&òò    Oòòòó rrcóЗeZdZdZd„Zdd„Zd„Zd„Zd„Zd„Z    e
jjd    d
d g«e
jjd d dgdd gd gdgf«d„««Z y)Ú
_SIMD_BOOLz2
    To test all boolean vector types at once
    cóN—t|jd|jddz«S)NÚnlanes_urrr5s rÚ_nlanesz_SIMD_BOOL._nlanesƒs"€Üt—y‘y *¨t¯x©x¸¸¨|Ñ";Ó<Ð<rNcó¦—|j«}t|j««}|r t|«}|Dcgc] }|dzr|nd‘Œ c}Scc}w)Nr    r)rTr(r~r))rr,r-r.Ú    true_maskr/r0s       rr1z_SIMD_BOOL._data†sI€Ø—O‘OÓ%ˆ    ÜD—L‘L“NÓ#ˆÙ ܘ3“-ˆCØ36Ö7¨a˜Q šU‘    ¨Ñ)Ò7Ð7ùÒ7s»Acó¦—|jdd}t|jd|z«}t|jd|›d|›«}|||««S)NrrVÚcvt_bÚ_u)rrr)rÚdataÚlen_strÚloadÚcvts     rÚ_load_bz_SIMD_BOOL._load_bsQ€Ø—(‘(˜1˜2,ˆÜt—y‘y (¨WÑ"4Ó5ˆÜd—i‘i 5¨¨    °°G°9Ð!=Ó>ˆÙ‘4˜“:‹Ðrcóø—|j«}|jd¬«}|j|«}|j|«}t||«Dcgc]
\}}||z‘Œ }}}t|d«||«}||k(sJ‚t||«Dcgc]
\}}||z‘Œ }    }}t|d«||«}
|
|    k(sJ‚t||«Dcgc]
\}}||z ‘Œ } }}|j    ||«} | | k(sJ‚t|d«|«} | |k(sJ‚|j
dvryt||«Dcgc]\}}||zdz‘Œ}}}|j ||«}||k(sJ‚t||«Dcgc]\}}||zdz‘Œ}}}|j||«}||k(sJ‚t||«Dcgc]\}}||z dz‘Œ}}}|j||«}||k(sJ‚ycc}}wcc}}wcc}}wcc}}wcc}}wcc}}w)    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
        T©r.ÚandÚorÚnotÚb8Néÿ)    r1rˆÚziprÚxorrÚandcÚorcÚxnor)rÚdata_aÚdata_bÚvdata_aÚvdata_bÚarYÚdata_andÚvandÚdata_orÚvorÚdata_xorÚvxorÚvnotÚ    data_andcÚvandcÚdata_orcÚvorcÚ    data_xnorÚvxnors                    rÚtest_operators_logicalz!_SIMD_BOOL.test_operators_logical“s&€ð—‘“ˆØ—‘ DÓ)ˆØ—,‘,˜vÓ&ˆØ—,‘,˜vÓ&ˆä&)¨&°&Ó&9×:™d˜a A˜“EÐ:ˆÑ:Ø#Œwt˜UÓ# G¨WÓ5ˆØxÒÐÐä%(¨°Ó%8×9™T˜Q 1q“5Ð9ˆÑ9Ø!Œgd˜DÓ! '¨7Ó3ˆØgŠ~Ј~ä&)¨&°&Ó&9×:™d˜a A˜“EÐ:ˆÑ:؏x‰x˜ Ó)ˆØxÒÐÐà#Œwt˜UÓ# GÓ,ˆØvŠ~Ј~ð 8‰8˜DÑ !Ø ä14°V¸VÓ1D×E©¨¨Aa˜1˜"‘f “_ÐEˆ    ÑEØ—    ‘    ˜' 7Ó+ˆØ˜EÒ!Ð!Ð!ä03°F¸FÓ0C×D©¨¨1Q˜!˜‘V˜t“OÐDˆÑD؏x‰x˜ Ó)ˆØ˜4ÒÐÐä14°V¸VÓ1D×E©¨¨Aq˜1‘uX “_ÐEˆ    ÑEØ—    ‘    ˜' 7Ó+ˆØ˜EÒ!Ð!Ñ!ùó;;ùó:ùó;ùóFùóEùóFs$ÁGÂGÃ
G$Ä,G*Å*G0Æ(G6cóâ—d„}|j«|jd¬«fD]G}|j|«}||«}|j|«}t|«}|t|«k(rŒGJ‚y)Ncó:—td„t|d«D««S)Nc3óDK—|]\}}t|dk7«|z–—Œy­w)rN©r>)Ú.0Úir0s   rú    <genexpr>z;_SIMD_BOOL.test_tobits.<locals>.<lambda>.<locals>.<genexpr>¿s!èø€Ò$U¹$¸!¸Q¤S¨¨a©£[°AÕ%5Ñ$Uùs‚ r)ÚsumÚ    enumerate)r„s rú<lambda>z(_SIMD_BOOL.test_tobits.<locals>.<lambda>¿s€¤Ñ$UÄ)ÈDÐRSÓBTÔ$UÓ!U€rTrŠ)r1rˆÚtobitsÚbin)rÚ    data2bitsr„ÚvdataÚ    data_bitsr²Ú
bin_tobitss       rÚ test_tobitsz_SIMD_BOOL.test_tobits¾sl€ÙUˆ    Ø—Z‘Z“\ 4§:¡:°d :Ó#;Ð<ò    0ˆDØ—L‘L Ó&ˆEÙ! $›ˆIØ—[‘[ Ó'ˆFܘV›ˆJؤ Y£Ó/Ð /Ð/ñ     0rc
ó—|jdvry|j«}|jd¬«}|j|«}|j|«}t|jd|j›«}|jdk(r1t |«t |«zDcgc]}|dz‘Œ    }}|||«}n“|jdk(r9d    t |«zd    t |«zzDcgc]}|dz‘Œ    }}|||||«}nK|jd
k(r<d t |«zd t |«zzDcgc]}|dz‘Œ    }}|||||||||«}k(sJ‚ycc}wcc}wcc}w) z 
        Pack multiple vectors into one
        Test intrinsics:
            npyv_pack_b8_b16
            npyv_pack_b8_b32
            npyv_pack_b8_b64
        )Úb16Úb32Úb64NTrŠÚpack_b8_rºrr»r    r¼r
)rr1rˆrrr+)    rr„ÚrdatarµÚvrdataÚ    pack_simdr­ÚspackÚvpacks             rÚ    test_packz_SIMD_BOOL.test_packÇs]€ð 8‰8Ð0Ñ 0Ø àz‰z‹|ˆØ—
‘
 4
Ó(ˆØ— ‘ ˜TÓ"ˆØ—‘˜eÓ$ˆÜ˜DŸI™I¨°$·(±(°Ð'<Ó=ˆ    ð 8‰8uÒ Ü*.¨u«+¼¸T»
Ñ*BÖD Aa˜$“hÐDˆEÐDÙ˜f eÓ,‰EØ X‰X˜Ò Ø*+¬d°5«k©/¸AÄÀTÃ
¹NÑ*JÖL Aa˜$“hÐLˆEÐLÙ˜f f¨e°UÓ;‰EØ X‰X˜Ò Ø*+¬d°5«k©/¸AÄÀTÃ
¹NÑ*JÖL Aa˜$“hÐLˆEÐLÙ˜f f¨f°fØ$ u¨u°uó>ˆEà˜Š~Љ~ùòEùòMùòMs EÃ% EÄ- EÚintrinÚanyrr„rLrcó¤—|j||j«z«}t|«}t||«}||«}||«}||k(sJ‚y©zX
        Test intrinsics:
            npyv_any_##SFX
            npyv_all_##SFX
        N)rˆr~Úevalr©rrÄr„r•ÚfuncÚdesiredÚsimds       rÚtest_operators_crosstestz#_SIMD_BOOL.test_operators_crosstestæsS€ð—‘˜d T§\¡\£^Ñ3Ó4ˆÜF‹|ˆÜ˜˜vÓ&ˆÙv“,ˆÙf‹~ˆØ˜w’Ð&Ð&rrv)r\rwrxÚ__doc__r~r1rˆr§r¸rÃÚpytestÚmarkÚ parametrizerÍryrrr{r{s…„ñò=ó8òò )"òV0òð> ‡[[×јX¨¨u ~Ó6Ø ‡[[×јVØ     ˆQˆØ    
ˆBˆØ     ˆØ    
ˆð    &óñ 'ó ó7ñ 'rr{cój—eZdZdZd„Zd„Zd„Zejjdgd¢«d„«Z
y)    Ú    _SIMD_INTz2
    To test all integer vector types at once
    cóz—|jdvry|j|j«|jz
«}|j|j    «d¬«}|j |«|j |«}}t |j««D]x}|j |Dcgc]}||z‘Œ    c}«}|j||«}||k(sJ‚|j |Dcgc]}||z    ‘Œ    c}«}    |j||«}
|
|    k(rŒxJ‚t d|j««D]x}|j |Dcgc]}||z‘Œ    c}«}|j||«} | |k(sJ‚|j |Dcgc]}||z    ‘Œ    c}«}    |j||«} | |    k(rŒxJ‚ycc}wcc}wcc}wcc}w)N)Úu8Ús8TrŠr) rr1rBr'rCr†r(r?ÚshlÚshrÚshliÚshri) rr•r–r—r˜r-r™Ú
data_shl_ar×Ú
data_shr_arØrÙrÚs              rÚtest_operators_shiftz_SIMD_INT.test_operators_shiftþs£€Ø 8‰8|Ñ #Ø à—‘˜DŸM™M›O¨d¯k©kÑ9Ó:ˆØ—‘˜DŸM™M›O°TÓ:ˆØŸ9™9 VÓ,¨d¯i©i¸Ó.?ˆä˜4×,Ñ,Ó.Ó/ò
    %ˆEàŸ™¸Ö#?°1 A¨£JÒ#?Ó@ˆJà—(‘(˜7 EÓ*ˆCؘ*Ò$Ð $Ð$àŸ™¸Ö#?°1 A¨£JÒ#?Ó@ˆJà—(‘(˜7 EÓ*ˆCؘ*Ó$Ð $Ð$ð
    %ô˜1˜d×/Ñ/Ó1Ó2ò
    &ˆEàŸ™¸Ö#?°1 A¨£JÒ#?Ó@ˆJà—9‘9˜W eÓ,ˆDؘ:Ò%Ð %Ð%àŸ™¸Ö#?°1 A¨£JÒ#?Ó@ˆJà—9‘9˜W eÓ,ˆDؘ:Ó%Ð %Ð%ñ
    &ùò$@ùò
$@ùò$@ùò
$@sÂ* F)
Ã% F.
Ä? F3
Å: F8
có@—|jdvry|j|j«|jz
«}|j|j    «d¬«}|j |«|j |«}}|j t||«Dcgc]
\}}||z‘Œ c}}«}|j||«}||k(sJ‚|j t||«Dcgc]
\}}||z
‘Œ c}}«}    |j||«}
|
|    k(sJ‚ycc}}wcc}}w)N)Úu32Ús32Úu64Ús64TrŠ)
rr1rBr'rCr†rJrÚaddsÚsubs) rr•r–r—r˜r™rYÚ    data_addsrãÚ    data_subsräs            rÚ test_arithmetic_subadd_saturatedz*_SIMD_INT.test_arithmetic_subadd_saturatedsú€Ø 8‰8Ð3Ñ 3Ø à—‘˜DŸM™M›O¨d¯k©kÑ9Ó:ˆØ—‘˜DŸM™M›O°TÓ:ˆØŸ9™9 VÓ,¨d¯i©i¸Ó.?ˆà—N‘N´c¸&À&Ó6I×#J©d¨a° A¨£EÓ#JÓKˆ    Øy‰y˜ 'Ó*ˆØyҠРРà—N‘N´c¸&À&Ó6I×#J©d¨a° A¨£EÓ#JÓKˆ    Øy‰y˜ 'Ó*ˆØyҠРѠùó $Kùó$Ks ÂD
Ã#D
cóº—|j«}|j|j«}|j|«|j|«}}t||«Dcgc]\}}t    ||«‘Œ}}}|j    ||«}||k(sJ‚t||«Dcgc]\}}t ||«‘Œ}    }}|j ||«}
|
|    k(sJ‚ycc}}wcc}}wrA)r1r'r†rrErD) rr•r–r—r˜r™rYÚdata_maxÚsimd_maxÚdata_minÚsimd_mins            rÚtest_math_max_minz_SIMD_INT.test_math_max_min/sȀØ—‘“ˆØ—‘˜DŸK™KÓ(ˆØŸ9™9 VÓ,¨d¯i©i¸Ó.?ˆä*-¨f°fÓ*=×>¡$ ! Q”C˜˜1•IÐ>ˆÑ>Ø—8‘8˜G WÓ-ˆØ˜8Ò#Ð#Ð#ä*-¨f°fÓ*=×>¡$ ! Q”C˜˜1•IÐ>ˆÑ>Ø—8‘8˜G WÓ-ˆØ˜8Ò#Ð#Ñ#ùó ?ùó?s ÁCÂCr,)iœÿÿÿiðØÿÿrédi'cóÀ—|j|j|««}|j|«t|«k(sJ‚|j    |«t |«k(sJ‚y)zf
        Test intrinsics:
            npyv_reduce_max_##sfx
            npyv_reduce_min_##sfx
        N)r†r1Ú
reduce_maxrEÚ
reduce_minrD)rr,r—s   rÚtest_reduce_max_minz_SIMD_INT.test_reduce_max_min<sQ€ð—)‘)˜DŸJ™J uÓ-Ó.ˆØ‰˜wÓ'¬3¨w«<Ò7Ð7Ð7؏‰˜wÓ'¬3¨w«<Ò7Ð7Ñ7rN) r\rwrxrÎrÝrçrírÏrÐrÑròryrrrÓrÓús>„ñò&òB!ò  $ð ‡[[×јWÒ&CÓDñ8óEñ8rrÓcó—eZdZdZd„Zy)Ú
_SIMD_FP32z'
    To only test single precision
    cót—|j«}|jjstjd|«rd„}nt
}|j |j««}|j||jd««}|Dcgc]
}||«‘Œ }}|j|«}||k(sJ‚ycc}w)úš
        Round to nearest even integer, assume CPU control register is set to rounding.
        Test intrinsics:
            npyv_round_s32_##SFX
        z.*(NEON|ASIMD)có8—t||dk\rdz«Sdz«S)Nrçà?çà¿r«)rIs rr±z-_SIMD_FP32.test_conversions.<locals>.<lambda>Vs €œs 1¨q°Aªv¨Ñ#@ÓA€¸4Ñ#@ÓA€rrøN) rurÚsimd_f64ÚreÚmatchÚroundr†r1ÚsubrNÚ    round_s32)rÚfeaturesÚ_roundr—r0Ú
data_roundÚvrounds       rÚtest_conversionsz_SIMD_FP32.test_conversionsLsŸ€ð ×%Ñ%Ó'ˆØy‰y×!Ò!¤b§h¡hÐ/@À(Ô&KñB‰FäˆFØ—)‘)˜DŸJ™J›LÓ)ˆØ—(‘(˜7 D§K¡K°Ó$4Ó5ˆØ)0Ö1 A‘f˜Q•iÐ1ˆ
Ð1Ø—‘ Ó(ˆØ˜Ò#Ð#Ñ#ùò2s B5N©r\rwrxrÎrryrrrôrôHs „ñó$rrôcó—eZdZdZd„Zy)Ú
_SIMD_FP64z'
    To only test double precision
    có\—|j|j««}|j||jd««}|j    ||jd««}t |«t |«zDcgc] }t |«‘Œ}}|j||«}||k(sJ‚ycc}w)rörøgø¿N)r†r1rþrNÚmulr+rýrÿ)rr—r˜r0rrs      rrz_SIMD_FP64.test_conversionscs’€ð —)‘)˜DŸJ™J›LÓ)ˆØ—(‘(˜7 D§K¡K°Ó$4Ó5ˆØ—(‘(˜7 D§K¡K°Ó$5Ó6ˆÜ(,¨W« ¼¸W» Ñ(EÖF 1”e˜A•hÐFˆ
ÐFØ—‘ ¨Ó1ˆØ˜Ò#Ð#Ñ#ùòGsÁ;B)Nrryrrrr_s „ñó $rrc ó:—eZdZdZd„Zd„Zd„Zd„Zejjdde jfde jfd    e jfd
efg«d „«Zejjd gd ¢«d„«Zd„Zd„Zejjdgd¢«d„«Zejjdej,dfej.dfej0dfej2dfej4dfej6dfg«d„«Zejjd ddg«ejjded«d gd ed«ged«d!gd!ed«ged«ed«gd"d#gd#d"gd$d#gf«d%„««Zy&)'Ú_SIMD_FPz0
    To test all float vector types at once
    c
óö—|j|j««gdz\}}}|j||«}|jt|||«Dcgc]\}}}||z|z‘Œc}}}«}|j    |||«}    |    |k(sJ‚|j |||«}
|j ||«} |
| k(sJ‚|j|||«} |j ||«} | | k(sJ‚|j|||«}|j||jd««}||k(sJ‚t|j|||««}|ddd…t| «ddd…k(sJ‚|ddd…t|«ddd…k(sJ‚ycc}}}w)NérLrr    r) r†r1ÚaddrÚmuladdÚmulsubrþÚnmuladdÚnmulsubr    rNr+Ú    muladdsub)rr—r˜Úvdata_cÚ    vdata_cx2r™rYÚcÚdata_fmaÚfmaÚfmsÚdata_fmsÚnfmaÚ    data_nfmaÚnfmsÚ    data_nfmsÚfmass                 rÚtest_arithmetic_fusedz_SIMD_FP.test_arithmetic_fusedts‰€Ø%)§Y¡Y¨t¯z©z«|Ó%<Ð$=ÀÑ$AÑ!ˆ˜'Ø—H‘H˜W gÓ.ˆ    à—9‘9´s¸7ÀGÈWÓ7U×VÐV©G¨A¨q°!˜a !™e a›iÔVÓWˆØk‰k˜' 7¨GÓ4ˆØhŠÐˆàk‰k˜' 7¨GÓ4ˆØ—8‘8˜H iÓ0ˆØhŠÐˆà|‰|˜G W¨gÓ6ˆØ—H‘H˜Y¨Ó1ˆ    ØyҠРРà|‰|˜G W¨gÓ6ˆØ—H‘H˜X t§{¡{°2£Ó7ˆ    ØyҠРРôD—N‘N 7¨G°WÓ=Ó>ˆØADqD‰zœT (›^¨A¨D¨q¨DÑ1Ò1Ð1Ð1ؐADqD‰zœT (›^¨A¨D¨q¨DÑ1Ò1Ð1Ñ1ùô'WsÁE4 cóô—|j«|j«|j«}}}|j«}|j    |j««}d||f||f||ff}|D]Q\}}|g|j
z}    |j |j|««}
|
tj|    d¬«k(rŒQJ‚|j |j||jd«««}
|
|k(sJ‚y)N)rrT©Únan_okrL) rfrirlr1r†r'ÚabsrNrÏÚapproxr    ) rÚpinfÚninfrkr„rµÚ    abs_casesÚcaserËÚdata_absÚvabss            rÚtest_absz_SIMD_FP.test_abssà€ØŸ/™/Ó+¨T¯_©_Ó->ÀÇ    Á    Ã CˆdˆØz‰z‹|ˆØ—    ‘    ˜$Ÿ*™*›,Ó'ˆà˜t T˜l¨T°4¨L¸3À¸*ÐEˆ    Ø&ò    @‰MˆD'ؐy 4§;¡;Ñ.ˆHØ—8‘8˜DŸK™K¨Ó-Ó.ˆDØœ6Ÿ=™=¨¸$Ô?Ó?Ð ?Ð?ð    @ð
x‰x˜Ÿ™ ¨¯ © °B«Ó8Ó9ˆØtŠ|Љ|rcó&—|j«|j«|j«}}}|j«}|j    |j««}ddd|f||f||ff}|D]Q\}}|g|j
z}    |j |j|««}
|
tj|    d¬«k(rŒQJ‚|j    |D cgc]} tj | «‘Œc} «}    |j |«}
|
|    k(sJ‚ycc} w)N)ç€r.)çr/gð¿Tr") rfrirlr1r†r'ÚsqrtrNrÏr%Úmath) rr&r'rkr„rµÚ
sqrt_casesr)rËÚ    data_sqrtr0r0s             rÚ    test_sqrtz_SIMD_FP.test_sqrt›sø€ØŸ/™/Ó+¨T¯_©_Ó->ÀÇ    Á    Ã CˆdˆØz‰z‹|ˆØ—    ‘    ˜$Ÿ*™*›,Ó'ˆà" J°°s° ¸dÀC¸[È4ÐQUÈ,ÐWˆ
Ø'ò    A‰MˆD'Ø ˜     D§K¡KÑ/ˆIØ—9‘9˜TŸ[™[¨Ó.Ó/ˆDØœ6Ÿ=™=¨¸4Ô@Ó@Ð @Ð@ð    Að
—I‘I°TÖ:°œtŸy™y¨|Ò:Ó;ˆ    Øy‰y˜ÓˆØyҠРѠùò;sÃDcóâ—|j«|j«|j«}}}|j«}|j    |j««}||f||f||ff}|D]Q\}}|g|j
z}    |j |j|««}
|
tj|    d¬«k(rŒQJ‚|D cgc]} | | z‘Œ    }    } |j |«}
|
|    k(sJ‚ycc} w)NTr")
rfrirlr1r†r'ÚsquarerNrÏr%) rr&r'rkr„rµÚ square_casesr)rËÚ data_squarer6r0s             rÚ test_squarez_SIMD_FP.test_squareªs逨Ÿ/™/Ó+¨T¯_©_Ó->ÀÇ    Á    Ã CˆdˆØz‰z‹|ˆØ—    ‘    ˜$Ÿ*™*›,Ó'ˆà˜c˜
 T¨4 L°4¸°,Ð?ˆ Ø)ò    E‰MˆD'Ø"˜) d§k¡kÑ1ˆKØ—[‘[ §¡¨TÓ!2Ó3ˆFØœVŸ]™]¨;¸tÔDÓDÐ DÐDð    Eð
'+Ö+ q˜1“uÐ+ˆ Ð+Ø—‘˜UÓ#ˆØ˜Ò$Ð$Ñ$ùò,sà C,z intrin, funcÚceilÚtruncÚfloorÚrintc    ól—|}t||«}|j«|j«|j«}}}||f||f||ff}|D]H\}}    |    g|jz}
||j |««} | t j|
d¬«k(rŒHJ‚tddd«D]e} dD]^} |jt|j«Dcgc]
} |z| z‘Œ c}«}|D cgc]
} || «‘Œ }
} ||«} | |
k(rŒ^J‚ŒgdD]7}|j |«} || «}| Dcgc]
}||«‘Œ }
}||
k(rŒ7J‚|dk(rd    }nd
}|D]O} |j||j | «««} |j|j d ««}
| |
k(rŒOJ‚y cc}wcc} wcc}w) z“
        Test intrinsics:
            npyv_rint_##SFX
            npyv_ceil_##SFX
            npyv_trunc_##SFX
            npyv_floor##SFX
        Tr"rié)gÍÌÌÌÌÌð¿gš™™™™™ñ¿gffffffò¿gÍÌÌÌÌÌð?gš™™™™™ñ?gffffffò?)g/ ÿÿÿÿ¯Cg/ ÿÿÿÿÏCg ÿÿÿÿ?Dg ÿÿÿÿ_Dr<)r.)r.gпg333333Ó¿gÍÌÌÌÌÌÜ¿rùr.N) rrfrirlr'rNrÏr%r(r†rM)rrÄrÊr#r&r'rkÚ round_casesr)rËrrr0Úwr™r„r­ÚyÚnÚ
data_szeros                    rÚ test_roundingz_SIMD_FP.test_rounding¹sá€ðˆ ܘ˜vÓ&ˆØŸ/™/Ó+¨T¯_©_Ó->ÀÇ    Á    Ã Cˆdˆà˜Sz D¨$ <°$¸°Ð>ˆ Ø(ò    D‰MˆD'Ø!˜ T§[¡[Ñ0ˆJÙ˜DŸK™K¨Ó-Ó.ˆFØœVŸ]™]¨:¸dÔCÓCÐ CÐCð    Dô
q˜% Ó(ò    ,ˆAØ<ò ,Ø—y‘y´u¸T¿[¹[Ó7IÖ!J°! 1 q¡5¨A£+Ò!JÓKØ/3Ö4¨!™d 1gÐ4
Ð4Ù ›Ø Ó+Ð+Ð+ñ     ,ð    ,ð
ò    #ˆAð— ‘ ˜A“ˆAِq“    ˆAØ+,Ö- a™$˜q'Ð-ˆJÐ-ؘ
“?Ð "?ð    #ð ˜'Ò !Ø ‰Jà:ˆJàò    (ˆAØ×&Ñ&¡v¨d¯k©k¸!«nÓ'=Ó>ˆFØ×*Ñ*¨4¯;©;°tÓ+<Ó=ˆJؘZÓ'Ð 'Ð'ñ    (ùò+"KùÚ4ùò.sÃF' Ã(F,Ä.F1rÄ)rEÚmaxpÚmaxnrDÚminpÚminncó´‡—|j«|j«|j«c}}Šdddddœj|ddd«}t    |dd«}t |d|z«}t ||«}|j dz}d    d
gd
d    gfd d gd d gf|d gd |gfd |g|d gfd d gd d gfd d gd d gff}|D]]\}    }
|j|    |z«} |j|
|z«} || | «} || | «}|| k(sJ‚|| «} || «}|| k(rŒ]J‚|sy|dk(rd „}nˆfd„}‰d fd ‰f‰|f|‰f‰‰ff}|D]Ÿ\}    }
|j|    |
g|z«}||    |
«} ||«}|tj| d¬«k(sJ‚|j|    «} |j|
«} | g|j z} || | «}|tj| d¬«k(rŒŸJ‚y)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    )ÚxpÚnpÚnnÚxnéþÿÿÿNrr Úreduce_r/r.é
iöÿÿÿcób—tj|«r|Stj|«r|S|SrA©r1Úisnan)r™rYs  rr±z'_SIMD_FP.test_max_min.<locals>.<lambda>s.€Ü—Z‘Z ”]ðÜ-1¯Z©Z¸¬]¨ðØ@Aðrcó`•—tj|«stj|«r‰S|SrArS)r™rYrks  €rr±z'_SIMD_FP.test_max_min.<locals>.<lambda>s'ø€Ü—z‘z !”}¬¯
©
°1¬ ðØ;<ðrTr") rfrirlÚgetrÈrr'r†rÏr%rN)rrÄr&r'Úchk_nanrÊÚ reduce_intrinÚ    hf_nlanesÚcasesÚop1Úop2r—r˜r„rÌÚtest_nanÚvdata_abrks                 @rÚ test_max_minz_SIMD_FP.test_max_minés^ø€ð&Ÿ/™/Ó+¨T¯_©_Ó->ÀÇ    Á    Ã ˆˆˆdCØ !¨1°AÑ6×:Ñ:¸6À"À#¸;ÈÓJˆÜF˜2˜AJӈܠ i°&Ñ&8Ó9ˆ ܘ˜vÓ&ˆØ—K‘K 1Ñ$ˆ    ð4ˆ[˜4 ˜+Ð &ؐ#ˆY˜"˜c˜Ð #ؐBˆZ˜"˜d˜Ð $ؐ$ˆZ˜$ ˜Ð $ؐ#ˆY˜˜S˜    Ð "ؐ2ˆY˜˜b˜    Ð "ð 
ˆðò     ‰HˆCØ—i‘i  i¡Ó0ˆGØ—i‘i  i¡Ó0ˆGÙ˜ Ó)ˆDÙ˜' 7Ó+ˆDؘ4’<Ð <Ù˜“=ˆDÙ  Ó)ˆDؘ4“<Ð <ð     ñØ Ø aŠ<ñ‰HóˆHð"ˆIØ ˆIØ $ˆKØ 3ˆKØ #ˆJð 
ˆðò        <‰HˆCØ—y‘y # s ¨iÑ!7Ó8ˆHÙ˜C Ó%ˆDÙ  Ó*ˆDØœ6Ÿ=™=¨°dÔ;Ò;Ð ;Ð;Ø—k‘k #Ó&ˆGØ—k‘k #Ó&ˆGؐ6˜DŸK™KÑ'ˆDÙ˜' 7Ó+ˆDØœ6Ÿ=™=¨°dÔ;Ó;Ð ;Ð;ñ        <rcó—|j«|j«|j«}}}|j«}|j    |j««}||f|df|dfd|fd|ff}|D]Q\}}|g|j
z}    |j |j|««}
|
tj|    d¬«k(rŒQJ‚|j    |D cgc]} d| z ‘Œ    c} «}    |j |«}
|
|    k(sJ‚ycc} w)Nr/r.Tr"r)
rfrirlr1r†r'ÚreciprNrÏr%) rr&r'rkr„rµÚ recip_casesr)rËÚ
data_reciprar0s             rÚtest_reciprocalz_SIMD_FP.test_reciprocal1sü€ØŸ/™/Ó+¨T¯_©_Ó->ÀÇ    Á    Ã CˆdˆØz‰z‹|ˆØ—    ‘    ˜$Ÿ*™*›,Ó'ˆà˜Sz D¨# ;°°t° ¸sÀD¸kÈDÐRVÈ<ÐXˆ Ø(ò    C‰MˆD'Ø!˜ T§[¡[Ñ0ˆJØ—J‘J˜tŸ{™{¨4Ó0Ó1ˆEØœFŸM™M¨*¸TÔBÓBÐ BÐBð    Cð
—Y‘Y¨tÖ4¨!  A£Ò4Ó5ˆ
Ø—
‘
˜5Ó!ˆØ˜
Ò"Ð"Ñ"ùò 5sà DcóŠ—|j|j|j«««}|dg|jzk(sJ‚y)zQ
        Compare Not NaN. Test intrinsics:
            npyv_notnan_##SFX
        rN)ÚnotnanrNrlr')rÚnnans  rÚtest_special_casesz_SIMD_FP.test_special_cases@s:€ð
{‰{˜4Ÿ;™; t§y¡y£{Ó3Ó4ˆØ˜s˜TŸ[™[Ñ(Ò(Ð(Ñ(rr#)r=r;r:r<cóΗt||«}td«td«td« fD]5}|j|«}t«||«t    d¬«durŒ5J‚y)NrkrcT)rF)rrerNrr)rr#rÄÚdrIs     rÚtest_unary_invalid_fpexceptionz'_SIMD_FP.test_unary_invalid_fpexceptionHsa€ô˜˜{Ó+ˆÜ˜“,¤ e£ ¬u°U«|¨mÐ<ò    <ˆAØ— ‘ ˜A“ˆAÜ Ô Ù 1ŒIÜ$¨TÔ2°eÒ;Ð ;Ð;ñ        <rzpy_comp,np_compÚcmpltÚcmpleÚcmpgtÚcmpgeÚcmpeqÚcmpneqc    ó懗|j«|j«|j«}}}|j«Šˆfd„}t    ||«}d|f|df||f||f||fdf}|D]‚\}    }
|    g|j
z} |
g|j
z} |j |    «} |j |
«}||| |««}t| | «Dcgc]\}}|||«‘Œ}}}||k(rŒ‚J‚ycc}}w)Ncó4•—|Dcgc]}|‰k(‘Œ    c}Scc}wrAry©r_ÚlaneÚ    mask_trues  €rÚto_boolz2_SIMD_FP.test_comparison_with_nan.<locals>.to_bool_󸀨28Ö9¨$D˜IÓ%Ò9Ð 9ùÒ9ó† r)r.r/)rfrirlrTrr'rNr)rÚpy_compÚnp_compr&r'rkrwrÄÚ    cmp_casesÚ case_operand1Ú case_operand2r•r–r—r˜Úvcmpr™rYÚdata_cmprvs                   @rÚtest_comparison_with_nanz!_SIMD_FP.test_comparison_with_nanSsø€ðŸ/™/Ó+¨T¯_©_Ó->ÀÇ    Á    Ã CˆdˆØ—O‘OÓ%ˆ    ô    :ô˜˜wÓ'ˆØ˜X  Q˜x¨#¨s¨°d¸C°[ؘC[ ,ð0ˆ    à,5ò    $Ñ (ˆM˜=Ø#_ t§{¡{Ñ2ˆFØ#_ t§{¡{Ñ2ˆFØ—k‘k -Ó0ˆGØ—k‘k -Ó0ˆGÙ™6 '¨7Ó3Ó4ˆDÜ25°f¸fÓ2E×F©$¨!¨Q™  1 ÐFˆHÑFؘ8Ó#Ð #Ð#ñ    $ùó Gsà C-rÅrr„rkrrr/r.r&cóœ—|j||jz«}t|«}t||«}||«}||«}||k(sJ‚yrÇ©r†r'rÈrrÉs       rrÍz!_SIMD_FP.test_operators_crosstestnóQ€ð"—‘˜4 $§+¡+Ñ-Ó.ˆÜF‹|ˆÜ˜˜vÓ&ˆÙv“,ˆÙf‹~ˆØ˜w’Ð&Ð&rN)r\rwrxrÎr r,r4r9rÏrÐrÑr1r:r;r<rýrEr_rdrhrkÚoperatorÚltÚleÚgtÚgeÚeqÚnerrerÍryrrr r psá„ñò2ò2 ò !ò %ð ‡[[×ј^¨v°t·y±yÐ.AØ ˆdj‰jИG T§Z¡ZÐ0°6¸5°/ð.CóDñ,(óDð,(ð\ ‡[[×јXò(óñC<óðC<òJ #ò)ð ‡[[×ј]ò-óñ<óð<ð ‡[[×ÑÐ.Ø    ‰gÐØ    ‰gÐØ    ‰gÐØ    ‰gÐØ    ‰gÐØ    ‰hÐð 1óñ$óð$ð& ‡[[×јX¨¨u ~Ó6Ø ‡[[×јVÙ    ˆu‹qÐØ    
‰E%‹LÐÙ    ˆu‹qÐØ    
‰E%‹LÐÙ    ˆu‹‘u˜U“|Ð$Ø     ˆdˆ Ø     ˆsˆ Ø     ˆdˆ ð    &ó    ñ 'ó    ó7ñ 'rr c ó
—eZdZdZd„Zd„Zejjdddddgfd    dd
dd gfg«d „«Z    ejjd ddg«d„«Z
ejjd ddg«d„«Z ejjdddddgfddd
dd gfg«d„«Z ejjd ddg«d„«Z ejjd ddg«d„«Zejjdddg«d „«Zd!„Zd"„Zd#„Zd$„Zejjd%ej*d&fej,d'fej.d(fej0d)fej2d*fg«d+„«Zd,„Zejjd-d.d/g«ejjd0gd1¢gd2¢gd3¢gd4¢gd5¢d6gdgd7gf«d8„««Zd9„Zd:„Zd;„Zd<„Z d=„Z!d>„Z"d?„Z#d@„Z$dA„Z%yB)CÚ    _SIMD_ALLz*
    To test all vector types at once
    cóL—|j«}|j|«}||k(sJ‚|j|«}||k(sJ‚|j|«}||k(sJ‚|j    |«}t |«d|j dz}|d|j dz}||k(sJ‚||k7sJ‚y)Nr    )r1r†ÚloadaÚloadsÚloadlr+r')rr„Ú    load_dataÚ
loada_dataÚ
loads_datar‘Ú
loadl_halfÚ    data_halfs        rÚtest_memory_loadz_SIMD_ALL.test_memory_loadŠs¸€Øz‰z‹|ˆà—I‘I˜d“Oˆ    Ø˜DҠРРà—Z‘Z Ó%ˆ
ؘTÒ!Ð!Ð!à—Z‘Z Ó%ˆ
ؘTÒ!Ð!Ð!à—
‘
˜4Ó ˆÜ˜%“[Ð!2 $§+¡+°Ñ"2Ð3ˆ
ØÐ*˜$Ÿ+™+¨Ñ*Ð+ˆ    Ø˜YÒ&Ð&Ð&ؘŠ}Љ}rcó|—|j«}|j|«}dg|jz}|j||«||k(sJ‚dg|jz}|j    ||«||k(sJ‚dg|jz}|j ||«||k(sJ‚dg|jz}|j ||«|d|jdz|d|jdzk(sJ‚||k7sJ‚dg|jz}|j||«|d|jdz||jdzdk(sJ‚||k7sJ‚y)Nrr    )r1r†r'ÚstoreÚstoreaÚstoresÚstorelÚstoreh)rr„rµr™Ústore_aÚstore_sÚstore_lÚstore_hs        rÚtest_memory_storez_SIMD_ALL.test_memory_storeœsP€Øz‰z‹|ˆØ—    ‘    ˜$“ˆàd—k‘kÑ!ˆØ 
‰
5˜%ԠؘŠ}Ј}à#˜Ÿ ™ Ñ#ˆØ  ‰ G˜UÔ#ؘ$ŠÐˆà#˜Ÿ ™ Ñ#ˆØ  ‰ G˜UÔ#ؘ$ŠÐˆà#˜Ÿ ™ Ñ#ˆØ  ‰ G˜UÔ#ØÐ(˜Ÿ ™  qÑ(Ð)¨TÐ2C°4·;±;À!Ñ3CÐ-DÒDÐDÐDؘ%ÒÐÐà#˜Ÿ ™ Ñ#ˆØ  ‰ G˜UÔ#ØÐ(˜Ÿ ™  qÑ(Ð)¨T°$·+±+ÀÑ2BÐ2CÐ-DÒDÐDÐDؘ%ÒÐÑrzintrin, elsizes, scale, fillzself.load_tillz, self.load_till©é é@riÿÿz!self.load2_tillz, self.load2_tillr    éÿcó®—|j«|vryt|«\}}|j«}tt    d|j
dz««}||j
dz|j
dzgz }|D]\}    |||    g|¢­Ž}
|||    «} |    |z}    |d|    ||j
|    z
|zzz} |
| k(sJ‚|d|    dg|j
|    z
zz} | | k(rŒ\J‚y)Nrr    r
r)r?rÈr1r+r(r')rrÄÚelsizesÚscaleÚfillÚnpyv_load_tillzÚnpyv_load_tillr„ÚlanesrCÚ    load_tillÚ
load_tillzÚ    data_tillÚ
data_tillzs              rÚtest_memory_partial_loadz"_SIMD_ALL.test_memory_partial_load¶sû€ð
× Ñ Ó  gÑ -Ø Ü*.¨v«,Ñ'ˆ˜Øz‰z‹|ˆÜ”U˜1˜dŸk™k¨A™oÓ.Ó/ˆØ $—+‘+˜q‘. $§+¡+¨q¡.Ð1Ñ1ˆØò    ,ˆAÙ& t¨QÐ6°Ò6ˆIÙ(¨¨qÓ1ˆJØ ‰JˆAؘR˜a˜ 4¨D¯K©K¸!©OÀÑ+EÑ#FÑFˆIØ     Ò)Ð )Ð)ؘb˜q˜ Q C¨4¯;©;¸©?Ñ$;Ñ;ˆJØ Ó+Ð +Ð+ñ    ,rzintrin, elsizes, scale)zself.store_tillr£r)zself.store2_tillr£r    có¼—|j«|vryt|«}|j«}|jd¬«}|j|«}t    t d|j dz««}||j dz|j dzgz }|D]C}    |j«}
|d|    |z|
d|    |z|jd¬«} || |    |«| |
k(rŒCJ‚y)NTrŠrr    r
©r?rÈr1r†r+r(r'Úcopy) rrÄr¨r©Únpyv_store_tillr„Údata_revrµr­rCr°Ú
store_tills             rÚtest_memory_partial_storez#_SIMD_ALL.test_memory_partial_storeÊsà€ð
× Ñ Ó  gÑ -Ø Ü˜v›,ˆØz‰z‹|ˆØ—:‘: d:Ó+ˆØ—    ‘    ˜$“ˆÜ”U˜1˜dŸk™k¨A™oÓ.Ó/ˆØ $—+‘+˜q‘. $§+¡+¨q¡.Ð1Ñ1ˆØò    +ˆAØ Ÿ ™ ›ˆIØ$(¨¨!¨e©)Ð$4ˆIjq˜5‘yÐ !ØŸ™¨D˜Ó1ˆJÙ ˜J¨¨5Ô 1Ø Ó*Ð *Ð*ñ     +r)z
self.loadnr£r)z self.loadn2r£r    cóš—|j«|vryt|«}tdd«D]}|dkrb|j|| |jz«}t t jtt|dd«Dcgc] }|| d|…‘Œ c}ŽŽ«}nˆ|dk(r&|j«}|d||j|zz}n]|j||jz¬«}t t jtt|«Dcgc]
}||d|…‘Œ c}ŽŽ«}|j|«}|||«}    |    |k(rŒJ‚ycc}wcc}w)NéÀÿÿÿr¥rrL©r-)
r?rÈr(r1r'r+Ú    itertoolsÚchainrr†)
rrÄr¨r©Ú
npyv_loadnÚstrider„r­Ú data_strideÚloadns
          rÚtest_memory_noncont_loadz"_SIMD_ALL.test_memory_noncont_loadÞsI€ð
× Ñ Ó  gÑ -Ø Ü˜&“\ˆ
ܘC “nó    (ˆFؘŠzØ—z‘z &¨6¨'°D·K±KÑ*?Ó@Ü"¤9§?¡?Ü´U¸5À!ÀRÓ5HÖI°˜4   
 F 
Ó+ÒIÐJð$ó‘ ð˜1’Ø—z‘z“|Ø" 1 U˜m¨t¯{©{¸eÑ/CÑD‘ à—z‘z¨°·±Ñ(<zÓ=Ü"¤9§?¡?Ü´E¸%³LÖA¨q˜4       6     ›?ÒAÐBð$Dó ðŸ)™) KÓ0ˆKÙ˜t VÓ,ˆEؘKÔ'Ð 'Ð'ñ!    (ùòJùòBs Á<EÄEz!self.loadn_tillz, self.loadn_tillz#self.loadn2_tillz, self.loadn2_tillcóÈ—|j«|vryt|«\}}ttd|jdz««}||jdz|jdzgz }tdd«D]d}|dkrb|j || |jz«}    tt jtt|dd«D
cgc] }
|    |
d|…‘Œ c}
ŽŽ«} nˆ|dk(r&|j «}    |    d||j|zz} n]|j ||jz¬«}    tt jtt|«D
cgc]
}
|    |
d|…‘Œ c}
ŽŽ«} t|j| ««} |D]S} | |z} |j| z
}| d| |||zzz}||    || g|¢­Ž}||k(sJ‚| d| dg|zz}||    || «}||k(rŒSJ‚Œgycc}
wcc}
w)    Nrr    r
r»r¥rrLr¼)
r?rÈr+r(r'r1r½r¾rr†)rrÄr¨r©rªÚnpyv_loadn_tillzÚnpyv_loadn_tillr­rÀr„r­rÁrCÚnscaleÚllanesÚdata_stride_tillÚ
loadn_tillÚdata_stride_tillzÚ loadn_tillzs                   rÚ test_memory_noncont_partial_loadz*_SIMD_ALL.test_memory_noncont_partial_loadøs €ð
× Ñ Ó  gÑ -Ø Ü,0°«LÑ)И/Ü”U˜1˜dŸk™k¨A™oÓ.Ó/ˆØ $—+‘+˜q‘. $§+¡+¨q¡.Ð1Ñ1ˆÜ˜C “nó    8ˆFؘŠzØ—z‘z &¨6¨'°D·K±KÑ*?Ó@Ü"¤9§?¡?Ü´U¸5À!ÀRÓ5HÖI°˜4   
 F 
Ó+ÒIÐJð$ó‘ ð˜1’Ø—z‘z“|Ø" 1 U˜m¨t¯{©{¸eÑ/CÑD‘ à—z‘z¨°·±Ñ(<zÓ=Ü"¤9§?¡?Ü´E¸%³LÖA¨q˜4       6     ›?ÒAÐBð$ó ô˜tŸy™y¨Ó5Ó6ˆKØò
8Ø˜U™ØŸ™ vÑ-à  Ð(¨4°6¸U±?Ñ+CÑCð!ñ-¨T°6¸1ÐD¸tÒD
Ø!Ð%5Ò5Ð5Ð5Ø$/°°Ð$8¸A¸3À¹<Ñ$GÐ!Ù.¨t°V¸QÓ? Ø"Ð&7Ó7Ð7Ð7ò
8ñ    8ùòJùòBs ÃGÅ G)z self.storenr£r)z self.storen2r£r    cóT—|j«|vryt|«}|j«}|j|«}|j|z}t dd«D]~}dg|z|jz}    t d||z|«D]}
|
|z|z} || | |z|    |
|
|zŒdg|z|jz} | dgdzz } || ||«| dd|    k(sJ‚| dddgdzk(rŒ~J‚t dd«D]„}dg| z|jz}    t d||z|«D]}
|
|z|z} || | |z|    |
|z
|
xsdŒdgdz} | dg| z|jzz } || ||«| dd|    k(sJ‚| dddgdzk(rŒ„J‚dg|jz}    |    j «} || d|    d||| d|«| |    k(sJ‚y)Nrr¥rrér»)r?rÈr1r†r'r(rµ) rrÄr¨r©Ú npyv_storenr„rµÚhlanesrÀÚ data_storenr9r­Ústorens              rÚtest_memory_noncont_storez#_SIMD_ALL.test_memory_noncont_stores?€ð
× Ñ Ó  gÑ -Ø Ü˜6“lˆ ؏z‰z‹|ˆØ—    ‘    ˜$“ˆØ—‘ Ñ%ˆÜ˜A˜r“lò        /ˆFؘ& 6™/¨D¯K©KÑ7ˆKܘ1˜f v™o¨vÓ6ò =Ø˜&‘[ EÑ)Ø+/°°!°e±)Ð+< ˜A˜a %™iÑ(ð =ðV˜f‘_ t§{¡{Ñ2ˆFØ tf˜r‘kÑ !ˆFÙ ˜ ¨Ô .ؘ$˜3< ;Ò.Ð .Ð.ؘ#˜$< D 6¨B¡;Ó.Ð .Ð.ð        /ô˜C “mò        .ˆFؘ& F 7Ñ*¨T¯[©[Ñ8ˆKܘ1˜f v™o¨vÓ6ò EØ˜&‘[ EÑ)Ø37¸¸!¸e¹)Ð3D ˜A ™I a¢i¨4Ñ0ð EðV˜b‘[ˆFØ tf ˜wÑ&¨¯©Ñ4Ñ 4ˆFÙ ˜ ¨Ô .ؘ"˜#; +Ò-Ð -Ð-ؘ#˜2; 4 &¨2¡+Ó-Ð -Ð-ð        .ðf˜tŸ{™{Ñ*ˆ Ø×!Ñ!Ó#ˆØ# U F G˜}ˆ AeÐِF˜A˜uÔ%ؘÒ$Ð$Ñ$r)zself.storen_tillr£r)zself.storen2_tillr£r    cóž—|j«|vryt|«}|j«}|j|«}t    t d|j dz««}||j dz|j dzgz }|j |z}t dd«D]¨}    |D]¡}
dg|    z|j z} |d|
|zdg|j |
|zz
zz} t d||    z|    «d|
D]} | |    z|z}| |||z| | | |zŒdg|    z|j z}|dgdzz }|||    |
|«|dd| k(sJ‚|dddgdzk(rŒ¡J‚Œªt dd«D]®}    |D]§}
dg|     z|j z} |d|
|zdg|j |
|zz
zz} t d||    z|    «d|
D]} | |    z|z}| |||z| | |z
| xsdŒdgdz}|dg|     z|j zz }|||    |
|«|dd| k(sJ‚|dddgdzk(rŒ§J‚Œ°|D]C}
dg|j z} | j«}|d|
|z| d| d|||d|
|«|| k(rŒCJ‚y)    Nrr    r
r¥rrrÏr»r´)rrÄr¨r©Únpyv_storen_tillr„rµr­rÑrÀrCr°Útdatar9r­Ú storen_tills                rÚ!test_memory_noncont_partial_storez+_SIMD_ALL.test_memory_noncont_partial_storeDs€ð
× Ñ Ó  gÑ -Ø Ü ›<ÐØz‰z‹|ˆØ—    ‘    ˜$“ˆÜ”U˜1˜dŸk™k¨A™oÓ.Ó/ˆØ $—+‘+˜q‘. $§+¡+¨q¡.Ð1Ñ1ˆØ—‘ Ñ%ˆÜ˜A˜r“lò     8ˆFØò
8Ø!˜F V™O¨d¯k©kÑ9    Ø˜Z˜a %™iÐ(¨D¨6°T·[±[À1ÀuÁ9Ñ5LÑ+MÑMÜ˜q &¨6¡/°6Ó:¸2¸AÐ>ò@Aؘf™¨Ñ-AØ-2°1°Q¸±YÐ-?I˜a  E¡    Ñ*ð@ð $˜f v™o°· ± Ñ; Ø ˜v¨™{Ñ* Ù  ¨f°a¸Ô?Ø" 4 CÐ(¨IÒ5Ð5Ð5Ø" 3 4Ð(¨T¨F°R©KÓ7Ð7Ð7ñ
8ð     8ô˜C “mò     7ˆFØò
7Ø!˜F f WÑ,¨t¯{©{Ñ:    Ø˜Z˜a %™iÐ(¨D¨6°T·[±[À1ÀuÁ9Ñ5LÑ+MÑMÜ˜q &¨6¡/°6Ó:¸2¸AÐ>òHAؘf™¨Ñ-AØ5:¸1¸QÀ¹YÐ5GI˜a %™i¨ª    ¨TÑ2ðHð $˜f r™k Ø ˜v¨¨Ñ/°$·+±+Ñ=Ñ= Ù  ¨f°a¸Ô?Ø" 2 3Ð'¨9Ò4Ð4Ð4Ø" 3 BÐ'¨D¨6°B©;Ó6Ð6Ð6ñ
7ð     7ðò    ,ˆAؘ §¡Ñ,ˆIØ#Ÿ.™.Ó*ˆKØ!% j q¨5¡yÐ!1°5°&°'Ð!:ˆIa˜Ð Ù ˜[¨!¨Q°Ô 6Ø )Ó+Ð +Ð+ñ     ,rzintrin, table_size, elsize)z
self.lut32r¤r¤)z
self.lut16ér¥cóê—||j«k7ryt|«}t|jd|›«}t    |«}|D]+}|j |«}||«}|||«}    |    |k(rŒ+J‚y)zi
        Test lookup table intrinsics:
            npyv_lut32_##sfx
            npyv_lut16_##sfx
        NrR)r?rÈrrr(rN)
rrÄÚ
table_sizeÚelsizeÚ    idx_itrinÚtabler­ÚbroadiÚidxÚluts
          rÚtest_lutz_SIMD_ALL.test_lutss€ð T×&Ñ&Ó(Ò (Ø Üf“ˆÜ˜DŸI™I¨°&°Ð':Ó;ˆ    ÜjÓ!ˆØò    !ˆAØ—[‘[ “^ˆFÙ˜A“,ˆCÙ˜ Ó$ˆCؘ&“=Ð  =ñ        !rcó&—|j«}|dg|jzk(sJ‚tdd«D](}|j|«}||g|jzk(rŒ(J‚|j    «|j    d¬«}}|j |«|j |«}}|j |Ž}||k(sJ‚|jdg|¢­Ž}    |    |k(sJ‚gd¢}
|jjr|
jd«|jjr|
jd«|
D]+} t|d    | z«|«j} | d
| zk(rŒ+J‚|j|j|j«|j««||«} | |k(sJ‚|j|j!|j«|j««||«}||k(sJ‚|j#|«|dk(sJ‚|jj%«y) NrrrQTrŠ©rÕrÖÚu16Ús16rßràrárâÚf64Úf32Ú reinterpret_rW)Úzeror'r(rNr1r†ÚsetÚsetfrrúÚappendÚsimd_f32rr\ÚselectrprqÚextract0Úcleanup)rÚbroadcast_zeror­Ú
broadcastir•r–r—r˜ÚvsetÚvsetfÚsfxesrÚvec_nameÚselect_aÚselect_bs               rÚ    test_miscz_SIMD_ALL.test_miscˆsñ€ØŸ™›ˆØ !  t§{¡{Ñ!2Ò2Ð2Ð2ܐq˜"“ò    3ˆAØŸ™ Q›ˆJØ !  t§{¡{Ñ!2Ó2Ð 2Ð2ð    3🙛 t§z¡z¸$ zÓ'?ˆØŸ9™9 VÓ,¨d¯i©i¸Ó.?ˆðˆtx‰x˜Ð ˆØvŠ~Ј~𐗠   ‘    ˜"Ð&˜vÒ&ˆØ˜ŠÐˆò
GˆØ 9‰9× Ò Ø L‰L˜Ô Ø 9‰9× Ò Ø L‰L˜Ô Øò    -ˆCØ:”w˜t ^°cÑ%9Ó:¸7ÓC×LÑLˆHؘw¨™}Ó,Ð ,Ð,ð    -ð
—;‘;˜tŸz™z¨$¯)©)«+°t·y±y³{ÓCÀWÈgÓVˆØ˜6Ò!Ð!Ð!Ø—;‘;˜tŸ{™{¨4¯9©9«;¸¿    ¹    » ÓDÀgÈwÓWˆØ˜6Ò!Ð!Ð!ð}‰}˜WÓ%¨°©Ò3Ð3Ð3ð
         ‰    ×ÑÕrcó—|j«|jd¬«}}|j|«|j|«}}|d|jdz}|d|jdz}||jdzd}||jdzd}|j||«}    |    ||zk(sJ‚|j    ||«}
|
||zk(sJ‚|j ||«} | ||z||zfk(sJ‚|jt ||«D  cgc] } | D]} | ‘ŒŒ c} } «}|jt ||«D  cgc] } | D]} | ‘ŒŒ c} } «}|j ||«}|||fk(sJ‚dg|jzdz}|jd«|||f«|t|«t|«zk(sJ‚|j||«}|||fk(sJ‚|jd«t|«t|«z«}|||fk(sJ‚ycc} } wcc} } w)NTrŠr    rr™r†)
r1r†r'ÚcombinelÚcombinehÚcombinerr$r+Úunzip)rr•r–r—r˜Ú    data_a_loÚ    data_b_loÚ    data_a_hiÚ    data_b_hirýrþrÿÚprIÚ    data_ziplÚ    data_ziphÚvziprs                  rÚ test_reorderz_SIMD_ALL.test_reorderµsM€ØŸ™› t§z¡z¸$ zÓ'?ˆØŸ9™9 VÓ,¨d¯i©i¸Ó.?ˆàÐ,˜DŸK™K¨1Ñ,Ð-ˆ    ØÐ,˜DŸK™K¨1Ñ,Ð-ˆ    à˜4Ÿ;™;¨!Ñ+Ð,Ð-ˆ    Ø˜4Ÿ;™;¨!Ñ+Ð,Ð-ˆ    à—=‘= ¨'Ó2ˆØ˜9 yÑ0Ò0Ð0Ð0à—=‘= ¨'Ó2ˆØ˜9 yÑ0Ò0Ð0Ð0à—,‘,˜w¨Ó0ˆØ˜9 yÑ0°)¸iÑ2GÐHÒHÐHÐHð—I‘Iܘ9 iÓ0÷
ظ!ò
Ø56ŠAð
Ø ó
ó ˆ    ð—I‘Iܘ9 iÓ0÷
ظ!ò
Ø56ŠAð
Ø ó
ó ˆ    ðx‰x˜ Ó)ˆØ˜     9Ð-Ò-Ð-Ð-؈sT—[‘[Ñ  1Ñ$ˆØˆ‰Ó˜$ ¨'Р2Ô3Ø”t˜I“¬¨i«Ñ8Ò8Ð8Ð8ð—
‘
˜9 iÓ0ˆØ˜ Ð(Ò(Ð(Ð(Ø —‘˜Ó ¤ i£´4¸    ³?Ñ!BÓCˆØ˜ Ð(Ò(Ð(Ñ(ùó!
ùó
s ÄG?
Ä2H
c óB—|j«}|dk(rytd|jd|z«Dcgc]$}tt||d|zz««D]}|‘ŒŒ&}}}|j    |j t|j«««}||k(sJ‚ycc}}w)Nr¥r)r?r(r'r)Úrev64r†)rÚssizer0rBÚ
data_rev64r s      rÚtest_reorder_rev64z_SIMD_ALL.test_reorder_rev64Ûs¤€à×!Ñ!Ó#ˆØ BŠ;Ø ä˜Q § ¡ ¨R°5©[Ó9÷
ØÜ¤ a¨¨R°5©[©Ó 9Ó:ò
àò ð
Ø ð
ˆ
ñ
ð—
‘
˜4Ÿ9™9¤U¨4¯;©;Ó%7Ó8Ó9ˆØ˜
Ò"Ð"Ñ"ùó 
s´)Bc    ó¢—|j«}|dkry|j|j««}d|z}|dz
}|j|z}|dk(rddgngd¢}t    |«D][}|Dcgc]
}||z    |z‘Œ }    }|j
|g|    ¢­Ž}
t |    |z«D  cgc]\} } || | | zz‘Œ} } } |
| k(rŒ[J‚ycc}wcc} } w)z\
        Test permuting elements for each 128-bit lane.
        npyv_permi128_##sfx
        r¤Né€rr¥r)rr    r
é)r?r†r1r'r(Úpermi128r°)rr r„ÚpermnÚpermdÚnlane128Úshflr­ÚshfÚindicesÚvpermÚeÚjÚ
data_vperms              rÚtest_reorder_permi128z_SIMD_ALL.test_reorder_permi128çsú€ð
×!Ñ!Ó#ˆØ 2Š:Ø Øy‰y˜Ÿ™›Ó&ˆØu‘ ˆØ˜‘    ˆØ—;‘; %Ñ'ˆØ "š1‰vª,ˆÜu“ò    'ˆAØ59Ö:¨c˜˜S™ EÓ)Ð:ˆGÐ:Ø!D—M‘M $Ð1¨Ò1ˆEô& g°Ñ&8Ó9÷áAqðQ˜!˜u˜f™*Ñ%Ó&ðˆJñð˜JÓ&Ð &Ð&ñ    'ùÚ:ùós Á.CÂ#C z func, intrinrlrmrnrorpcóê‡ —|j«r|j«}n,|j|j«|jz
«}|j|j    «d¬«}|j |«|j |«}}t ||«}|j«Š ˆ fd„}t||«D    cgc]\}}    |||    «‘Œ}
}}    ||||««} | |
k(sJ‚ycc}    }w)NTrŠcó4•—|Dcgc]}|‰k(‘Œ    c}Scc}wrAryrts  €rrwz4_SIMD_ALL.test_operators_comparison.<locals>.to_boolrxry)    r*r1rBr'rCr†rrTr) rrÊrÄr•r–r—r˜rwr™rYr€Úcmprvs             @rÚtest_operators_comparisonz#_SIMD_ALL.test_operators_comparisonýsÏø€ð ;‰;Œ=Ø—Z‘Z“\‰Fà—Z‘Z § ¡ £°$·+±+Ñ =Ó>ˆFØ—‘˜DŸM™M›O°TÓ:ˆØŸ9™9 VÓ,¨d¯i©i¸Ó.?ˆÜ˜˜vÓ&ˆà—O‘OÓ%ˆ    ô    :ô,/¨v°vÓ+>×?¡4 1 a‘D˜˜A•JÐ?ˆÑ?Ù‘f˜W gÓ.Ó/ˆØhŠÐ‰ùó@sÃC/cóÔ—|j«r|j«}n,|j|j«|jz
«}|j|j    «d¬«}|j |«|j |«}}|j«r;|j |«}|j |«}|j |j }}n||}}d„|j
}}|t||«D    
cgc]
\}    }
|    |
z ‘Œ c}
}    «} ||j||««} | | k(sJ‚|t||«D    
cgc]
\}    }
|    |
z‘Œ c}
}    «} |t|d«||««}|| k(sJ‚|t||«D    
cgc]
\}    }
|    |
z‘Œ c}
}    «}|t|d«||««}||k(sJ‚||D    cgc]}    |    ‘Œc}    «}|t|d«|««}||k(sJ‚|jdvryt||«D    
cgc] \}    }
|    |
z‘Œ }}    }
||j||««}||k(sJ‚ycc}
}    wcc}
}    wcc}
}    wcc}    wcc}
}    w)NTrŠcó—|SrAry)r™s rr±z2_SIMD_ALL.test_operators_logical.<locals>.<lambda>$s€¨€rrŒr‹rrÕ) r*r1rBr'rCr†rMrr‘rrr’)rr•r–r—r˜Ú data_cast_aÚ data_cast_bÚcastÚ    cast_datar™rYržrŸrœrršr›Údata_notr r¡r¢s                     rr§z _SIMD_ALL.test_operators_logicalsJ€Ø ;‰;Œ=Ø—Z‘Z“\‰Fà—Z‘Z § ¡ £°$·+±+Ñ =Ó>ˆFØ—‘˜DŸM™M›O°TÓ:ˆØŸ9™9 VÓ,¨d¯i©i¸Ó.?ˆà ;‰;Œ=Ø×+Ñ+¨GÓ4ˆKØ×+Ñ+¨GÓ4ˆKØ"×/Ñ/°×1BÑ1B)‰Dà'-¨v˜ˆKÙ)¨4¯9©9)ˆDá´°KÀÓ0M×N©¨¨1˜a !›eÓNÓOˆÙD—H‘H˜W gÓ.Ó/ˆØxÒÐÐá¬s°;À Ó/L×M¡t q¨!˜Q ›UÓMÓNˆÙÐ&”7˜4 Ó& w°Ó8Ó9ˆØgŠ~Ј~á´°KÀÓ0M×N©¨¨1˜a !›eÓNÓOˆÙÐ(”G˜D %Ó(¨°'Ó:Ó;ˆØxÒÐÐá¨+Ö6 Q˜qšbÒ6Ó7ˆÙÐ(”G˜D %Ó(¨Ó1Ó2ˆØxÒÐÐà 8‰8˜DÑ !Ø Ü(+¨K¸Ó(E×F¡  1Q˜!˜“VÐFˆ    ÑFِT—Y‘Y˜w¨Ó0Ó1ˆØ˜    Ò!Ð!Ñ!ùó)OùóNùóOùò7ùó GsÄI
ÅI
ÆI
Ç
IÈI$rÄrÅrr„)rr    r r
)rLrOéýÿÿÿéüÿÿÿ)rrr    r r
)rÏr¦iÿÿÿlÿÿÿÿ)rrLrOr)r
rrLcóœ—|j||jz«}t|«}t||«}||«}||«}||k(sJ‚yrÇrƒrÉs       rrÍz"_SIMD_ALL.test_operators_crosstest<r„rcóŠ—d|jddz}t|jd|›d|j›«}t|jd|j›d|›«}||jd««}|j    |jd«|jd««}||k7sJ‚||«}||«}||k7sJ‚y)NrYrÚcvt_rr)rrrrNrp)rÚbsfxÚ
to_booleanÚ from_booleanÚfalse_vbÚtrue_vbÚ
false_vsfxÚ    true_vsfxs        rÚtest_conversion_booleanz!_SIMD_ALL.test_conversion_booleanTsº€ØT—X‘X˜a˜b\Ñ!ˆÜ˜TŸY™Y¨$¨t¨f°A°d·h±h°ZÐ(@ÓAˆ
ܘtŸy™y¨D°·±°
¸!¸D¸6Ð*BÓCˆ á˜dŸk™k¨!›nÓ-ˆØ—*‘*˜TŸ[™[¨›^¨T¯[©[¸«^Ó<ˆØ˜7Ò"Ð"Ð"á! (Ó+ˆ
Ù  Ó)ˆ    Ø˜YÒ&Ð&Ñ&rcóº—|jdvry|jdtt|jdd«dz«z}t|jd|›d|j›«}|j |j «|jz
«}|j|«}||«}|d|jdz}||jdzd}|||fk(sJ‚y)zh
        Test expand intrinsics:
            npyv_expand_u16_u8
            npyv_expand_u32_u16
        ©rÕræNrrr    Úexpand_r)    rÚstrr>rrr1rBr'r†)rÚtotypeÚexpandr„rµÚedataÚdata_loÚdata_his        rÚtest_conversion_expandz _SIMD_ALL.test_conversion_expandasрð 8‰8˜=Ñ (Ø Ø—‘˜!‘œs¤3 t§x¡x°° |Ó#4°qÑ#8Ó9Ñ9ˆÜ˜Ÿ™ g¨f¨X°Q°t·x±x°jÐ$AÓBˆàz‰z˜$Ÿ-™-›/¨D¯K©KÑ7Ó8ˆØ—    ‘    ˜$“ˆÙu“ ˆàÐ(˜Ÿ ™  qÑ(Ð)ˆàt—{‘{ aÑ'Ð(Ð)ˆØ˜ 'Ð*Ò*Ð*Ñ*rcód—|j«r|j«}n,|j|j«|jz
«}|j|j    «d¬«}|j |«|j |«}}|j t ||«Dcgc]
\}}||z‘Œ c}}«}|j||«}||k(sJ‚|j t ||«Dcgc]
\}}||z
‘Œ c}}«}    |j||«}
|
|    k(sJ‚ycc}}wcc}}w©NTrŠ)    r*r1rBr'rCr†rrrþ) rr•r–r—r˜r™rYÚdata_addrÚdata_subrþs            rÚtest_arithmetic_subaddz _SIMD_ALL.test_arithmetic_subaddusü€Ø ;‰;Œ=Ø—Z‘Z“\‰Fà—Z‘Z § ¡ £°$·+±+Ñ =Ó>ˆFØ—‘˜DŸM™M›O°TÓ:ˆØŸ9™9 VÓ,¨d¯i©i¸Ó.?ˆð—9‘9´°F¸FÓ0C×D©¨¨1˜a !›eÓDÓEˆØh‰hw Ó(ˆØhŠÐˆØ—9‘9´°F¸FÓ0C×D©¨¨1˜a !›eÓDÓEˆØh‰hw Ó(ˆØhŠÐ‰ùó EùóEs Â+D&
Ã5D,
cóâ—|jdvry|j«r|j«}n,|j|j«|jz
«}|j|j «d¬«}|j |«|j |«}}|j t||«Dcgc]
\}}||z‘Œ c}}«}|j||«}||k(sJ‚ycc}}w)N)rárâTrŠ)    rr*r1rBr'rCr†rr    )    rr•r–r—r˜r™rYÚdata_mulr    s             rÚtest_arithmetic_mulz_SIMD_ALL.test_arithmetic_mul…s¿€Ø 8‰8~Ñ %Ø à ;‰;Œ=Ø—Z‘Z“\‰Fà—Z‘Z § ¡ £°$·+±+Ñ =Ó>ˆFØ—‘˜DŸM™M›O°TÓ:ˆØŸ9™9 VÓ,¨d¯i©i¸Ó.?ˆà—9‘9´°F¸FÓ0C×D©¨¨1˜a !›eÓDÓEˆØh‰hw Ó(ˆØhŠÐ‰ùóEsÂ:C+
cóN—|j«sy|j«|jd¬«}}|j|«|j|«}}|jt||«Dcgc]
\}}||z ‘Œ c}}«}|j    ||«}||k(sJ‚ycc}}wrA)r*r1r†rÚdiv)    rr•r–r—r˜r™rYÚdata_divrIs             rÚtest_arithmetic_divz_SIMD_ALL.test_arithmetic_div”s€Ø{‰{Œ}Ø àŸ™› t§z¡z¸$ zÓ'?ˆØŸ9™9 VÓ,¨d¯i©i¸Ó.?ˆð—9‘9´°F¸FÓ0C×D©¨¨1˜a !›eÓDÓEˆØh‰hw Ó(ˆØhŠÐ‰ùóEsÁ0B!
có‡ —|j«ry|j«Š ˆ fd„}d‰ g}|tddd«z }|tddd«z }|j«}|dkDr |tdd    d
«z }|tdd    d «z }|d kDr |td    d d«z }|td    d d«z }|dkDr |td dd«z }|td dd«z }||Dcgc]}| ‘Œc}z }t    j
||«D]\}}|j |«d}|dk(rŒ |j|j|««}|Dcgc] }|||«‘Œ }}|j|«}    |j||    «}
|
|k(rŒJ‚ycc}wcc}w)zn
        Test integer division intrinsics:
            npyv_divisor_##sfx
            npyv_divc_##sfx
        Ncój•—|dk(r|‰k(r|S|dk|dk}}|dk(s||k(r||zS||z|z
|zdzS)zŒ
            Divide towards zero works with large integers > 2^53,
            and wrap around overflow similar to what C does.
            rLrrry)r™rjÚsign_aÚsign_dÚint_mins    €rÚ    trunc_divz3_SIMD_ALL.test_arithmetic_intdiv.<locals>.trunc_div«sXø€ð
BŠw˜1 š<ؐؠ™U A¨¡EFˆFؐAŠv˜ 6Ò)ؘA‘v ؘ‘J Ñ'¨AÑ-°Ñ1Ð 1rrrér¤ér r?i iÿrÚli iÿÿÿlllÿÿÿÿ) r*rCr(r?r½ÚproductrNr†r1ÚdivisorÚdivc) rrQr„Úbsizer0ÚdividendrUr™Ú    data_divcÚ divisor_parmsrVrPs            @rÚtest_arithmetic_intdivz _SIMD_ALL.test_arithmetic_intdiv s¦ø€ð ;‰;Œ=Ø à—-‘-“/ˆô
    2ðG8ˆ}ˆØ ”a˜˜tÓ$Ñ$ˆØ ”a˜˜xÓ(Ñ(ˆØ×!Ñ!Ó#ˆØ 1Š9Ø ”E˜$  uÓ-Ñ -ˆDØ ”E˜$  yÓ1Ñ 1ˆDØ 2Š:Ø ”E˜% ¨Ó.Ñ .ˆDØ ”E˜% ¨    Ó2Ñ 2ˆDØ 2Š:Ø ”E˜% ¨Ó.Ñ .ˆDØ ”E˜% ¨    Ó2Ñ 2ˆDà ˜TÖ"˜!’Ò"Ñ"ˆÜ!*×!2Ñ!2°4¸Ó!>ò    %Ñ ˆHgØ—k‘k 'Ó*¨1Ñ-ˆGؘ!Š|ØØ—y‘y §¡¨HÓ!5Ó6ˆHØ8@ÖA°1™ 1 gÕ.ÐAˆIÐAØ ŸL™L¨Ó1ˆMØ—9‘9˜X }Ó5ˆDؘ9Ó$Ð $Ð$ñ    %ùò#ùò Bs Ã
E9Ä:E>cóª—|jdvry|j«}|j|«}t|«}|j|«}||k(sJ‚y)zH
        Test reduce sum intrinsics:
            npyv_sum_##sfx
        )rßrárérèN)rr1r†r¯)rr„rµÚdata_sumÚvsums     rÚtest_arithmetic_reduce_sumz$_SIMD_ALL.test_arithmetic_reduce_sumÐsP€ð
8‰8Ð7Ñ 7Ø àz‰z‹|ˆØ—    ‘    ˜$“ˆät“9ˆØx‰x˜‹ˆØxÒÐÑrcó,—|jdvryd|j|j«|j«|jz
f}|D]G}|j    |«}|j |«}t |«}|j|«}||k(rŒGJ‚y)zQ
        Test extend reduce sum intrinsics:
            npyv_sumup_##sfx
        r7Nr)rr'rCrBr1r†r¯Úsumup)rr¾Úrr„rµr]r^s       rÚtest_arithmetic_reduce_sumupz&_SIMD_ALL.test_arithmetic_reduce_sumupßsˆ€ð
8‰8˜=Ñ (Ø ØD—K‘K §¡£°$·-±-³/ÀDÇKÁKÑ2OÐPˆØò    $ˆAØ—:‘:˜a“=ˆDØ—I‘I˜d“OˆEܘ4“yˆHØ—:‘:˜eÓ$ˆDؘ8Ó#Ð #Ð#ñ     $rcó’—|j|j««}|j|jd¬««}|j|j«|j««}|j    |j«|j««}|j ||«}|j ||||«}||k(sJ‚|j ||||«}||k(sJ‚|j||«}|j||||«}||k(sJ‚|j||||«}||k(sJ‚|j«sy|j||«}    |j||||«}
|
|    k(sJ‚|j|||«} | |    k(sJ‚|j||||«}
|
|k(sJ‚|j|||«} | |j«k(sJ‚y)zœ
        Conditional addition and subtraction for all supported data types.
        Test intrinsics:
            npyv_ifadd_##SFX, npyv_ifsub_##SFX
        TrŠN) r†r1rprërqrþÚifsubrÚifaddr*rIÚifdivÚifdivz) rr—r˜r€Ú
false_maskrCrerBrfrJrgrhs             rÚtest_mask_conditionalz_SIMD_ALL.test_mask_conditionalîs·€ð —)‘)˜DŸJ™J›LÓ)ˆØ—)‘)˜DŸJ™J¨t˜JÓ4Ó5ˆØ—J‘J˜tŸy™y›{¨D¯I©I«KÓ8ˆ    Ø—[‘[ §¡£¨d¯i©i«kÓ:ˆ
à—8‘8˜G WÓ-ˆØ—
‘
˜9 g¨w¸Ó@ˆØ˜Ò Ð Ð Ø—
‘
˜: w°¸ÓAˆØ˜ÒÐÐà—8‘8˜G WÓ-ˆØ—
‘
˜9 g¨w¸Ó@ˆØ˜Ò Ð Ð Ø—
‘
˜: w°¸ÓAˆØ˜ÒÐÐà{‰{Œ}Ø Ø—8‘8˜G WÓ-ˆØ—
‘
˜9 g¨w¸Ó@ˆØ˜Ò Ð Ð Ø—‘˜Y¨°Ó9ˆØ˜Ò!Ð!Ð!Ø—
‘
˜: w°¸ÓAˆØ˜ÒÐÐØ—‘˜Z¨°'Ó:ˆØ˜Ÿ™›Ò$Ð$Ñ$rN)&r\rwrxrÎr—r¢rÏrÐrÑr²r¹rÃrÍrÔrÙrãrûr    rrr…r†r‡rˆr‰rŠr!r§rÍr5r?rDrGrKr[r_rcrjryrrrr†s²„ñòò$ ð4 ‡[[×ÑÐ;Ø    *¨H°a¸&¸ÐBØ    ,¨h¸¸FÀFÐ;KÐLð>óñ,ó    ð,ð  ‡[[×ÑÐ5Ø(Ø)ð8óñ+ó    ð+ð  ‡[[×ÑÐ5Ø#Ø$ð8óñ(ó    ð(ð, ‡[[×ÑÐ;Ø    ,¨h¸¸F¸8ÐDØ    .°¸!¸fÀfÐ=MÐNð>óñ8ó    ð8ðB ‡[[×ÑÐ5Ø$Ø%ð8óñ!%ó    ð!%ðF ‡[[×ÑÐ5Ø)Ø*ð8óñ),ó    ð),ðV ‡[[×ÑÐ9ØØð<óñ!ó    ð!ò"+òZ$)òL
#ò'ð, ‡[[×ј^Ø    ‰gÐØ    ‰gÐØ    ‰gÐØ    ‰gÐØ    ‰gÐð .óñóðò$$"ðL ‡[[×јX¨¨u ~Ó6Ø ‡[[×јVÚÚÚÚ6ÚØ    
ˆØ    
ˆØ     ˆð    &ó    ñ 'ó    ó7ð 'ò 'ò+ò(ò  ò
ò.%ò`  ò $ó!%rr)rŽrºr»r¼rå)rérè)ré)rèrXrorú(rpú)ztarget 'z$' isn't supported by current machinez' isn't supported by NPYVz"' doesn't support single-precisionréz!' doesn'tsupport double-precisionrè)rrrqÚTestr)Úreason)FFFFF)1r½r1r…rûrÏÚnumpy._core._multiarray_umathrÚnumpy._core._simdrrrrrr{rÓrôrr rÚbool_sfxÚint_sfxÚfp_sfxÚall_sfxÚtests_registryÚitemsrqrrÌÚ
simd_widthrrÚ pretty_nameÚlenrsÚskipÚskip_sfxrïrúr÷ÚclsrrVÚskip_mÚinhrrÚtyper\ÚtclsrÐÚglobalsryrrú<module>r‚sZðóÛ ÛÛ    ã Ý:çIÑIð16Ø/4Øó ÷a ña ôFy'ôy'ôvK8 ôK8ô\$ô$ô.$ô$ô"T'ˆ}ôT'ôlI
% ôI
%ðX '€Ø
@€Ø    €Ø
FÑ
€à ˆjØ ˆiØ
ˆhØ ˆjØ ˆjØ ˆið €ð'˜Ÿ™›ó,Ñ€KÙ"—’¨€JØ×#Ñ# DÓ)€KÙ
ˆ;Ó˜!Òà˜#Ÿ(™( ;Ó/Ð0°Ð2‰ à! !‘nˆ à €DØ€H٠ؘ+˜Ð&JÐK‰Ø YŠYؘ+˜Ð&?Ð@‰à}Š}Ø (¨¨ ð6BðBˆHU‰Oà}Š}Ø (¨¨ ð6:ð:ˆHU‰Oð%×*Ñ*Ó,ò,‰
ˆˆsØò    ,ˆCØ—\‘\ # tÓ,ˆFؐ6ˆDØ# KÑ0¸È[ÑYˆDÙ˜$˜sŸ|™|˜n¨A¨j¨\¸¸;¸-ÀqÈÈÐNÐPTÐVZÓ[ˆDÙØ/— ‘ × Ñ ¨Ð Ó/°Ô5Ø'+‰G‹Id—m‘mÒ $ñ    ,ò,ñ/,r