From 753c61aa0fc7699ab2bf2b7fc9f98707e50d5ae0 Mon Sep 17 00:00:00 2001 From: John Shumway Date: Tue, 7 Oct 2025 21:54:53 +0000 Subject: [PATCH] Add conv_traits. --- .../include/ck_tile/builder/conv_traits.hpp | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 experimental/builder/include/ck_tile/builder/conv_traits.hpp diff --git a/experimental/builder/include/ck_tile/builder/conv_traits.hpp b/experimental/builder/include/ck_tile/builder/conv_traits.hpp new file mode 100644 index 0000000000..c04e1ddcb1 --- /dev/null +++ b/experimental/builder/include/ck_tile/builder/conv_traits.hpp @@ -0,0 +1,37 @@ +#pragma once + +#include +#include +#include + +namespace ck_tile::reflect { + +// Primary template for ConvTraits - extracts compile-time information from a ConvBuilder +// This is a facade that provides factory values to Description +template +struct ConvTraits; + +// Specialization for ConvBuilder - uses template pattern matching to extract parameters +template +struct ConvTraits> +{ + using Factory = builder::ConvFactory; + + // Signature information (extracted directly from template parameters) + static constexpr int spatial_dim = SIGNATURE.spatial_dim; + static constexpr builder::ConvDirection direction = SIGNATURE.direction; + static constexpr builder::GroupConvLayout layout = SIGNATURE.layout; + static constexpr builder::DataType data_type = SIGNATURE.data_type; + + // Algorithm information (read from Factory static constexpr members) + static constexpr auto block = Factory::BLOCK; + static constexpr auto tuning = Factory::TUNING; + static constexpr auto a_block_transfer = Factory::A_BLOCK_TRANSFER; + static constexpr auto b_block_transfer = Factory::B_BLOCK_TRANSFER; + static constexpr auto c_block_transfer = Factory::C_BLOCK_TRANSFER; + static constexpr auto pipeline_version = Factory::PIPELINE_VERSION; +}; + +} // namespace ck_tile::reflect