native 0.0.1
Vectors, masks and wide register packs for C++26
Loading...
Searching...
No Matches
native.isa.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.h"
5export module native.isa;
6// SPDX-FileCopyrightText: 2026 Edward Kmett <ekmett@gmail.com>
7// SPDX-License-Identifier: BSD-2-Clause OR Apache-2.0
8// Include after a named-module declaration; isa.h definitions belong to the GMF.
9// SPDX-FileCopyrightText: 2026 Edward Kmett <ekmett@gmail.com>
10// SPDX-License-Identifier: BSD-2-Clause OR Apache-2.0
11// Include after a named-module declaration; isa.h definitions belong to the GMF.
12export namespace native {
14 using ::native::x86;
15 using ::native::arm;
16 using ::native::wasm;
17 using ::native::target_arch;
18 using ::native::x86_feature;
19 using ::native::arm_feature;
25 using ::native::isa;
26 using ::native::scalar;
27 using ::native::avx2;
28 using ::native::avx512;
29 using ::native::avx512_bf16;
30 using ::native::avx512_fp16;
31 using ::native::neon;
32 using ::native::neon_fp16;
33 using ::native::neon_bf16;
35 using ::native::isa_admission;
38 using ::native::isa_list;
39 using ::native::with_isa;
40 using ::native::operator&;
41 using ::native::operator<;
42 using ::native::operator>;
43 using ::native::operator<=;
44 using ::native::operator>=;
45 using ::native::operator+;
46}
47export namespace native {
48 using ::native::arch;
49 using ::native::abi_lookup;
50 using ::native::target;
51}
52// Source-target macro validation also runs in importing translation units.
53export namespace native::detail {
54 using ::native::detail::source_isa;
55 using ::native::detail::known_features;
56 using ::native::detail::x86_features;
57 using ::native::detail::arm_features;
58 using ::native::detail::wasm_features;
59 using ::native::detail::decode_x86_features;
60 using ::native::detail::decode_arm_features;
61}
Architecture-tagged vectors, register packs and supporting value types. Native arithmetic follows its...
constexpr std::size_t arm_feature_count
Number of named ARM feature values.
Definition isa.h:36
constexpr architecture arm
Select ARM feature metadata independently of the compilation target.
Definition config.h:28
constexpr architecture x86
Select x86 feature metadata independently of the compilation target.
Definition config.h:26
constexpr bool with_isa(isa_list< Entries... >, C const &cpu, F &&callback, isa< detail::observation_family< C > > minimum={})
Admit the first available source variant and invoke callback.operator()().
Definition isa.h:812
x86_feature
Architecture-specific instruction features, represented by local bit indices.
Definition isa.h:15
architecture
Instruction-set families; an ISA value belongs to exactly one family.
Definition config.h:24
target_entry(isa< Family >, isa< Family >={}) -> target_entry< Family >
Deduce a source record from same-family ISA values.
constexpr auto feature_closure(A input) noexcept
Definition isa.h:538
constexpr architecture wasm
Select WebAssembly feature metadata independently of the compilation target.
Definition config.h:30
constexpr std::size_t x86_feature_count
Number of named x86 feature values.
Definition isa.h:34
constexpr isa_admission< x86 > classify_isa(C const &cpu, isa< x86 > requested, isa< x86 > minimum={}) noexcept
Definition isa.h:709
constexpr int target
First matching requirement, with every later choice checked for shadowing.
Definition isa.h:396
constexpr isa< Family > target_features(std::string_view text) noexcept
Definition isa.h:561
wasm_feature
WebAssembly validation capabilities, using local bit indices.
Definition isa.h:30
constexpr std::size_t wasm_feature_count
Number of named Wasm feature values.
Definition isa.h:32
arm_feature
Independently observable ARM instruction features, using local bit indices.
Definition isa.h:24
constexpr architecture target_arch
The compiler target's family; no optional instruction support is implied.
Definition config.h:32
isa(E) -> isa< detail::family_of< E > >
Deduce the family from a feature enum; explicit isa<> always names the host family.