Nektar++
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Functions | Variables
tinysimd Namespace Reference

Namespaces

namespace  abi
 
namespace  details
 

Classes

struct  first_not_void_of
 
struct  first_not_void_of< T, Rest... >
 
struct  first_not_void_of< void, Rest... >
 
struct  is_aligned_t
 
struct  is_load_tag
 
struct  is_not_aligned_t
 
struct  is_not_reused_t
 
struct  is_requiring_alignment
 
struct  is_streaming
 
struct  is_vector
 
struct  is_vector_floating_point
 
struct  is_vector_floating_point< T, typename std::enable_if< is_vector_v< T > >::type >
 
struct  is_vector_integral
 
struct  is_vector_integral< T, typename std::enable_if< is_vector_v< T > >::type >
 
struct  scalarMask
 
struct  scalarT
 

Typedefs

template<typename T , typename = typename std::enable_if<is_vector_v<T>>::type>
using allocator = boost::alignment::aligned_allocator< T, T::alignment >
 
template<typename ScalarType , int width = 0, template< typename, int > class abi = abi::default_abi>
using simd = typename abi< ScalarType, width >::type
 

Functions

template<class T , typename = typename std::enable_if<tinysimd::is_vector_v<T>>::type>
std::ostream & operator<< (std::ostream &os, const T &avec)
 
template<typename T >
scalarT< T > operator+ (scalarT< T > lhs, scalarT< T > rhs)
 
template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > operator+ (U lhs, scalarT< T > rhs)
 
template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > operator+ (scalarT< T > lhs, U rhs)
 
template<typename T >
scalarT< T > operator- (scalarT< T > lhs, scalarT< T > rhs)
 
template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > operator- (U lhs, scalarT< T > rhs)
 
template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > operator- (scalarT< T > lhs, U rhs)
 
template<typename T >
scalarT< T > operator- (scalarT< T > in)
 
template<typename T >
scalarT< T > operator* (scalarT< T > lhs, scalarT< T > rhs)
 
template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > operator* (U lhs, scalarT< T > rhs)
 
template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > operator* (scalarT< T > lhs, U rhs)
 
template<typename T >
scalarT< T > operator/ (scalarT< T > lhs, scalarT< T > rhs)
 
template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > operator/ (U lhs, scalarT< T > rhs)
 
template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > operator/ (scalarT< T > lhs, U rhs)
 
template<typename T >
scalarT< T > sqrt (scalarT< T > in)
 
template<typename T >
scalarT< T > abs (scalarT< T > in)
 
template<typename T >
scalarT< T > min (scalarT< T > lhs, scalarT< T > rhs)
 
template<typename T >
scalarT< T > max (scalarT< T > lhs, scalarT< T > rhs)
 
template<typename T >
scalarT< T > log (scalarT< T > in)
 
template<typename T >
void load_unalign_interleave (const T *in, const size_t dataLen, std::vector< scalarT< T >, allocator< scalarT< T > > > &out)
 
template<typename T >
void load_interleave (const T *in, const size_t dataLen, std::vector< scalarT< T >, allocator< scalarT< T > > > &out)
 
template<typename T >
void deinterleave_unalign_store (const std::vector< scalarT< T >, allocator< scalarT< T > > > &in, const size_t dataLen, T *out)
 
template<typename T >
void deinterleave_store (const std::vector< scalarT< T >, allocator< scalarT< T > > > &in, const size_t dataLen, T *out)
 
scalarMask operator> (scalarT< double > lhs, scalarT< double > rhs)
 
scalarMask operator> (scalarT< float > lhs, scalarT< float > rhs)
 
bool operator&& (scalarMask lhs, bool rhs)
 

Variables

static constexpr struct tinysimd::is_aligned_t is_aligned
 
static constexpr struct tinysimd::is_not_aligned_t is_not_aligned
 
static constexpr struct tinysimd::is_not_reused_t is_not_reused
 
template<class T >
constexpr bool is_load_tag_v = is_load_tag<T>::value
 
template<class T >
constexpr bool is_streaming_v = is_streaming<T>::value
 
template<class T >
constexpr bool is_requiring_alignment_v
 
template<class T >
constexpr bool is_vector_v = is_vector<T>::value
 
template<class T >
constexpr bool is_vector_floating_point_v
 
template<class T >
constexpr bool is_vector_integral_v = is_vector_integral<T>::value
 

Typedef Documentation

◆ allocator

template<typename T , typename = typename std::enable_if<is_vector_v<T>>::type>
using tinysimd::allocator = typedef boost::alignment::aligned_allocator<T, T::alignment>

Definition at line 48 of file allocator.hpp.

◆ simd

template<typename ScalarType , int width = 0, template< typename, int > class abi = abi::default_abi>
using tinysimd::simd = typedef typename abi<ScalarType, width>::type

Definition at line 80 of file tinysimd.hpp.

Function Documentation

◆ abs()

template<typename T >
scalarT< T > tinysimd::abs ( scalarT< T >  in)
inline

Definition at line 295 of file scalar.hpp.

296{
297 return std::abs(in._data);
298}
vectorType _data
Definition scalar.hpp:119

References tinysimd::scalarT< T, typename >::_data.

