Skip to content

Class platform

class platform<c> simd

template <cpu_t c = cpu_t::native>
struct platform

Trait structure describing the SIMD capabilities of a CPU instruction set.

Specializations expose a set of compile-time constants such as vector sizes, alignment requirements, register counts and feature flags used throughout KFR to select the appropriate code paths.

Template parameters
c The CPU instruction set to describe (defaults to cpu_t::native ).

Fully qualified name: kfr::platform<c>

Declared at simd/platform.hpp:219

Class platform

struct platform<cpu_t::common> simd

template <>
struct platform<cpu_t::common> { … }

Platform traits for the common (baseline) x86 instruction set.

Defines the minimum SIMD capabilities shared by all x86 targets.

variable native_cache_alignment

constexpr static size_t native_cache_alignment        = KFR_CACHE_LINE_SIZE

Fully qualified name: kfr::platform<cpu_t::common>::native_cache_alignment

Declared at simd/platform.hpp:230

variable native_cache_alignment_mask

constexpr static size_t native_cache_alignment_mask   = native_cache_alignment - 1

Fully qualified name: kfr::platform<cpu_t::common>::native_cache_alignment_mask

Declared at simd/platform.hpp:231

variable maximum_vector_alignment

constexpr static size_t maximum_vector_alignment      = 64

Fully qualified name: kfr::platform<cpu_t::common>::maximum_vector_alignment

Declared at simd/platform.hpp:232

variable maximum_vector_alignment_mask

constexpr static size_t maximum_vector_alignment_mask = maximum_vector_alignment - 1

Fully qualified name: kfr::platform<cpu_t::common>::maximum_vector_alignment_mask

Declared at simd/platform.hpp:233

variable simd_register_count

constexpr static size_t simd_register_count = 1

Fully qualified name: kfr::platform<cpu_t::common>::simd_register_count

Declared at simd/platform.hpp:235

variable common_float_vector_size

constexpr static size_t common_float_vector_size = 16

Fully qualified name: kfr::platform<cpu_t::common>::common_float_vector_size

Declared at simd/platform.hpp:237

variable common_int_vector_size

constexpr static size_t common_int_vector_size   = 16

Fully qualified name: kfr::platform<cpu_t::common>::common_int_vector_size

Declared at simd/platform.hpp:238

variable minimum_float_vector_size

constexpr static size_t minimum_float_vector_size = 16

Fully qualified name: kfr::platform<cpu_t::common>::minimum_float_vector_size

Declared at simd/platform.hpp:240

variable minimum_int_vector_size

constexpr static size_t minimum_int_vector_size   = 16

Fully qualified name: kfr::platform<cpu_t::common>::minimum_int_vector_size

Declared at simd/platform.hpp:241

variable native_float_vector_size

constexpr static size_t native_float_vector_size = 16

Fully qualified name: kfr::platform<cpu_t::common>::native_float_vector_size

Declared at simd/platform.hpp:243

variable native_int_vector_size

constexpr static size_t native_int_vector_size   = 16

Fully qualified name: kfr::platform<cpu_t::common>::native_int_vector_size

Declared at simd/platform.hpp:244

variable native_vector_alignment

constexpr static size_t native_vector_alignment      = 16

Fully qualified name: kfr::platform<cpu_t::common>::native_vector_alignment

Declared at simd/platform.hpp:246

variable native_vector_alignment_mask

constexpr static size_t native_vector_alignment_mask = native_vector_alignment - 1

Fully qualified name: kfr::platform<cpu_t::common>::native_vector_alignment_mask

Declared at simd/platform.hpp:247

variable fast_unaligned

constexpr static bool fast_unaligned = false

Fully qualified name: kfr::platform<cpu_t::common>::fast_unaligned

Declared at simd/platform.hpp:249

variable mask_registers

constexpr static bool mask_registers = false

Fully qualified name: kfr::platform<cpu_t::common>::mask_registers

Declared at simd/platform.hpp:251

Fully qualified name: kfr::platform<cpu_t::common>

Declared at simd/platform.hpp:228

Class platform

struct platform<cpu_t::sse2> simd

template <>
struct platform<cpu_t::sse2> : platform<cpu_t::common> { … }

Platform traits for SSE2. Inherits the common baseline and reports the SSE2 register count.

variable simd_register_count

constexpr static size_t simd_register_count = bitness_const(8, 16)

Fully qualified name: kfr::platform<cpu_t::sse2>::simd_register_count

Declared at simd/platform.hpp:260

Fully qualified name: kfr::platform<cpu_t::sse2>

Declared at simd/platform.hpp:258

Class platform

struct platform<cpu_t::sse3> simd

