Congma/ck tile/remove cpp 20 code (#2873)

* Remove C++20 code

C++20 features should not be used in CK. Remove all C++20 code.

* fix c++17 build

* format

* fix merge issue

---------

Co-authored-by: Thomas Ning <Thomas.Ning@amd.com>
Co-authored-by: Max Podkorytov <4273004+tenpercent@users.noreply.github.com>
This commit is contained in:
Cong Ma
2025-09-25 11:34:28 -06:00
committed by GitHub
parent b56e5d1d79
commit a5d1e25ec7
7 changed files with 49 additions and 54 deletions

View File

@@ -18,73 +18,64 @@ namespace ck_tile {
namespace detail {
// Helper templates for safe type extraction
template <typename T, typename Default>
template <typename, typename Default, typename = void>
struct get_aq_layout_or
{
using type = Default;
};
template <typename T, typename Default>
requires requires { typename T::AQLayout; }
struct get_aq_layout_or<T, Default>
struct get_aq_layout_or<T, Default, std::void_t<typename T::AQLayout>>
{
using type = typename T::AQLayout;
};
template <typename T, typename Default>
template <typename, typename Default, typename = void>
struct get_bq_layout_or
{
using type = Default;
};
template <typename T, typename Default>
requires requires { typename T::BQLayout; }
struct get_bq_layout_or<T, Default>
struct get_bq_layout_or<T, Default, std::void_t<typename T::BQLayout>>
{
using type = typename T::BQLayout;
};
template <typename T, typename Default>
template <typename, typename Default, typename = void>
struct get_aq_data_type_or
{
using type = Default;
};
template <typename T, typename Default>
requires requires { typename T::AQDataType; }
struct get_aq_data_type_or<T, Default>
struct get_aq_data_type_or<T, Default, std::void_t<typename T::AQDataType>>
{
using type = typename T::AQDataType;
};
template <typename T, typename Default>
template <typename, typename Default, typename = void>
struct get_bq_data_type_or
{
using type = Default;
};
template <typename T, typename Default>
requires requires { typename T::BQDataType; }
struct get_bq_data_type_or<T, Default>
struct get_bq_data_type_or<T, Default, std::void_t<typename T::BQDataType>>
{
using type = typename T::BQDataType;
};
template <typename T>
concept HasStaticPreshuffleQuant = requires {
{ T::PreshuffleQuant } -> std::convertible_to<decltype(T::PreshuffleQuant)>;
};
template <typename T>
template <typename, typename = void>
struct is_quantpreshuffle_enabled
{
static constexpr bool value = false;
};
template <HasStaticPreshuffleQuant T>
struct is_quantpreshuffle_enabled<T>
template <typename T>
struct is_quantpreshuffle_enabled<T, decltype(T::PreshuffleQuant)>
{
static constexpr auto value = T::PreshuffleQuant;
static constexpr bool value = T::PreshuffleQuant;
};
} // namespace detail