// Copyright Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #pragma once #include #include #include #include namespace rocRoller { class SubprocessAssembler : public Assembler { public: using Base = Assembler; inline static const std::string Name = "SubprocessAssembler"; static bool Match(Argument arg); static AssemblerPtr Build(Argument arg); std::string name() const override; std::vector assembleMachineCode(const std::string& machineCode, const GPUArchitectureTarget& target, const std::string& kernelName) override; std::vector assembleMachineCode(const std::string& machineCode, const GPUArchitectureTarget& target) override; private: std::tuple execute(std::string const& command); void executeChecked(std::string const& command, std::function const& cleanupCall); std::string makeTempFolder(); }; }