Container System 0.1.0
High-performance C++20 type-safe container framework with SIMD-accelerated serialization
Loading...
Searching...
No Matches
kcenon::container::simd::simd_ops< Policy > Class Template Reference

SIMD operations wrapper with compile-time policy selection. More...

#include <simd_policies.h>

Collaboration diagram for kcenon::container::simd::simd_ops< Policy >:
Collaboration graph

Public Member Functions

 simd_ops (Policy policy=Policy{}) noexcept
 
float sum_floats (const float *data, size_t count) const noexcept
 Sum all floats in an array.
 
float min_float (const float *data, size_t count) const noexcept
 Find minimum float in an array.
 
float max_float (const float *data, size_t count) const noexcept
 Find maximum float in an array.
 
double sum_doubles (const double *data, size_t count) const noexcept
 Sum all doubles in an array.
 

Static Public Member Functions

static constexpr std::string_view policy_name () noexcept
 Get the name of the active SIMD policy.
 
static constexpr size_t simd_width () noexcept
 Get the SIMD width (number of floats per operation)
 

Private Attributes

Policy policy_
 

Detailed Description

template<SimdPolicy Policy = default_simd_policy>
class kcenon::container::simd::simd_ops< Policy >

SIMD operations wrapper with compile-time policy selection.

Template Parameters
PolicySIMD policy class (must satisfy SimdPolicy concept)

Usage:

// Use default (best) policy for platform
// Use explicit scalar policy for testing
SIMD operations wrapper with compile-time policy selection.

Definition at line 621 of file simd_policies.h.

Constructor & Destructor Documentation

◆ simd_ops()

template<SimdPolicy Policy = default_simd_policy>
kcenon::container::simd::simd_ops< Policy >::simd_ops ( Policy policy = Policy{})
inlineexplicitnoexcept

Definition at line 623 of file simd_policies.h.

623 {}) noexcept
624 : policy_(std::move(policy)) {}

Member Function Documentation

◆ max_float()

template<SimdPolicy Policy = default_simd_policy>
float kcenon::container::simd::simd_ops< Policy >::max_float ( const float * data,
size_t count ) const
inlinenodiscardnoexcept

Find maximum float in an array.

Definition at line 657 of file simd_policies.h.

657 {
658 return policy_.max_float(data, count);
659 }

References kcenon::container::simd::simd_ops< Policy >::policy_.

◆ min_float()

template<SimdPolicy Policy = default_simd_policy>
float kcenon::container::simd::simd_ops< Policy >::min_float ( const float * data,
size_t count ) const
inlinenodiscardnoexcept

Find minimum float in an array.

Definition at line 650 of file simd_policies.h.

650 {
651 return policy_.min_float(data, count);
652 }

References kcenon::container::simd::simd_ops< Policy >::policy_.

◆ policy_name()

template<SimdPolicy Policy = default_simd_policy>
static constexpr std::string_view kcenon::container::simd::simd_ops< Policy >::policy_name ( )
inlinestaticconstexprnoexcept

Get the name of the active SIMD policy.

Definition at line 629 of file simd_policies.h.

629 {
630 return Policy::name();
631 }

◆ simd_width()

template<SimdPolicy Policy = default_simd_policy>
static constexpr size_t kcenon::container::simd::simd_ops< Policy >::simd_width ( )
inlinestaticconstexprnoexcept

Get the SIMD width (number of floats per operation)

Definition at line 636 of file simd_policies.h.

636 {
637 return Policy::simd_width;
638 }

◆ sum_doubles()

template<SimdPolicy Policy = default_simd_policy>
double kcenon::container::simd::simd_ops< Policy >::sum_doubles ( const double * data,
size_t count ) const
inlinenodiscardnoexcept

Sum all doubles in an array.

Definition at line 664 of file simd_policies.h.

664 {
665 return policy_.sum_doubles(data, count);
666 }

References kcenon::container::simd::simd_ops< Policy >::policy_.

◆ sum_floats()

template<SimdPolicy Policy = default_simd_policy>
float kcenon::container::simd::simd_ops< Policy >::sum_floats ( const float * data,
size_t count ) const
inlinenodiscardnoexcept

Sum all floats in an array.

Definition at line 643 of file simd_policies.h.

643 {
644 return policy_.sum_floats(data, count);
645 }

References kcenon::container::simd::simd_ops< Policy >::policy_.

Member Data Documentation

◆ policy_


The documentation for this class was generated from the following file: