// Copyright (c) Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #pragma once #include #include #include "ck_tile/core.hpp" namespace ck_tile { // clang-format off template struct DataTypeTraits; template <> struct DataTypeTraits { static constexpr const char * name = "fp32"; }; template <> struct DataTypeTraits { static constexpr const char * name = "fp64"; }; template <> struct DataTypeTraits { static constexpr const char * name = "int32"; }; template <> struct DataTypeTraits { static constexpr const char * name = "fp16"; }; template <> struct DataTypeTraits { static constexpr const char * name = "bf16"; }; template <> struct DataTypeTraits { static constexpr const char * name = "fp8"; }; template <> struct DataTypeTraits { static constexpr const char * name = "bf8"; }; template <> struct DataTypeTraits { static constexpr const char * name = "int8"; }; template <> struct DataTypeTraits { static constexpr const char * name = "pk_int4"; }; template <> struct DataTypeTraits { static constexpr const char * name = "pk_fp4"; }; template <> struct DataTypeTraits { static constexpr const char * name = "pk_fp6x16"; }; template <> struct DataTypeTraits { static constexpr const char * name = "pk_fp4_raw"; }; template <> struct DataTypeTraits { static constexpr const char * name = "e8m0"; }; template struct memOpToStr; template <> struct memOpToStr { static constexpr const char * name = "set"; }; template <> struct memOpToStr { static constexpr const char * name = "atomic_add"; }; template <> struct memOpToStr { static constexpr const char * name = "atomic_max"; }; template <> struct memOpToStr { static constexpr const char * name = "add"; }; // clang-format on template std::string gemm_prec_str() { std::string base_str = std::string(DataTypeTraits::name); if(!std::is_same_v) { base_str += "_" + std::string(DataTypeTraits::name); } return base_str; } template std::string mem_op_string() { return std::string(memOpToStr::name); } } // namespace ck_tile