tuple.hpp File Reference#
tuple.hpp File Reference
#include "ck_tile/core/config.hpp"#include "ck_tile/core/container/sequence.hpp"#include "ck_tile/core/numeric/integer.hpp"#include "ck_tile/core/numeric/integral_constant.hpp"#include "ck_tile/core/numeric/math.hpp"#include "ck_tile/core/utility/functional.hpp"#include "ck_tile/core/utility/type_traits.hpp"#include <utility>#include <initializer_list>#include <tuple>Go to the source code of this file.
Namespaces | |
| namespace | ck_tile |
| namespace | ck_tile::impl |
| namespace | ck_tile::detail |
| namespace | std |
| STL namespace. | |
Macros | |
| #define | CK_TILE_TUPLE_IMPL 1 |
| #define | TP_COM_() |
| #define | TO_TUPLE_OF_NUMBER(a, n) |
Typedefs | |
| template<typename T, index_t N> | |
| using | ck_tile::tuple_array = typename impl::tuple_array_impl<T, N>::type |
| template<typename T> | |
| using | ck_tile::is_tuple = decltype(std::declval<T&>().IsTuple()) |
Functions | |
| template<index_t I, class T> | |
| CK_TILE_HOST_DEVICE constexpr T | ck_tile::impl::getv (const tuple_object< I, T, true > &) |
| template<index_t I, class T> | |
| CK_TILE_HOST_DEVICE constexpr const T & | ck_tile::impl::getv (const tuple_object< I, T, false > &x) |
| template<index_t I, class T> | |
| CK_TILE_HOST_DEVICE constexpr T & | ck_tile::impl::getv (tuple_object< I, T, false > &x) |
| template<index_t I, class T> | |
| CK_TILE_HOST_DEVICE constexpr T && | ck_tile::impl::getv (tuple_object< I, T, false > &&x) |
| template<typename... T> | |
| CK_TILE_HOST_DEVICE void | ck_tile::print (const tuple< T... > &t) |
| template<typename... Xs> | |
| CK_TILE_HOST_DEVICE constexpr bool | ck_tile::operator== (const tuple< Xs... > &a, const tuple< Xs... > &b) |
| template<typename... Xs> | |
| CK_TILE_HOST_DEVICE constexpr bool | ck_tile::operator!= (const tuple< Xs... > &a, const tuple< Xs... > &b) |
| template<typename... Xs> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::make_tuple (Xs &&... xs) |
| template<typename... Args> | |
| constexpr tuple< Args &... > | ck_tile::tie (Args &... args) noexcept |
| template<typename F, index_t... ids> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::generate_tuple_for (F &&f, sequence< ids... >) |
| template<typename F, index_t N> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::generate_tuple (F &&f, number< N >) |
| template<typename F, index_t N> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::generate_tie (F &&f, number< N >) |
| template<typename... X, typename... Y> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::concat_tuple_of_reference (const tuple< X &... > &tx, const tuple< Y &... > &ty) |
| template<typename... X, typename... Y> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::concat_tuple (const tuple< X... > &tx, const tuple< Y... > &ty) |
| template<typename... X> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::concat_tuple (const tuple< X... > &tx) |
| template<typename... X, typename... Tuples> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::concat_tuple (const tuple< X... > &tx, const Tuples &... tuples) |
| template<typename F, typename X, index_t... Is> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::detail::transform_tuples_impl (F f, const X &x, sequence< Is... >) |
| template<typename F, typename X, typename Y, index_t... Is> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::detail::transform_tuples_impl (F f, const X &x, const Y &y, sequence< Is... >) |
| template<typename F, typename X, typename Y, typename Z, index_t... Is> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::detail::transform_tuples_impl (F f, const X &x, const Y &y, const Z &z, sequence< Is... >) |
| template<typename F, typename Tuple, index_t... Is> | |
| constexpr decltype(auto) | ck_tile::detail::apply_impl (F &&f, Tuple &&t, sequence< Is... >) |
| template<typename F, typename X> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::transform_tuples (F f, const X &x) |
| template<typename F, typename X, typename Y> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::transform_tuples (F f, const X &x, const Y &y) |
| template<typename F, typename X, typename Y, typename Z> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::transform_tuples (F f, const X &x, const Y &y, const Z &z) |
| template<typename F, typename Tuple> | |
| constexpr decltype(auto) | ck_tile::apply (F &&f, Tuple &&t) |
| template<typename F, typename X, index_t... Is> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::detail::embed_tuples_impl (F f, const X &x, sequence< Is... >) |
| template<typename F, typename X> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::embed_tuples (F f, const X &x) |
| template<index_t Depth = 0, index_t MaxDepth = -1> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::unroll_nested_tuple (const tuple<> &t) |
| template<index_t Depth = 0, index_t MaxDepth = -1, typename T> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::unroll_nested_tuple (const T &t) |
| template<index_t Depth = 0, index_t MaxDepth = -1, typename... Ts> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::unroll_nested_tuple (const tuple< Ts... > &t) |
| template<typename... Ts> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::tuple_reverse (const tuple< Ts... > &t) |
| template<index_t Idx, index_t End, typename F, typename... Ts> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::tuple_reduce (F &&f, const tuple< Ts... > &t) |
| template<typename... Ts> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::is_nested_tuple (const tuple< Ts... > &) |
| template<index_t depth = 0, typename T> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::tuple_depth (const T &) |
| template<index_t depth = 0, typename... Ts> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::tuple_depth (const tuple< Ts... > &) |
| template<typename... Seqs> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::to_array_of_array (tuple< Seqs... > t_of_s) |
| template<typename... Ys, typename X, std::enable_if_t<!std::is_integral< X >::value &&!std::is_floating_point< X >::value, bool > = false> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::operator+= (tuple< Ys... > &y, const X &x) |
| template<typename... Ys, typename X, std::enable_if_t<!std::is_integral< X >::value &&!std::is_floating_point< X >::value, bool > = false> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::operator-= (tuple< Ys... > &y, const X &x) |
| template<typename... Xs, typename Y, std::enable_if_t<!std::is_integral< Y >::value &&!std::is_floating_point< Y >::value, bool > = false> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::operator+ (const tuple< Xs... > &x, const Y &y) |
| template<typename... Xs, typename... Ys> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::operator+ (const tuple< Xs... > &x, const tuple< Ys... > &y) |
| template<typename... Xs, typename Y, std::enable_if_t<!std::is_integral< Y >::value &&!std::is_floating_point< Y >::value, bool > = false> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::operator- (const tuple< Xs... > &x, const Y &y) |
| template<typename... Xs, typename... Ys> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::operator- (const tuple< Xs... > &x, const tuple< Ys... > &y) |
| template<typename... Xs, typename Y, std::enable_if_t<!std::is_integral< Y >::value &&!std::is_floating_point< Y >::value, bool > = false> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::operator* (const tuple< Xs... > &x, const Y &y) |
| template<typename... Xs, typename Y, std::enable_if_t< std::is_integral< Y >::value||std::is_floating_point< Y >::value, bool > = false> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::operator* (Y a, const tuple< Xs... > &x) |
| template<typename... Xs, typename Y, std::enable_if_t< std::is_integral< Y >::value||std::is_floating_point< Y >::value, bool > = false> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::operator* (const tuple< Xs... > &x, Y a) |
| template<typename... Xs, typename... Ys> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::operator* (const tuple< Xs... > &x, const tuple< Ys... > &y) |
| template<typename... Xs, typename... Ys> | |
| CK_TILE_HOST_DEVICE constexpr auto | ck_tile::operator/ (const tuple< Xs... > &x, const tuple< Ys... > &y) |
Macro Definition Documentation
◆ CK_TILE_TUPLE_IMPL
| #define CK_TILE_TUPLE_IMPL 1 |
◆ TO_TUPLE_OF_NUMBER
| #define TO_TUPLE_OF_NUMBER | ( | a, | |
| n ) |
Value:
_Pragma("clang diagnostic push") _Pragma( \
ck_tile::sequence<IDX_IDX_...>) \
{ \
return ck_tile::tuple<ck_tile::number<a[ck_tile::number<IDX_IDX_>{}]>...>{}; \
} \
(ck_tile::make_index_sequence<n>{}) _Pragma("clang diagnostic pop")
Definition tile/core/algorithm/cluster_descriptor.hpp:13
typename __make_integer_seq< impl::__integer_sequence, index_t, N >::seq_type make_index_sequence
Definition tile/core/container/sequence.hpp:230
Definition tile/core/container/tuple.hpp:192
◆ TP_COM_
| #define TP_COM_ | ( | ) |
Value:
static_assert(I < size(), "wrong! out of range")