Referenced by Nektar::SimdLibTests::BOOST_AUTO_TEST_CASE(), Nektar::SimdLibTests::BOOST_AUTO_TEST_CASE(), Nektar::MultiRegions::LocTraceToTraceMap::CalcLocTracePhysToTraceIDMap_2D(), Nektar::MultiRegions::LocTraceToTraceMap::CalcLocTracePhysToTraceIDMap_3D(), Nektar::VortexWaveInteraction::CheckIfAtNeutralPoint(), CheckSingularQuads(), Nektar::SolverUtils::ForcingSyntheticEddy::ComputeGaussian(), Computestreakpositions(), Computestreakpositions(), Nektar::CoupledLocalToGlobalC0ContMap::CoupledLocalToGlobalC0ContMap(), Nektar::LibUtilities::NekLinSysIterGMRESLoc::DoGivensRotation(), Nektar::LibUtilities::NekLinSysIterGMRES::DoGivensRotation(), Nektar::SolverUtils::DriverSteadyState::EvalEV_ScalarSFD(), GenerateAddPointsNewtonIt(), Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetBandwidth(), Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetBandwidth(), Nektar::CompressibleFlowSystem::GetExactRinglebFlow(), Nektar::RedlichKwongEoS::GetTemperatureKernel(), Nektar::SolverUtils::DriverSteadyState::GradientDescentMethod(), main(), MappingEVids(), MoveLayersvertically(), MoveOutsidePointsfixedxpos(), MoveOutsidePointsNnormpos(), Nektar::CFSImplicit::PointFluxJacobianPoint(), Nektar::RoeKernel(), Nektar::RinglebFlowBC::v_Apply(), Nektar::SolverUtils::DriverAdaptive::v_Execute(), Nektar::SpatialDomains::Geometry2D::v_FindDistance(), Nektar::RedlichKwongEoS::v_GetEFromRhoP(), Nektar::RedlichKwongEoS::v_GetRhoFromPT(), Nektar::VanDerWaalsEoS::v_GetRhoFromPT(), and Nektar::MetricRegex::v_Test().

◆ deinterleave_store()

template<typename T >
void tinysimd::deinterleave_store ( const std::vector< scalarT< T >, allocator< scalarT< T > > > &  in,
const size_t  dataLen,
T *  out 
)
inline

Definition at line 348 of file scalar.hpp.

351{
352 for (size_t i = 0; i < dataLen; ++i)
353 {
354 out[i] = in[i]._data;
355 }
356}

Referenced by Nektar::SimdLibTests::BOOST_AUTO_TEST_CASE(), and Nektar::SimdLibTests::BOOST_AUTO_TEST_CASE().

◆ deinterleave_unalign_store()

template<typename T >
void tinysimd::deinterleave_unalign_store ( const std::vector< scalarT< T >, allocator< scalarT< T > > > &  in,
const size_t  dataLen,
T *  out 
)
inline

Definition at line 337 of file scalar.hpp.

340{
341 for (size_t i = 0; i < dataLen; ++i)
342 {
343 out[i] = in[i]._data;
344 }
345}

◆ load_interleave()

template<typename T >
void tinysimd::load_interleave ( const T *  in,
const size_t  dataLen,
std::vector< scalarT< T >, allocator< scalarT< T > > > &  out 
)
inline

Definition at line 327 of file scalar.hpp.

329{
330 for (size_t i = 0; i < dataLen; ++i)
331 {
332 out[i] = in[i];
333 }
334}

Referenced by Nektar::SimdLibTests::BOOST_AUTO_TEST_CASE(), and Nektar::SimdLibTests::BOOST_AUTO_TEST_CASE().

◆ load_unalign_interleave()

template<typename T >
void tinysimd::load_unalign_interleave ( const T *  in,
const size_t  dataLen,
std::vector< scalarT< T >, allocator< scalarT< T > > > &  out 
)
inline

Definition at line 316 of file scalar.hpp.

319{
320 for (size_t i = 0; i < dataLen; ++i)
321 {
322 out[i] = in[i];
323 }
324}

◆ log()

template<typename T >
scalarT< T > tinysimd::log ( scalarT< T >  in)
inline

◆ max()

template<typename T >
scalarT< T > tinysimd::max ( scalarT< T >  lhs,
scalarT< T >  rhs 
)
inline

Definition at line 305 of file scalar.hpp.

306{
307 return std::max(lhs._data, rhs._data);
308}

References tinysimd::scalarT< T, typename >::_data, and max().

