native 0.0.1
Vectors, masks and wide register packs for C++26
Loading...
Searching...
No Matches
bf16_reject_operators.h
1// SPDX-FileCopyrightText: 2026 Edward Kmett <ekmett@gmail.com>
2// SPDX-License-Identifier: BSD-2-Clause OR Apache-2.0
3// Included inside each BF16 storage class. Its arithmetic API is dot2 only.
4// Explicit rejection prevents a native conversion from selecting vector builtins.
5#define NATIVE_BF16_REJECT_BINARY(OP) \
6 \
7 friend void operator OP(simd,simd) = delete; \
8 \
9 template<class U> requires (!std::same_as<std::remove_cvref_t<U>,simd>) \
10 friend void operator OP(simd,U) = delete; \
11 \
12 template<class U> requires (!std::same_as<std::remove_cvref_t<U>,simd>) \
13 friend void operator OP(U,simd) = delete;
14 NATIVE_BF16_REJECT_BINARY(+)
15 NATIVE_BF16_REJECT_BINARY(-)
16 NATIVE_BF16_REJECT_BINARY(*)
17 NATIVE_BF16_REJECT_BINARY(/)
18 NATIVE_BF16_REJECT_BINARY(%)
19 NATIVE_BF16_REJECT_BINARY(&)
20 NATIVE_BF16_REJECT_BINARY(|)
21 NATIVE_BF16_REJECT_BINARY(^)
22 NATIVE_BF16_REJECT_BINARY(<<)
23 NATIVE_BF16_REJECT_BINARY(>>)
24 NATIVE_BF16_REJECT_BINARY(==)
25 NATIVE_BF16_REJECT_BINARY(!=)
26 NATIVE_BF16_REJECT_BINARY(<)
27 NATIVE_BF16_REJECT_BINARY(<=)
28 NATIVE_BF16_REJECT_BINARY(>)
29 NATIVE_BF16_REJECT_BINARY(>=)
30#undef NATIVE_BF16_REJECT_BINARY
32 friend void operator+(simd) = delete;
34 friend void operator-(simd) = delete;
36 friend void operator~(simd) = delete;
38 friend void operator!(simd) = delete;