// Copyright Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #pragma once #include #include namespace rocRoller { namespace KernelGraph { template std::pair KernelGraph::getDimension(int controlIndex, Connections::ConnectionSpec conn) const { int tag = mapper.get(controlIndex, conn); AssertFatal(tag != -1, ShowValue(controlIndex), ShowValue(conn)); auto element = coordinates.getElement(tag); AssertFatal(std::holds_alternative(element), "Invalid connection: element isn't a Dimension.", ShowValue(controlIndex)); auto dim = std::get(element); AssertFatal(std::holds_alternative(dim), "Invalid connection: Dimension type mismatch.", ShowValue(controlIndex), ShowValue(typeName()), ShowValue(name()), ShowValue(dim)); return {tag, std::get(dim)}; } template std::pair KernelGraph::getDimension(int controlIndex, NaryArgument arg) const { return getDimension(controlIndex, Connections::JustNaryArgument{arg}); } template std::pair KernelGraph::getDimension(int controlIndex, int subDimension) const { return getDimension(controlIndex, Connections::TypeAndSubDimension{name(), subDimension}); } } }