Referenced by Nektar::MultiRegions::AssemblyCommDG::AssemblyCommDG(), Nektar::MultiRegions::PreconditionerBlock::BlockPreconditionerCG(), Nektar::LibUtilities::NekNonlinSysIterNewton::CalcInexactNewtonForcing(), Nektar::LibUtilities::checked_cast(), Nektar::LibUtilities::H5::DataSpace::DataSpace(), Nektar::MultiRegions::DisContField::FindPeriodicTraces(), Nektar::FieldUtils::ProcessEquiSpacedOutput::GenOrthoModes(), Nektar::SpatialDomains::Geometry::GetBoundingBox(), Nektar::StdRegions::StdPyrExp::GetMode(), Nektar::MultiRegions::BottomUpSubStructuredGraph::GetNlevels(), Nektar::FieldUtils::ProcessQualityMetric::GetQ(), Nektar::Collections::HexIProduct(), Nektar::FieldUtils::Interpolator< T >::Interpolate(), Nektar::FieldUtils::Interpolator< T >::Interpolate(), Nektar::Collections::IProductWRTBase_SumFac_Hex::IProductWRTBase_SumFac_Hex(), Nektar::Collections::IProductWRTBase_SumFac_Prism::IProductWRTBase_SumFac_Prism(), Nektar::Collections::IProductWRTBase_SumFac_Pyr::IProductWRTBase_SumFac_Pyr(), Nektar::Collections::IProductWRTBase_SumFac_Quad::IProductWRTBase_SumFac_Quad(), Nektar::Collections::IProductWRTBase_SumFac_Tet::IProductWRTBase_SumFac_Tet(), Nektar::Collections::IProductWRTBase_SumFac_Tri::IProductWRTBase_SumFac_Tri(), Nektar::Collections::IProductWRTDerivBase_SumFac_Hex::IProductWRTDerivBase_SumFac_Hex(), Nektar::Collections::IProductWRTDerivBase_SumFac_Prism::IProductWRTDerivBase_SumFac_Prism(), Nektar::Collections::IProductWRTDerivBase_SumFac_Pyr::IProductWRTDerivBase_SumFac_Pyr(), Nektar::Collections::IProductWRTDerivBase_SumFac_Quad::IProductWRTDerivBase_SumFac_Quad(), Nektar::Collections::IProductWRTDerivBase_SumFac_Tet::IProductWRTDerivBase_SumFac_Tet(), Nektar::Collections::IProductWRTDerivBase_SumFac_Tri::IProductWRTDerivBase_SumFac_Tri(), Nektar::NekMatrix< NekMatrix< DataType, InnerMatrixType >, BlockMatrixTag >::iterator_base< MatrixType >::iterator_base(), Nektar::NekMatrix< DataType, StandardMatrixTag >::iterator_impl< T, MatrixType >::iterator_impl(), Nektar::CellModel::LoadCellModel(), MappingEVids(), max(), Nektar::NekMatrix< DataType, StandardMatrixTag >::NekMatrix(), Nektar::Collections::IProductWRTDerivBase_IterPerExp::operator()(), Nektar::Collections::IProductWRTDerivBase_SumFac_Quad::operator()(), Nektar::Collections::IProductWRTDerivBase_SumFac_Tri::operator()(), Nektar::Collections::IProductWRTDerivBase_SumFac_Hex::operator()(), Nektar::Collections::IProductWRTDerivBase_SumFac_Tet::operator()(), Nektar::Collections::IProductWRTDerivBase_SumFac_Prism::operator()(), Nektar::Collections::IProductWRTDerivBase_SumFac_Pyr::operator()(), Nektar::Collections::BwdTrans_SumFac_Pyr::operator()(), Orderfunctionx(), Nektar::FieldUtils::OutputFileBase::PrintErrorFromPts(), Nektar::Collections::PrismIProduct(), Nektar::Collections::PyrIProduct(), Nektar::Collections::QuadIProduct(), Nektar::FieldUtils::ProcessEquiSpacedOutput::SetHomogeneousConnectivity(), Nektar::FieldUtils::ProcessIsoContour::SetupIsoFromFieldPts(), Nektar::MultiRegions::PreconditionerLowEnergy::SetUpReferenceElements(), Nektar::Collections::CollectionOptimisation::SetWithTimings(), Nektar::SolverUtils::UnsteadySystem::SVVVarDiffCoeff(), Nektar::Collections::TetIProduct(), Nektar::CellModel::TimeIntegrate(), Nektar::Collections::TriIProduct(), Nektar::SpatialDomains::Movement::UpdateTransZoneBox(), Nektar::LocalRegions::NodalTriExp::v_AlignVectorToCollapsedDir(), Nektar::LocalRegions::TriExp::v_AlignVectorToCollapsedDir(), Nektar::MultiRegions::PreconditionerLowEnergy::v_BuildPreconditioner(), Nektar::StdRegions::StdPyrExp::v_BwdTrans_SumFacKernel(), Nektar::LocalRegions::NodalTriExp::v_ComputeTraceNormal(), Nektar::LocalRegions::QuadExp::v_ComputeTraceNormal(), Nektar::LocalRegions::TriExp::v_ComputeTraceNormal(), Nektar::StdRegions::StdHexExp::v_ExponentialFilter(), Nektar::StdRegions::StdQuadExp::v_ExponentialFilter(), Nektar::LocalRegions::TriExp::v_FwdTransBndConstrained(), Nektar::StdRegions::StdHexExp::v_GenMatrix(), Nektar::StdRegions::StdPrismExp::v_GenMatrix(), Nektar::StdRegions::StdQuadExp::v_GenMatrix(), Nektar::StdRegions::StdTetExp::v_GenMatrix(), Nektar::StdRegions::StdTriExp::v_GenMatrix(), Nektar::StdRegions::StdPyrExp::v_GetBoundaryMap(), Nektar::StdRegions::StdPyrExp::v_GetInteriorMap(), Nektar::LocalRegions::PrismExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::StdRegions::StdHexExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::StdRegions::StdQuadExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::StdRegions::StdTetExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::StdRegions::StdTriExp::v_GetSimplexEquiSpacedConnectivity(), Nektar::LocalRegions::NodalTriExp::v_GetTracePhysVals(), Nektar::LocalRegions::QuadExp::v_GetTracePhysVals(), Nektar::LocalRegions::TriExp::v_GetTracePhysVals(), Nektar::LocalRegions::QuadExp::v_GetTraceQFactors(), Nektar::StdRegions::StdExpansion2D::v_HelmholtzMatrixOp_MatFree(), Nektar::StdRegions::StdExpansion3D::v_HelmholtzMatrixOp_MatFree(), Nektar::StdRegions::StdPyrExp::v_IProductWRTBase_SumFacKernel(), Nektar::LocalRegions::NodalTriExp::v_IProductWRTDerivBase_SumFac(), Nektar::LocalRegions::TriExp::v_IProductWRTDerivBase_SumFac(), Nektar::StdRegions::StdTetExp::v_IProductWRTDerivBase_SumFac(), Nektar::StdRegions::StdTriExp::v_IProductWRTDerivBase_SumFac(), Nektar::LocalRegions::TriExp::v_IProductWRTDirectionalDerivBase_SumFac(), Nektar::StdRegions::StdExpansion2D::v_LaplacianMatrixOp_MatFree(), Nektar::LocalRegions::QuadExp::v_LaplacianMatrixOp_MatFree_Kernel(), Nektar::LocalRegions::TriExp::v_LaplacianMatrixOp_MatFree_Kernel(), Nektar::StdRegions::StdPyrExp::v_PhysEvaluateBasis(), Nektar::FieldUtils::ProcessBoundaryExtract::v_Process(), Nektar::FieldUtils::ProcessEquiSpacedOutput::v_Process(), Nektar::FieldUtils::ProcessForceDecomposeBnd::v_Process(), Nektar::StdRegions::StdPyrExp::v_ReduceOrderCoeffs(), Nektar::StdRegions::StdHexExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPrismExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPyrExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdQuadExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdTetExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdTriExp::v_SVVLaplacianFilter(), and Nektar::SpatialDomains::ZoneTranslate::ZoneTranslate().

