template<class T, class Abi>
constexpr auto simd_split(const basic_simd<typename T::value_type, Abi>& x) noexcept;
template<class T, class Abi>
constexpr auto simd_split(const basic_simd_mask<mask-element-size<T>, Abi>& x) noexcept;
template<class T, class... Abis>
constexpr simd<T, (basic_simd<T, Abis>::size() + ...)>
simd_cat(const basic_simd<T, Abis>&... xs) noexcept;
template<size_t Bytes, class... Abis>
constexpr basic_simd_mask<Bytes, deduce-abi-t<integer-from<Bytes>,
(basic_simd_mask<Bytes, Abis>::size() + ...)>>
simd_cat(const basic_simd_mask<Bytes, Abis>&... xs) noexcept;