// Copyright Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #pragma once #include #include #include #include #include namespace rocRoller { namespace Scheduling { /** * NoneCost: This cost can be used for cost-independent schedulers. If it's ever initialized an exception is thrown. */ class NoneCost : public Cost { public: NoneCost(ContextPtr); using Base = Cost; static const std::string Basename; inline static const std::string Name = "NoneCost"; /** * Returns true if `CostFunction` is None */ static bool Match(Argument arg); /** * Return shared pointer of `NoneCost` built from context */ static std::shared_ptr Build(Argument arg); /** * Return Name of `NoneCost`, used for debugging purposes currently */ std::string name() const override; /** * Call operator orders the instructions. */ float cost(Instruction const& inst, InstructionStatus const& status) const override; }; } }