◆ min()

template<typename T >
scalarT< T > tinysimd::min ( scalarT< T >  lhs,
scalarT< T >  rhs 
)
inline

Definition at line 300 of file scalar.hpp.

301{
302 return std::min(lhs._data, rhs._data);
303}

References tinysimd::scalarT< T, typename >::_data, and min().

Referenced by Nektar::MultiRegions::AssemblyCommDG::AssemblyCommDG(), Nektar::MultiRegions::AssemblyMapCG::AssemblyMapCG(), Nektar::MultiRegions::PreconditionerBlock::BlockPreconditionerCG(), Nektar::LibUtilities::NekNonlinSysIterNewton::CalcInexactNewtonForcing(), Nektar::LibUtilities::Interpolator::CalcWeights(), Nektar::LibUtilities::checked_cast(), Nektar::MultiRegions::AssemblyMapCG::CreateGraph(), Nektar::MultiRegions::DeterminePeriodicEdgeOrientId(), Nektar::SpatialDomains::Geometry::GetBoundingBox(), Nektar::FieldUtils::ProcessQualityMetric::GetQ(), min(), Nektar::LibUtilities::NekLinSysIterGMRES::NekLinSysIterGMRES(), Nektar::LibUtilities::NekLinSysIterGMRESLoc::NekLinSysIterGMRESLoc(), Nektar::MultiRegions::AssemblyMapCG::SetUpUniversalC0ContMap(), Nektar::SpatialDomains::Movement::UpdateTransZoneBox(), Nektar::LocalRegions::Expansion2D::v_AddEdgeNormBoundaryInt(), Nektar::MultiRegions::PreconditionerLowEnergy::v_BuildPreconditioner(), Nektar::SolverUtils::UnsteadySystem::v_DoSolve(), Nektar::LocalRegions::HexExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::PrismExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::PyrExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::QuadExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::SegExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::TetExp::v_ExtractDataToCoeffs(), Nektar::LocalRegions::TriExp::v_ExtractDataToCoeffs(), Nektar::StdRegions::StdPrismExp::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdPyrExp::v_GetElmtTraceToTraceMap(), Nektar::StdRegions::StdTetExp::v_GetElmtTraceToTraceMap(), Nektar::FieldUtils::ProcessPointDataToFld::v_Process(), Nektar::StdRegions::StdHexExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPrismExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdPyrExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdQuadExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdTetExp::v_SVVLaplacianFilter(), Nektar::StdRegions::StdTriExp::v_SVVLaplacianFilter(), Nektar::SolverUtils::StatLagrangianPoints::v_TimeAdvance(), and Nektar::SpatialDomains::ZoneTranslate::ZoneTranslate().

◆ operator&&()

bool tinysimd::operator&& ( scalarMask  lhs,
bool  rhs 
)
inline

Definition at line 405 of file scalar.hpp.

406{
407 return lhs._data && rhs;
408}

References tinysimd::scalarT< T, typename >::_data.

◆ operator*() [1/3]

template<typename T >
scalarT< T > tinysimd::operator* ( scalarT< T >  lhs,
scalarT< T >  rhs 
)
inline

Definition at line 255 of file scalar.hpp.

256{
257 return lhs._data * rhs._data;
258}

References tinysimd::scalarT< T, typename >::_data.

◆ operator*() [2/3]

template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > tinysimd::operator* ( scalarT< T >  lhs,
rhs 
)
inline

Definition at line 267 of file scalar.hpp.

268{
269 return lhs._data * rhs;
270}

References tinysimd::scalarT< T, typename >::_data.

◆ operator*() [3/3]

template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > tinysimd::operator* ( lhs,
scalarT< T >  rhs 
)
inline

Definition at line 261 of file scalar.hpp.

262{
263 return lhs * rhs._data;
264}

References tinysimd::scalarT< T, typename >::_data.

◆ operator+() [1/3]

template<typename T >
scalarT< T > tinysimd::operator+ ( scalarT< T >  lhs,
scalarT< T >  rhs 
)
inline

Definition at line 214 of file scalar.hpp.

215{
216 return lhs._data + rhs._data;
217}

References tinysimd::scalarT< T, typename >::_data.

