PeTar
N-body code for collisional gravitational systems
phantomquad_for_p3t_x86.hpp File Reference
#include <cassert>
#include <immintrin.h>
Include dependency graph for phantomquad_for_p3t_x86.hpp:

Go to the source code of this file.

Classes

class  PhantomGrapeQuad
 

Macros

#define _mm256_fmadd_ps(x, y, z)   _mm256_add_ps(z, _mm256_mul_ps(x,y))
 
#define _mm256_fnmadd_ps(x, y, z)   _mm256_sub_ps(z, _mm256_mul_ps(x,y))
 
#define _mm512_fmadd_ps(x, y, z)   _mm512_add_ps(z, _mm512_mul_ps(x,y))
 
#define _mm512_fnmadd_ps(x, y, z)   _mm512_sub_ps(z, _mm512_mul_ps(x,y))
 

Enumerations

enum  { NIMAX = 16384, NJMAX = 131072 }
 

Functions

class PhantomGrapeQuad __attribute__ ((aligned(128)))
 
 PhantomGrapeQuad ()
 
void set_eps2 (const double _eps2)
 
void set_r_crit2 (const double _r_crit2)
 
void set_epj_one (const int addr, const double x, const double y, const double z, const double m, const double r_search)
 
void set_spj_one (const int addr, const double x, const double y, const double z, const double m, const double qxx, const double qyy, const double qzz, const double qxy, const double qyz, const double qzx)
 
void set_xi_one (const int addr, const double x, const double y, const double z, const double r_search)
 
template<typename real_t >
void accum_accp_one (const int addr, real_t &ax, real_t &ay, real_t &az, real_t &pot)
 
template<typename real_t >
void accum_accp_one (const int addr, real_t &ax, real_t &ay, real_t &az, real_t &pot, real_t &nngb)
 
template<typename real_t >
void accum_accp_one (const int addr, real_t &nngb)
 
template<typename real_t >
void get_accp_one (const int addr, real_t &ax, real_t &ay, real_t &az, real_t &pot, real_t &nngb)
 
void run_epj_for_p3t_with_linear_cutoff (const int ni, const int nj)
 
void run_epj_for_neighbor_count (const int ni, const int nj)
 
void run_epj (const int ni, const int nj)
 
void run_spj (const int ni, const int nj)
 

Macro Definition Documentation

◆ _mm256_fmadd_ps

#define _mm256_fmadd_ps (   x,
  y,
 
)    _mm256_add_ps(z, _mm256_mul_ps(x,y))

◆ _mm256_fnmadd_ps

#define _mm256_fnmadd_ps (   x,
  y,
 
)    _mm256_sub_ps(z, _mm256_mul_ps(x,y))

◆ _mm512_fmadd_ps

#define _mm512_fmadd_ps (   x,
  y,
 
)    _mm512_add_ps(z, _mm512_mul_ps(x,y))

◆ _mm512_fnmadd_ps

#define _mm512_fnmadd_ps (   x,
  y,
 
)    _mm512_sub_ps(z, _mm512_mul_ps(x,y))

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
NIMAX 
NJMAX 

Function Documentation

◆ __attribute__()

class PhantomGrapeQuad __attribute__ ( (aligned(128))  )

◆ accum_accp_one() [1/3]

template<typename real_t >
void __attribute__::accum_accp_one ( const int  addr,
real_t &  ax,
real_t &  ay,
real_t &  az,
real_t &  pot 
)

◆ accum_accp_one() [2/3]

template<typename real_t >
void __attribute__::accum_accp_one ( const int  addr,
real_t &  ax,
real_t &  ay,
real_t &  az,
real_t &  pot,
real_t &  nngb 
)

◆ accum_accp_one() [3/3]

template<typename real_t >
void __attribute__::accum_accp_one ( const int  addr,
real_t &  nngb 
)

◆ get_accp_one()

template<typename real_t >
void __attribute__::get_accp_one ( const int  addr,
real_t &  ax,
real_t &  ay,
real_t &  az,
real_t &  pot,
real_t &  nngb 
)

◆ PhantomGrapeQuad()

__attribute__::PhantomGrapeQuad ( )

◆ run_epj()

void __attribute__::run_epj ( const int  ni,
const int  nj 
)

◆ run_epj_for_neighbor_count()

void __attribute__::run_epj_for_neighbor_count ( const int  ni,
const int  nj 
)

◆ run_epj_for_p3t_with_linear_cutoff()

void __attribute__::run_epj_for_p3t_with_linear_cutoff ( const int  ni,
const int  nj 
)

◆ run_spj()

void __attribute__::run_spj ( const int  ni,
const int  nj 
)

◆ set_epj_one()

void __attribute__::set_epj_one ( const int  addr,
const double  x,
const double  y,
const double  z,
const double  m,
const double  r_search 
)

◆ set_eps2()

void __attribute__::set_eps2 ( const double  _eps2)

◆ set_r_crit2()

void __attribute__::set_r_crit2 ( const double  _r_crit2)

◆ set_spj_one()

void __attribute__::set_spj_one ( const int  addr,
const double  x,
const double  y,
const double  z,
const double  m,
const double  qxx,
const double  qyy,
const double  qzz,
const double  qxy,
const double  qyz,
const double  qzx 
)

◆ set_xi_one()

void __attribute__::set_xi_one ( const int  addr,
const double  x,
const double  y,
const double  z,
const double  r_search 
)