26#ifndef SIMD_INTRINS_NEON_H_
27#define SIMD_INTRINS_NEON_H_
31#ifdef SIMDVEC_NEON_ENABLE
40#define SIMDVEC_NEON_64X1(NEON_T) \
45 NEON_T##x1_t(const NEON_T##_t &x) \
49 NEON_T##x1_t &operator=(const NEON_T##_t &x) \
56SIMDVEC_NEON_64X1(uint8x8)
57SIMDVEC_NEON_64X1(int8x8)
58SIMDVEC_NEON_64X1(uint16x4)
59SIMDVEC_NEON_64X1(int16x4)
60SIMDVEC_NEON_64X1(int32x2)
61SIMDVEC_NEON_64X1(float32x2)
62#ifdef SIMD_64BIT_TYPES
63SIMDVEC_NEON_64X1(int64x1)
64SIMDVEC_NEON_64X1(float64x1)
67#undef SIMDVEC_NEON_64X1
73#define SIMDVEC_NEON_VREINTERPRET_SAME(T, NEON_SUF) \
74 static SIMD_INLINE T vreinterpretq_##NEON_SUF##_##NEON_SUF(T a) \
79SIMDVEC_NEON_VREINTERPRET_SAME(uint8x16_t, u8)
80SIMDVEC_NEON_VREINTERPRET_SAME(int8x16_t, s8)
81SIMDVEC_NEON_VREINTERPRET_SAME(uint16x8_t, u16)
82SIMDVEC_NEON_VREINTERPRET_SAME(int16x8_t, s16)
83SIMDVEC_NEON_VREINTERPRET_SAME(uint32x4_t, u32)
84SIMDVEC_NEON_VREINTERPRET_SAME(int32x4_t, s32)
85SIMDVEC_NEON_VREINTERPRET_SAME(float32x4_t, f32)
86#ifdef SIMD_64BIT_TYPES
87SIMDVEC_NEON_VREINTERPRET_SAME(uint64x2_t, u64)
88SIMDVEC_NEON_VREINTERPRET_SAME(int64x2_t, s64)
89SIMDVEC_NEON_VREINTERPRET_SAME(float64x2_t, f64)