51static FUNC_PREFIX void updatevelfrompdfsingleprecisionavx_updatevelfrompdfsingleprecisionavx(
float *
RESTRICT const _data_force,
float *
RESTRICT const _data_pdfs,
float *
RESTRICT _data_velocity,
int64_t const _size_force_0,
int64_t const _size_force_1,
int64_t const _size_force_2,
int64_t const _stride_force_1,
int64_t const _stride_force_2,
int64_t const _stride_force_3,
int64_t const _stride_pdfs_1,
int64_t const _stride_pdfs_2,
int64_t const _stride_pdfs_3,
int64_t const _stride_velocity_1,
int64_t const _stride_velocity_2,
int64_t const _stride_velocity_3) {
57#pragma omp for schedule(static)
64 const __m256 momdensity_0 =
_mm256_add_ps(
_mm256_add_ps(
_mm256_add_ps(
_mm256_add_ps(
_mm256_add_ps(
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + 3 * _stride_pdfs_3 +
ctr_0 + 1])),
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 7 * _stride_pdfs_3 +
ctr_0 + 1]))),
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 13 * _stride_pdfs_3 +
ctr_0 + 1]))),
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 9 * _stride_pdfs_3 +
ctr_0 + 1]))),
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 17 * _stride_pdfs_3 +
ctr_0 + 1]))),
vel0Term);
66 const __m256 momdensity_1 =
_mm256_add_ps(
_mm256_add_ps(
_mm256_add_ps(
_mm256_add_ps(
_mm256_add_ps(
_mm256_add_ps(
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 2 * _stride_pdfs_3 +
ctr_0])),
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 9 * _stride_pdfs_3 +
ctr_0 + 1]))),
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 10 * _stride_pdfs_3 +
ctr_0 - 1]))),
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 12 * _stride_pdfs_3 +
ctr_0]))),
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 16 * _stride_pdfs_3 +
ctr_0]))),
vel1Term),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 8 * _stride_pdfs_3 +
ctr_0 - 1]));
69 const __m256 momdensity_2 =
_mm256_add_ps(
_mm256_add_ps(
_mm256_add_ps(
_mm256_add_ps(
_mm256_add_ps(
_mm256_add_ps(
_mm256_add_ps(
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 6 * _stride_pdfs_3 +
ctr_0])),
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 17 * _stride_pdfs_3 +
ctr_0 + 1]))),
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 18 * _stride_pdfs_3 +
ctr_0 - 1]))),
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 15 * _stride_pdfs_3 +
ctr_0]))),
_mm256_mul_ps(
_mm256_set_ps(-1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f, -1.0f),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 16 * _stride_pdfs_3 +
ctr_0]))),
vel2Term),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 14 * _stride_pdfs_3 +
ctr_0 - 1])),
_mm256_loadu_ps(&_data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 11 * _stride_pdfs_3 +
ctr_0]));
71 const __m256 u_0 =
_mm256_add_ps(
_mm256_mul_ps(
momdensity_0,
_mm256_div_ps(
_mm256_set_ps(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f),
rho)),
_mm256_mul_ps(
_mm256_mul_ps(
_mm256_set_ps(0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f),
_mm256_div_ps(
_mm256_set_ps(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f),
rho)),
_mm256_load_ps(&
_data_force[_stride_force_1 *
ctr_1 + _stride_force_2 *
ctr_2 +
ctr_0])));
72 const __m256 u_1 =
_mm256_add_ps(
_mm256_mul_ps(
momdensity_1,
_mm256_div_ps(
_mm256_set_ps(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f),
rho)),
_mm256_mul_ps(
_mm256_mul_ps(
_mm256_set_ps(0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f),
_mm256_div_ps(
_mm256_set_ps(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f),
rho)),
_mm256_loadu_ps(&
_data_force[_stride_force_1 *
ctr_1 + _stride_force_2 *
ctr_2 + _stride_force_3 +
ctr_0])));
73 const __m256 u_2 =
_mm256_add_ps(
_mm256_mul_ps(
momdensity_2,
_mm256_div_ps(
_mm256_set_ps(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f),
rho)),
_mm256_mul_ps(
_mm256_mul_ps(
_mm256_set_ps(0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f),
_mm256_div_ps(
_mm256_set_ps(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f),
rho)),
_mm256_loadu_ps(&
_data_force[_stride_force_1 *
ctr_1 + _stride_force_2 *
ctr_2 + 2 * _stride_force_3 +
ctr_0])));
79 const float vel0Term = _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 10 * _stride_pdfs_3 +
ctr_0 - 1] + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + 4 * _stride_pdfs_3 +
ctr_0 - 1] + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 18 * _stride_pdfs_3 +
ctr_0 - 1] + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 14 * _stride_pdfs_3 +
ctr_0 - 1] + _data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 8 * _stride_pdfs_3 +
ctr_0 - 1];
80 const float momdensity_0 =
vel0Term - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 9 * _stride_pdfs_3 +
ctr_0 + 1] - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + 3 * _stride_pdfs_3 +
ctr_0 + 1] - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 17 * _stride_pdfs_3 +
ctr_0 + 1] - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 13 * _stride_pdfs_3 +
ctr_0 + 1] - _data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 7 * _stride_pdfs_3 +
ctr_0 + 1];
81 const float vel1Term = _data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 7 * _stride_pdfs_3 +
ctr_0 + 1] + _data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 15 * _stride_pdfs_3 +
ctr_0] + _data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_3 +
ctr_0] + _data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 11 * _stride_pdfs_3 +
ctr_0];
82 const float momdensity_1 =
vel1Term - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 10 * _stride_pdfs_3 +
ctr_0 - 1] - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 2 * _stride_pdfs_3 +
ctr_0] - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 9 * _stride_pdfs_3 +
ctr_0 + 1] - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 16 * _stride_pdfs_3 +
ctr_0] - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 12 * _stride_pdfs_3 +
ctr_0] + _data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 8 * _stride_pdfs_3 +
ctr_0 - 1];
83 const float vel2Term = _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 12 * _stride_pdfs_3 +
ctr_0] + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 13 * _stride_pdfs_3 +
ctr_0 + 1] + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 5 * _stride_pdfs_3 +
ctr_0];
84 const float delta_rho =
vel0Term +
vel1Term +
vel2Term + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 2 * _stride_pdfs_3 +
ctr_0] + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + 9 * _stride_pdfs_3 +
ctr_0 + 1] + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 16 * _stride_pdfs_3 +
ctr_0] + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + 3 * _stride_pdfs_3 +
ctr_0 + 1] + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 17 * _stride_pdfs_3 +
ctr_0 + 1] + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 6 * _stride_pdfs_3 +
ctr_0] + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 +
ctr_0];
85 const float momdensity_2 =
vel2Term - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 16 * _stride_pdfs_3 +
ctr_0] - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 17 * _stride_pdfs_3 +
ctr_0 + 1] - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 18 * _stride_pdfs_3 +
ctr_0 - 1] - _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 6 * _stride_pdfs_3 +
ctr_0] + _data_pdfs[_stride_pdfs_1 *
ctr_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 14 * _stride_pdfs_3 +
ctr_0 - 1] - _data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 + _stride_pdfs_2 + 15 * _stride_pdfs_3 +
ctr_0] + _data_pdfs[_stride_pdfs_1 *
ctr_1 - _stride_pdfs_1 + _stride_pdfs_2 *
ctr_2 - _stride_pdfs_2 + 11 * _stride_pdfs_3 +
ctr_0];
91 _data_velocity[_stride_velocity_1 *
ctr_1 + _stride_velocity_2 *
ctr_2 + _stride_velocity_3 +
ctr_0] =
u_1;
92 _data_velocity[_stride_velocity_1 *
ctr_1 + _stride_velocity_2 *
ctr_2 + 2 * _stride_velocity_3 +
ctr_0] =
u_2;