77
88#include " shared/source/device_binary_format/patchtokens_decoder.h"
99#include " shared/source/helpers/hash.h"
10+ #include " shared/test/common/helpers/debug_manager_state_restore.h"
1011#include " shared/test/common/test_macros/test.h"
1112
1213#include " patchtokens_tests.h"
@@ -1210,3 +1211,27 @@ TEST(ProgramDecoder, GivenProgramWithMultipleKernelsWhenFailsToDecodeKernelThenD
12101211 EXPECT_EQ (2U , decodedProgram.header ->NumberOfKernels );
12111212 EXPECT_EQ (1U , decodedProgram.kernels .size ());
12121213}
1214+
1215+ TEST (ProgramDecoder, givenPatchTokenInterfaceDescriptorDataWhenFlagPrintDebugMessagesAndDecodeTokenThenRightMessagePrinted) {
1216+ using namespace iOpenCL ;
1217+ DebugManagerStateRestore debugManagerStateRestore;
1218+ DebugManager.flags .PrintDebugMessages .set (true );
1219+
1220+ std::vector<uint8_t > storage;
1221+ storage.reserve (512 );
1222+ auto kernelToEncode = PatchTokensTestData::ValidEmptyKernel::create (storage);
1223+
1224+ auto patchListOffset = ptrDiff (kernelToEncode.blobs .patchList .begin (), storage.data ());
1225+ pushBackToken<SPatchInterfaceDescriptorData>(PATCH_TOKEN_INTERFACE_DESCRIPTOR_DATA, storage);
1226+
1227+ auto kernelHeader = reinterpret_cast <iOpenCL::SKernelBinaryHeaderCommon *>(storage.data ());
1228+ kernelHeader->PatchListSize = static_cast <uint32_t >(storage.size () - patchListOffset);
1229+ NEO::PatchTokenBinary::KernelFromPatchtokens decodedKernel;
1230+ testing::internal::CaptureStderr ();
1231+ bool decodeSuccess = NEO::PatchTokenBinary::decodeKernelFromPatchtokensBlob (storage, decodedKernel);
1232+
1233+ std::string output = testing::internal::GetCapturedStderr ();
1234+ EXPECT_TRUE (decodeSuccess);
1235+ EXPECT_EQ (NEO::DecodeError::Success, decodedKernel.decodeStatus );
1236+ EXPECT_EQ (" Ignored kernel-scope Patch Token: 21\n " , output);
1237+ }
0 commit comments