(in-package #:sb-simd)

(sb-simd-test-suite:define-aref-test u8-aref  (unsigned-byte 8) 1)
(sb-simd-test-suite:define-aref-test u16-aref (unsigned-byte 16) 1)
(sb-simd-test-suite:define-aref-test u32-aref (unsigned-byte 32) 1)
(sb-simd-test-suite:define-aref-test u64-aref (unsigned-byte 64) 1)
(sb-simd-test-suite:define-aref-test s8-aref  (signed-byte 8) 1)
(sb-simd-test-suite:define-aref-test s16-aref (signed-byte 16) 1)
(sb-simd-test-suite:define-aref-test s32-aref (signed-byte 32) 1)
(sb-simd-test-suite:define-aref-test s64-aref (signed-byte 64) 1)
(sb-simd-test-suite:define-aref-test f32-aref single-float 1)
(sb-simd-test-suite:define-aref-test f64-aref double-float 1)

(in-package #:sb-simd-sse)

(sb-simd-test-suite:define-aref-test f32.4-aref single-float 4 f32.4-values)

(in-package #:sb-simd-sse2)

(sb-simd-test-suite:define-aref-test f64.2-aref double-float       2 f64.2-values)
(sb-simd-test-suite:define-aref-test u8.16-aref (unsigned-byte 8) 16 u8.16-values)
(sb-simd-test-suite:define-aref-test u16.8-aref (unsigned-byte 16) 8 u16.8-values)
(sb-simd-test-suite:define-aref-test u32.4-aref (unsigned-byte 32) 4 u32.4-values)
(sb-simd-test-suite:define-aref-test u64.2-aref (unsigned-byte 64) 2 u64.2-values)
(sb-simd-test-suite:define-aref-test s8.16-aref (signed-byte 8)   16 s8.16-values)
(sb-simd-test-suite:define-aref-test s16.8-aref (signed-byte 16)   8 s16.8-values)
(sb-simd-test-suite:define-aref-test s32.4-aref (signed-byte 32)   4 s32.4-values)
(sb-simd-test-suite:define-aref-test s64.2-aref (signed-byte 64)   2 s64.2-values)

(in-package #:sb-simd-avx)

(sb-simd-test-suite:define-aref-test f32.4-aref single-float 4 f32.4-values)
(sb-simd-test-suite:define-aref-test f32.8-aref single-float 8 f32.8-values)
(sb-simd-test-suite:define-aref-test f64.2-aref double-float 2 f64.2-values)
(sb-simd-test-suite:define-aref-test f64.4-aref double-float 4 f64.4-values)
(sb-simd-test-suite:define-aref-test u8.16-aref (unsigned-byte 8) 16 u8.16-values)
(sb-simd-test-suite:define-aref-test u16.8-aref (unsigned-byte 16) 8 u16.8-values)
(sb-simd-test-suite:define-aref-test u32.4-aref (unsigned-byte 32) 4 u32.4-values)
(sb-simd-test-suite:define-aref-test u64.2-aref (unsigned-byte 64) 2 u64.2-values)
(sb-simd-test-suite:define-aref-test s8.16-aref (signed-byte 8) 16 s8.16-values)
(sb-simd-test-suite:define-aref-test s16.8-aref (signed-byte 16) 8 s16.8-values)
(sb-simd-test-suite:define-aref-test s32.4-aref (signed-byte 32) 4 s32.4-values)
(sb-simd-test-suite:define-aref-test s64.2-aref (signed-byte 64) 2 s64.2-values)
(sb-simd-test-suite:define-aref-test u8.32-aref (unsigned-byte 8) 32 u8.32-values)
(sb-simd-test-suite:define-aref-test u16.16-aref (unsigned-byte 16) 16 u16.16-values)
(sb-simd-test-suite:define-aref-test u32.8-aref (unsigned-byte 32) 8 u32.8-values)
(sb-simd-test-suite:define-aref-test u64.4-aref (unsigned-byte 64) 4 u64.4-values)
(sb-simd-test-suite:define-aref-test s8.32-aref (signed-byte 8) 32 s8.32-values)
(sb-simd-test-suite:define-aref-test s16.16-aref (signed-byte 16) 16 s16.16-values)
(sb-simd-test-suite:define-aref-test s32.8-aref (signed-byte 32) 8 s32.8-values)
(sb-simd-test-suite:define-aref-test s64.4-aref (signed-byte 64) 4 s64.4-values)