◆ operator+() [2/3]

template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > tinysimd::operator+ ( scalarT< T >  lhs,
rhs 
)
inline

Definition at line 226 of file scalar.hpp.

227{
228 return lhs._data + rhs;
229}

References tinysimd::scalarT< T, typename >::_data.

◆ operator+() [3/3]

template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > tinysimd::operator+ ( lhs,
scalarT< T >  rhs 
)
inline

Definition at line 220 of file scalar.hpp.

221{
222 return lhs + rhs._data;
223}

References tinysimd::scalarT< T, typename >::_data.

◆ operator-() [1/4]

template<typename T >
scalarT< T > tinysimd::operator- ( scalarT< T >  in)
inline

Definition at line 249 of file scalar.hpp.

250{
251 return -in._data;
252}

References tinysimd::scalarT< T, typename >::_data.

◆ operator-() [2/4]

template<typename T >
scalarT< T > tinysimd::operator- ( scalarT< T >  lhs,
scalarT< T >  rhs 
)
inline

Definition at line 232 of file scalar.hpp.

233{
234 return lhs._data - rhs._data;
235}

References tinysimd::scalarT< T, typename >::_data.

◆ operator-() [3/4]

template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > tinysimd::operator- ( scalarT< T >  lhs,
rhs 
)
inline

Definition at line 244 of file scalar.hpp.

245{
246 return lhs._data - rhs;
247}

References tinysimd::scalarT< T, typename >::_data.

◆ operator-() [4/4]

template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > tinysimd::operator- ( lhs,
scalarT< T >  rhs 
)
inline

Definition at line 238 of file scalar.hpp.

239{
240 return lhs - rhs._data;
241}

References tinysimd::scalarT< T, typename >::_data.

◆ operator/() [1/3]

template<typename T >
scalarT< T > tinysimd::operator/ ( scalarT< T >  lhs,
scalarT< T >  rhs 
)
inline

Definition at line 273 of file scalar.hpp.

274{
275 return lhs._data / rhs._data;
276}

References tinysimd::scalarT< T, typename >::_data.

◆ operator/() [2/3]

template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > tinysimd::operator/ ( scalarT< T >  lhs,
rhs 
)
inline

Definition at line 285 of file scalar.hpp.

286{
287 return lhs._data / rhs;
288}

References tinysimd::scalarT< T, typename >::_data.

◆ operator/() [3/3]

template<typename T , typename U , typename = typename std::enable_if<std::is_arithmetic_v<U>>::type>
scalarT< T > tinysimd::operator/ ( lhs,
scalarT< T >  rhs 
)
inline

Definition at line 279 of file scalar.hpp.

280{
281 return lhs / rhs._data;
282}

References tinysimd::scalarT< T, typename >::_data.

◆ operator<<()

template<class T , typename = typename std::enable_if<tinysimd::is_vector_v<T>>::type>
std::ostream & tinysimd::operator<< ( std::ostream &  os,
const T &  avec 
)

Definition at line 48 of file io.hpp.

49{
50 // Note the type cast to 'unsigned int' is only necessary to
51 // overcome a bug in Centos 7 gcc 4.8.5 package
52 alignas((unsigned int)T::alignment) typename T::scalarArray tmp;
53 avec.store(tmp);
54 for (unsigned short i = 0; i < T::width; ++i)
55 {
56 os << tmp[i] << '\t';
57 }
58 return os;
59}

◆ operator>() [1/2]

scalarMask tinysimd::operator> ( scalarT< double >  lhs,
scalarT< double >  rhs 
)
inline

Definition at line 395 of file scalar.hpp.

396{
397 return lhs._data > rhs._data;
398}

References tinysimd::scalarT< T, typename >::_data.

◆ operator>() [2/2]

scalarMask tinysimd::operator> ( scalarT< float >  lhs,
scalarT< float >  rhs 
)
inline

Definition at line 400 of file scalar.hpp.

401{
402 return lhs._data > rhs._data;
403}

References tinysimd::scalarT< T, typename >::_data.

◆ sqrt()

template<typename T >
scalarT< T > tinysimd::sqrt ( scalarT< T >  in)
inline

Definition at line 290 of file scalar.hpp.

291{
292 return std::sqrt(in._data);
293}

References tinysimd::scalarT< T, typename >::_data.

