U
    #c                     @   s   d dl Z d dlmZ dd e D Zeddg dd \ZZdddd	gZd
dddgZg Z	ernej
rne	d erejre	d ee Zee Ze jje ddG dd dZdS )    N)targetsc                 C   s   g | ]}|r|j r|qS  )Zsimd).0Znpyv_modr   r   E/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_simd_module.py
<listcomp>
   s       r      u8u16u32Zu64Zs8Zs16Zs32Zs64f32Zf64z3could not find any SIMD extension with NPYV supportreasonc                   @   s   e Zd Zejdedd Zejdedd Zdd Z	ejj
e dd	d
d Zejdedd Zejdedd Zdd Zdd ZdS )Test_SIMD_MODULEsfxc                 C   s4   t td| }t td| d}t||ks0td S )Nnlanes_setall_   )getattrnpyvlenAssertionError)selfr   nlanesvectorr   r   r   test_num_lanes   s    zTest_SIMD_MODULE.test_num_lanesc                 C   s(   t td| d}|jd| ks$td S )Nr   r   Znpyv_)r   r   __name__r   )r   r   r   r   r   r   test_type_name!   s    zTest_SIMD_MODULE.test_type_namec                    s   t dgd \}}tD ]  fdd}tt|d| tt|d||| tt|d tt|ddg tt|dd tt|ddg tt|ddgtt d	  d
| qd S )Nr   r   c                    s   t t|  d  S )N_)r   r   )Zintrinr   r   r   <lambda>)       z.Test_SIMD_MODULE.test_raises.<locals>.<lambda>addZsetallloadstoreZreinterpret_Z_u32)r   
setall_u32all_sfxpytestraises	TypeError
ValueErrorr   )r   abZvcbr   r   r   test_raises&   s    zTest_SIMD_MODULE.test_raisesz8could not find a second SIMD extension with NPYV supportr   c                 C   s<   t d}td}ttt j|| tttj|| d S )Nr   )r   r$   npyv2r&   r'   r(   Zadd_u32)r   r*   Za2r   r   r   
test_nomix2   s    

zTest_SIMD_MODULE.test_nomixc                 C   s   t td| }dt|dd  > d }d}t td| |d }||ksLtt td| |g| }||g| ksvtt td| dd }||kstt td| dg| }||g| kstd S )Nr   r   l   r   r   load_)r   r   intr   )r   r   r   ZmaxuZmaxu_72lanelanesr   r   r   test_unsigned_overflow<   s    z'Test_SIMD_MODULE.test_unsigned_overflowc                 C   s   t td| }d}t td| |d }|dks4tt td| |g| }|dg| ks^td}t td| |d }|dkstt td| |g| }|dg| kstd S )Nr   l   r   r   r0   r/   l         )r   r   r   )r   r   r   Zmaxs_72r2   r3   Zmins_72r   r   r   test_signed_overflowJ   s    z%Test_SIMD_MODULE.test_signed_overflowc                 C   s0   t dd }|dkstt|ddks,td S )Ng?r   r   )r   Z
setall_f32r   round)r   r   r   r   r   test_truncate_f32X   s    z"Test_SIMD_MODULE.test_truncate_f32c                 C   sX   t dtj}t|}|t|ks&t|t|ks6t|D ]}|| || ks:tq:d S )Nr   )ranger   Z
nlanes_u32Zload_u32listr   tuple)r   Z
data_rangeZvdatair   r   r   test_compare]   s    
zTest_SIMD_MODULE.test_compareN)r   
__module____qualname__r&   markZparametrizer%   r   r   r,   skipifr-   r.   unsigned_sfxr4   
signed_sfxr5   r7   r<   r   r   r   r   r      s   





r   )r&   Znumpy.core._simdr   valuesZnpyvsr   r-   rA   rB   Zfp_sfxZsimd_f32appendZsimd_f64Zint_sfxr%   r?   r@   r   r   r   r   r   <module>   s   



