Open mattkretz opened 4 years ago
Given simd<T, A> where T is an scoped enum (U is a shorthand for std::underlying_type_t<T>):
simd<T, A>
T
U
std::underlying_type_t<T>
mask_type
simd<U, A>::mask_type
simd<U, A>
int
simd<T1, A1>
simd_size_v<T, A> == simd_size_v<T1, A1>
const T*
const U*
T*
U*
==
!=
<
<=
>
>=
operator?:(mask_type, const simd<T, A>&, const simd<T, A>&)
constexpr
Given
simd<T, A>
whereT
is an scoped enum (U
is a shorthand forstd::underlying_type_t<T>
):mask_type
issimd<U, A>::mask_type
T
simd<U, A>
(enables explicit broadcast fromU
andint
)simd<T1, A1>
, requiressimd_size_v<T, A> == simd_size_v<T1, A1>
T
const T*
andconst U*
T*
andU*
T
simd<U, A>
==
,!=
,<
,<=
,>
, and>=
returningmask_type
simd<T, A>
, the other operand has to be convertible tosimd<U, A>
(which includessimd<T, A>
)operator?:(mask_type, const simd<T, A>&, const simd<T, A>&)
simd<T, A>
(one operand can beT
, because of the implicit conversion)mask_type
conditional operator take precedenceconstexpr
except loads and stores