o
    1ήc                     @   s   d dl Z d dlmZ 	 dd e D Zeddg dd \ZZg dZg dZdgZ	er5ej
r5e	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  )simd).0npyv_modr   r   H/tmp/pip-target-vg8gfxp4/lib/python/numpy/core/tests/test_simd_module.py
<listcomp>
   s    r      )u8u16u32u64)s8s16s32s64f32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sJ d S )Nnlanes_setall_   )getattrnpyvlen)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J d S )Nr   r   npyv_)r   r   __name__)r   r   r    r   r   r   test_type_name   s   zTest_SIMD_MODULE.test_type_namec                    s   t dgd \}}tD ]U  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   )intrinr   r   r   <lambda>'   s    z.Test_SIMD_MODULE.test_raises.<locals>.<lambda>addsetallloadstorereinterpret__u32)r   
setall_u32all_sfxpytestraises	TypeError
ValueErrorr   )r   ab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   r0   npyv2r2   r3   r4   add_u32)r   r6   a2r   r   r   
test_nomix0   s   

zTest_SIMD_MODULE.test_nomixc                 C   s   t td| }dt|dd  > d }d}t td| |d }||ks&J t td| |g| }||g| ks;J t td| dd }||ksLJ t td| dg| }||g| ksaJ d S )Nr   r   l   r   r   load_)r   r   int)r   r   r   maxu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sJ t td| |g| }|dg| ks/J d}t td| |d }|dksBJ t td| |g| }|dg| ksWJ d S )Nr   l   r   r   r?   r>   l         r&   )r   r   r   maxs_72rC   rD   mins_72r   r   r   test_signed_overflowH   s   z%Test_SIMD_MODULE.test_signed_overflowc                 C   s0   t dd }|dksJ t|ddksJ d S )Ng?r   r   )r   
setall_f32round)r   r   r   r   r   test_truncate_f32V   s   z"Test_SIMD_MODULE.test_truncate_f32c                 C   sX   t dtj}t|}|t|ksJ |t|ksJ |D ]}|| || ks)J qd S )Nr   )ranger   
nlanes_u32load_u32listtuple)r   
data_rangevdatair   r   r   test_compare[   s   
zTest_SIMD_MODULE.test_compareN)r#   
__module____qualname__r2   markparametrizer1   r!   r$   r9   skipifr:   r=   unsigned_sfxrE   
signed_sfxrH   rK   rT   r   r   r   r   r      s     





r   )r2   numpy.core._simdr   valuesnpyvsr   r:   rZ   r[   fp_sfxsimd_f64appendint_sfxr1   rW   rY   r   r   r   r   r   <module>   s    