Referenced by Nektar::NekMatrix< DataType, StandardMatrixTag >::AbsMaxtoMinEigenValueRatio(), Nektar::MMFAdvection::AdvectionBellPlane(), Nektar::MMFAdvection::AdvectionBellSphere(), Nektar::PengRobinsonEoS::Alpha(), Nektar::RedlichKwongEoS::Alpha(), Nektar::SimdLibTests::BOOST_AUTO_TEST_CASE(), Nektar::SimdLibTests::BOOST_AUTO_TEST_CASE(), Nektar::UnitTests::BOOST_AUTO_TEST_CASE(), Nektar::LibUtilities::NekNonlinSysIterNewton::CalcInexactNewtonForcing(), Nektar::VortexWaveInteraction::CalcL2ToLinfPressure(), Nektar::VortexWaveInteraction::CalcNonLinearWaveForce(), Nektar::CFSImplicit::CalcRefValues(), Nektar::SolverUtils::MMFSystem::CartesianToSpherical(), COMPBL(), Nektar::MMFAdvection::ComputeCirculatingArclength(), Nektar::SolverUtils::ForcingSyntheticEddy::ComputeGaussian(), Nektar::MMFSWE::Computehhuhvflux(), Nektar::SpatialDomains::GeomFactors::ComputePrincipleDirection(), Nektar::MMFMaxwell::ComputeRadCloak(), Computestreakpositions(), Nektar::SolverUtils::MMFSystem::ComputeZimYim(), Nektar::MultiRegions::PreconditionerLowEnergy::CreateRefPrismGeom(), Nektar::MultiRegions::PreconditionerLowEnergy::CreateRefPyrGeom(), Nektar::MultiRegions::PreconditionerLowEnergy::CreateRefTetGeom(), Nektar::SpatialDomains::PointGeom::dist(), Nektar::distanceBetween(), Nektar::LibUtilities::NekLinSysIterGMRES::DoArnoldi(), Nektar::LibUtilities::NekLinSysIterGMRESLoc::DoArnoldi(), Nektar::LibUtilities::NekLinSysIterCGLoc::DoConjugateGradient(), Nektar::LibUtilities::NekLinSysIterCG::DoConjugateGradient(), Nektar::LibUtilities::NekLinSysIterGMRESLoc::DoGivensRotation(), Nektar::LibUtilities::NekLinSysIterGMRES::DoGivensRotation(), Nektar::LibUtilities::NekLinSysIterGMRESLoc::DoGMRES(), Nektar::LibUtilities::NekLinSysIterGMRES::DoGMRES(), Nektar::LibUtilities::NekLinSysIterGMRES::DoGmresRestart(), Nektar::LibUtilities::NekLinSysIterGMRESLoc::DoGmresRestart(), Nektar::MultiRegions::GlobalLinSysIterative::DoProjection(), Nektar::SolverUtils::DriverSteadyState::EvalEV_ScalarSFD(), Nektar::IsentropicVortexBC::EvaluateIsentropicVortex(), Nektar::CompressibleFlowSystem::EvaluateIsentropicVortex(), Nektar::MMFSWE::EvaluateWaterDepth(), Nektar::LibUtilities::Interpreter::ExpressionEvaluator::ExpressionEvaluator(), Vmath::FillWhiteNoise(), Nektar::SolverUtils::FilterAeroForces::FilterAeroForces(), Nektar::MultiRegions::DisContField::FindPeriodicTraces(), Nektar::FieldUtils::ProcessPhiFromFile::FindShortestDist(), Nektar::LibUtilities::functions::functions(), Nektar::MMFMaxwell::GaussianPulse(), Nektar::LibUtilities::Basis::GenBasis(), Nektar::MMFMaxwell::GenerateSigmaPML(), Nektar::FieldUtils::ProcessBodyFittedVelocity::GenPntwiseBodyFittedCoordSys(), Nektar::PowerPressureArea::GetC0(), Nektar::VariableConverter::GetDynamicViscosity(), Nektar::CompressibleFlowSystem::GetExactRinglebFlow(), Nektar::SpatialDomains::QuadGeom::GetFaceOrientation(), Nektar::SolverUtils::MMFSystem::GetIncidentField(), Nektar::FieldUtils::ProcessCFL::GetMaxStdVelocity(), Nektar::UnsteadyAdvectionDiffusion::GetMaxStdVelocity(), Nektar::Extrapolate::GetMaxStdVelocity(), GetNewVertexLocation(), Nektar::FieldUtils::ProcessWallNormalData::GetNormals(), Nektar::FieldUtils::ProcessQualityMetric::GetQ(), Nektar::CompressibleSolver::GetRoeSoundSpeed(), Nektar::VariableConverter::GetSensor(), Nektar::PengRobinsonEoS::GetTemperatureKernel(), Nektar::RedlichKwongEoS::GetTemperatureKernel(), Nektar::FieldUtils::ProcessWSS::GetViscosity(), Nektar::SolverUtils::MMFSystem::GramSchumitz(), Nektar::guessp(), Nektar::StdRegions::StdExpansion::H1(), Nektar::FieldUtils::ProcessWallNormalData::isInProjectedArea2D(), Nektar::FieldUtils::ProcessWallNormalData::isInProjectedArea3D(), Nektar::StdRegions::StdExpansion::L2(), Nektar::L2Norm(), Nektar::NonlinearPeregrine::LaitoneSolitaryWave(), Nektar::MMFSWE::LaxFriedrichFlux(), Nektar::FieldUtils::ProcessBodyFittedVelocity::LocCoordForNearestPntOnBndElmt_2D(), Nektar::PengRobinsonEoS::LogTerm(), Nektar::Magnitude(), main(), MappingEVids(), Nektar::ShallowWaterSystem::MatrixMultiplyMatrixFree(), Nektar::CFSImplicit::MatrixMultiplyMatrixFreeCoeff(), Nektar::FieldUtils::MatSymEVals(), Nektar::MMFDiffusion::Morphogenesis(), Nektar::SpatialDomains::Geometry2D::NewtonIterationForLocCoord(), Nektar::SpatialDomains::Geometry3D::NewtonIterationForLocCoord(), Nektar::FieldUtils::ProcessWallNormalData::NewtonIterForLocCoordOnBndElmt(), OUTPUT(), Nektar::MMFDiffusion::PlanePhiWave(), Nektar::FieldUtils::ProcessBodyFittedVelocity::PntToBndElmtPntDistance(), Nektar::CFSImplicit::PointFluxJacobianPoint(), Nektar::prefun(), Nektar::MMFMaxwell::print_MMF(), Nektar::FieldUtils::OutputFileBase::PrintErrorFromPts(), Nektar::MMFMaxwell::Printout_SurfaceCurrent(), Nektar::MultiRegions::AssemblyMap::PrintStats(), Nektar::QInflow::Q_RiemannSolver(), Nektar::RCROutflow::R_RiemannSolver(), Nektar::ROutflow::R_RiemannSolver(), Nektar::LibUtilities::rad(), Nektar::MMFSWE::RiemannSolverHLLC(), Nektar::RoeKernel(), Nektar::SolverUtils::MMFSystem::RootMeanSquare(), Nektar::MMFSWE::RusanovFlux(), Nektar::FieldUtils::ProcessBodyFittedVelocity::ScaledCrosssProduct(), Nektar::SolverUtils::Newmark_BetaSolver::SetNewmarkBeta(), Nektar::SpatialDomains::PrismGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::PyrGeom::SetUpFaceOrientation(), Nektar::SpatialDomains::TetGeom::SetUpFaceOrientation(), Nektar::LibUtilities::DIRKTimeIntegrationScheme::SetupSchemeData(), Nektar::LibUtilities::IMEXdirkTimeIntegrationScheme::SetupSchemeData_2_2_2(), Nektar::LibUtilities::IMEXdirkTimeIntegrationScheme::SetupSchemeData_2_3_2(), Nektar::LibUtilities::IMEXdirkTimeIntegrationScheme::SetupSchemeData_2_3_3(), Nektar::LibUtilities::DIRKTimeIntegrationScheme::SetupSchemeDataESDIRK(), Nektar::IncNavierStokes::SetUpWomersley(), Nektar::IncNavierStokes::SetWomersleyBoundary(), Nektar::SpatialDomains::Geometry2D::SolveStraightEdgeQuad(), Nektar::MMFMaxwell::TestMaxwell1D(), Nektar::MMFMaxwell::TestMaxwell2DPEC(), Nektar::MMFMaxwell::TestMaxwell2DPMC(), Nektar::MMFSWE::TestVorticityComputation(), Nektar::MultiRegions::GlobalLinSysIterative::UpdateKnownSolutions(), Nektar::EnforceEntropyPressure::v_Apply(), Nektar::EnforceEntropyTotalEnthalpy::v_Apply(), Nektar::EnforceEntropyVelocity::v_Apply(), Nektar::RiemannInvariantBC::v_Apply(), Nektar::RinglebFlowBC::v_Apply(), Nektar::LocalRegions::NodalTriExp::v_ComputeTraceNormal(), Nektar::LocalRegions::QuadExp::v_ComputeTraceNormal(), Nektar::LocalRegions::TriExp::v_ComputeTraceNormal(), Nektar::LocalRegions::HexExp::v_ComputeTraceNormal(), Nektar::LocalRegions::PrismExp::v_ComputeTraceNormal(), Nektar::LocalRegions::PyrExp::v_ComputeTraceNormal(), Nektar::LocalRegions::TetExp::v_ComputeTraceNormal(), Nektar::LocalRegions::SegExp::v_ComputeTraceNormal(), Nektar::SpatialDomains::RefRegionCylinder::v_Contains(), Nektar::SpatialDomains::RefRegionParallelogram::v_Contains(), Nektar::AInflow::v_DoBoundary(), Nektar::LibUtilities::NekLinSysIterFixedpointJacobi::v_DoIterate(), Nektar::LinearElasticSystem::v_DoSolve(), Nektar::MMFMaxwell::v_DoSolve(), Nektar::SpatialDomains::QuadGeom::v_FillGeom(), Nektar::SpatialDomains::TriGeom::v_FillGeom(), Nektar::SpatialDomains::Geometry2D::v_FindDistance(), Nektar::SpatialDomains::SegGeom::v_FindDistance(), Nektar::BetaPressureArea::v_GetAFromChars(), Nektar::EmpiricalPressureArea::v_GetAFromChars(), Nektar::TemplatePressureArea::v_GetAFromChars(), Nektar::BetaPressureArea::v_GetC(), Nektar::EmpiricalPressureArea::v_GetC(), Nektar::EmpiricalPressureArea::v_GetCharIntegral(), Nektar::PengRobinsonEoS::v_GetDPDe_rho(), Nektar::PengRobinsonEoS::v_GetDPDrho_e(), Nektar::PengRobinsonEoS::v_GetEFromRhoP(), Nektar::RedlichKwongEoS::v_GetEFromRhoP(), Nektar::PengRobinsonEoS::v_GetEntropy(), Nektar::SpatialDomains::Geometry1D::v_GetLocCoords(), Nektar::SpatialDomains::Geometry2D::v_GetLocCoords(), Nektar::AcousticSystem::v_GetMaxStdVelocity(), Nektar::CompressibleFlowSystem::v_GetMaxStdVelocity(), Nektar::BetaPressureArea::v_GetPressure(), Nektar::EmpiricalPressureArea::v_GetPressure(), Nektar::PowerPressureArea::v_GetPressure(), Nektar::IdealGasEoS::v_GetSoundSpeed(), Nektar::LocalRegions::QuadExp::v_GetTraceQFactors(), Nektar::SolverUtils::EquationSystem::v_H1Error(), Nektar::MMFDiffusion::v_InitObject(), Nektar::CFSImplicit::v_InitObject(), Nektar::MMFMaxwell::v_InitObject(), Nektar::MultiRegions::ExpList3DHomogeneous1D::v_L2(), Nektar::MultiRegions::ExpList3DHomogeneous2D::v_L2(), Nektar::MMFSWE::v_L2Error(), Nektar::SolverUtils::EquationSystem::v_L2Error(), Nektar::PulseWaveSystem::v_L2Error(), Nektar::LibUtilities::NodalUtilTriangle::v_ModeZeroIntegral(), Nektar::LibUtilities::NodalUtilTetrahedron::v_ModeZeroIntegral(), Nektar::LibUtilities::NodalUtilPrism::v_ModeZeroIntegral(), Nektar::LibUtilities::NodalUtilTriangle::v_OrthoBasis(), Nektar::LibUtilities::NodalUtilTetrahedron::v_OrthoBasis(), Nektar::LibUtilities::NodalUtilPrism::v_OrthoBasis(), Nektar::LibUtilities::NodalUtilTriangle::v_OrthoBasisDeriv(), Nektar::LibUtilities::NodalUtilTetrahedron::v_OrthoBasisDeriv(), Nektar::LibUtilities::NodalUtilPrism::v_OrthoBasisDeriv(), Nektar::Dummy::v_Output(), Nektar::SolverUtils::StatLagrangianPoints::v_OutputError(), Nektar::StdRegions::StdPrismExp::v_PhysEvaluateBasis(), Nektar::StdRegions::StdTetExp::v_PhysEvaluateBasis(), Nektar::StdRegions::StdTriExp::v_PhysEvaluateBasis(), Nektar::HLLSolver::v_PointSolve(), Nektar::LaxFriedrichsSolver::v_PointSolve(), Nektar::LinearHLLSolver::v_PointSolve(), Nektar::HLLCSolver::v_PointSolve(), Nektar::HLLSolver::v_PointSolve(), Nektar::LaxFriedrichsSolver::v_PointSolve(), Nektar::LEELaxFriedrichsSolver::v_PointSolve(), Nektar::LEEUpwindSolver::v_PointSolve(), Nektar::APELaxFriedrichsSolver::v_PointSolve(), Nektar::APEUpwindSolver::v_PointSolve(), Nektar::ExactSolverToro::v_PointSolve(), Nektar::HLLCSolver::v_PointSolve(), Nektar::FieldUtils::ProcessBodyFittedVelocity::v_Process(), Nektar::FieldUtils::ProcessMultiShear::v_Process(), Nektar::FieldUtils::ProcessVortexInducedVelocity::v_Process(), Nektar::FieldUtils::ProcessWallNormalData::v_Process(), Nektar::APE::v_RiemannInvariantBC(), Nektar::LEE::v_RiemannInvariantBC(), Nektar::LibUtilities::NekNonlinSysIterNewton::v_SolveSystem(), Nektar::SolverUtils::UnsteadySystem::v_SteadyStateResidual(), Nektar::CompressibleFlowSystem::v_SteadyStateResidual(), Nektar::LocalRegions::HexExp::v_SVVLaplacianFilter(), Nektar::LocalRegions::PrismExp::v_SVVLaplacianFilter(), Nektar::LocalRegions::PyrExp::v_SVVLaplacianFilter(), Nektar::LocalRegions::QuadExp::v_SVVLaplacianFilter(), Nektar::LocalRegions::TetExp::v_SVVLaplacianFilter(), Nektar::LocalRegions::TriExp::v_SVVLaplacianFilter(), Nektar::LocalRegions::Expansion2D::v_TraceNormLen(), Nektar::LocalRegions::Expansion3D::v_TraceNormLen(), Nektar::CourtemancheRamirezNattel98::v_Update(), Nektar::Fox02::v_Update(), Nektar::LuoRudy91::v_Update(), Nektar::TenTusscher06::v_Update(), Nektar::Winslow99::v_Update(), Nektar::FieldUtils::ProcessPhiFromFile::Vector2edge(), Vmath::Vsqrt(), and Nektar::AcousticSystem::WhiteNoiseBC().

