16#ifndef Simd_VectorArray_template_included
17#define Simd_VectorArray_template_included
19#include <Simd_template.h>
20#include <FixedVector.h>
25template<
typename _TYPE_,
int N,
int VectorSize>
31 assert(vector_index >= 0 && vector_index < N && component >= 0 && component < VectorSize);
32 return data_[component][vector_index];
35 const _TYPE_&
operator()(
int vector_index,
int component)
const
37 assert(vector_index >= 0 && vector_index < N && component >= 0 && component < VectorSize);
38 return data_[component][vector_index];
43 assert(vector_index >= 0 && vector_index < N && component >= 0 && component < VectorSize);
49 assert(vector_index >= 0 && vector_index < N && component >= 0 && component < VectorSize);
55 assert(i >= 0 && i < N);
57 for (
int j = 0; j < VectorSize; j++) v[j] =
::SimdGet(
data_[j] + i);
Simd_template< _TYPE_ > SimdGet(int vector_index, int component) const
_TYPE_ & operator()(int vector_index, int component)
const _TYPE_ & operator()(int vector_index, int component) const
void SimdPut(int vector_index, int component, const Simd_template< _TYPE_ > &x)
FixedVector< Simd_template< _TYPE_ >, VectorSize > SimdGetVector(int i)
This class provides a generic access to simd operations on x86, x86 AMD and ARM architectures.