native 0.0.1
Vectors, masks and wide register packs for C++26
Loading...
Searching...
No Matches
native.features.ccm
1// SPDX-FileCopyrightText: 2026 Edward Kmett <ekmett@gmail.com>
2// SPDX-License-Identifier: BSD-2-Clause OR Apache-2.0
3module;
4#include "native/isa_import.h"
5#include "native/isa.h"
6export module native.features;
7export import native.isa;
8export import native.wasm.features;
9#if defined(__x86_64__) || defined(_M_X64)
10export import native.x86.features;
11export namespace native {
12 using cpu_capabilities = x86_capabilities;
13 inline cpu_capabilities observe_cpu() noexcept { return observe_x86_capabilities(); }
14}
15#elif defined(__aarch64__) || defined(_M_ARM64)
16export import native.arm.features;
17export namespace native {
18 using cpu_capabilities = arm_capabilities;
19 inline cpu_capabilities observe_cpu() noexcept { return observe_arm_capabilities(); }
20}
21#elif defined(__wasm__)
22export namespace native {
23 using cpu_capabilities = wasm_capabilities;
24 inline cpu_capabilities observe_cpu() noexcept { return observe_wasm_capabilities(); }
25}
26#endif
arm_capabilities observe_arm_capabilities() noexcept
constexpr wasm_capabilities observe_wasm_capabilities(V &&validate) noexcept
Definition features.h:84
Architecture-tagged vectors, register packs and supporting value types. Native arithmetic follows its...
x86_capabilities observe_x86_capabilities() noexcept
Capture CPUID and, only with XSAVE and OSXSAVE, XCR0. No ISA profile required.