37 static const int BLOCK_SIZE = 4;
53 : v0(
_mm_set_epi32(base[idx[3]],base[idx[2]],base[idx[1]],base[idx[0]])) {}
58 Int32 operator[](Integer i)
const {
return ((
const Int32*)&v0)[i]; }
59 Int32& operator[](Integer i) {
return ((Int32*)&v0)[i]; }
61 void set(ARCANE_RESTRICT Int32* base,
const ARCANE_RESTRICT Int32* idx)
const
63 const Int32* x = (
const Int32*)(
this);
70 void set(ARCANE_RESTRICT Int32* base)
const
82 void operator=(Int32
_v);
97 static const int BLOCK_SIZE = 2;
115 : v0(
_mm_set_pd(base[idx[1]],base[idx[0]])) { }
118 const Int32* idx = (
const Int32*)
simd_idx;
123 const Int32* idx = (
const Int32*)&
simd_idx;
131 Real operator[](Integer i)
const {
return ((
const Real*)&v0)[i]; }
132 Real& operator[](Integer i) {
return ((Real*)&v0)[i]; }
134 void set(ARCANE_RESTRICT Real* base,
const ARCANE_RESTRICT Int32* idx)
const
136 const Real* x = (
const Real*)(
this);
148 const Int32* idx = (
const ARCANE_RESTRICT Int32*)
simd_idx;
149 const Real* x = (
const Real*)(
this);
154 void set(ARCANE_RESTRICT Real* base)
const
171 void operator=(Real
_v);
186 static const int BLOCK_SIZE = 4;
221 Real operator[](Integer i)
const {
return ((
const Real*)&v0)[i]; }
222 Real& operator[](Integer i) {
return ((Real*)&v0)[i]; }
224 void set(ARCANE_RESTRICT Real* base,
const ARCANE_RESTRICT Int32* idx)
const
226 const Real* x = (
const Real*)(
this);
235 this->set(base,(
const Int32*)&
simd_idx);
240 this->set(base,(
const Int32*)
simd_idx);
243 void set(ARCANE_RESTRICT Real* base)
const
261 void operator=(Real
_v);
273 static const int BLOCK_SIZE = 8;
301 Real operator[](Integer i)
const {
return ((
const Real*)&v0)[i]; }
302 Real& operator[](Integer i) {
return ((Real*)&v0)[i]; }
304 void set(ARCANE_RESTRICT Real* base,
const ARCANE_RESTRICT Int32* idx)
const
306 const Real* x = (
const Real*)(
this);
331 void operator=(Real
_v);