template <>
struct platform<cpu_t::sse3> : platform<cpu_t::sse2> { … }

Platform traits for SSE3. Equivalent to SSE2.

Fully qualified name: kfr::platform<cpu_t::sse3>

Declared at simd/platform.hpp:266

Class platform

struct platform<cpu_t::ssse3> simd

template <>
struct platform<cpu_t::ssse3> : platform<cpu_t::sse3> { … }

Platform traits for SSSE3. Equivalent to SSE3.

Fully qualified name: kfr::platform<cpu_t::ssse3>

Declared at simd/platform.hpp:273

Class platform

struct platform<cpu_t::sse41> simd

template <>
struct platform<cpu_t::sse41> : platform<cpu_t::ssse3> { … }

Platform traits for SSE4.1. Equivalent to SSSE3.

Fully qualified name: kfr::platform<cpu_t::sse41>

Declared at simd/platform.hpp:280

Class platform

struct platform<cpu_t::sse42> simd

template <>
struct platform<cpu_t::sse42> : platform<cpu_t::sse41> { … }

Platform traits for SSE4.2. Equivalent to SSE4.1.

Fully qualified name: kfr::platform<cpu_t::sse42>

Declared at simd/platform.hpp:287

Class platform

struct platform<cpu_t::avx> simd

template <>
struct platform<cpu_t::avx> : platform<cpu_t::sse42> { … }

Platform traits for AVX. Doubles the native float vector size and alignment to 32 bytes and enables fast unaligned access.

variable native_float_vector_size

constexpr static size_t native_float_vector_size = 32

Fully qualified name: kfr::platform<cpu_t::avx>::native_float_vector_size

Declared at simd/platform.hpp:297

variable native_vector_alignment

constexpr static size_t native_vector_alignment      = 32

Fully qualified name: kfr::platform<cpu_t::avx>::native_vector_alignment

Declared at simd/platform.hpp:299

variable native_vector_alignment_mask

constexpr static size_t native_vector_alignment_mask = native_vector_alignment - 1

Fully qualified name: kfr::platform<cpu_t::avx>::native_vector_alignment_mask

Declared at simd/platform.hpp:300

variable fast_unaligned

constexpr static bool fast_unaligned = true

Fully qualified name: kfr::platform<cpu_t::avx>::fast_unaligned

Declared at simd/platform.hpp:302

Fully qualified name: kfr::platform<cpu_t::avx>

Declared at simd/platform.hpp:295

Class platform

struct platform<cpu_t::avx2> simd

template <>
struct platform<cpu_t::avx2> : platform<cpu_t::avx> { … }

Platform traits for AVX2. Extends AVX with 256-bit integer vectors.

variable native_int_vector_size

constexpr static size_t native_int_vector_size = 32

Fully qualified name: kfr::platform<cpu_t::avx2>::native_int_vector_size

Declared at simd/platform.hpp:310

Fully qualified name: kfr::platform<cpu_t::avx2>

Declared at simd/platform.hpp:308

Class platform

struct platform<cpu_t::avx512> simd

template <>
struct platform<cpu_t::avx512> : platform<cpu_t::avx2> { … }

Platform traits for AVX-512. Provides 512-bit vectors, 64-byte alignment, mask register support and an increased register count.

variable native_float_vector_size

constexpr static size_t native_float_vector_size = 64

Fully qualified name: kfr::platform<cpu_t::avx512>::native_float_vector_size

Declared at simd/platform.hpp:319

variable native_int_vector_size

constexpr static size_t native_int_vector_size   = 64

Fully qualified name: kfr::platform<cpu_t::avx512>::native_int_vector_size

Declared at simd/platform.hpp:320

variable native_vector_alignment

constexpr static size_t native_vector_alignment      = 64

Fully qualified name: kfr::platform<cpu_t::avx512>::native_vector_alignment

Declared at simd/platform.hpp:322

variable native_vector_alignment_mask

constexpr static size_t native_vector_alignment_mask = native_vector_alignment - 1

Fully qualified name: kfr::platform<cpu_t::avx512>::native_vector_alignment_mask

Declared at simd/platform.hpp:323

variable simd_register_count

constexpr static size_t simd_register_count = bitness_const(8, 32)

Fully qualified name: kfr::platform<cpu_t::avx512>::simd_register_count

Declared at simd/platform.hpp:325

variable mask_registers

constexpr static bool mask_registers = true

Fully qualified name: kfr::platform<cpu_t::avx512>::mask_registers

Declared at simd/platform.hpp:327

Fully qualified name: kfr::platform<cpu_t::avx512>

Declared at simd/platform.hpp:317

This file was generated by cxxdox, a C++ documentation generator based on MkDocs Material and libclang.