Variable Documentation

◆ is_aligned

constexpr struct tinysimd::is_aligned_t tinysimd::is_aligned
static

◆ is_load_tag_v

template<class T >
constexpr bool tinysimd::is_load_tag_v = is_load_tag<T>::value
inlineconstexpr

Definition at line 84 of file traits.hpp.

◆ is_not_aligned

constexpr struct tinysimd::is_not_aligned_t tinysimd::is_not_aligned
static

◆ is_not_reused

constexpr struct tinysimd::is_not_reused_t tinysimd::is_not_reused
static

◆ is_requiring_alignment_v

template<class T >
constexpr bool tinysimd::is_requiring_alignment_v
inlineconstexpr
Initial value:
=
is_requiring_alignment<T>::value

Definition at line 88 of file traits.hpp.

◆ is_streaming_v

template<class T >
constexpr bool tinysimd::is_streaming_v = is_streaming<T>::value
inlineconstexpr

Definition at line 86 of file traits.hpp.

◆ is_vector_floating_point_v

template<class T >
constexpr bool tinysimd::is_vector_floating_point_v
inlineconstexpr
Initial value:
=
is_vector_floating_point<T>::value

Definition at line 161 of file traits.hpp.

Referenced by Nektar::SimdLibTests::BOOST_AUTO_TEST_CASE(), and Nektar::SimdLibTests::BOOST_AUTO_TEST_CASE().

◆ is_vector_integral_v

template<class T >
constexpr bool tinysimd::is_vector_integral_v = is_vector_integral<T>::value
inlineconstexpr

Definition at line 178 of file traits.hpp.

◆ is_vector_v

template<class T >
constexpr bool tinysimd::is_vector_v = is_vector<T>::value
inlineconstexpr

Definition at line 142 of file traits.hpp.