// Copyright Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #pragma once #include #include #include #include #include namespace rocRoller::KernelGraph { class ControlFlowArgumentTracer { public: ControlFlowArgumentTracer(KernelGraph const& kgraph, AssemblyKernelPtr const& kernel); std::unordered_set const& referencedArguments(int controlNode) const; /** * Map of control node -> arguments referenced by that control node. */ std::unordered_map> const& referencedArguments() const; /** * Any arguments that we know will never be referenced in the kernel. */ std::set const& neverReferencedArguments() const; private: std::unordered_map> m_referencedArguments; std::set m_neverReferencedArguments; }; }