3#include "native/isa_import.h"
4#include "native/x86/pclmul.h"
5#include "native/x86/integer_constant.h"
10#if NATIVE_HOST_X86 || defined(NATIVE_DOXYGEN)
27 template<isa<x86> Arch,
unsigned Imm8>
requires(Arch.has(x86_feature::pclmul) && Imm8 <= 255)
30 if consteval {
return detail::x86_instruction_constant::carryless<Imm8>(a, b); }
37 template<isa<x86> Arch,
unsigned Imm8>
requires(!((Arch.has(x86_feature::pclmul))) && Imm8 <= 255 &&
38 requires {
sizeof(simd<std::uint64_t, 2, Arch>); })
40 return detail::x86_instruction_constant::carryless<Imm8>(a, b);
45 template<isa<x86> Arch,
unsigned Imm8,
class... Args>
#define native_inline
inline [[always_inline]]
#define native_nodiscard
C++17 [[nodiscard]].
#define native_const
[[const]] is not const
#define native_target(x)
this indicates a required feature set for the current multiversioned function.
constexpr simd< std::uint64_t, 2, Arch > pclmulqdq(simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
Architecture-tagged vectors, register packs and supporting value types. Native arithmetic follows its...
Standard-library adaptations documented here for SIMD value types.
Omitted architecture arguments use the native.simd provider's baseline.