test: use walkerVariant in ults 5/n

Related-To: NEO-10641
Signed-off-by: Kamil Kopryk <kamil.kopryk@intel.com>
This commit is contained in:
Kamil Kopryk
2024-07-26 14:45:16 +00:00
committed by Compute-Runtime-Automation
parent db703fd335
commit 06457b942e
3 changed files with 152 additions and 88 deletions

View File

@@ -86,9 +86,7 @@ struct AppendFillMultiPacketEventFixture : public AppendFillFixture {
template <GFXCORE_FAMILY gfxCoreFamily>
void testSingleTileAppendMemoryFillManyImmediateKernels(FillTestInput &input, TestExpectedValues &arg) {
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
using OPERATION = typename POSTSYNC_DATA::OPERATION;
using WalkerVariant = typename FamilyType::WalkerVariant;
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
ze_event_pool_desc_t eventPoolDesc = {};
@@ -129,16 +127,23 @@ void testSingleTileAppendMemoryFillManyImmediateKernels(FillTestInput &input, Te
auto itorWalkers = NEO::UnitTestHelper<FamilyType>::findAllWalkerTypeCmds(cmdList.begin(), cmdList.end());
ASSERT_EQ(2u, itorWalkers.size());
auto firstWalker = itorWalkers[0];
auto secondWalker = itorWalkers[1];
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
uint64_t expectedKernelEventAddress[]{firstKernelEventAddress, secondKernelEventAddress};
walkerCmd = genCmdCast<DefaultWalkerType *>(*secondWalker);
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
EXPECT_EQ(secondKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
for (auto i = 0u; i < itorWalkers.size(); i++) {
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*itorWalkers[i]);
std::visit([expectedKernelEventAddress = expectedKernelEventAddress, &arg, i](auto &&walker) {
using WalkerType = std::decay_t<decltype(*walker)>;
using PostSyncType = typename WalkerType::PostSyncType;
using OPERATION = typename PostSyncType::OPERATION;
auto &postSync = walker->getPostSync();
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
EXPECT_EQ(expectedKernelEventAddress[i], postSync.getDestinationAddress());
},
walkerVariant);
}
if (event->isUsingContextEndOffset()) {
gpuBaseAddress += event->getContextEndOffset();
@@ -151,7 +156,7 @@ void testSingleTileAppendMemoryFillManyImmediateKernels(FillTestInput &input, Te
storeDataImmAddress += input.storeDataImmOffset;
}
auto itorStoreDataImm = findAll<MI_STORE_DATA_IMM *>(firstWalker, cmdList.end());
auto itorStoreDataImm = findAll<MI_STORE_DATA_IMM *>(itorWalkers[0], cmdList.end());
ASSERT_EQ(expectedPostSyncStoreDataImm, itorStoreDataImm.size());
for (size_t i = 0; i < expectedPostSyncStoreDataImm; i++) {
@@ -166,9 +171,7 @@ void testSingleTileAppendMemoryFillManyImmediateKernels(FillTestInput &input, Te
template <GFXCORE_FAMILY gfxCoreFamily>
void testSingleTileAppendMemoryFillManyKernels(FillTestInput &input, TestExpectedValues &arg) {
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
using OPERATION = typename POSTSYNC_DATA::OPERATION;
using WalkerVariant = typename FamilyType::WalkerVariant;
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
ze_event_pool_desc_t eventPoolDesc = {};
@@ -210,15 +213,23 @@ void testSingleTileAppendMemoryFillManyKernels(FillTestInput &input, TestExpecte
auto itorWalkers = NEO::UnitTestHelper<FamilyType>::findAllWalkerTypeCmds(cmdList.begin(), cmdList.end());
ASSERT_EQ(2u, itorWalkers.size());
auto firstWalker = itorWalkers[0];
auto secondWalker = itorWalkers[1];
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
uint64_t expectedKernelEventAddress[]{firstKernelEventAddress, secondKernelEventAddress};
walkerCmd = genCmdCast<DefaultWalkerType *>(*secondWalker);
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
EXPECT_EQ(secondKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
for (auto i = 0u; i < itorWalkers.size(); i++) {
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*itorWalkers[i]);
std::visit([expectedKernelEventAddress = expectedKernelEventAddress, &arg, i](auto &&walker) {
using WalkerType = std::decay_t<decltype(*walker)>;
using PostSyncType = typename WalkerType::PostSyncType;
using OPERATION = typename PostSyncType::OPERATION;
auto &postSync = walker->getPostSync();
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
EXPECT_EQ(expectedKernelEventAddress[i], postSync.getDestinationAddress());
},
walkerVariant);
}
if (event->isUsingContextEndOffset()) {
gpuBaseAddress += event->getContextEndOffset();
@@ -246,9 +257,7 @@ void testSingleTileAppendMemoryFillManyKernels(FillTestInput &input, TestExpecte
template <GFXCORE_FAMILY gfxCoreFamily>
void testSingleTileAppendMemoryFillManyKernelsAndL3Flush(FillTestInput &input, TestExpectedValues &arg) {
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
using OPERATION = typename POSTSYNC_DATA::OPERATION;
using WalkerVariant = typename FamilyType::WalkerVariant;
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
ze_event_pool_desc_t eventPoolDesc = {};
@@ -291,15 +300,23 @@ void testSingleTileAppendMemoryFillManyKernelsAndL3Flush(FillTestInput &input, T
auto itorWalkers = NEO::UnitTestHelper<FamilyType>::findAllWalkerTypeCmds(cmdList.begin(), cmdList.end());
ASSERT_EQ(2u, itorWalkers.size());
auto firstWalker = itorWalkers[0];
auto secondWalker = itorWalkers[1];
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
uint64_t expectedKernelEventAddress[]{firstKernelEventAddress, secondKernelEventAddress};
walkerCmd = genCmdCast<DefaultWalkerType *>(*secondWalker);
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
EXPECT_EQ(secondKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
for (auto i = 0u; i < itorWalkers.size(); i++) {
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*itorWalkers[i]);
std::visit([expectedKernelEventAddress = expectedKernelEventAddress, &arg, i](auto &&walker) {
using WalkerType = std::decay_t<decltype(*walker)>;
using PostSyncType = typename WalkerType::PostSyncType;
using OPERATION = typename PostSyncType::OPERATION;
auto &postSync = walker->getPostSync();
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
EXPECT_EQ(expectedKernelEventAddress[i], postSync.getDestinationAddress());
},
walkerVariant);
}
if (event->isUsingContextEndOffset()) {
gpuBaseAddress += event->getContextEndOffset();
@@ -327,9 +344,7 @@ void testSingleTileAppendMemoryFillManyKernelsAndL3Flush(FillTestInput &input, T
template <GFXCORE_FAMILY gfxCoreFamily>
void testSingleTileAppendMemoryFillSingleKernel(FillTestInput &input, TestExpectedValues &arg) {
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
using OPERATION = typename POSTSYNC_DATA::OPERATION;
using WalkerVariant = typename FamilyType::WalkerVariant;
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
ze_event_pool_desc_t eventPoolDesc = {};
@@ -373,9 +388,17 @@ void testSingleTileAppendMemoryFillSingleKernel(FillTestInput &input, TestExpect
ASSERT_EQ(1u, itorWalkers.size());
auto firstWalker = itorWalkers[0];
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*firstWalker);
std::visit([&arg, firstKernelEventAddress](auto &&walker) {
using WalkerType = std::decay_t<decltype(*walker)>;
using PostSyncType = typename WalkerType::PostSyncType;
using OPERATION = typename PostSyncType::OPERATION;
auto &postSync = walker->getPostSync();
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
EXPECT_EQ(firstKernelEventAddress, postSync.getDestinationAddress());
},
walkerVariant);
if (event->isUsingContextEndOffset()) {
gpuBaseAddress += event->getContextEndOffset();
@@ -403,9 +426,7 @@ void testSingleTileAppendMemoryFillSingleKernel(FillTestInput &input, TestExpect
template <GFXCORE_FAMILY gfxCoreFamily>
void testSingleTileAppendMemoryFillSingleKernelAndL3Flush(FillTestInput &input, TestExpectedValues &arg) {
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
using OPERATION = typename POSTSYNC_DATA::OPERATION;
using WalkerVariant = typename FamilyType::WalkerVariant;
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
using POST_SYNC_OPERATION = typename PIPE_CONTROL::POST_SYNC_OPERATION;
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
@@ -452,9 +473,17 @@ void testSingleTileAppendMemoryFillSingleKernelAndL3Flush(FillTestInput &input,
ASSERT_EQ(1u, itorWalkers.size());
auto firstWalker = itorWalkers[0];
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*firstWalker);
std::visit([&arg, firstKernelEventAddress](auto &&walker) {
using WalkerType = std::decay_t<decltype(*walker)>;
using PostSyncType = typename WalkerType::PostSyncType;
using OPERATION = typename PostSyncType::OPERATION;
auto &postSync = walker->getPostSync();
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
EXPECT_EQ(firstKernelEventAddress, postSync.getDestinationAddress());
},
walkerVariant);
if (event->isUsingContextEndOffset()) {
gpuBaseAddress += event->getContextEndOffset();
@@ -508,11 +537,9 @@ void testSingleTileAppendMemoryFillSingleKernelAndL3Flush(FillTestInput &input,
template <GFXCORE_FAMILY gfxCoreFamily>
void testMultiTileAppendMemoryFillManyKernels(FillTestInput &input, TestExpectedValues &arg) {
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
using WalkerVariant = typename FamilyType::WalkerVariant;
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
using POST_SYNC_OPERATION = typename PIPE_CONTROL::POST_SYNC_OPERATION;
using OPERATION = typename POSTSYNC_DATA::OPERATION;
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
ze_event_pool_desc_t eventPoolDesc = {};
@@ -565,13 +592,22 @@ void testMultiTileAppendMemoryFillManyKernels(FillTestInput &input, TestExpected
auto firstWalker = itorWalkers[0];
auto secondWalker = itorWalkers[1];
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
uint64_t expectedKernelEventAddress[]{firstKernelEventAddress, secondKernelEventAddress};
walkerCmd = genCmdCast<DefaultWalkerType *>(*secondWalker);
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
EXPECT_EQ(secondKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
for (auto i = 0u; i < itorWalkers.size(); i++) {
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*itorWalkers[i]);
std::visit([expectedKernelEventAddress = expectedKernelEventAddress, &arg, i](auto &&walker) {
using WalkerType = std::decay_t<decltype(*walker)>;
using PostSyncType = typename WalkerType::PostSyncType;
using OPERATION = typename PostSyncType::OPERATION;
auto &postSync = walker->getPostSync();
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
EXPECT_EQ(expectedKernelEventAddress[i], postSync.getDestinationAddress());
},
walkerVariant);
}
if (event->isUsingContextEndOffset()) {
gpuBaseAddress += event->getContextEndOffset();
@@ -623,9 +659,7 @@ void testMultiTileAppendMemoryFillManyKernels(FillTestInput &input, TestExpected
template <GFXCORE_FAMILY gfxCoreFamily>
void testMultiTileAppendMemoryFillSingleKernelAndL3Flush(FillTestInput &input, TestExpectedValues &arg) {
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
using OPERATION = typename POSTSYNC_DATA::OPERATION;
using WalkerVariant = typename FamilyType::WalkerVariant;
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
using POST_SYNC_OPERATION = typename PIPE_CONTROL::POST_SYNC_OPERATION;
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
@@ -672,9 +706,17 @@ void testMultiTileAppendMemoryFillSingleKernelAndL3Flush(FillTestInput &input, T
ASSERT_EQ(1u, itorWalkers.size());
auto firstWalker = itorWalkers[0];
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*firstWalker);
std::visit([&arg, firstKernelEventAddress](auto &&walker) {
using WalkerType = std::decay_t<decltype(*walker)>;
using PostSyncType = typename WalkerType::PostSyncType;
using OPERATION = typename PostSyncType::OPERATION;
auto &postSync = walker->getPostSync();
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
EXPECT_EQ(firstKernelEventAddress, postSync.getDestinationAddress());
},
walkerVariant);
constexpr uint32_t kernels = 1;
uint32_t sdiCount = NEO::ImplicitScalingDispatch<FamilyType>::getPipeControlStallRequired() ? 3 : 0;

View File

@@ -391,7 +391,7 @@ using InOrderCmdListTests = InOrderCmdListFixture;
HWTEST2_F(InOrderCmdListTests, givenDebugFlagWhenPostSyncWithInOrderExecInfoIsCreateThenL1IsNotFlushed, Platforms) {
DebugManagerStateRestore restorer;
NEO::debugManager.flags.ForcePostSyncL1Flush.set(0);
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
using WalkerVariant = typename FamilyType::WalkerVariant;
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
auto immCmdList = createImmCmdList<gfxCoreFamily>();
@@ -405,11 +405,14 @@ HWTEST2_F(InOrderCmdListTests, givenDebugFlagWhenPostSyncWithInOrderExecInfoIsCr
auto walkerItor = NEO::UnitTestHelper<FamilyType>::findWalkerTypeCmd(cmdList.begin(), cmdList.end());
ASSERT_NE(cmdList.end(), walkerItor);
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*walkerItor);
auto &postSync = walkerCmd->getPostSync();
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*walkerItor);
std::visit([](auto &&walker) {
auto &postSync = walker->getPostSync();
EXPECT_FALSE(postSync.getDataportPipelineFlush());
EXPECT_FALSE(postSync.getDataportSubsliceCacheFlush());
EXPECT_FALSE(postSync.getDataportPipelineFlush());
EXPECT_FALSE(postSync.getDataportSubsliceCacheFlush());
},
walkerVariant);
}
} // namespace ult

View File

@@ -350,11 +350,9 @@ struct CommandListAppendLaunchKernelCompactL3FlushEventFixture : public ModuleFi
template <GFXCORE_FAMILY gfxCoreFamily>
void testAppendLaunchKernelAndL3Flush(AppendKernelTestInput &input, TestExpectedValues &arg) {
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
using WalkerVariant = typename FamilyType::WalkerVariant;
using PIPE_CONTROL = typename FamilyType::PIPE_CONTROL;
using POST_SYNC_OPERATION = typename FamilyType::PIPE_CONTROL::POST_SYNC_OPERATION;
using OPERATION = typename POSTSYNC_DATA::OPERATION;
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
Mock<::L0::KernelImp> kernel;
@@ -391,13 +389,21 @@ struct CommandListAppendLaunchKernelCompactL3FlushEventFixture : public ModuleFi
cmdList, ptrOffset(commandList->commandContainer.getCommandStream()->getCpuBase(), 0),
commandList->commandContainer.getCommandStream()->getUsed()));
auto itorWalkers = findAll<DefaultWalkerType *>(cmdList.begin(), cmdList.end());
auto itorWalkers = NEO::UnitTestHelper<FamilyType>::findAllWalkerTypeCmds(cmdList.begin(), cmdList.end());
ASSERT_EQ(1u, itorWalkers.size());
auto firstWalker = itorWalkers[0];
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
EXPECT_EQ(firstKernelEventAddress, walkerCmd->getPostSync().getDestinationAddress());
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*firstWalker);
std::visit([&arg, firstKernelEventAddress](auto &&walker) {
using WalkerType = std::decay_t<decltype(*walker)>;
using PostSyncType = typename WalkerType::PostSyncType;
using OPERATION = typename PostSyncType::OPERATION;
auto &postSync = walker->getPostSync();
EXPECT_EQ(static_cast<OPERATION>(arg.expectedWalkerPostSyncOp), postSync.getOperation());
EXPECT_EQ(firstKernelEventAddress, postSync.getDestinationAddress());
},
walkerVariant);
uint64_t l3FlushPostSyncAddress = event->getGpuAddress(input.device) + input.packetOffsetMul * event->getSinglePacketSize();
if (input.useFirstEventPacketAddress) {
@@ -594,9 +600,7 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture {
template <GFXCORE_FAMILY gfxCoreFamily>
void testAppendKernel(ze_event_pool_flags_t eventPoolFlags) {
using FamilyType = typename NEO::GfxFamilyMapper<gfxCoreFamily>::GfxFamily;
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
using POSTSYNC_DATA = typename FamilyType::POSTSYNC_DATA;
using OPERATION = typename POSTSYNC_DATA::OPERATION;
using WalkerVariant = typename FamilyType::WalkerVariant;
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
auto commandList = std::make_unique<WhiteBox<::L0::CommandListCoreFamily<gfxCoreFamily>>>();
@@ -631,10 +635,6 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture {
ptrOffset(cmdStream->getCpuBase(), sizeBefore),
(sizeAfter - sizeBefore)));
auto itorWalkers = findAll<DefaultWalkerType *>(cmdList.begin(), cmdList.end());
ASSERT_EQ(1u, itorWalkers.size());
auto firstWalker = itorWalkers[0];
uint32_t expectedWalkerPostSyncOp = 3;
if (multiTile == 0 && eventPoolFlags == 0 && !eventPool->isImplicitScalingCapableFlagSet()) {
expectedWalkerPostSyncOp = 1;
@@ -644,8 +644,20 @@ struct CommandListSignalAllEventPacketFixture : public ModuleFixture {
expectedWalkerPostSyncOp = 1;
}
auto walkerCmd = genCmdCast<DefaultWalkerType *>(*firstWalker);
EXPECT_EQ(static_cast<OPERATION>(expectedWalkerPostSyncOp), walkerCmd->getPostSync().getOperation());
auto itorWalkers = NEO::UnitTestHelper<FamilyType>::findAllWalkerTypeCmds(cmdList.begin(), cmdList.end());
ASSERT_EQ(1u, itorWalkers.size());
auto firstWalker = itorWalkers[0];
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(*firstWalker);
std::visit([expectedWalkerPostSyncOp](auto &&walker) {
using WalkerType = std::decay_t<decltype(*walker)>;
using PostSyncType = typename WalkerType::PostSyncType;
using OPERATION = typename PostSyncType::OPERATION;
auto &postSync = walker->getPostSync();
EXPECT_EQ(static_cast<OPERATION>(expectedWalkerPostSyncOp), postSync.getOperation());
},
walkerVariant);
uint32_t extraCleanupStoreDataImm = 0;
if (multiTile == 1 && NEO::ImplicitScalingDispatch<FamilyType>::getPipeControlStallRequired()) {
@@ -2773,7 +2785,7 @@ HWTEST2_F(CommandListAppendLaunchKernel,
IsAtLeastXeHpCore) {
using MI_SEMAPHORE_WAIT = typename FamilyType::MI_SEMAPHORE_WAIT;
using MI_STORE_DATA_IMM = typename FamilyType::MI_STORE_DATA_IMM;
using DefaultWalkerType = typename FamilyType::DefaultWalkerType;
using WalkerVariant = typename FamilyType::WalkerVariant;
Mock<::L0::KernelImp> kernel;
auto mockModule = std::unique_ptr<Module>(new Mock<Module>(device, nullptr));
@@ -2824,7 +2836,7 @@ HWTEST2_F(CommandListAppendLaunchKernel,
auto storeDataImmList = findAll<MI_STORE_DATA_IMM *>(cmdList.begin(), cmdList.end());
ASSERT_EQ(expectedSdi, storeDataImmList.size());
auto computeWalkerList = findAll<DefaultWalkerType *>(cmdList.begin(), cmdList.end());
auto computeWalkerList = NEO::UnitTestHelper<FamilyType>::findAllWalkerTypeCmds(cmdList.begin(), cmdList.end());
ASSERT_EQ(1u, computeWalkerList.size());
auto semaphoreWaitList = findAll<MI_SEMAPHORE_WAIT *>(cmdList.begin(), cmdList.end());
ASSERT_EQ(1u, semaphoreWaitList.size());
@@ -2836,12 +2848,19 @@ HWTEST2_F(CommandListAppendLaunchKernel,
EXPECT_EQ(eventCompletionAddress, storeDataImmCmd->getAddress());
EXPECT_EQ(launchParams.outWalker, *computeWalkerList[0]);
auto walkerCmd = genCmdCast<DefaultWalkerType *>(launchParams.outWalker);
ASSERT_NE(nullptr, walkerCmd);
if constexpr (!FamilyType::template isHeaplessMode<DefaultWalkerType>()) {
auto eventBaseAddress = event->getGpuAddress(device);
EXPECT_EQ(eventBaseAddress, walkerCmd->getPostSync().getDestinationAddress());
}
ASSERT_NE(nullptr, launchParams.outWalker);
auto eventBaseAddress = event->getGpuAddress(device);
WalkerVariant walkerVariant = NEO::UnitTestHelper<FamilyType>::getWalkerVariant(launchParams.outWalker);
std::visit([eventBaseAddress](auto &&walker) {
using WalkerType = std::decay_t<decltype(*walker)>;
if constexpr (!FamilyType::template isHeaplessMode<WalkerType>()) {
auto &postSync = walker->getPostSync();
EXPECT_EQ(eventBaseAddress, postSync.getDestinationAddress());
}
},
walkerVariant);
EXPECT_EQ(CommandToPatch::CbEventTimestampPostSyncSemaphoreWait, outCbEventCmds[1].type);
EXPECT_EQ(*semaphoreWaitList[0], outCbEventCmds[1].pDestination);