Struct faiss::simd256bit

struct faiss::simd256bit

256-bit representation without interpretation as a vector

Simple wrapper around the AVX 256-bit registers

The objective is to separate the different interpretations of the same registers (as a vector of uint8, uint16 or uint32), to provide printing functions, and to give more readable names to the AVX intrinsics. It does not pretend to be exhausitve, functions are added as needed.

Subclassed by faiss::simd16uint16, faiss::simd32uint8, faiss::simd8float32, faiss::simd8uint32

Public Functions

inline simd256bit()
inline explicit simd256bit(__m256i i)
inline explicit simd256bit(__m256 f)
inline explicit simd256bit(const void *x)
inline void clear()
inline void storeu(void *ptr) const
inline void loadu(const void *ptr)
inline void store(void *ptr) const
inline void bin(char bits[257]) const
inline std::string bin() const
inline simd256bit()
inline explicit simd256bit(const void *x)
inline void clear()
inline void storeu(void *ptr) const
inline void loadu(const void *ptr)
inline void store(void *ptr) const
inline void bin(char bits[257]) const
inline std::string bin() const

Public Members

__m256i i
__m256 f
union faiss::simd256bit::[anonymous] [anonymous]
uint8_t u8[32]
uint16_t u16[16]
uint32_t u32[8]
float f32[8]
union faiss::simd256bit::[anonymous] [anonymous]