| // SPDX-License-Identifier: MIT | |
| // Copyright (c) 2018-2023, Advanced Micro Devices, Inc. All rights reserved. | |
| namespace ck { | |
| template <index_t... Is> | |
| __host__ __device__ constexpr auto make_sequence(Number<Is>...) | |
| { | |
| return Sequence<Is...>{}; | |
| } | |
| // F returns index_t | |
| template <typename F, index_t N> | |
| __host__ __device__ constexpr auto generate_sequence(F, Number<N>) | |
| { | |
| return typename sequence_gen<N, F>::type{}; | |
| } | |
| // F returns Number<> | |
| template <typename F, index_t N> | |
| __host__ __device__ constexpr auto generate_sequence_v2(F&& f, Number<N>) | |
| { | |
| return unpack([&f](auto&&... xs) { return make_sequence(f(xs)...); }, | |
| typename arithmetic_sequence_gen<0, N, 1>::type{}); | |
| } | |
| template <index_t... Is> | |
| __host__ __device__ constexpr auto to_sequence(Tuple<Number<Is>...>) | |
| { | |
| return Sequence<Is...>{}; | |
| } | |
| } // namespace ck | |