/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck_tile/core/algorithm/coordinate_transform.hpp Source File#
coordinate_transform.hpp
Go to the documentation of this file.
138 calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths& low_vector_lengths,
321 calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths& low_vector_lengths,
417 calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths& low_vector_lengths,
443 // 3) Tuple of mixture of index_t and number, which is known partially at run-time and partially
546 // Implementation of "merge" transformation primitive that uses magic-number-division to do lowering
552 // dividend would be bit-wise interpreted as uint32_t and magic number division implementation for
674 calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths& low_vector_lengths,
698 // Implementation of "merge" transformation primitive that uses division and mod. It is supposed to
699 // be used for low_lengths that are known at compile time and are power of 2, otherwise performance
800 calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths& low_vector_lengths,
911 calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths& low_vector_lengths,
1311 CK_TILE_HOST_DEVICE constexpr xor_t(const LowLengths& low_lengths) : up_lengths_{low_lengths} {}
1555 //*******************************************************************************************************
1563 template <typename LowLength, typename LeftPad, typename RightPad, bool SkipIsValidCheck = false>
1690 make_indexing_transform_with_adaptor(const UpLength& up_lengths, const IndexingAdaptor& iadaptor)
__host__ constexpr __device__ auto unmerge(const Layout< Shape, UnrolledDesc > &layout, const NewLengths &new_lengths, [[maybe_unused]] const NewIdxs &new_indexes)
Unmerge selected dim in layout.
Definition: layout_utils.hpp:474
__host__ constexpr __device__ index_t gcd(index_t x, index_t y)
Definition: math.hpp:154
Definition: cluster_descriptor.hpp:13
constexpr CK_TILE_HOST_DEVICE auto make_insert_transform(const UpperIndex &up_idx)
Definition: coordinate_transform.hpp:1635
constexpr CK_TILE_HOST_DEVICE auto container_reduce(const Container &x, Reduce reduce, Init init, number< IBegin >=number< 0 >{}, number< IEnd >=number< Container::size()>{}, number< IStep >=number< 1 >{})
Definition: container_helper.hpp:198
constexpr CK_TILE_HOST_DEVICE auto make_left_pad_transform(const LowLength &low_length, const LeftPadLength &left_pad_, bool_constant< SkipIsValidCheck >=bool_constant< false >{})
Definition: coordinate_transform.hpp:1575
@ replicate
@ undefined
@ indexing
@ pass_through
constexpr CK_TILE_HOST_DEVICE auto make_right_pad_transform(const LowLength &low_length, const RightPadLength &right_pad_, bool_constant< SkipIsValidCheck >=bool_constant< false >{})
Definition: coordinate_transform.hpp:1584
__host__ __device__ multiplies() -> multiplies< void, void >
FIXME: create macro to replace 'host device' and nothing more.
constexpr CK_TILE_HOST_DEVICE auto make_indexing_transform_with_adaptor(const UpLength &up_lengths, const IndexingAdaptor &iadaptor)
Definition: coordinate_transform.hpp:1690
constexpr CK_TILE_HOST_DEVICE auto make_offset_transform(const LowLength &low_length, const OffsetLength &offset_length)
Definition: coordinate_transform.hpp:1668
is_static< T > is_known_at_compile_time
Definition: type_traits.hpp:94
constexpr CK_TILE_HOST_DEVICE auto make_slice_transform(const LowLength &low_length, const SliceBegin &slice_begin, const SliceEnd &slice_end)
Definition: coordinate_transform.hpp:1647
constexpr CK_TILE_HOST_DEVICE auto make_merge_transform(const LowLengths &low_lengths)
Definition: coordinate_transform.hpp:1615
constexpr CK_TILE_HOST_DEVICE auto make_pass_through_transform(const LowLength &low_length)
Definition: coordinate_transform.hpp:1558
constexpr CK_TILE_HOST_DEVICE auto make_pad_transform(const LowLength &low_length, const LeftPad &left_pad, const RightPad &right_pad, bool_constant< SkipIsValidCheck >=bool_constant< false >{})
Definition: coordinate_transform.hpp:1565
constexpr CK_TILE_HOST_DEVICE auto make_unmerge_transform(const UpLengths &up_lengths, bool_constant< Use24BitIntegerCalculation >=bool_constant< false >{})
Definition: coordinate_transform.hpp:1622
constexpr CK_TILE_HOST_DEVICE auto make_merge_transform_v3_division_mod(const LowLengths &low_lengths)
Definition: coordinate_transform.hpp:1609
constexpr CK_TILE_HOST_DEVICE auto make_modulo_transform(const Modulus &modulus, const UpLength &up_length)
Definition: coordinate_transform.hpp:1655
constexpr CK_TILE_HOST_DEVICE auto make_indexing_transform(const UpLength &up_lengths, const Indices &indices)
Definition: coordinate_transform.hpp:1680
constexpr CK_TILE_HOST_DEVICE auto generate_tuple(F &&f, number< N >)
Definition: tuple.hpp:429
constexpr CK_TILE_HOST_DEVICE auto make_tuple(Xs &&... xs)
Definition: tuple.hpp:360
constexpr CK_TILE_HOST_DEVICE auto make_xor_transform(const LowLengths &low_lengths)
Definition: coordinate_transform.hpp:1662
constexpr CK_TILE_HOST_DEVICE auto make_replicate_transform(const UpLengths &up_lengths)
Definition: coordinate_transform.hpp:1641
constexpr CK_TILE_HOST_DEVICE auto make_freeze_transform(const LowerIndex &low_idx)
Definition: coordinate_transform.hpp:1629
constexpr CK_TILE_HOST_DEVICE auto make_merge_transform_v2_magic_division(const LowLengths &low_lengths)
Definition: coordinate_transform.hpp:1602
constexpr CK_TILE_HOST_DEVICE auto make_embed_transform(const UpLengths &up_lengths, const Coefficients &coefficients)
Definition: coordinate_transform.hpp:1594
__host__ constexpr __device__ auto container_reverse_exclusive_scan(const Array< TData, NSize > &x, Reduce f, TData init)
Definition: container_helper.hpp:213
__host__ constexpr __device__ auto container_reduce(const Container &x, Reduce reduce, Init init, Number< IBegin >=Number< 0 >{}, Number< IEnd >=Number< Container::Size()>{}, Number< IStep >=Number< 1 >{})
Definition: container_helper.hpp:111
A fixed-size array container similar to std::array with additional utilities.
Definition: array.hpp:43
Definition: coordinate_transform.hpp:32
static constexpr CK_TILE_HOST_DEVICE auto get_type_enum()
Definition: coordinate_transform.hpp:33
static constexpr CK_TILE_HOST_DEVICE index_t get_num_of_upper_dimension()
Definition: coordinate_transform.hpp:40
static constexpr CK_TILE_HOST_DEVICE index_t get_num_of_lower_dimension()
Definition: coordinate_transform.hpp:38
static constexpr CK_TILE_HOST_DEVICE auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &, const LowVectorStrides &)
Definition: coordinate_transform.hpp:47
Definition: integral_constant.hpp:13
Definition: coordinate_transform.hpp:449
constexpr CK_TILE_HOST_DEVICE embed()=default
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:471
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:506
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:474
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &) const
Definition: coordinate_transform.hpp:488
static constexpr CK_TILE_HOST_DEVICE auto get_type_enum()
Definition: coordinate_transform.hpp:466
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition: coordinate_transform.hpp:513
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:518
constexpr CK_TILE_HOST_DEVICE embed(const UpLengths &up_lengths, const Coefficients &coefficients)
Definition: coordinate_transform.hpp:460
Definition: coordinate_transform.hpp:946
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &) const
Definition: coordinate_transform.hpp:956
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &, LowIdx &, const UpIdx &)
Definition: coordinate_transform.hpp:966
static constexpr CK_TILE_HOST_DEVICE auto get_upper_lengths()
Definition: coordinate_transform.hpp:953
constexpr CK_TILE_HOST_DEVICE freeze()=default
constexpr CK_TILE_HOST_DEVICE freeze(const LowerIndex &low_idx)
Definition: coordinate_transform.hpp:951
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:975
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:987
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition: coordinate_transform.hpp:982
Definition: type_traits.hpp:76
Definition: indexing_adaptor.hpp:20
Definition: coordinate_transform.hpp:1476
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition: coordinate_transform.hpp:1532
constexpr CK_TILE_HOST_DEVICE indexing()=default
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:1502
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:1525
decltype(make_tuple(UpLength{})) UpLengths
Definition: coordinate_transform.hpp:1482
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:1499
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:1511
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:1537
constexpr CK_TILE_HOST_DEVICE indexing(const UpLength &up_length, const IndexingAdaptor &iadaptor)
Definition: coordinate_transform.hpp:1488
static constexpr CK_TILE_HOST_DEVICE auto get_type_enum()
Definition: coordinate_transform.hpp:1494
Definition: coordinate_transform.hpp:1005
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &, const UpIdxDiff &, LowIdx &, const UpIdx &)
Definition: coordinate_transform.hpp:1032
constexpr CK_TILE_HOST_DEVICE insert(const UpperLength &up_length)
Definition: coordinate_transform.hpp:1012
decltype(make_tuple(UpperLength{})) UpLengths
Definition: coordinate_transform.hpp:1006
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition: coordinate_transform.hpp:1049
constexpr CK_TILE_HOST_DEVICE insert()=default
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &, const UpIdx &) const
Definition: coordinate_transform.hpp:1024
static constexpr CK_TILE_HOST_DEVICE index_t get_num_of_lower_dimension()
Definition: coordinate_transform.hpp:1017
constexpr CK_TILE_HOST_DEVICE auto get_upper_lengths() const
Definition: coordinate_transform.hpp:1021
static constexpr CK_TILE_HOST_DEVICE bool IsLinearTransform()
Definition: coordinate_transform.hpp:1039
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:1054
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:1042
static constexpr CK_TILE_HOST_DEVICE index_t get_num_of_upper_dimension()
Definition: coordinate_transform.hpp:1019
Definition: coordinate_transform.hpp:538
constexpr CK_TILE_HOST_DEVICE auto operator()(number< I > i) const
Definition: coordinate_transform.hpp:540
Definition: coordinate_transform.hpp:253
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:300
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:312
LeftPadLength left_pad_length_
Definition: coordinate_transform.hpp:260
constexpr CK_TILE_HOST_DEVICE left_pad()=default
decltype(make_tuple(LowLength{}+LeftPadLength{})) UpLengths
Definition: coordinate_transform.hpp:257
constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:307
constexpr CK_TILE_HOST_DEVICE left_pad(const LowLength &low_length, const LeftPadLength &left_pad_length)
Definition: coordinate_transform.hpp:264
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &)
Definition: coordinate_transform.hpp:283
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:270
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:273
static constexpr CK_TILE_HOST_DEVICE auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides)
Definition: coordinate_transform.hpp:321
static constexpr CK_TILE_HOST_DEVICE auto calculate_magic_numbers(uint32_t divisor)
Definition: magic_div.hpp:29
static constexpr CK_TILE_DEVICE uint32_t do_magic_division(uint32_t dividend, uint32_t multiplier, uint32_t shift)
Definition: magic_div.hpp:60
Definition: coordinate_transform.hpp:560
static constexpr CK_TILE_HOST_DEVICE auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides)
Definition: coordinate_transform.hpp:674
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &, LowIdx &idx_low, const UpIdx &idx_up_new) const
Definition: coordinate_transform.hpp:621
LowLengthsMagicDivisor low_lengths_magic_divisor_
Definition: coordinate_transform.hpp:574
static constexpr auto I1
Definition: coordinate_transform.hpp:578
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:652
static constexpr index_t NDimLow
Definition: coordinate_transform.hpp:561
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:657
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:597
decltype(generate_tuple(lambda_merge_generate_MagicDivision_calculate_magic_divisor< LowLengths >{}, number< NDimLow >{})) LowLengthsMagicDivisor
Definition: coordinate_transform.hpp:571
LowLengths low_lengths_
Definition: coordinate_transform.hpp:573
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition: coordinate_transform.hpp:666
static constexpr auto I0
Definition: coordinate_transform.hpp:577
UpLengths up_lengths_
Definition: coordinate_transform.hpp:575
decltype(make_tuple(container_reduce(LowLengths{}, multiplies{}, number< 1 >{}))) UpLengths
Definition: coordinate_transform.hpp:567
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:600
constexpr CK_TILE_HOST_DEVICE merge_v2_magic_division()=default
static constexpr CK_TILE_HOST_DEVICE auto get_type_enum()
Definition: coordinate_transform.hpp:592
constexpr CK_TILE_HOST_DEVICE merge_v2_magic_division(const LowLengths &low_lengths)
Definition: coordinate_transform.hpp:582
Definition: coordinate_transform.hpp:703
decltype(make_tuple(container_reduce(LowLengths{}, multiplies{}, number< 1 >{}))) UpLengths
Definition: coordinate_transform.hpp:713
static constexpr CK_TILE_HOST_DEVICE auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides)
Definition: coordinate_transform.hpp:800
decltype(container_reverse_exclusive_scan(LowLengths{}, multiplies{}, number< 1 >{})) LowLengthsScan
Definition: coordinate_transform.hpp:710
LowLengths low_lengths_
Definition: coordinate_transform.hpp:715
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition: coordinate_transform.hpp:792
UpLengths up_lengths_
Definition: coordinate_transform.hpp:717
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:730
constexpr CK_TILE_HOST_DEVICE merge_v3_division_mod(const LowLengths &low_lengths)
Definition: coordinate_transform.hpp:721
LowLengthsScan low_lengths_scan_
Definition: coordinate_transform.hpp:716
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:783
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:733
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &, LowIdx &idx_low, const UpIdx &idx_up_new) const
Definition: coordinate_transform.hpp:751
constexpr CK_TILE_HOST_DEVICE merge_v3_division_mod()=default
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:778
Definition: coordinate_transform.hpp:1222
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition: coordinate_transform.hpp:1274
decltype(make_tuple(UpLength{})) UpLengths
Definition: coordinate_transform.hpp:1225
constexpr CK_TILE_HOST_DEVICE modulo(const Modulus &modulus, const UpLength &up_length)
Definition: coordinate_transform.hpp:1232
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &up_idx) const
Definition: coordinate_transform.hpp:1250
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:1240
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:1237
constexpr CK_TILE_HOST_DEVICE modulo()=default
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:1267
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:1279
Definition: math.hpp:98
Definition: coordinate_transform.hpp:1392
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &)
Definition: coordinate_transform.hpp:1427
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:1456
decltype(make_tuple(LowLength{})) UpLengths
Definition: coordinate_transform.hpp:1396
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:1444
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:1414
constexpr CK_TILE_HOST_DEVICE offset()=default
static constexpr CK_TILE_HOST_DEVICE auto get_type_enum()
Definition: coordinate_transform.hpp:1409
constexpr CK_TILE_HOST_DEVICE offset(const LowLength &low_length, const OffsetLength &offset_length)
Definition: coordinate_transform.hpp:1403
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:1417
constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &) const
Definition: coordinate_transform.hpp:1451
Definition: coordinate_transform.hpp:161
constexpr CK_TILE_HOST_DEVICE pad(const LowLength &low_length, const LeftPadLength &left_pad_length, const RightPadLength &right_pad_length)
Definition: coordinate_transform.hpp:173
decltype(make_tuple(LowLength{}+LeftPadLength{}+RightPadLength{})) UpLengths
Definition: coordinate_transform.hpp:165
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:182
LeftPadLength left_pad_length_
Definition: coordinate_transform.hpp:168
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:226
constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:219
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &)
Definition: coordinate_transform.hpp:195
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:185
RightPadLength right_pad_length_
Definition: coordinate_transform.hpp:169
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:212
Definition: coordinate_transform.hpp:66
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition: coordinate_transform.hpp:125
constexpr CK_TILE_HOST_DEVICE pass_through(const LowLength &low_length)
Definition: coordinate_transform.hpp:78
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:118
decltype(make_tuple(LowLength{})) UpLengths
Definition: coordinate_transform.hpp:72
constexpr CK_TILE_HOST_DEVICE pass_through()=default
static constexpr auto type_enum
Definition: coordinate_transform.hpp:67
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &)
Definition: coordinate_transform.hpp:101
static constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up)
Definition: coordinate_transform.hpp:91
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:88
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:130
static constexpr CK_TILE_HOST_DEVICE auto get_type_enum()
Definition: coordinate_transform.hpp:83
static constexpr CK_TILE_HOST_DEVICE auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides)
Definition: coordinate_transform.hpp:138
Definition: coordinate_transform.hpp:1072
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:1100
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:1112
constexpr CK_TILE_HOST_DEVICE replicate()=default
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition: coordinate_transform.hpp:1107
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &, const UpIdx &) const
Definition: coordinate_transform.hpp:1084
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &, const UpIdxDiff &, LowIdx &, const UpIdx &)
Definition: coordinate_transform.hpp:1092
constexpr CK_TILE_HOST_DEVICE auto get_upper_lengths() const
Definition: coordinate_transform.hpp:1081
constexpr CK_TILE_HOST_DEVICE replicate(const UpLengths &up_lengths)
Definition: coordinate_transform.hpp:1077
Definition: coordinate_transform.hpp:345
constexpr CK_TILE_HOST_DEVICE right_pad(const LowLength &low_length, const RightPadLength &right_pad_length)
Definition: coordinate_transform.hpp:357
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:365
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:407
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &)
Definition: coordinate_transform.hpp:378
static constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up)
Definition: coordinate_transform.hpp:368
static constexpr CK_TILE_HOST_DEVICE auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides)
Definition: coordinate_transform.hpp:417
RightPadLength right_pad_length_
Definition: coordinate_transform.hpp:353
constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:402
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:395
constexpr CK_TILE_HOST_DEVICE right_pad()=default
decltype(make_tuple(LowLength{}+RightPadLength{})) UpLengths
Definition: coordinate_transform.hpp:349
Definition: coordinate_transform.hpp:1132
constexpr CK_TILE_HOST_DEVICE slice(const LowLength &, const SliceBegin &slice_begin, const SliceEnd &slice_end)
Definition: coordinate_transform.hpp:1144
static CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &)
Definition: coordinate_transform.hpp:1166
constexpr CK_TILE_HOST_DEVICE slice()=default
constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &) const
Definition: coordinate_transform.hpp:1190
decltype(make_tuple(SliceEnd{} - SliceBegin{})) UpLengths
Definition: coordinate_transform.hpp:1136
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:1153
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:1183
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:1156
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:1195
Definition: functional.hpp:43
Definition: tuple.hpp:192
Definition: coordinate_transform.hpp:828
static constexpr CK_TILE_HOST_DEVICE auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides)
Definition: coordinate_transform.hpp:911
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &idx_diff_up, LowIdx &idx_low, const UpIdx &) const
Definition: coordinate_transform.hpp:879
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition: coordinate_transform.hpp:897
constexpr CK_TILE_HOST_DEVICE unmerge(const UpLengths &up_lengths)
Definition: coordinate_transform.hpp:842
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:856
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:902
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:853
UpLengthsScan up_lengths_scan_
Definition: coordinate_transform.hpp:838
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:890
constexpr CK_TILE_HOST_DEVICE unmerge()=default
static constexpr CK_TILE_HOST_DEVICE auto get_type_enum()
Definition: coordinate_transform.hpp:848
decltype(container_reverse_exclusive_scan(UpLengths{}, multiplies{}, number< 1 >{})) UpLengthsScan
Definition: coordinate_transform.hpp:835
Definition: coordinate_transform.hpp:1299
constexpr CK_TILE_HOST_DEVICE const auto & get_upper_lengths() const
Definition: coordinate_transform.hpp:1318
constexpr CK_TILE_HOST_DEVICE xor_t(const LowLengths &low_lengths)
Definition: coordinate_transform.hpp:1311
constexpr CK_TILE_HOST_DEVICE void calculate_lower_index(LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:1321
constexpr CK_TILE_HOST_DEVICE auto calculate_upper_dimension_safe_vector_length_strides(const LowVectorLengths &low_vector_lengths, const LowVectorStrides &low_vector_strides) const
Definition: coordinate_transform.hpp:1370
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_mapped_to_valid_lower_index(const UpIdx &)
Definition: coordinate_transform.hpp:1358
static constexpr CK_TILE_HOST_DEVICE bool is_known_at_compile_time()
Definition: coordinate_transform.hpp:1363
static constexpr CK_TILE_HOST_DEVICE auto get_type_enum()
Definition: coordinate_transform.hpp:1313
CK_TILE_HOST_DEVICE void update_lower_index(LowIdxDiff &idx_diff_low, const UpIdxDiff &, LowIdx &idx_low, const UpIdx &idx_up) const
Definition: coordinate_transform.hpp:1334
static constexpr CK_TILE_HOST_DEVICE bool is_valid_upper_index_always_mapped_to_valid_lower_index()
Definition: coordinate_transform.hpp:1351