tuple.hpp File Reference

tuple.hpp File Reference#

Composable Kernel: tuple.hpp File Reference
tuple.hpp File Reference

Go to the source code of this file.

Classes

struct  ck_tile::impl::tuple_object< idx, T, is_empty >
struct  ck_tile::impl::tuple_object< idx, T, true >
struct  ck_tile::impl::tuple_object< idx, T, false >
struct  ck_tile::impl::tuple_base< sequence< I... >, T... >
struct  ck_tile::tuple< T >
struct  ck_tile::vector_traits< tuple< T... >, void >
struct  ck_tile::tuple_concat< tuple< Xs... >, tuple< Ys... > >
struct  ck_tile::impl::tuple_array_impl< T, N >
struct  ck_tile::impl::tuple_array_impl< T, 0 >
struct  ck_tile::impl::tuple_array_impl< T, 1 >
struct  std::tuple_size< ck_tile::tuple< Ts... > >
struct  std::tuple_element< I, ck_tile::tuple< Ts... > >
struct  std::tuple_size< const ck_tile::tuple< Ts... > >
struct  std::tuple_element< I, const ck_tile::tuple< Ts... > >

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( \
"clang diagnostic ignored \"-Wc++20-extensions\"")[a]<ck_tile::index_t... IDX_IDX_>( \
ck_tile::sequence<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
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition pointer.h:1517
Definition tile/core/container/tuple.hpp:192

◆ TP_COM_

#define TP_COM_ ( )
Value:
static_assert(I < size(), "wrong! out of range")