diff --git a/projects/rocr-runtime/tests/kfdtest/src/Assemble.cpp b/projects/rocr-runtime/tests/kfdtest/src/Assemble.cpp index cf4b9e7de0..2077375ea2 100644 --- a/projects/rocr-runtime/tests/kfdtest/src/Assemble.cpp +++ b/projects/rocr-runtime/tests/kfdtest/src/Assemble.cpp @@ -224,6 +224,7 @@ int Assembler::ExtractELFText(const char* RawData) { * @param AssemblySource Shader source represented as a raw C string * @param OutBuf Raw instruction stream output buffer * @param BufSize Size of OutBuf (defaults to PAGE_SIZE) + * @param Gfxv Optional overload to temporarily set target ASIC * @return Value of RunAssemble() (0 on success) */ int Assembler::RunAssembleBuf(const char* const AssemblySource, char* OutBuf, @@ -231,6 +232,14 @@ int Assembler::RunAssembleBuf(const char* const AssemblySource, char* OutBuf, int ret = RunAssemble(AssemblySource); return ret ? ret : CopyInstrStream(OutBuf, BufSize); } +int Assembler::RunAssembleBuf(const char* const AssemblySource, char* OutBuf, + const size_t BufSize, const uint32_t Gfxv) { + const char* defaultMCPU = GetTargetAsic(); + SetTargetAsic(Gfxv); + int ret = RunAssemble(AssemblySource); + strncpy(MCPU, defaultMCPU, ASM_MCPU_LEN); + return ret ? ret : CopyInstrStream(OutBuf, BufSize); +} /** * Assemble shader and fill member vars diff --git a/projects/rocr-runtime/tests/kfdtest/src/Assemble.hpp b/projects/rocr-runtime/tests/kfdtest/src/Assemble.hpp index 46fb946a84..a519129ed8 100644 --- a/projects/rocr-runtime/tests/kfdtest/src/Assemble.hpp +++ b/projects/rocr-runtime/tests/kfdtest/src/Assemble.hpp @@ -81,6 +81,8 @@ class Assembler { int RunAssemble(const char* const AssemblySource); int RunAssembleBuf(const char* const AssemblySource, char* OutBuf, const size_t BufSize = PAGE_SIZE); + int RunAssembleBuf(const char* const AssemblySource, char* OutBuf, + const size_t BufSize, const uint32_t Gfxv); }; #endif // _ASSEMBLE_H_