12#ifndef ARCANE_UTILS_SIMDOPERATION_H
13#define ARCANE_UTILS_SIMDOPERATION_H
28#if defined(ARCANE_HAS_AVX512)
29#include "arcane/utils/SimdAVX512Generated.h"
31#if defined(ARCANE_HAS_AVX)
32#include "arcane/utils/SimdAVXGenerated.h"
34#if defined(ARCANE_HAS_SSE)
35#include "arcane/utils/SimdSSEGenerated.h"
38#include "arcane/utils/SimdEMULGenerated.h"
44operator+(
const SimdReal3& a,
const SimdReal3& b)
46 return SimdReal3(a.x + b.x,a.y + b.y,a.z + b.z);
50operator-(
const SimdReal3& a)
52 return SimdReal3(-a.x,-a.y,-a.z);
56operator-(
const SimdReal3& a,
const SimdReal3& b)
58 return SimdReal3(a.x - b.x,a.y - b.y,a.z - b.z);
62operator*(
const SimdReal3& a,
Real b)
64 return SimdReal3(a.x * b,a.y * b,a.z * b);
68operator*(
const SimdReal3& a,
const SimdReal& b)
70 return SimdReal3(a.x * b,a.y * b,a.z * b);
74operator*(
Real b,
const SimdReal3& a)
76 return SimdReal3(b * a.x,b * a.y,b * a.z);
80operator*(
const SimdReal& b,
const SimdReal3& a)
82 return SimdReal3(b * a.x,b * a.y,b * a.z);
86operator*(
const SimdReal3& a,
const SimdReal3& b)
88 return SimdReal3(a.x * b.x,a.y * b.y,a.z * b.z);
94 return SimdReal3(a.x / b,a.y / b,a.z / b);
100 return SimdReal3(a.x / b,a.y / b,a.z / b);
107operator+(
const SimdReal2& a,
const SimdReal2& b)
109 return SimdReal2(a.x + b.x,a.y + b.y);
113operator-(
const SimdReal2& a,
const SimdReal2& b)
115 return SimdReal2(a.x - b.x,a.y - b.y);
119operator*(
const SimdReal2& a,
Real b)
121 return SimdReal2(a.x * b,a.y * b);
125operator*(
Real b,
const SimdReal2& a)
127 return SimdReal2(b * a.x,b * a.y);
131operator*(
const SimdReal2& a,
const SimdReal2& b)
133 return SimdReal2(a.x * b.x,a.y * b.y);
139 return SimdReal2(a.x / b,a.y / b);
145 return SimdReal2(a.x / b,a.y / b);
152operator+(
const SimdReal3x3& a,
const SimdReal3x3& b)
154 return SimdReal3x3(a.x + b.x,a.y + b.y,a.z + b.z);
158operator-(
const SimdReal3x3& a)
160 return SimdReal3x3(-a.x,-a.y,-a.z);
164operator-(
const SimdReal3x3& a,
const SimdReal3x3& b)
166 return SimdReal3x3(a.x - b.x,a.y - b.y,a.z - b.z);
170operator*(
const SimdReal3x3& a,
Real b)
172 return SimdReal3x3(a.x * b,a.y * b,a.z * b);
176operator*(
const SimdReal3x3& a,
const SimdReal& b)
178 return SimdReal3x3(a.x * b,a.y * b,a.z * b);
182operator*(
Real b,
const SimdReal3x3& a)
184 return SimdReal3x3(b * a.x,b * a.y,b * a.z);
188operator*(
const SimdReal& b,
const SimdReal3x3& a)
190 return SimdReal3x3(b * a.x,b * a.y,b * a.z);
194operator*(
const SimdReal3x3& a,
const SimdReal3x3& b)
196 return SimdReal3x3(a.x * b.x,a.y * b.y,a.z * b.z);
202 return SimdReal3x3(a.x / b,a.y / b,a.z / b);
208 return SimdReal3x3(a.x / b,a.y / b,a.z / b);
215operator+(
const SimdReal2x2& a,
const SimdReal2x2& b)
217 return SimdReal2x2(a.x + b.x,a.y + b.y);
221operator-(
const SimdReal2x2& a,
const SimdReal2x2& b)
223 return SimdReal2x2(a.x - b.x,a.y - b.y);
227operator*(
const SimdReal2x2& a,
Real b)
229 return SimdReal2x2(a.x * b,a.y * b);
233operator*(
Real b,
const SimdReal2x2& a)
235 return SimdReal2x2(b * a.x,b * a.y);
239operator*(
const SimdReal2x2& a,
const SimdReal2x2& b)
241 return SimdReal2x2(a.x * b.x,a.y * b.y);
247 return SimdReal2x2(a.x / b,a.y / b);
253 return SimdReal2x2(a.x / b,a.y / b);
Lecteur des fichiers de maillage via la bibliothèque LIMA.
SimdInfo::SimdReal SimdReal
Vecteur SIMD de réel.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Real2 operator/(const Real2Proxy &vec, Real sca)
Division par un scalaire.