/* * Copyright (C) 2020 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "command_container/command_encoder.h" #include "opencl/test/unit_test/fixtures/device_fixture.h" #include "opencl/test/unit_test/gen_common/gen_cmd_parse.h" #include "test.h" using namespace NEO; class CommandSetMMIOFixture : public DeviceFixture { public: void SetUp() { DeviceFixture::SetUp(); cmdContainer = std::make_unique(); cmdContainer->initialize(pDevice); } void TearDown() { cmdContainer.reset(); DeviceFixture::TearDown(); } std::unique_ptr cmdContainer; }; using CommandSetMMIOTest = Test; HWTEST_F(CommandSetMMIOTest, appendsAMI_LOAD_REGISTER_IMM) { EncodeSetMMIO::encodeIMM(*cmdContainer.get(), 0xf00, 0xbaa); GenCmdList commands; CmdParse::parseCommandBuffer(commands, ptrOffset(cmdContainer->getCommandStream()->getCpuBase(), 0), cmdContainer->getCommandStream()->getUsed()); using MI_LOAD_REGISTER_IMM = typename FamilyType::MI_LOAD_REGISTER_IMM; auto itorLRI = find(commands.begin(), commands.end()); ASSERT_NE(itorLRI, commands.end()); { auto cmd = genCmdCast(*itorLRI); EXPECT_EQ(cmd->getRegisterOffset(), 0xf00u); EXPECT_EQ(cmd->getDataDword(), 0xbaau); } } HWTEST_F(CommandSetMMIOTest, appendsAMI_LOAD_REGISTER_MEM) { EncodeSetMMIO::encodeMEM(*cmdContainer.get(), 0xf00, 0xDEADBEEFCAF0); GenCmdList commands; CmdParse::parseCommandBuffer(commands, ptrOffset(cmdContainer->getCommandStream()->getCpuBase(), 0), cmdContainer->getCommandStream()->getUsed()); using MI_LOAD_REGISTER_MEM = typename FamilyType::MI_LOAD_REGISTER_MEM; auto itorLRI = find(commands.begin(), commands.end()); ASSERT_NE(itorLRI, commands.end()); { auto cmd = genCmdCast(*itorLRI); EXPECT_EQ(cmd->getRegisterAddress(), 0xf00u); EXPECT_EQ(cmd->getMemoryAddress(), 0xDEADBEEFCAF0u); } } HWTEST_F(CommandSetMMIOTest, appendsAMI_LOAD_REGISTER_REG) { EncodeSetMMIO::encodeREG(*cmdContainer.get(), 0xf10, 0xaf0); GenCmdList commands; CmdParse::parseCommandBuffer(commands, ptrOffset(cmdContainer->getCommandStream()->getCpuBase(), 0), cmdContainer->getCommandStream()->getUsed()); using MI_LOAD_REGISTER_REG = typename FamilyType::MI_LOAD_REGISTER_REG; auto itorLRI = find(commands.begin(), commands.end()); ASSERT_NE(itorLRI, commands.end()); { auto cmd = genCmdCast(*itorLRI); EXPECT_EQ(cmd->getDestinationRegisterAddress(), 0xf10u); EXPECT_EQ(cmd->getSourceRegisterAddress(), 0xaf0u); } }