From ef72a8ab17bf2063a5292ca68f78598f8585b79f Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Mon, 6 Nov 2023 12:40:53 +0000 Subject: [PATCH 01/96] Made default VL and SVL 128 rather than 512. --- src/lib/ModelConfig.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/ModelConfig.cc b/src/lib/ModelConfig.cc index 3520033304..b877c3fa24 100644 --- a/src/lib/ModelConfig.cc +++ b/src/lib/ModelConfig.cc @@ -81,11 +81,11 @@ void ModelConfig::validate() { nodeChecker(configFile_[root][subFields[5]], subFields[5], {128, 256, 384, 512, 640, 768, 896, 1024, 1152, 1280, 1408, 1536, 1664, 1792, 1920, 2048}, - ExpectedValue::UInteger, 512); + ExpectedValue::UInteger, 128); nodeChecker(configFile_[root][subFields[6]], subFields[6], {128, 256, 384, 512, 640, 768, 896, 1024, 1152, 1280, 1408, 1536, 1664, 1792, 1920, 2048}, - ExpectedValue::UInteger, 512); + ExpectedValue::UInteger, 128); subFields.clear(); // First check that the ISA config option is valid, this protects reads from From af4b02896aa4fb5615f1f32cf32c71c7fb91da9f Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Mon, 6 Nov 2023 14:09:04 +0000 Subject: [PATCH 02/96] Corrected return value of getSystemRegisterTag to -1. --- src/lib/arch/riscv/Architecture.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/arch/riscv/Architecture.cc b/src/lib/arch/riscv/Architecture.cc index 452944bd6e..a1a2c62bf1 100644 --- a/src/lib/arch/riscv/Architecture.cc +++ b/src/lib/arch/riscv/Architecture.cc @@ -244,7 +244,7 @@ int32_t Architecture::getSystemRegisterTag(uint16_t reg) const { // Check below is done for speculative instructions that may be passed into // the function but will not be executed. If such invalid speculative // instructions get through they can cause an out-of-range error. - if (!systemRegisterMap_.count(reg)) return 0; + if (!systemRegisterMap_.count(reg)) return -1; return systemRegisterMap_.at(reg); } From c4c34f747a18ba4d5d986f43035039fba2ff9d2f Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Mon, 6 Nov 2023 14:09:48 +0000 Subject: [PATCH 03/96] Removed the fno-rtti compiler flag to allow the use of dynamic_cast. --- CMakeLists.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 13e9f84bdf..da89b4c9b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,9 +82,6 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON) # Enable additional compiler warnings for all targets add_compile_options(-Wall) -# Disable RTTI for all targets -add_compile_options($<$:-fno-rtti>) - # Include SimEng API headers in all targets and install them include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/include) install(DIRECTORY src/include/simeng From 53595d0ab110bc1d52c0769caada4e5e00433c41 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Mon, 6 Nov 2023 14:10:37 +0000 Subject: [PATCH 04/96] Replaced ISATest with ArchitectureTest, and implemented full unit tests of both AArch64 and RISC-V classes. --- test/unit/ArchitectureTest.cc | 370 ++++++++++++++++++++++++++++++++++ test/unit/CMakeLists.txt | 2 +- test/unit/ISATest.cc | 33 --- 3 files changed, 371 insertions(+), 34 deletions(-) create mode 100644 test/unit/ArchitectureTest.cc delete mode 100644 test/unit/ISATest.cc diff --git a/test/unit/ArchitectureTest.cc b/test/unit/ArchitectureTest.cc new file mode 100644 index 0000000000..4690642b93 --- /dev/null +++ b/test/unit/ArchitectureTest.cc @@ -0,0 +1,370 @@ +#include "gtest/gtest.h" +#include "simeng/CoreInstance.hh" +#include "simeng/ModelConfig.hh" +#include "simeng/RegisterFileSet.hh" +#include "simeng/arch/aarch64/Architecture.hh" +#include "simeng/arch/riscv/Architecture.hh" +#include "simeng/span.hh" +#include "simeng/version.hh" + +namespace simeng { + +// AArch64 Tests +class AArch64ArchitectureTest : public testing::Test { + public: + AArch64ArchitectureTest() { + arch = + std::make_unique(kernel, config); + kernel.createProcess(process); + } + + protected: + YAML::Node config = + simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/a64fx.yaml") + .getConfigFile(); + + // fdivr z1.s, p0/m, z1.s, z0.s + std::array validInstrBytes = {0x01, 0x80, 0x8c, 0x65}; + std::array invalidInstrBytes = {0x20, 0x00, 0x02, 0x8c}; + + std::unique_ptr arch; + simeng::kernel::Linux kernel; + simeng::kernel::LinuxProcess process = simeng::kernel::LinuxProcess( + simeng::span((char*)validInstrBytes.data(), validInstrBytes.size()), + config); +}; + +TEST_F(AArch64ArchitectureTest, predecode) { + // Test that mis-aligned instruction address results in error + MacroOp output; + uint8_t result = arch->predecode(validInstrBytes.data(), + validInstrBytes.size(), 0x7, output); + EXPECT_EQ(result, 1); + EXPECT_EQ(output[0]->getInstructionAddress(), 0x7); + EXPECT_EQ(output[0]->exceptionEncountered(), true); + + // Test that an invalid instruction returns instruction with an exception + output = MacroOp(); + result = arch->predecode(invalidInstrBytes.data(), invalidInstrBytes.size(), + 0x8, output); + EXPECT_EQ(result, 4); + EXPECT_EQ(output[0]->getInstructionAddress(), 0x8); + EXPECT_EQ(output[0]->exceptionEncountered(), true); + + // Test that an instruction can be properly decoded + output = MacroOp(); + result = arch->predecode(validInstrBytes.data(), validInstrBytes.size(), 0x4, + output); + EXPECT_EQ(result, 4); + EXPECT_EQ(output[0]->getInstructionAddress(), 0x4); + EXPECT_EQ(output[0]->exceptionEncountered(), false); +} + +TEST_F(AArch64ArchitectureTest, getRegisterFileStructures) { + auto output = arch->getRegisterFileStructures(); + EXPECT_EQ(output[0].bytes, 8); + EXPECT_EQ(output[0].quantity, 32); + EXPECT_EQ(output[1].bytes, 256); + EXPECT_EQ(output[1].quantity, 32); + EXPECT_EQ(output[2].bytes, 32); + EXPECT_EQ(output[2].quantity, 17); + EXPECT_EQ(output[3].bytes, 1); + EXPECT_EQ(output[3].quantity, 1); + EXPECT_EQ(output[4].bytes, 8); + EXPECT_EQ(output[4].quantity, arch->getNumSystemRegisters()); + EXPECT_EQ(output[5].bytes, 256); + EXPECT_EQ(output[5].quantity, (128 / 8)); // default SVL value is 128 +} + +TEST_F(AArch64ArchitectureTest, getSystemRegisterTag) { + // Test incorrect system register will fail + int32_t output = arch->getSystemRegisterTag(-1); + EXPECT_EQ(output, -1); + + // Test for correct behaviour + output = arch->getSystemRegisterTag(ARM64_SYSREG_DCZID_EL0); + EXPECT_EQ(output, 0); +} + +TEST_F(AArch64ArchitectureTest, getNumSystemRegisters) { + uint16_t output = arch->getNumSystemRegisters(); + EXPECT_EQ(output, 8); +} + +TEST_F(AArch64ArchitectureTest, handleException) { + // Get Instruction + MacroOp insn; + uint8_t bytes = arch->predecode(invalidInstrBytes.data(), + invalidInstrBytes.size(), 0x4, insn); + EXPECT_EQ(bytes, 4); + EXPECT_EQ(insn[0]->getInstructionAddress(), 0x4); + EXPECT_EQ(insn[0]->exceptionEncountered(), true); + + // Get Core + std::string executablePath = ""; + std::vector executableArgs = {}; + std::unique_ptr coreInstance = + std::make_unique(executablePath, executableArgs); + const simeng::Core& core = *coreInstance->getCore(); + simeng::MemoryInterface& memInt = *coreInstance->getDataMemory(); + auto exceptionHandler = arch->handleException(insn[0], core, memInt); + + bool tickRes = exceptionHandler->tick(); + auto result = exceptionHandler->getResult(); + EXPECT_TRUE(tickRes); + EXPECT_TRUE(result.fatal); + // Instruction address for fatal exception is always 0. + EXPECT_EQ(result.instructionAddress, 0x0); +} + +TEST_F(AArch64ArchitectureTest, getInitialState) { + std::vector regs = { + {simeng::arch::aarch64::RegisterType::GENERAL, 31}, + {simeng::arch::aarch64::RegisterType::SYSTEM, + (uint16_t)arch->getSystemRegisterTag(ARM64_SYSREG_DCZID_EL0)}}; + std::vector regVals = { + {kernel.getInitialStackPointer(), 8}, {20, 8}}; + + arch::ProcessStateChange changes = arch->getInitialState(); + EXPECT_EQ(changes.type, arch::ChangeType::REPLACEMENT); + EXPECT_EQ(changes.modifiedRegisters, regs); + EXPECT_EQ(changes.modifiedRegisterValues, regVals); +} + +TEST_F(AArch64ArchitectureTest, getMaxInstructionSize) { + EXPECT_EQ(arch->getMaxInstructionSize(), 4); +} + +TEST_F(AArch64ArchitectureTest, getVectorLength) { + EXPECT_EQ(arch->getVectorLength(), 512); +} + +TEST_F(AArch64ArchitectureTest, getStreamingVectorLength) { + // Default SVL value is 128 + EXPECT_EQ(arch->getStreamingVectorLength(), 128); +} + +TEST_F(AArch64ArchitectureTest, updateSystemTimerRegisters) { + RegisterFileSet regFile = arch->getRegisterFileStructures(); + + uint8_t vctCount = 0; + // In A64FX, Timer frequency = (2.5 * 1e9) / (100 * 1e6) = 18 + uint64_t vctModulo = (config["Core"]["Clock-Frequency"].as() * 1e9) / + (config["Core"]["Timer-Frequency"].as() * 1e6); + for (int i = 0; i < 30; i++) { + vctCount += (i % vctModulo) == 0 ? 1 : 0; + arch->updateSystemTimerRegisters(®File, i); + EXPECT_EQ(regFile + .get({simeng::arch::aarch64::RegisterType::SYSTEM, + (uint16_t)arch->getSystemRegisterTag( + ARM64_SYSREG_PMCCNTR_EL0)}) + .get(), + i); + EXPECT_EQ(regFile + .get({simeng::arch::aarch64::RegisterType::SYSTEM, + (uint16_t)arch->getSystemRegisterTag( + ARM64_SYSREG_CNTVCT_EL0)}) + .get(), + vctCount); + } +} + +TEST_F(AArch64ArchitectureTest, getConfigPhysicalRegisterStructure) { + std::vector regStruct = + arch->getConfigPhysicalRegisterStructure(config); + // Values taken from a64fx.yaml config file + EXPECT_EQ(regStruct[0].bytes, 8); + EXPECT_EQ(regStruct[0].quantity, 96); + EXPECT_EQ(regStruct[1].bytes, 256); + EXPECT_EQ(regStruct[1].quantity, 128); + EXPECT_EQ(regStruct[2].bytes, 32); + EXPECT_EQ(regStruct[2].quantity, 48); + EXPECT_EQ(regStruct[3].bytes, 1); + EXPECT_EQ(regStruct[3].quantity, 128); + EXPECT_EQ(regStruct[4].bytes, 8); + EXPECT_EQ(regStruct[4].quantity, arch->getNumSystemRegisters()); + EXPECT_EQ(regStruct[5].bytes, 256); + EXPECT_EQ(regStruct[5].quantity, 128 / 8); // Default SVL is 128 +} + +TEST_F(AArch64ArchitectureTest, getConfigPhysicalRegisterQuantities) { + std::vector physQuants = + arch->getConfigPhysicalRegisterQuantities(config); + // Values taken from a64fx.yaml config file + EXPECT_EQ(physQuants[0], 96); + EXPECT_EQ(physQuants[1], 128); + EXPECT_EQ(physQuants[2], 48); + EXPECT_EQ(physQuants[3], 128); + EXPECT_EQ(physQuants[4], arch->getNumSystemRegisters()); + EXPECT_EQ(physQuants[5], 128 / 8); // Default SVL is 128 +} + +TEST_F(AArch64ArchitectureTest, getExecutionInfo) { + MacroOp insn; + uint64_t bytes = arch->predecode(validInstrBytes.data(), + validInstrBytes.size(), 0x4, insn); + EXPECT_EQ(bytes, 4); + EXPECT_EQ(insn[0]->getInstructionAddress(), 0x4); + EXPECT_EQ(insn[0]->exceptionEncountered(), false); + + // Insn[0] = z1.s, p0/m, z1.s, z0.s + simeng::arch::aarch64::Instruction* aarch64Insn = + dynamic_cast(insn[0].get()); + simeng::arch::aarch64::ExecutionInfo info = + arch->getExecutionInfo(*aarch64Insn); + + // Latencies and Port numbers from a64fx.yaml + EXPECT_EQ(info.latency, 98); + EXPECT_EQ(info.stallCycles, 98); + std::vector ports = {0}; + EXPECT_EQ(info.ports, ports); +} + +TEST_F(AArch64ArchitectureTest, get_set_SVCRVal) { + EXPECT_EQ(arch->getSVCRval(), 0); + arch->setSVCRval(3); + EXPECT_EQ(arch->getSVCRval(), 3); +} + +// RISC-V Tests +class RiscVArchitectureTest : public testing::Test { + public: + RiscVArchitectureTest() { + arch = std::make_unique(kernel, config); + kernel.createProcess(process); + } + + protected: + YAML::Node config = + simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/DEMO_RISCV.yaml") + .getConfigFile(); + + // addi sp, ra, 2000 + std::array validInstrBytes = {0x13, 0x81, 0x00, 0x7d}; + std::array invalidInstrBytes = {0x7d, 0x00, 0x81, 0xbb}; + + std::unique_ptr arch; + simeng::kernel::Linux kernel; + simeng::kernel::LinuxProcess process = simeng::kernel::LinuxProcess( + simeng::span((char*)validInstrBytes.data(), validInstrBytes.size()), + config); +}; + +TEST_F(RiscVArchitectureTest, predecode) { + // Test that mis-aligned instruction address results in error + MacroOp output; + uint8_t result = arch->predecode(validInstrBytes.data(), + validInstrBytes.size(), 0x7, output); + EXPECT_EQ(result, 1); + EXPECT_EQ(output[0]->getInstructionAddress(), 0x7); + EXPECT_EQ(output[0]->exceptionEncountered(), true); + + // Test that an invalid instruction returns instruction with an exception + output = MacroOp(); + result = arch->predecode(invalidInstrBytes.data(), invalidInstrBytes.size(), + 0x8, output); + EXPECT_EQ(result, 4); + EXPECT_EQ(output[0]->getInstructionAddress(), 0x8); + EXPECT_EQ(output[0]->exceptionEncountered(), true); + + // Test that an instruction can be properly decoded + output = MacroOp(); + result = arch->predecode(validInstrBytes.data(), validInstrBytes.size(), 0x4, + output); + EXPECT_EQ(result, 4); + EXPECT_EQ(output[0]->getInstructionAddress(), 0x4); + EXPECT_EQ(output[0]->exceptionEncountered(), false); +} + +TEST_F(RiscVArchitectureTest, getRegisterFileStructures) { + auto output = arch->getRegisterFileStructures(); + EXPECT_EQ(output[0].bytes, 8); + EXPECT_EQ(output[0].quantity, 32); + EXPECT_EQ(output[1].bytes, 8); + EXPECT_EQ(output[1].quantity, 32); + EXPECT_EQ(output[2].bytes, 8); + EXPECT_EQ(output[2].quantity, arch->getNumSystemRegisters()); +} + +TEST_F(RiscVArchitectureTest, getSystemRegisterTag) { + // Test incorrect system register will fail + int32_t output = arch->getSystemRegisterTag(-1); + EXPECT_EQ(output, -1); + + // Test for correct behaviour + // TODO: Implement once system registers have been added +} + +TEST_F(RiscVArchitectureTest, getNumSystemRegisters) { + uint16_t output = arch->getNumSystemRegisters(); + EXPECT_EQ(output, 0); +} + +TEST_F(RiscVArchitectureTest, handleException) { + // Get Instruction + MacroOp insn; + uint8_t bytes = arch->predecode(invalidInstrBytes.data(), + invalidInstrBytes.size(), 0x4, insn); + EXPECT_EQ(bytes, 4); + EXPECT_EQ(insn[0]->getInstructionAddress(), 0x4); + EXPECT_EQ(insn[0]->exceptionEncountered(), true); + + // Get Core + std::string executablePath = ""; + std::vector executableArgs = {}; + std::unique_ptr coreInstance = + std::make_unique(executablePath, executableArgs); + const simeng::Core& core = *coreInstance->getCore(); + simeng::MemoryInterface& memInt = *coreInstance->getDataMemory(); + auto exceptionHandler = arch->handleException(insn[0], core, memInt); + + bool tickRes = exceptionHandler->tick(); + auto result = exceptionHandler->getResult(); + EXPECT_TRUE(tickRes); + EXPECT_TRUE(result.fatal); + // Instruction address for fatal exception is always 0. + EXPECT_EQ(result.instructionAddress, 0x0); +} + +TEST_F(RiscVArchitectureTest, getInitialState) { + std::vector regs = { + {simeng::arch::riscv::RegisterType::GENERAL, 2}}; + std::vector regVals = { + {kernel.getInitialStackPointer(), 8}}; + + arch::ProcessStateChange changes = arch->getInitialState(); + EXPECT_EQ(changes.type, arch::ChangeType::REPLACEMENT); + EXPECT_EQ(changes.modifiedRegisters, regs); + EXPECT_EQ(changes.modifiedRegisterValues, regVals); +} + +TEST_F(RiscVArchitectureTest, getMaxInstructionSize) { + EXPECT_EQ(arch->getMaxInstructionSize(), 4); +} + +TEST_F(RiscVArchitectureTest, updateSystemTimerRegisters) { + // TODO: add tests once function has non-blank implementation. +} + +TEST_F(RiscVArchitectureTest, getConfigPhysicalRegisterStructure) { + std::vector regStruct = + arch->getConfigPhysicalRegisterStructure(config); + // Values taken from DEMO_RISCV.yaml config file + EXPECT_EQ(regStruct[0].bytes, 8); + EXPECT_EQ(regStruct[0].quantity, 154); + EXPECT_EQ(regStruct[1].bytes, 8); + EXPECT_EQ(regStruct[1].quantity, 90); + EXPECT_EQ(regStruct[2].bytes, 8); + EXPECT_EQ(regStruct[2].quantity, arch->getNumSystemRegisters()); +} + +TEST_F(RiscVArchitectureTest, getConfigPhysicalRegisterQuantities) { + std::vector physQuants = + arch->getConfigPhysicalRegisterQuantities(config); + // Values taken from DEMO_RISCV.yaml config file + EXPECT_EQ(physQuants[0], 154); + EXPECT_EQ(physQuants[1], 90); + EXPECT_EQ(physQuants[2], arch->getNumSystemRegisters()); +} + +} // namespace simeng diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index a3e400aad2..73c65e916a 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -11,7 +11,7 @@ set(TEST_SOURCES pipeline/ReorderBufferTest.cc pipeline/WritebackUnitTest.cc GenericPredictorTest.cc - ISATest.cc + ArchitectureTest.cc RegisterValueTest.cc PoolTest.cc ShiftValueTest.cc diff --git a/test/unit/ISATest.cc b/test/unit/ISATest.cc deleted file mode 100644 index 4f9416dc84..0000000000 --- a/test/unit/ISATest.cc +++ /dev/null @@ -1,33 +0,0 @@ -#include "gtest/gtest.h" -#include "simeng/RegisterFileSet.hh" -#include "simeng/arch/aarch64/Architecture.hh" -#include "simeng/arch/aarch64/Instruction.hh" - -namespace { - -// Test that we can create an AArch64 Architecture object -TEST(ISATest, CreateAArch64) { - simeng::kernel::Linux kernel; - YAML::Node config = YAML::Load( - "{Core: {Simulation-Mode: emulation, Clock-Frequency: 2.5, " - "Timer-Frequency: 100, Micro-Operations: True, " - "Vector-Length: 512, Streaming-Vector-Length: 512}}"); - // Pass a config file with only the options required by the aarch64 - // architecture class to function - std::unique_ptr isa = - std::make_unique(kernel, config); - - EXPECT_GT(isa->getRegisterFileStructures().size(), 0); -} - -// Test that we can set a value in a register file set -TEST(ISATest, CreateRegisterFileSet) { - auto registerFileSet = simeng::RegisterFileSet({{8, 32}, {16, 32}, {1, 1}}); - auto reg = simeng::Register{simeng::arch::aarch64::RegisterType::GENERAL, 0}; - - registerFileSet.set(reg, static_cast(42)); - - EXPECT_TRUE(registerFileSet.get(reg)); -} - -} // namespace From 32ead23e7a9bba60012b3eeea66712dfa87330c8 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Mon, 6 Nov 2023 16:43:52 +0000 Subject: [PATCH 05/96] Added tests for Linux class named OSTest.cc to reduce ambiguity. --- test/unit/CMakeLists.txt | 1 + test/unit/OSTest.cc | 59 ++++++++++++++++++++++++++++++ test/unit/data/stream-aarch64.elf | Bin 0 -> 6394632 bytes 3 files changed, 60 insertions(+) create mode 100644 test/unit/OSTest.cc create mode 100755 test/unit/data/stream-aarch64.elf diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 73c65e916a..5335461e6b 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -13,6 +13,7 @@ set(TEST_SOURCES GenericPredictorTest.cc ArchitectureTest.cc RegisterValueTest.cc + OSTest.cc PoolTest.cc ShiftValueTest.cc LatencyMemoryInterfaceTest.cc diff --git a/test/unit/OSTest.cc b/test/unit/OSTest.cc new file mode 100644 index 0000000000..70184e5759 --- /dev/null +++ b/test/unit/OSTest.cc @@ -0,0 +1,59 @@ +#include "gtest/gtest.h" +#include "simeng/ModelConfig.hh" +#include "simeng/kernel/Linux.hh" +#include "simeng/kernel/LinuxProcess.hh" +#include "simeng/span.hh" + +namespace simeng { + +class OSTest : public testing::Test { + public: + OSTest() + : config(simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/a64fx.yaml") + .getConfigFile()), + proc_elf(simeng::span(reinterpret_cast(demoHex), + sizeof(demoHex)), + config), + proc_insns(simeng::kernel::LinuxProcess(cmdLine, config)) {} + + protected: + // Linux class is ISA agnostic so we can just use one of the supported ones + YAML::Node config; + const std::vector cmdLine = {SIMENG_SOURCE_DIR + "/test/unit/data/stream-aarch64"}; + + simeng::kernel::Linux os; + simeng::kernel::LinuxProcess proc_elf; + simeng::kernel::LinuxProcess proc_insns; + + // Program used when no executable is provided; counts down from + // 1024*1024, with an independent `orr` at the start of each branch. + uint32_t demoHex[7] = { + 0x320C03E0, // orr w0, wzr, #1048576 + 0x320003E1, // orr w0, wzr, #1 + 0x71000400, // subs w0, w0, #1 + 0x54FFFFC1, // b.ne -8 + // .exit: + 0xD2800000, // mov x0, #0 + 0xD2800BC8, // mov x8, #94 + 0xD4000001, // svc #0 + }; +}; + +// These test verifies the functionality of both the `createProcess()` and +// `getInitialStackPointer()` functions. All other functions for this class are +// syscalls and are tested in the Regression suite. +TEST_F(OSTest, processElf_stackPointer) { + os.createProcess(proc_elf); + EXPECT_EQ(os.getInitialStackPointer(), 1074790240); +} + +TEST_F(OSTest, processHex_stackPointer) { + os.createProcess(proc_insns); + EXPECT_EQ(os.getInitialStackPointer(), 1079830624); +} + +// createProcess +// getInitialStackPointer + +} // namespace simeng diff --git a/test/unit/data/stream-aarch64.elf b/test/unit/data/stream-aarch64.elf new file mode 100755 index 0000000000000000000000000000000000000000..881a5150a0e3ed5fc8a74e48c562e78e6e2bb5f3 GIT binary patch literal 6394632 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 Ka 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 cz(liV2#~nZYKUP=ac%B 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�oB=TT7Q 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≧WY=q;6HuS$wM(4J_FGjjE&JR13X0V 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%0AFL^>1Xk2dH6fbmQ`Aj0VU7_8sGDlal|M_}R8t}T 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%0DGKw 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


^ywgI>%yNfc$wm13?PP_r3xrPxMn*o?VS z%o95{W3Chn(}9yV-PIJ^4+GBH0bD7?BIzZYF;|Kmr1#j2xl$~h1Kejb=1Q^i7T|uH zF;|LREI-x0ZV(BX3Ujh?_Yse+l;wV97+1c_AQwH;;4ouEH#@kSBib3fp4&Xa~AMu#*|oR z?}6KUaSZVWn=x04V;M|hlg*eb#c`x>wi$D!IQ~4~Cv3)CDfX`ee#&OdmEwe-18=bz zbEP0RKhHe;?7C)YM(q1uaZhb&HQ0p4C>%$4G_F~FK$V$7A|bTSOR z#F#6^eVK9e5@W6uXV6hbQZL<)%epv|o;0$0>2TJW#Y{;rB{`D=ryT#Ht3{GO23Dz<{TNwsduCT_F zCCMbkKSKDdWf&E&6jzfpAb}0QneB1TAV=yGfy3+AFuvjOuO~mlga{mdgf@)tc>Eue z#RNots>7YbV{z%FhXKO#7{E| zHoyNHMhh}BDYICJ35W;af`|VSk9Dla^7?0h6sg2jEtR~UPw+Tg<2yKBpBH&-F8ee; zlS+cl)`MUe{Bj}e#c4Q# z>v+XBu^1DS;3rDMxXoj2AxjeZ+GH3F(!!(U^O3`gDoq+Hz3o-v#U;cvzaoP3cW_#H zm8H4UNV6&LImG}et-R(Gi<5^6jFN)W4cy8oDCvbrwAy`y%5O@BL9$HZ3FI?jH9YQc z_{g;K!b@|D0K%ETPHH8t$EAm29XWJYQxtbK@gp$6O<>EDwO{kE1CG*NO-Hj%dX(;J zI$8ufbXQZF$G#l8t0`|@i}oG5t0_Osfje|pQ-1U@Lb|IdKPHgwYRclS#-Y2K@-HRg zHQm*ef76}f0Hqzet0{}S8i(#`%FnXNcoPP^5QRqY>kneCICNK2eqkC&4&Bw1U+!mj z4|5RWuEwFen(|vR9=fY3i@TaA-PM$pyPD`9vDqnKsdFVcbXU_UVwBx3#Uj%8V#WT$ zCL-l+S$;Hq&4X#^+Z_)7HNtO2IMv=IM|;^zk==dd;^mq?fg(6WRv9UARwicOu;(VYhW9J2qDgCF~zJD@E&IG9Nu zuFmS)$RPWw%bSovW|7O=M&53ZP^!y!LhX%1Rh8U$Y+b&cPw10HR^)k@pypg~pDY*!Ww8j{Qx=K` zu}nOOMdCp$5rNX6G%j(1+>RvljoXo6)sceIkwDdv2houS(UAwykwA2$P2|*j3Iv-; z!Joc{=XTOuu)d4QpL7tw;{?k9%5P(__G1D2P-gObpxg_}=&9~W4XY-!$=m-!P9Upk ze?*P}t@@HW9l z0OMU8#!mro7?1O3_LOJ%GiSc~k4fGYM!63E=B$F|2h|Py-F?XVjd4f=x`8dNRzvKg0)l@SnYDqMBaT_2 z)y-oOqeeowtH?jc3#BfICvYH8NA)W3FR90m6Zkp49-%>O@DT~8?h+mC;&}j4Eq2P9 zv0^C*?Rc7iTeBZ2N8x>>rh{dS4rVjd za+V6g=^-1siA9Y43D-&OKO6zLNgyK;)h2Iafn#tmwM{=ER0^iQAXEybY&-lIo`{B} zUx&^hwZx;a-gp_Sx^^%@nN-d%W%kjanP_UWA%Otqpr` zVn{#?j@O9coy(p;Xo}W`z2tb-qSl6en9P$!tquEdHXX32wP7zM-LR;&VIM(y*rL{k zeJ1ISMXe2c6>;36)`opf9hyvPwqbw&ayCw_4SNkMY8JIN>}!bwnq$~k-h%>>Ck8>h znx`T{tquD+j*0beer~A#Ej!g;J5>LMk652t8}?07pIRICt!z~@MQg*pVrl^UMGi!Z zvN^*F@BnWk*|Dg#Vc$-iw5YXV-@&%C7PU6)9}*WVYHiqevP?;Xng&jrKx!H|d70OGEFkStuO@W2W6P$LiGDa3)1L!E!{Cg(@vg+0oLWUQ1QYI25c432JRbPm_!V&SEWky3X~8py@1d9-5M&LUd|egiNFP*$7=5 zj4e6{j~(m5dvN9s;cZ5<0>n%H320cK-3@#wKDlC{E+PFe>ZZmmD#FDMe-&kt)?LI) z-vv%t=MyhuJ6XAL#Eu{?Sy{NAjvYz8)gJ2%mifkkzCeI30N^nQ!# z7O@j}U!7{*PkbWr0_zEuIf;0gl_GtRs`@K6A5~D|lRG(kqJk1{)-T3^C8&ZDPw8Bw zS_4&3;;q66s8x79$|R2`GfWkfct*bi6u+?yX%kgY8tUjm)#_b}>hcJ}{SBwIA;>WY zEUKV1goq7`Dku$M;;=;(lm?U7v8aO5U=hbHs-QI3#7T=PC=CvA%AyKNLxebMQ3a(T zz8JV!koSEE0FIK$t2hiKI?){k2Hw@Kv=gX;`b_8@Z1vD2-_{eN;hd%x%Q<_^5)?SY%yO zR8W!+C9%D*sDhGwxC98bJWNUQ=QNlwEUKU+A7ODv9udh$hoMYTYtG}Rg=MrlHsCi@ z`U<*BZAx0c1t2Djj*G!O@eMFDbpfu-=4&noJ1Z(ESy4gB ziV8|rR8X>_f|7mhOmvmK5ot|UR8X>?9)T&#iV8|rR8X>_f|3;#l!&Ng_ zf|3;#l&n%gF+Rkxwv2n9olpg(W!e-p<~OJS(o7wX7B=2O1nLs}YQ|lc>RKwryQL{AD6Q+CW;;|tY2Cmk zHH#`JtsCKsRr6^zR9%o~8D1OI$}%w!Qq!cgE#|rU5Xf&ZO@B%vRZwbb!z40IJ4o87 zf>P5WM5gI>5~+ex(<4Nt>Cs3`Q9((+e-^Ms6_oS`YG71BNpH(o7??#Bl=O$SzyXUY zDCv(k0b`#!3AON?L7M(H5>r%A(x3en*rEzb`g7G7RZ!AjNMi}AprkdOYdDag3QAhn zSFyPSRZ!AC;UuwvkhYnosrk`H6_gq(e)tWh>Fp#^1*OJslE^e|B59)vN=;ITOw(;7 zQU#@^TZl~4qe!F*O3mIvWSZWW#2FZ1&3qv;O)nP6GnYO};NJ*O5*Xr0&Jvg3a3@6v33Q9Uh?GKcp3QGE<)hOdQ>F4(YKSC9h^os(if|A~HD5+FINx!rLP^&*3 z#YvR=nyuBdIysWBQ@0+TEy?>eQ&dpW&t40XMHQ6v%bkFjKo;^*1tt9!nLetZq~9j2 z=ZoMI0B)N;s-R>HDMb~OOo-4nvaMg>*P;qaHqFJSSyVyEW@PC=4wvmb&<2qzDA@`J zs##P)$##+Kv#5fS?LG?Fu&9EP9mX>Nm$+k$IDkvRPLCK~hPZg9R zRZy~7YG7QT7cayK&$jUn{)S$p3Q88DbBONrB2`eb1wPrf=|!rbWZRkfST9lqC0k^J z+w~GuP_liTM%?}Cc^l#Ay(#AIghwFxS~Z94Sn^+J^}ppRiMaWC&EAyj??Kk03QBHo zd9YhlLCH;E*BkIa%1u9r1-Na_%{&Vb@0&HcmYd6sgJDqxCAU8dI|xsPi(*S|97|bL zLCHKEh3A9dUEX{M;4Ezt_YIadEUKX7j#AHAQ&doL-#ma7sDhF^UOKm^f|6T7GB&b2JIesoM%FfR zXP(FMR6)sIs>)LZC3hJyUV1m@PF;rr5vri%u4K&!RZw!*k*fAan}B2j8nw8npyc}W zH$ZEkWIng2d>hdcGHv}j$7*P0R|O?^^5b#5if{<-LEaR{{&jOZRZwzkUq|7mEUKX7 zZX@edUD8@vi+`&0l+tz92gP}*|yFyJsv&hu@)F<|-) z-dw^oInNh_;-krVp+K^aCg+6_tmC7}c|msQKAM~t#t4-r=k4m{h$iRlHKLn72=+|o20EaKR0@A={o%ArJeZ>~RKAM_!$cv9{l-BWCRr458^ zncp3Z$Bx4b+{WiXD&%qXZP3e^wMi7EK1w-vAE0JYAEn$zY*^GsDd&kDi~1<#0)^&D zi~1<#_P+vWE$X9`i=>w<>Z6o9Nbj+zk5Vo*H1U<1`Y7ej-GTcp>Z6pqSbnN?-5_u` z%MVz)5f3AMfkl0ka+UN&7WGleJp-t_%%VO@c{uTMi~1<#5r+Y(BqCQHw z_Z;BW)(g0P$|Fg?*rGm4dDJbyS6S3YDfcmG%MBLwQOcv=0bXZOAEi8oc!NcKl=9dw zfHzsxM=6gZeY3Tc^Dw@tSvDX%-u^z|r!4BDlqbvq-eOT7r95!~@EaEOQOc7}0^Vv- zAEi8*GVW~_^-;=G?*QIjq&`Y{+Ao1My-0nO@^mr`y-0nO^1jSCdXf4lfXWe`pkH2F8CIH`jrHojRV1N@B@le=fYQfo}w0a zo)7k_^IA}Bo*QqPPxshd_}+-96(UVO<`G+n(Al*ziyM)tawL9(A&8_XuLwEoE$#w& z6@=zmti={d`cR*vmDBn+uU3(KNw^%re^pwIf-J4>MLrX-_`TI{jPO{C$&y6AHeo1I zbq4u-37Y7JSu%oK~Wh6+Cd!Ec-b z-27Ye-a?|)Ju6gxQ^GibW$>Sq&xF;mRm37erkU4T3%3X$1c7~2K`Af&2PVKr6_oNa zc4eH1ZDnVbFt@#3*Ls{v`gW9VhrGLzmBCotid5Q$gBq~zJQlcs>Ufy&vuA}*P&`a% zI$tRgC$00*PNme3Q;@Y5g@8NRPN|1GxylH(?%-`|9B2%hqaMnIKcV5I-j(pT;*m8Q zEp#>g1tm1=E#hWMqzvm=;>`CzcB~Dj0cS4)j#{zhz&XAc#JsOU-G@v;OWCJUL(5J= zs%M`>>dQ7G4PD5-oe=fU?TkA3%tP~G<)4|n%}5WYVbb$7p%@Xy>3j>NS3J`n!1qd@$S4eow4 zZjQc>*ubbbi-vTP`;K3MH&*>(te`!*MuY74jq;Hl(IMZ}Mg=&csLmK+qlOVD6un5? zsOZ1I7jWNSWCJ$pj(5>ZKt5=W_Tvyny~@T8QI&2dUZN_EWCMrFwzLn!{iYo7s2MDA zoKQ!7NW58^9lbS;rl^GAOX+xmX=A+1V#!cJ1{`KaQQ^VER77yG#EaU2hwnrmu@mm| zu(W%ti6J~LL+D$93G_WFlQz_U*r)oJepE*FGlbEe!f4NLa4C-MdK!vVv6J6}A0ZUETxF95d#)P4kT zAHV}218fG+@Fi{PuK@g)Z2#7@7XhZcj^yl5!2c7#q1!{+KA({6$HKc5=3G;3faCrF z&;oD;!1N9PtqJbC@;DV;$mmB->BG-n_&PdeBETmE0{~}y2Cxud{yzZ@2Y4J{`f&go z(7@d}baWCj(_l`w@7VxaGY)SRz>i6}*rQwmkoW>kTnq35!EFF{Yhi8beE|Bv)Q9;q zd+NXQXU^1@_``{v!RzO#BhMEpk1I9IuM_&ISEImwr3w-*M^R27RSVzYp}AcPjs@ zo#;Q=iN4jPZ$|lNccQOwkNTIO`*A}5WoT!EFc$-yrSIntYPvS_hi>^7QNBf$_u-Xe zVC#gN&q_b2`82H;Kl6FZgs$Cpa>^?$kK z7WeRYdZGoHCOJL#enTD1r=WMbbe^8&?m@Er-aD0FwG(~ePV~(#y{?FtfT4CUdjU=) z$9py=`6;&)mncq@EFaD<{^qQ4?_E)}Fmsce;oLl;nhS8XYBLAiL*{^A8R`fYDLWm= zU%eVzSmReNhn<>39cy#m+o{H!o}(wq$!taM1FPLk5g81#-d}QWyf_~C4jRhL@fjy$ zdF{9{<0d@`&G2q5ukjFg@WC*5U0m1rAH7@O@4`mhukb%YBbvM79(*px|F9qG^H$=) z$^U9%-hBMrt&&iL%VjfAr-I!N$fbZIx1iVn(iQ^0#=~;enKi> z)f~#Q#$$Lo*IN4fz^+P^(vDF6{pwEA7wI_1RE(%QS+Mf&S9gkJlz+dvQ+19;`S+_k zO)|>AU)||?0QKSDj|H$j)lBvZT}Ubs7?UHQDF1#&vwkx&;@{6m={zJ&{QDWL!hnCj zaUk7|G8UWA3@Q;A8T~;}{KlzB#lK&D-F`lFNF{=Lr9>e9{pytxf%x~U4{^(3h=0F& zr9>e9{pwB99r5p1FG2_9->+UN5r}`kdZk1l{{8Be5`p;ltB)Uuy2`&_eFJv;kd%b` zKspqokz>X_jYp4DAA_(qKA_(5d>Y_vtTq^~rL=arh0r@B+58lNB29*ecN{Jwh z&6D=TQ0vkMlnCx->r^5LrO6Z}f>7>J3`mp+Lh>z5`S%O=#{4*5irvFX>@NQO!tzm% zV)s9zfhfzkV)r^qZOs%wPZ;73l|kpMD6N^MDv zk`h~dCf4BzKz@U1^b8V3YJ0vAnTj%(`1h;1UWiPiw;>V#el_{ec=7rMC9An{fpy|97ZKKCV*JJr2qOX?AWRA5yhb|&a#o@v1fE2=r$G8UicS@HBjH?u_Y)p0 z@Rx)%t-=>;!WDpZl-k;9&Y|+}XJ0o@}7S``&qgS6#stq%j?;WR>MLf zwYA?OQ>3=`+k|1>oc9HA+Z3s-V@N4VZJiLI`PUf25$03h-Z+KtLpLH1~s7U^^sNX8aCz5qN2@1~m!IJkp#Y!uS0@l(8 zkfBY1WM(5ns{+Z)L1s5EGZz^e83>1ODOj@pI{aLMB%sxe;cfxTP79kIy7nfH^eOjH zo?v18t-;kG`sM$J?G_BWCS#m`-OV}ZLTz}-rX;32E}hsnZsEDrNjEV{qdBG?6hBqQ0dU!FGQ$x z=3%^9eC2+jey9C{c_CVVa;SCb1N()0*}B>Fhet`k) zv|osdnqIiK0ndTRPWy!j)%14k7q+2+7|Z;R`-P}zd0Fe{vjw$Z=m69r6EQK?#sh(| zUl@TOIc-M)$OyS#AT>rxT=okm0r?H4u`@}O{lW!8WE%S(iQCS?;=NIbOk;PDC|X|k z3z2DTGm@xidD-t9coap{enAaP?H6vr&EFTHmY4nE1;Bv_wY=<)$I0EW=9khK)0oL; znP_?0pB>7^)P6xVruGZcm^d23e&Hn?y>c{!{X&qNeaLS!1dj6~TlTqi`Pv2`TMe&HS=GL8L=MA-G#@bNSGRpdjWH#>M=a`lKV8H zRPJr$o1WvtJx`X_{2oU2ua7@{&3UNN@)=kM<8hp#r@~eiT!d}F2_EbBV5Lb(jRGmN z?3jscP-E4sK2USEc8=DDd?x&5hTa2V%_|rI|MjGn8-_{Kt{*$}3g7BJl&^B@jg@9K zZ9SG8obMlvtWTL_`Fn|#=@xw62XO{{%0Mf?*Kc2Yx0J2Hrw1*-*Kc13Yt$%KW zsLfF$0R%$S=BOFP{zKH}sF45yA!>8f-XK(JbJX4_19S#4v{4&THb9f9y0L2s-@!o} zE$0D-kLEQ|Z>+}vOl8RRILMl*47r{Igi*$M;D*JxD%d*_4-WIeL5y@{Ke(Dn)Jz&zh4v;kFsU4`xWo-jAPkFfRcOg8 zz$T5WLSoAeV=}z1hYn}c0h7j6A>|U+q;XZ~2-3qQjjKXua=4C3Qz}6nkZfNG_ z2`HtSxrJ5TX4Vo*GdCQ(bj6R5iEunxgv}WyZLC7K zk?feXu?pQzoHS`;6}p3MXHD8zg?>m}Fll2Ix|3x}T9l;60b{%nT+g^+ag$>k;p~TO z^wk17Zxcwnpm3g3gcn&>2)H#}&$!{jGpOMw8P&@@_*K;_JF0g{^#E0Sh5Pu#QVoq3DB~Ez3sa3lp1wQ+*E4Q--2QBsWVa%pHx)VgcTB#P*b? zR^fr)vTk2^|A|9&7ul4 za{ZeBC@JwCy7%+x8>Bv$*{rijkosI^i(uDR_{|_o7_)Y%JZnn{iG$gp#VC( z1MCFLh_`QhN6Zp?N6Zqt8JDjX7&#G#*>VjbKW;h_z9dk2~w!1iMSE1wabO4#)+Oi*ARuEj_XseV4I1E=D8jPy#Wb8v@=^hvY&AmCW~ z8IJN9L2ECWIve`4k$L@fIKCrrYmUr6102m^ApKH>tY7a^G|&ba0u+V$%y3r2Lm*Ji_E~T^BvrIV+WBAKd?W>EW{4pjf`Si?LX-_08iAVV|HKLCZk z_PQLviRi51!1f>;I(-@NK`fp$4`*kBv$$JuETN-WbOJ{m<;iMBomMUMP6X6_ZDinZ z2V}z-#e+WV&p7>8a1MRSP(S?OS?D7XTZWS9a#NHxaPB6G1gCdayQt7tZ4DyRjCZoRw3Vc8z&GU;*w(j^a4wqkSvdUAr$uBlp<*D4{7n^K| zQ*4<0Vv`LMhfRL5$(qED$uBlpi#Trbi%r%hPMZ8;lU1I|O@6V-@@9ux{9==hbD@+> zezD0m@M`MOqCBZ*V>EK;x)!2@CwD!^7owSHPVJp(CYrmE)k8EB&8?LJ{9=<^&kjO- z9Omv~fgr!w*9co?rfT!}O**d@2w57=my@FY4%e{r^3DHcnt;iGT45f3+F1tfo&e$VK~kEK zHEzmVzViW+G!xA`zAac$T9Rg>dCyaMS(o6Bc{V!to!2Z_?hgZ~`G}$pah@eD?&1%kjdAuYl>^!V1@L zKak4czM!SV-ZLfko++{SOo_c`O6)yTH{u3YlM;K+l-PTw#NIO{_MR!R_e_bsXKKbE zW;iAGo++{SOo_c`O6)yTJGmS$+-0M8D_MB%ar~OJ_bj{+0MyL$E(Cs&gELIpdlt5E z1{^Iwd(Xm4-v>injymX<-49b~fHl1nR-~=}`8b?fb4l#-zPx z`^?wmKxpsTK5G=nhDm$R_JLW=UQZxA_ zuw&!Xz_6RY6+d!2coRTQE?th3njodbFMXVX5)2A+8(aXB6XG7P4PRuX@PN%xn8 z$TTs6M1BeM?pbWnRmQLb^-F8aP&jR1!m%!4C0{JDdwB_rh@=IXprDFlL=qo5rqO3k!i?TX7 zlCM*@9-b}9`yu8)i%#j;t3WdOC9w2zJ0K>Ig+jFVEWJf$==a9~zD+3a437Y~ZH8#? zSvI5;zXX;;gqG3S`Vah?TR`eebMa{=?L9j)vUFhQ(%Csb1|m%%J1ZQhX42lXvx{V( zNqf)E?xnznNqf)EVJs6jY46!tB~F;M_w4LB31yPz)ea<7=2n4^)(jr z@?4VN-jTQaI!kMjEz{n!vrOn5v=`bN#bZzx_5EJ)-Ly_+@7ZZS8ONY$@7XC2X3eC% zXQw=v119Y~JC)0Eb&&F4c1+rPcE(sWo<0KIDVO8sn;d`QWss+uwD;_6{3GySr5zVv zr|WXOi}s$KP5l^?*n4)--m|k=dZ;6AZ3^K?MX?5}~2`dsb+43qYr71!l>SnNG3<5 z18>6ph3(nd%4G87+*hXY@$QJa`+N>Zi*k&2<6p*&3s&qsD+m7>B$M`@l|>vMcGA$g zUrefD(%!S8T#lQx_pG=s$D@~{;OAajcq0*e&&slD0&UUWvvTA!Y|Es*XXP6#ZJ4z8 ztQ6WKDi!rM+jxb2(n6y=TR9IbMB?>uE2YgK+dJ?L8|K z^=Fv#S84BAnWArHE>PWg1#d}M9E!96j57|JKYUP!qWP(b8D(yWh$Lf4v>Iqb7?^*F&j#s-l&J}u~ z31312J+$|%oFMi316A64R#xiVolOl?Y42G%MS55i7*2c7%IP|HKd|?#(%!Q&C>1Xb zR6pUc&(c4{)Ls>+(%!SON^&;@sR?gFd=zc?>hxVS83v}KAHwCJ+ z_pDr`JK(|IGs>mG>6GP>(W1Wt=D(Xa3>Fx2InG5hg6Eb;rnc*bL8CCZCI?HlPZ_Yh zwcE9xE`CkgPj+n(Z@(xh-s)&S*|m{nJM$|sOuakvVGD}VezH5KrO<~-`^oM$V#B2U zWOts}F>6l%E);>2ChaG?+xvmDW&q2uyGVM;r2S-f2kAW~?I*iSi-7w~+D~?O4g&X^ zS7XQ3-No`#&FgTcySrI_z}$^^80ia4+D~>@Nnd16!&>a_xdwQdN&Cs};l#_$9Px+^ zz$;DKPj>G{JZRE>vb*;w;MFGWC%Z?Iez8gW$?j3xfUh!XKiS>a&ML$A<& zvU^`<9KAyO$?h3B6iezA+D~@R9D__&uh4$7dloY#y^`ci4$McUN3YO+vU@gl`up?> z?I*kET#8J;UZMSD_grSC>J{2gcJIf`fL@{fWcR$gky)TuXg}G#|KrFk(krx|?4JK7 zGRySJX*}WupCPkcuh4$7dto$#)1g;(<8Tg2A~UF0#bo(0ZTdWH6r-G`8KgI=NiWcQLq;J|)TBv%?vT>IC-#aiZ?6=E}ql4OCvxg4La z4FjtjX)Q=nit9+K$^#jkE{{WBzp6eFIJ~bI#$=Cw3i<4`od_I$xq;7PkADUEOhBY) z!7$GCSX^}NuB+`EJ>rudv7HFT$4I67J^mku_(b4SMqn5(czhe{KpJhAlFWil`I}+< z%`4Q&LQFuU%X&EZMn-0Wt65lH|06vP*R$fdJr8&suI?S2cDK(XJvJA7JHu*}kD;P1wf z7)ArA=NXUQa@7=jSzWXf;#dh1Jd{cRQQ%?)&eO z#mh{wIBTfj13|g)F3=pKeHaq0HZ4?sY%vUyWlE-z&jdv7(XdF6Dezir=OY({dB7ps zPj)Yzgas6${bcttc4hSp8-5A6=Hd523x7D5Cmu^HaN8U<{4~(RO97qg-Vd|P-`b&- zKk2DFikM?g1D?_kXlR`mf#+AgR4tkXDO2(gR6(`_!wM0>;)88 zAA=Rnn)hOi)uTx-nUitLs4nLR^d9s0qk)gxivIh|pRk>?{tVn-S%kY!byWoy@eRJp z6c##%9k26M{*1e6^;`-_Hux%Mv)H$pfxO~*98vYcH8`M6zRIh(XI3v^<_TZrE!^^| zm$UaR;6RvEy>d(uw|rma8jkBK9_?0NC4{?N^%{O{f6rI>1b6-F8cL?N`6~UmO;)dE z=3`&w3Os|W*X@M{w)=VyDWI;u_d@&_{>pZiyPeG;C@A49$l>!$j!%14o(jmJUt5tWZ1-^7Fa zg~~g~=XhG4RCzn@udL$n{N`26a?)R!%;|e+3MQ%KuROq!y*dM#9)IOtPT%YNT-)cb zm~8Vcp4xtYWdj?O%v68n4?Mbe$Qkfg)^IAe&P4+Y{FN;n=O4MxTj{Sn486hX`$vE? z=&uZLIed65GOPWS&sgWL6dYXTulyT3-OjPC!&y2Fbw1^C-{h~J#|C`*8K|_`U!B7_ z^6NaPC;ZjFajn%#?pOZmBRq*Ma8-5DsjlvHce*>FLqeys zcDl25AVAo|9%L~fA}T5fC@Lr-iVH|s6&1x5R8*7^aRJdm#bw<0Wkkmj+(yQ2)K>?b zaYn{*^tGp^?o| zDiT)LJ=wbDB4Ks?HE#S3l_Ftv{r3%!dh3m-YqQxf`BF%IBo6E8@0UUvAQINoKb-_= zh%U{FB{SP=sKiY(8%8nrVe$@PhS_ivR$&ce_0?#Xxj1^jc>?!0w3%fQ2fjdjxM94G z;hlQ~&X+b!oC=69u)C4&a8}*Y0&CF+)!AK)k+&h)ho+0s6a8_b`w@--EB6?z;O8}3xaU>a6n8`CYQ_0z5WV<3V0@cx z#ehyWyqS-FlgB;{Z?O@z++pmcKT5;ou41pe-2!zucL(uaJ`RfI@;h6@KI-E*gMvo4 z8h#uEN6DG97HJKd3@|Ou@5l|h&In73&?5(l`mWGD*$~m!GRaxz&DR=Yg0=WIc3{2? zG%G#_`->V1bS4ZZ7tVp_?qUXVKWkSGUfisbE*qsk1V8aKn`w;m-L?{a(9kO7K(EDc z5yZ2vaaPXFdlWtLI(x+F!97%4xo@LYvTv}PL5OJ4V}y5r9|7dM(Ksz|0Anqly@NBY za&xD0(*qN5_AXvVR_>$?!1vHiAou$=;O#OH;F6y311Gey*e9079qf@=@Wzj1;(?Y^ zyk$`(alDQt4hQHhc2?vH1lK^T8q(i@sy4=%qyIF*Lhi~6jJ0)bZsXAnDU|h9+!Gp) zZ3V=4td+pij{~-He;__?32->~%=x<3c>HGIcy7Zg=x5vwoXkBHFH9R}z5-mGyN3A0 ze*kB5X9s|17h(W6=YBvuXE1O}f{)}HPvT>lR<-P4wv}uHwHSI6g+N7EE?E<>B<=!Z zB9$~?kwmEyI%#IP(JW<`XmRe?tUy%n4<(DOG+zk#9L>4BsU$+?e3flk_qp*0eimOT zBGbW!UM=el*OJv$88coXn!x7Yv>|3QRB|ow>q?g(%HN8PX*^{jpk>{KUNk3TPVP0X z1xft@bV#qmry#D+bC`eC8}jV^oF(%Z`)_DV&^-U-QV0Qb|xCE{jSAV~%Uf4%VB} z@WZDi*`YdDURu2OvG6lmBC_(5H9JP;+UEGe7-CvQXosu#O;~Y`qu0n8 z2>y(Z8bkKD8)0&t*xMt~W!a6Y>4sni&EBB!E0|@nn-qSDO?R`xKd>q8lv}^u4NI-; z-J-8(sX;Sv635<1jP>kxeLOUl)d!)yh}FGU=eM1{qb}gr@$CKjMTm(HVK43y7wT4$ zeLx~`E8%sv0XEX%jp%SB%s!}Z5x2+F?PDzCUb&Ch=d*SHA_L5B#)X^xLaqe+Xx8sb zRrZ@%u&))qhh;yg(!O#k@ZWXL$@XIU{HM|%WL^KI@a1!Xe^B@%+&r^CDLk8b83sbl zKFAV!6`pi5u+QLSZZ|M(K* z{g8w{&9ep?|1=EW-a{B^zupcPlyV&AXmDolhukfEk;LkXJ6 z?6DhwdeuUdq-}7(gC_kiLGa6s+WMx#dhA%+jIH4V-*Pr_Q!|K1)i)Nm!Wjh|RiE1- zOxDK_;z{+Ljs_Nk-E-beIoiKM%(~B{NY|pByOk$$>(j94Pe3fkK}g zDD=sJLZ2Kc^vQujpByOk$$>)OGE~Cy$$>(j94Pe3fkK}gDD=sJLZ2Kc^vQujpE^)z zo{MDOm2*%Ad%+IOW!_8qqbGhIDD+;=LTP>;DD4rG2Nv(f`4T|0`*(jvUB|f3xxuYPy{G zH&e8c6aQu!*Q`3`-!1+dLLT$)R`?(xkNJ1&@f0C9mw0EhBy!9@=l}MYzt!cKzt#1a zzjc0>WBxc~&myQ}{?-x^)G>b?r*n?^(?E{-Ggs%>p0CR>e_xkl{=QwW_a?IcE za?IcEa?IcU)iHk-*g3Z6?>y%3SLbZF3C!Pl%-`R6%-`R6%-`R6%-`=E^WO-ka?D@6 z^9hF5^_YL4^O%32^O%32%Q64l&SU<$U5@$Z{?Et!gT?Ghb<981dCWi5<(PlyzaR5w z3IAU@<{$1n<{$2I%s<@an18s-G5_%Yc+5ZCdCWiD<(PlC%Q63O*JJ+SuE+et|Nk+6 z%zD=U&N2URmt+3n&SU=JuE+et&N2UR=Q00q=Q00q=Q02AFOT_i^mRSvPr2(cf6DGL z|8VCq|M0Jl`G-4?`G?gpf6mC`y%^lerySeM>pbS4_p4+65jo~>@va{&Gun|<9ow^b z*N;|+Mvm>pI*;weI*;weI*;weI*;w;tLcPy{d_sLS8yNhVQch)Y%P{~;j1AO^d`jC z3*x@S!@@ijQ_!DyMfkgufCmyk)7@AOJcQWPyBnxk!3YYYK&UeWJ_Z3xeOt8njc}*V z1pe}Fsc-6u8*3rI$?8STNY-HDtUtf&=tZ+2UJkKHNaK3G#a6iT;F97?=qTosHyx#Q zm<0Ye*C9e5fOW|CNa@fAb)^V>wqnL*jlYkG~)3J;bCIKI|r*lac;P!MMwx>f- zOaeYEJvt4IViK@>=#N4WCIQ=7k_eN4 z-BThQCV`h>6QT>nBw&~5Z$sm;u0|+K0{)zN2JV>Lm+n_f5@8bXt0jpr3Ha5LM3@Bp zYDpqY0)Dk55hek@T9OEpfL|?1gh{}!mL$R?;8#l$VG{7GC5bQz`17$Z348X0Nni;| zBXxF`B!OF4K4B6FbS_B(olBCyRx#kd^g!p5Bp^!?VG;OwOOCDH~2z>ze zrROFXDNF*nrCg*7lR&O4NfeVnu&D;qkuV7a)sjS*1cDt)5-*~owCTzu5RxT{ViE}N zm`@MfKOEjU7*H_@gzsAj3?_kA{LAG8wgNy($R!E2QEC*Ez&aq0#W1>oN?{VXO_U6y z_fRQJ0uPCjVe}~~g-PI5Q8J9ajX*I85Th_^L|v$K3fU=lQEp;S9Kf@JKQE4dD!d4-+cRfZr36Gr(hgOvpzr9_tVx2_1w0)$=(v#WfI8yLw~4*Ng(gt=Oy=UG!iC(ypI_vOaghI5ax18G8@40DNB-w zC05)&9Ptx&WfF+Wl0=vUVr9lg#CBm4h*gM2mL&O|OOpJ~B}sngk|e)#N#gt(8kZym zvLxv~2yf8z>b)qP{snH@aqe7Ja-pmWs%If8{!$-W@!MOR@2nIoJPAKBtdwL^)~n-~ zL3$`opeD}0F6P~*M^O*l$@M1Uq64_0I#3vblvdb*6ciFz1%(($V6pH5xe%;CE(9l# z3&9BF!lq8xrxSuDNDNR6MR4%To4UR!K^BDaZlF5IL5r*=hyeVBpeH~QKT%ae?j?On zNiY68GD)U{{do9QN;$!}qhTc0R}e7$iv;wj=LED;=8+r>iOI@_08D_od@Mklvnq+P zjQA@%%#A(rzr-{rq)st9TUbu5n1TY9e>Ol_xA#220a%SyX0pp^9)VtpyB z_c&Ic{}0wH#rhLiA9Sp&Ge=71KlgpQAD4-?L9FXpJy!A--j-T z=ktv71mg$bumCd77r~2|S(T3{#^R_hj3Lm=(fuZ^N zSjaP*LZJKuXzn*~wQ9MR4`Hwk>Yf0hjsP)SRfO|+pwAq=4hCL1&}a70k3xjS1AS(( z&c}{g4iEI1JtYD^m%|#L1RFUcs6~08&n(f&>y&FXAdKahOxA7j%@FcS(db(KeY~Rc z-$Q8RPekYeZ36yvTPo|p-h}H(>y&Ffg0SFq1gfy~5n}l@|0lG%@m;anPpkjMIJU9Y z{d&a3^$Ux!Mv0#`=R8ec!K!M7Z$PiFWJ6hn^NCjx<3JYE`j5f@&{x+YQLZJ5Lo~T= zuqf!OM;MRF^-qnKC2D{LkeGk^rX7eadY0y&8Z5&1xNM3>E19Jq?E^K+bCmyLl*0BZ z$UR#fH%yH0HvEZpe7TXIXxB*ygQTe>73-X(GQ$S#Ss9tT;%7mRAB z7V(Y}-p>+BW4vIn-Bb9TxS|c3SlVq;o{IqWpt z3-qmy9KJH$9Ck_$Z+7Ic(_jws1ITeLt^uUxXer8dbG%=2d=PSFi_^3XaHhVBqV@GG zGB;LZzMJkuPyAVQqZ3`V%86!oouy2i4%BTIyLR7OFS?YZ0pVbxF@}#T{w2^c8HmYjh69)^kQmyX}{i1_$e8%+DFQEUwYn zKa+xJt(R2_#vP!%4l@%xe228NLji2H$CaRS=o^7Z1oG6p$-?`^u0@1V?I|I%-g^n>!@?<}~x zS;TuG79T-(x9G>iUGMGzt#JXbNB`X`a#05Yn9Jn0B6WhPIJE zF<2o6_tHSC-0$?e2fjGGFUHbjx08y~LixP&l?xH93%Ur4x(c6k72Jz`Ivik@*CH8Sy=4HLBdyn42FGG)=q8Y} z=qse7>3=!$O8@?k@Lw+e_nf6l{4GW>|MX2W@%TlJ>vGBP4`>KAuFG|f>o2Ak`vIE`fK{ zAT2fcp3;I7I^++MupUNlDt>!uK+$Ult)g&18QxpUXPFrqfS?>STSm$p&x(&2C+aG>uW(epZB)1Z@K z@E6end`^H>-Z>~;t8+tJ)iH*CgK`d8hp5J~fHq_!z|{m>06rwx0Who_;9-C*07Kcp zEzcr&A5zQf0F@O0?*J?!_!!_BfMI_H(2p9 zO}~W2#Gk&2SLhIOscnYUkmUf?RRCO;&jc8GJwVIt2;PP?iatJfeBdrBe?w_IlqrYO zPs1X&Fl}`on2vTS+l_6y z_GVu!1+~^zuKi`jU4mJdEABRD$zWmh^3QiOR@{82YU~>f(Nl-OeX*+6(jE>{(_wPs z_;4xK)%#R~6mFhMWh4}ChGI~ssd4K|h^*$m1c%MdL+oW>D0X$uq7H?-5p0L`T9(5& z0Z*4am+c_r(@@Vkf#h-XTrR1}+jT>BoR%}GrGZr40q#rvN{z)yg_ z11LY&lpbn){tGe8tVVjY`5wUPJsVK7{jUHw5nFct?-BM{Wnzrmm-PT1I2D~7w=dZU zJhrOTId_bJjf!6o{3SXT3YPp|b3N%`EI`>=(1$z5RI5!n3jQ;_s_z5EE zqxkRp9eTFf9%^D~W^)^`=&2EH6u1##(KDiMTfSrK#joBVT77J7WIn`Cnn1e z%WFhWgK7k!Pe=))vz`XFNlF-Mfh3gwa!|57^_;>CxrX zhi#G)MpqHXY?2a2S5Jk@xE8UZH+)RzBqfY)VnSR3#5aj^JmZaSFt9$2z1R-r^#Vys z7`>Tg;w0V;|KVm!23E?=?Ooh#?QpYsEZvZlFnXJ~N#eqZ-r<8*^EF`XWuw>L3?ZN8 z(emlevQ5_WPO8K9dl=l&yNKg9NeQEO(|6MLp9y>qafMA%!svF|RBL{!b^tnK)>u)7 z0u-@tqE;-q4>7U#D-e_kB!gb8T$_f8xAtj78&**S8K%kUk;0{=5QjP_Pml_P!3?_*U z;j=*x)zNHh#9d7O`8))pW}@L#jYf-BJdNq}^oZ-JK{HN5AIDnTm6LG?I-E?9UXo^+ z*y-f(O_(|`-QwzvwLQl~&9SK!nEzDH)9`H0$@yr}O3uf0=FAtoQip!HA+xN zH46IfGB@)kA{OY~9Ft9D^*aZ;!t8F~!pVzG$1-@z zXpPn};m0bUfObqCpyvDNK@2PFChF}8aADn&Z$od7CEmNoYF+vhH1;0eZr5=I0bbP`k??Xj!X)tkv$=vMmhGX_!{D7`vs=GmbGuu{B%vVbQ~6e)&``-Ia%gn(GM0!h>ona zo_HSr?Q@%o;iZ)66ipPLo=jByn`+o=g6K#4Y zUL>}4CLWsjH-)H9tJcK7nIfq(d0XNs#`M(~rmjCDWD2K_yqYa-LT3{?i~rwthDPs*)7^B+pv3P_v$I zg{*mKDAze3PO1(K?O}tzKzlzEW(_KLwZ}K5B-4)aeY~P8?vy`2k_uP71 z6G8o0SonnLu5cV48e!Y@T3ns7yhC07iM))fR^p0C;M=g~=QQ5{AcfD@e8O~BR5*nR zxt=O2BGha$m=qNg^B%|)M$glr>Pc8CPtuDQ>$@P7@kx5|d4jbBpQIO`FM<~_v$Wz1 zJ_}b;C_@YJiFnV^bC{Dn5%1YU{|-WePsDo` z%YsrX;}h|oJte|)20*UcU3q*W-m^rHK!epZ()wbUD3ggNcu?A|!YwTE)Eq$ks0WIb zc={_q%O-JK;u$t>SQZ3{XHSDoTr1+S;9}ZnUOG_ctt~4KT)sOIG_D0m@LfY9Y{Zb8 zmbeU6NaPvxwNoqKmk1aSci2P(Yl&6uu!$NkA!4`YKNJ55r4i6m%jevi@2&9hdBlqE&FF#ZCGVYt z+#~ViTfPvAPQJI~+bpkUlkY9LmxZ%z^1UVZvEjm+LB6--JMSaHc*Zy%iqWj?1S|_}&VI@2xN&ed;X~zPCcf_hx*9x|R;f zz=J`)x6-kz04?hhghe+XD5mpbB4{_`UzOr}D;@tQ2=*&;k!E5EqiyoNl^%W`uw|3) zt+Xu$9Ja~#Ryv6|t{MELsIp>SFFxUWE8h_eBQ5u9l<%ZVd^v*8^82DtgYWGNsAMWD zhb)~-zBg(ssp&Bj<@eMBSr)^}W-5j6ZG^fGQaGYg8PZ9znru^1W4jGXmJO$@fz>}doQj`oUPoPrx-cA)I!^%Ze3g6o@Q8KJt zOQrC=T_Z|{m5Qy6Jy)sN+Ikc25`$L4Cj=fx__Dx-go>?=?OM5Cv}~11vbBK@gOIdr zSiuqMtiN>(VL;#+gxv+MA}kYlJz*W7!C#81NU#lk!uM8D!p619_f}Eb3T^gn95%Rb1G%@h44#skQpO#j+%PdTOxZj z-&^n)uK2^dP}$^rt9bWhK(s%NLgag^_?VHQ&lUoHLg*if_-@e-pP^3>RcVP8_iI%8 z2_sfj&p|MiIaX+XZWsu~s)WU0%6YpFJD^1W5n-3e^j zqmV^aJ#Aw4?JIyAhzo4;y;Wr&hE3f5ydAg~Z*o~xZzh#`;&t&=@J=&V=8$};Q;s%Q zReugK$-|{pX~G!!-m3bs4(g&lUN*+vTHu>JF{}DST!iGs$y+08EOBy9qNK&s9SCFy;XIu1#VAQ;u@)n(@ndc zISH3_RpE39!uOWZ*)Tnn48FGv`QECEL?+)`hJ0^T#UhjME&VhbJ2?oBFVoZHd#ftr z48C7alkcsnoWkdNntX3n6>PMFdYXK1Rh1OJ)zjpAtE!^ILwXJP-m03}jF|oWoJLrB zw~4ueVhu$0sy1ZCBL9TNGt!NBWuF$=oobm6(I($pYPj6kZSuXPMlkE0xFMy+-9Q7b zmQoX+094;FQb%y%VAiBE{Jd^J&HG^4d?8?+kYAu_5Z>bY+ zhBj%F?=3ZpxI**qz`qulIBnz;zPHreGwF+G*;A*o18}kq-JCj&)|O4ax70l9Q7z$n zOPzTg6OivMb(UmqlkY9Hh-xg)*gLlas?~JFN-ck$_T+m@U8U^F_m;Yv*u+l=r7rjs z1~Kxzr8Y2StjBW1-%PDq8~p=F3f)~R6~4Drv)&V9tBibasll=?))M?enrhKmR!ggO z_})_Ik=iStMQ|#4+c5!6d$O8*Z>g;xdcX}~kH=(}x|8@Vn|yDn?R2uwCf{3X2b*kv zg5M@nex03tsE&MZsh}>SK(D)HEu@If`dE4$_hF@)L<;D2&v85r6XvwAUPr#S)JQ#s zB85G5U((AMJwwT?yYE^^hl!MD){*ZmH9@3^Sx3INRGUaqvyOaksVR~}%&g-H=G0Ll z#mzeMy`_$kb#t*n4ODH`k?$>ahR$ydS+kCOZ>a_1rOB+T zWjPn=qmi!JtS8@F>TF5ZV%BA^MBKSLS7)te9r@l;=SvPV%m(tkrIzYk{ebVSj(l&a zc1gJ2tox3|UZK~anKqhrq;ZdUbD}ecNWU#rxz}dcMSsXN3_AP6sR{0<@2evF; z1+sja3DNl`_}Jr!d9NK`r9%^6$0$lK7E{^B{Lqt7jG!X4_j$m}1YZ9d;8Oy7z6kib z!1kvAe1MRT@A5fFt1jOpyCeVV zM6?I1F>=!Hk2D5(%d6%{Yyc|vuPiinloaTxyFXOTbKXBk*RM9Cn!j@s6}0c(1i9Cn#;jIi`{E^g+T@f5;(njChS34@vpuGY>WoBFrZ|n6mIqWhs7b0e(p5DG3!ikL8tf$FgmzlK^F?bD{#mog- zW?atJWm#pe6-SdeC}sp=THTm)7$fP45W^YMvQBj4 zuVZ`x10uwP0t{EU@%J%`0hD|mZCSUuQ5<^3atT`2?_A|)uCka2=4F!TO*h_)@ga$d zi4e~R%a-*wH@@a)@x>Go&G$`~6@eg)GMYvVplrhhk6F--I?0W4^PlX-a8yeoH|Ke7 z499q9jGN~gH=4t~nC}84KxVf?VOf0CBBkN*SMltkVyB&-bCdImP|@rgx0ye2qdEND z5_y2dWv#0$CPHR^NA`G(1EG;6v8-m-l-Gsyda*M=MnF+CpIQmHl!QIk_Lg;=n`#~7 zCE%b$OfTt%>ml^Atn*y6duhf17JLqmM+0uu>x_~>9#2_TN<2Kuc;2IUQ592%MDMwY zcyWocm@h^Va}Y5_CDd|hQcPFwjm?I(h}WEoat3xK6rg0%5I3H2lMra$VF)dY51}lJ zYH7rI0L2WTWp^c!5q@w5jzXzTcup&CQ+-!C5YuXM0=+e{gb}(3ZHc9fF+`Y_*zzL;Q$Mc?vwdRA1rWT#!!|dO zVTP709~UHaoHxh@L|By2nPpIa60Lb|;zN3i=xpZp#BCm?!%6o1`7F1V$6e|UNO2fa-r=#=1FKR>v@E7 zp&bG!mf(pBpsGp)wG4VO7{Y)9!M!*A2y@?HRCsRhDNJBvZ>rXN>RqtY>=5+5kCOL4 z_7-M#G?RwyJlY(~{*K$95Kkvg+LLL2`~z@VZC_3O2_xYrYo9|r;}qa#+rJukCh5#t z>;&!S&}XYXoHi#BkGH2$FE7H|>?3I}v%nO)A8k&f%`}^DN_)@eus2NbR-z7eq*pgTIz0XtCc$!sON*uG#B3@1$w{IX`xfAwD`!E(|6?=#5 zb8JX3xWEdNzTlC9Ii(nXW$DHrF6tu@X755OR$6rjEj42|jSgQVM(5LrS+X_62u@Zb zzU>-`zX4&&;VV9TETZ{XXc3s9X_>Z~_QL27gs z+^JW_*`4=7U3kYMG^w0V=w z&|?2cpMM~3*NQlE6f;2iSzO$eA!Ny#xYUg*<|r!WyHgeLEp#z278TGA>8QZ4a#OR+ z;#j5rmHArN@ROe#@;uhH2Kbdri!Fw%k_Up>IvyR^F9-)NSQG;;_1{yiXigx0Mfwlj^qeC*o># zTltVUt8Od%iJNV?t$ak>V#{6SW8zj@ZYrM=x7l+qLaM*;%9v(Xv!^~Mo?**O{{_2f zZdz^*|BFS&_m?aae4T)h#m_~td1AmaE93e5HE`jf!m{?DDf|@6IauL&9BCu;D`A7BG%fQPJ5n@x zpD@)Z!J!4P>~j$>r%)kG`dlpVb6E6QD{$y(y4JS```3Res`VM1;cfDJ_!r7yR1r0y zA%qE9g}j6%qKyIeyHMceVEXB|j0Sn+O=vDNIAZfs#1(==XL@%v}mV4G^o-bcOvCg_v)?Zg4%YWqUsT;i<#IdPD<*)Gfg zhlpG30_wxWt@b6Dvj*oa0dA}2q^Kw29JYn!SlQMm)nln>ha>;JMW&oTLpd zn1|xb!>__ZLnz}0&zHHTya2MAg!`3{a%qgtnp&$yB1C=?azF8Y*fn3%4;EwfZSdo{ z^5SLvvyRyjeZklWg8|rX4#uT{Qyl%MT5PqR<_O2bNb9FFlfjb7?v=mHg!U?vp`DrR zcg&bc1_o{>X4g#I0!t=?Ei|NFDVglNP-TLFB7gd(+u&o!>1WTU1sYbn9D9|AvdJKG zHM19T%Yw5sJtfil$K2b=K1u0jhEJv_(X4a_=$K7MHzk~egaYTlZbAMDZyzmB{(gn1ZlA! zoI`B}HeYF z|FzW3Pg|2NiCUX_LIw+8uoY+Tolh z$8u#hsxKr?lp_5GQkzVvhtbs25Az1!fa&9z(XAA5ctxK;DX%%8P2#DxUdRm;p3bdf z^a31fe5Ma-jM--z={@@O$GveUw9huV<9Qm#^FN^IE7MzQz#{{Q2n)~YTn(2W?hQH@p@3>j7x>d zxE{3r(;b^9V6(-sxrAd;9{`hXYqd+XVy*SnE>`riy2HY_lsRo&qH>~_&m1qZ91$OcZc63YkX0-=bU7*~PrnlFS;%4O z;X3gMK5QLci1i09+*S-}eunfo(miuFg_N`W47h5_hEG9Ej8E|uQ~m}keul=UbUzXs zRq<)LbjrDS$jQ&pf+?pVlAocGDcm2!5i z9f<43p6bdh>Z#-;*p*q-lcJ3 zJZ#o&Hdoz3GU^TLe*<>Oy?Cr9Xa4ihsH13B@ocn!97VHAPGMunQ8cS;6|g#rW|dz8 ztd62t6~yW&nw44)+^%&i!ax6c2>1ywXZ$L%wG2WoPoa4%bT>jS@%@{j<)_1J6tqFv z77T{5e;_8rZNXp|Bi6#)77T_l3SPv_La}wWP9V%}!C)Ap5Jb#O4Gd#GnBf^0b=@#| zN+ul)V_Oj!lx@La7;8p!m}3G|B8jlr5 z7~wBp`*Xekl#^f%!0gK zchNK%jQ4=6wwg8nt6J z?|>>8cdX_eZ1$pHvST&xn-XBPV>R#FH-Nz~cDy)a7~M=~*PwvKc|UwdXSK`V;78?* zJ67|45@%uVSk1%vXw=>ebH^$e#%`j!Fn6qiVT>_g7`t11GmQR#AeTElYPVuhGK^MH$sMcR8b!%4I*>|X7#l50hEX1I%jJ&MZpVs}VRR0a!Z5Z#lnkTi z3uMnlR|^cWOzQmP z#+Fjc9jkfotYa!aUQudP%IL$6RVHVQ$k?&UEZJKkyE|6%{_r4FvST&x-4TFjRT?=A zV~lhd#t8kZ5dUWY$EU+ECRU1JjPTbCV+P*~#)R_EUy_5p{`eGNG*se$F3-;zE6+h~ za$}GUo_);^^Tr@tsRd=mc&NK@r503(Mu^F}cM_9z?<6Mc-bqZ>y_1+MzM1z-gHQhA zikR&7EY`P4YJYi0);AsS!R*{x8W8@7HCX%z3}j`0+|Ym~++<};J*Nc(r^%$Doo8Wv zA>T49ICZ}beerte9UW)3reTh*r!4;}sM8YiwNr43EJg)xT9%Y=@FM7K5bzCN36mh; z8@v)GL%^3{C2-Z(V?XlzGfJHln$`3VfSxONE-S=3J=gC_V3jR6qtiWUcHC`%M$N2aN@M%aLMLe0J)Kf%j zBzTCVrXspERf1DfB{(%zg4DDPg}u9@u=UJr2;3D@ud)!`qK+&?lq}F>N`Rx{^{_9K zCvDAaAkUTCmX(iRJrWS39qYIXd2m*N?`La)h4%+Lw3BO;MR!gkxP~!vF2nGX zHH_(FdUcxJw29SecGFL6$r{EC5UbPdW-hTh&29#X)oFG!M66D;n_*&gn%&GJR;Ss` z7|W#AFlIiBkVOfGEd@mEtL#u;THdq zz<W0t?%a{wU!LME#8u&DVL3<9q5unt;Y*q`)}-!(FnZCU1di`vM&?4XqAH6*pP z=qJpiS{%V+o7o5U`QK4F+2qKfmkH+4^zzyX=zSn)dKHWMpehur?eiq|1` z0I}kA$Q?+mcpY*F@xoKQ4!MJg6|Y0?5MEA-*CBT(vEp^eZDCq`hbmkMcfp~JEKnnG za2TQDbqEe8=9yNOS9l$QBMAM%>kyo^1z30;f^(Rq+R76=iLMo|L-1tk6|Y0^6zUbP zLvT6uiq|2yidgYF1XuTi%Q$v+1#ftk&dKW#+{A>6*CBY5IM)iS;D(Q3(EY`B7+f!q zybi&eSti^=gx3LXw)k^gH@A0jv$ey`<_rwFlh+}5o46sbL-39->BirHA({_z%Cc7ls?+FM+f5(;rkR8H}UUUH8gz+Z*bR?~g zW-J?d#W1x*RrlIERsz>gg4(jb#k>^l!}%|4Z@*jDqJwXNx46CK6zGRipVa&x!e4cC z3RBo;`C)XlOqlj1N5kmYFQo$fspIJMb72y;m(B$~j^=UuBxWW!iTQzL3C^eK2$nj) z>2^MJ#ai&wJZQ(C2*I+b#;=uO$~ETv6~VP^Lytpo^!N(o5sN+w%bpA7Ez)B7sx-Hv zim?J|PR;*Y+%m)Y@%=QKJ?9)PzX!i^YdudvqvRLy>$s%_6&t{p&<7P8fI!6tfIiSd z&#gxlg8D`@gTD@?HVem*$G~9&pb2!j&^T-WeE|cU97Y4kNXf@9Pvc$|E-E~Y2^AXv zq00t9%$buZ95w*Lgv$o-3WO4e4S-mSIBWnEyoeDtfYFEuL>x8%3PHpO8vsia)&kVM zhZIsMQds;MLNcgG0hRzKTv7l~QGyBR2eehO&he#{IHUlKFx53(0a(hLgcfp00q}AX zPQQjDze5Ue7Bmhiz)C=u6hQjNAq8Lqx}*SWVH4NNF2p|){i1GkU|A}}s~RnjqyWDK zh&ZGGHONhiIHUmdwG-6lAO+alVG|LoMOL+=f>Glyh}f+KuE0M+X$!O)v-{4KJ4peU zRoL&40;F?M14RnJoLo`>Vv+)wh_0lKC!8}7SBu{v1(?EQUtfWyKARAk@$#JwD4F9~ zq#^|v2#s?+CvQ9ep-4ypii8xPsP$xC)j|qT^!aJXr04@&=VsBZ2)h*tDL|2s0u%`; zK#>i-uSiG%ii8xPXhJ)(E)r6JA|VAR5>kL7Aq6P<87aUS$UO{FfD{+miWGq5bx8qO zIF}TF4c9>m@I4|NQUHz&hZKO&saR>#WpG&}qyR-i3Q#1Z07XZ(vr0k=P$Z-PMM4Tt zB%}aEKO+Tbg$IWe;5I-fH-d6HFDHWbas2Bb1^5AiLkcjM(GDrV24I&Ipck-9 z3P9XJ3c$<8?~nr2hLBc~0??&P3eX6(q2Y@yTA26UVF1#(Bn6V5%?WafDeEjQUFyjK4Psncs?dn zmlR+ouuBRMji3;k$)kgcKB4j>I+I7N6+iS3!xOk6X+7T*jjhrnNok66vIK$gX@@(3#Vh}Aq^lng89QprcG=2@a-ShVtEl87R`VuNGOWCVN)uteawgc*VB2uXW@^GAd&0v{qA2k4Lju%-MCDF7SS zAqAKU2pc|Ptys+Op9LTVxEIRqe8gI@SD+#VAfG{ZMGEjbQw8S1oJtve_+2R`XN<`B zT`6YC-Vzy1U_o6{0IFS5fER#WQUKbxqyW+`4k^H1*tnzs zyw_z_y_r9r@26oAc$*)PD!gr#?zm<%dav)+jtQfl088YohL4*)fx9ZMa-g@a29Kx4e) zoPj43AO)b6LkeKzGl3!n_!w%E0?=OpNC6lpeV-c3RY7+iaY`M<;%EVuF@kt0H!fI* z6ksA$4k-Y$#Ilm40Mxpq0IQ&NNdbr}@WK)Qj(2@wdG3$`TtQ!o6yO6`xTFBIc1Z!K zN40K8US{gdT}+@z0VH#W6o6_h&)7T90IKC#7^DCsJ#a_?l)WMaAU3rEkOFuLP-{gB zz?9t;DFC%ID2wCzWD#6afHSdb zd$Ok@1$a#FBn2RLNdf4@B?VxU?T@r{6H)+n_Mv)*6hKCSUhj|sus)#Ybw~jy1@!vo zaQ%Q3fQ1O_^$saOFG`+zhZLZdl3DMN0#M2`>m5=6N)fZ(AqAimHR~rXgwHAR@H1xC zJEQ>2FK*U5qyX%MVzYjJJ1kGu4@bJBSld(P@hXtz(=v$e*sb1i4J0{0U%iu%mV5D)TMp1y-$&bY z`MD^jo-UbG1XCWMPnVtqs1DGl%ZSwh`gA$5IzXSUxC~ewpiftB1y%>>(^b@~1N7+> z_38k9y83xwb$~vd`3zVcpikG*ULBxM*U?@bpikFRuMW_s8>m+Y=+jxfSaS~0ryGgY z0s3^W0$_E3KHZyG9iUG)^#xW3=+k|vR|n|R{iXt|1N7D zfIdBFC$Ks|pB_TJIzXQu`ZBOOK%Z{;0$3fOPml2Q!>=Iy2&+q_!dK@DxJ;MX^>G2f8dWHw+(-SU&5Z5z2K%bs? zD}*G7ZQ2Y1ffOG@Bn@K2nwxwh6m`= zQz(GNg9qr-N0ube6?%pT=+jf1Ak5G+JV2j5Y9fTWdS=NA2-8l1ut3l70DbzHWf0EQ zGdw__K5jLHc0DtQX2;(O;bJ|*1N7+`A0VIgdWHw+(=#7K%tk%49V`9xiHzB-XT~v~ zS+5}m2k0A@qFrWSFqAXESmr}8gb*aEolz33QSs9yo~bNro@>R?Bo5TWKFhkwjd_wW zlAZ`@IJ;QZJ#PGd#?N3tgcv@|u&h_z_WeCR3xGCP16%i?1RsWOMZif0#$iq=C z0he8{=Q`N3?tofS?Pa_K9F&NON;iBAp|@o{c$U{fEQJ{klYW+?&7@M)8_cQA~~m zXFy?DyqT6=$G962Xx>Xj%Lg`=MYUx1AmbT8$pss#521_~UODfMP&^GB93hg#B?_&b3xst+*M&@J8e>K-I_kD=DP}gcU zY(qBtjm(WK*GAU%b0g!&lvi^jpF@9TWWK|r*BbflsDnnP1#@Q2O?(CWt&zDFH{_a| zcfi3Rqv>@x)jUn#nYBl12*ntD&j=Uf2! zekB(}zJV?OTO}7k-p1nW64@w(d=lI30TmyI{4V8(l-wQiesosN!%8lIe30$&sFL#` z|8^ea$CVs|+toRpaZhG6o9~@nXryXS=3$oX{YM~VJ(*o>z7P3YpxKk*ZyVQq%&u+mWOmY_2(6yX z7p&c^HnAx_e-aL+c{2MJLin-{?Rc&y^AwH&)_naoV%j~KHV%hx-iL6pC-Vc- z{DY6wH+nKJG1EgV+cxyl5~TSzhx=|%{aQLO^skWUNl*P`wvk6362IuF|0ljaclCWkorg*7T4cnHmDgO5*F7#odju!F3pPdGuvyZ#7#5nM=|$dI%nD$X8lcg zzEv|;{~Ow6uBn-vCqUkfHUk4Fu>T9hhik@@-oQShAKGx@Gl2LuyBp~a=M)6`<+bR8 z>e^k5k@p0(54|KtPxJ@<#v>d9mVL~bpx<~@y(W5j5AYMjaeE%v=W2Oo59`=*_=UXM zr}b)hL;mz(Ss=4K__}_ga+woR`x3Qsa`?*RGYo)A!KO{(<!5T7^~IBU-i0MEV*xY_=Ic+O7XmY#e{S9cPh z)U>L_2eU0_OQ@C62Pg!}$a2ZbfF*I48BbA30~Se?Dxs6+Z8w^w>=G@`9h-l^rWYFk z$KGKjSv1p}i=1*I#PC%wI@*mt@n`YnA})m?Z0OapM!J@)uF9D43ON~{P8(u2LpfIj zzpnIEhzho%W9m+M3J^4WD6KIWGjshoUN^x2I;8&a7ZBIyIn2W94RY=MoGgk8u16ad zy^Tv(FM4Juuj9Z6FbpG3T~~<%gLN%g+oDf~Dw00~qj9*-ixyjk9>oYBp|hbZx$0_1 z%H?yC@~l_U0dy7{SNvOW}=}w*I!zs_p$IZS|YOY60&xT%(%^w zg)zjms);)Caw&wdI#-abaLOVkeuoQoV{KOVrQxRnlSplExxBT=F}OR{_E8sX#E;ue zZ9kpYKsfR(V+M-Tc%(l{ReP8|4bGC0d(jNF<8{8IUZ4fGLr0PWxmfVhb0pJEkgP)0 zrve`?K0+T6Pm{WYE@=mzuJE5&oD<}35vs#ttM)`GT4?@q;8PV&VMS9rUvEY;gr;!9 zI9=fuTwAqg>YT?z(^&Ykb>35C;N62V$#Bv_cVlr-yHei`jb+`0FtmsTSR=RD&@S|Q z?OL5rutEi_=cQ8M#M&Fs47FG4b_TQM$#YKEYOj_Ey!2(iT_Z)av_!wlX}3-vN<024 za_tq$F2Xn3wd*CqiX62I!nOJ+ScOpxdJTMpvP=O`V<4sn) zt-V3vS9q7(r0`2@x|eF`==JAa>#{2h(i40*c?h+U3hEn^0MBs+P>&&ikI=m4bj)b)j>IG0))*E#D z7|XagXy38AA|zb{qUZ)U;1R`?#4{h&(w%BjGA*EutX7SrcH zmHr^>`Y(kqp9}nh!XM!lTKkj2vzeD+EM>(HvV>lRC!GxJGkBSY8kjbq^iQxYLk4%J zg#JT)-1uB-#Qkc)P4L#xkn*9=zN5!lr}`lo_4paQf5A354a2u#2qQzUx5Gub!HYh$ zlq0!H;S8%+Bm4D2i`lL9N`DbYcvj(BHb*aoSDpskWUvE6r>_t5id5VhOJ{ zcsC2Z#*%MS`ZODEyV&>ZMMi~Uw(T#sJL{XYli}XfR!{2K8okun8r|Y-xxN_b__uUB zwnnRs(1!D?Z%t4e?hi4`PH98!hc*`>d!v#iH`IP;a~_({NHK-G9~v#7ncNR;q+1BN zAKIw72GIGbXOsJ(joLAcr;fz zPeFT#O>Wio6s;vx$Lx+IRLAU4Y|Z=zWioqUglQ(X>Y7Ek&^1$?xRY!v(9qsw4n~W~ zt-9Xw2%u*OWp35=R#G;(Ro9DEJ|MU1dTYO-8*bJ0W~udnybe(q8r~+c;#OU6v$)mU z0SEPlfsc*26ToKHIBwG7J(7EV1Kg_XJ!&&zv;ep2dZ*Dm9N<=6@6p7O0JrLTkC_M@ z3vjEh_gLl`4{)olcRJ7RB?H{5>phORI>4>E-s5SX4REWj_XPTB3UI5gcLs6az%q<| z?@Z$60JrLTPb3}?;8tDlEaE`{Zq@b9CLW@h0W_+24y)i{!E@u@uxxD&a;vU4VlX=` z$gR5Gs0?;9$gR5Gm+NnF4I!+BxK-C1H_k*J zvL!aR*?Ye+9v54XTXns=oQ$|t*ZY77W{_KTy$>3!y%pqEUGGEUI~;s?IfUIJ#DmwQ=Rts^fuJP3p_i&{Ra;vU)s(G*S!mYaAqa<;J`^9qVK19+8_lxD!6PnziW?jq6#`GQl z+{Yn@i&6F(sy%B_ZY1*s^=f1rlRf;lHN(UZ?k3 zxyv{>Xe(fB74Cq|p{AoS{RbY0MW}BJ)LP&{+)P6Kh|R!66fx9HYz6r1aiRXifxyj! zfd>$W1Gf_oB#s4+#V8I9V(H?6_c14g1``(t*3)JP+a?*29#3$?TWXThWf z+i-a35*CQNjKjkSwE%xTE^xM3uddS0$mll2nq)(&=>4-ASc7y(Z8sN(%xlJF+7R?jW+b;fCP)nMP4SamO7M zK@m5^9mg33#cjrI+&~;hX51JZ73bqPjyn2#-*YPsI`jSg@q50{^W%BA{oZrWJ@?kF zTa~Ih@4d&G(+TJ^r&B(ca>HcwIO{mdO_R~%ti_aDCZoq$ONbLDqsLhno)43F4K=JA zBNfml%h+1Qikivjan{YmKCQ~IuImYfn!%?l(KHtNW@ z`agnBsM4)jsreW-F52)X)bLV_>Mi@@ud3d*r+QJU`)1CCdZ`W?UaI*<#gOmK?)Vrs zF1ioZQbI3|c3jwPXn;WJ$3R|fn)Krul*e5J&iltF|EWKa0)JyX*Y+Q8o9m>eqgi$s!Ue1yX%Y;2fCfYdRnvY@QqLV&lrH<$! zW4bF%e~$A(Djh0PY5A}{EguS1IfnlDX=h&#&q9(A;%Ka9Ik3sc>{y0SGs%I7)e`e! zI2M0>3?mh*BZSWeIyFKcjW5!_geXn=X#6a}TKG-Of%w^ysX)mrEq;#Pk7mQ9kH*iH zOc*6IwfK2Dr=q3#sqhm_NiRts?cv9}V(d;_REd$RQBWiF(L`F`4+Y_YKR{lqccPY- zCVezfCj~xr&PGG0b`%Taq>m=D`cy~^BZ{<+3$LmwKLs@V&BajqWzv`oBU%+8_L=*m zqg6p-!{p-eDwEhW8Ah}!L~NN1BU%+EPM8cMS`{HqnP1Y5MO7~$BxOk!L;mAsYxi*fZ-ay9G6xOysi8>`2DONDi!z|~X9 z4Wd9EY4Uz5#M^PzCR1eZX#RmnjtZ2mOB>iAU^FB#uAZu{XJL%1r>gD4*d|v`RX4J3 zLWs7hr?x=DY=k(q>|Dr(Xv&Oh(^IJwtU%Zm6lP+n|%u>R-a2EOoRB8ZZo% z^0R1YQ!4DygE)^Q+NLbeWt`q&5^Yma4{dGKLWt__DRk?^1Z&|XUC@bp_CdiW&Ho;Z z5z1lVVA_A${MA=)}Zv~`4N>j=@- z5u&a09`3w8M~JqL5N#bH+B!nCbpj~$J3_Q|glOxG??OKuA=)}Zv~`4N>j=@-QAAr` z8i$v@|F`H$FqMAu4D`Yz(Kh`y`>UCZzLnm_&KV}7Z>6_$;4IC@=v(P`Mx(&T=v$dQ zuOT0!Z)JKBx(Al&w*xAU5N#bH+B!nCbq?;rozW4Zts_KRM~JqL5N#brwDo<3W6BJ^ zmW?p_R%Xm@Kq0SAw=7{4QJC1iMDkcX;L$X!)DzBzXC?|EyjwIJOAYX za&k$urPQXRFcbav-Ux(G*%aPRp+w)hUxZBU$0?NPTU$lQ)P99R5^cR|cW$Qk2S^e^ zw5|WVEsW00KLG>rrRo@ow)MMTh@fL8qi@xJbw9ArWc022uV-55gy#JM77T-_-3|i@ zA==jeu$0C~w5|V98T%NsqW&i_7ADcQUeo1`C`_Vly{?yNE=;0ry+=wAeQO|$fLDXm zCjYrWqODh$%?4BZHVTU{?7bHVQ~(MerI18h?-mgKkBwf2ZYNTO}7jUCm@&lUq0DfXBn@RXS=RRJ63 z2sDxFNu7jw$N9j$h?C}H_!Y~w7od|ecXa{x;Zp&A8d=P$(npUbztmJK=Q$-wgm&{) z9l7SI$Tsp5ey)WuNuq78KaW9O)W??9yQ6RALTAR%X%cO7@_VkCB--ZW_uOYP`c}^3 z-Oo@5DZl5I`N}EKkF%;o-^wL;hZ%1Enf*^LgLt&b=v%q!>w#7Dtz3#`xF1H?r-RN7n{Od5bQ$^p(In3-*(YJC9ry;Xj zm*`u$0yA#(tz2U#GAjC3u7ksfyPu!85%#`3#C$s85lFs5jUgMB{7;&HDMofvIq%nk zo9xbakTn^7%N{B}?B->-AnakM!O}+jAlYNdfR=|$dqNwaW|DkqAH)X-!({X=`w%Ky zT0)4n_F!t66}Xkz!zW1v5^e42y@5%zrM;@0J(6W|?(H#rDoBzsYENT#G(Y<|1Le|h zoHHTX+DEN|$n2UAy%}s$WArV1CZ&e?(;px{2HnBa8>4U8vxpn8Sq%Q%TejuV5<;}K z=e5qi@+KQjWtCqOE;)9#LADdR zQ9$(|8#L_2eW=gqTlQ5-pF~^xYGS~*to!M;@ldYm}*eJ;Jy*XOEx6IQ>=R{x+~`~O$vVH2xY4)lQ^blJeal{;KZttZ0+48H zpCR?!=v(%gI-kzm=v(&L(t;a(%RW!%(@#12mfa;4-RN8P`Fau!y3x1nC6aTaZ`l_~ zZoP`WWiQt^q4|v}`j)*y=N-_EzGYvoKZ!CBZT*}Y98Q@YSIc~N zaV={h%pWOlCv3S-u8sXqLB^4_tj?t{qdRIXYXZwQwdTgw$Js8|vNo!32`1OFHum(S zcnyDzC$q+V_>t2xxt6tY&?Km*%(ZxwY#c&)PD{vI*2bxv z!z4+o@rV|vSSHu9HXcd!lsSiu3C>|8*_YT!R2{}%`}sYx9(ujC*he^rjpO3TVAvrx zjOj=dvU0U4ei-D(WZ(mHV0zERI$Z~EwcizoUMu) zZK~K}>mbjWJ`6&uqDGs)J_%S+qfHfC>^bOkm@2l|$H1ND4LB36iW+U+(gm!j(Pm#_ zMU6I9Y%$uOVXD|-LX9?8;I7=NsL`fPtfrd0#2ZZ&TZ}Z)P3BQ};%QaXXj8=&6Kb@n@pu(A+ElT{ zgc@y<8r`a>(WZ(mCe&zi?YWREYP6|hi;?wNjxBaBu%^4Q#aLjJV~a6km1B!7MJ82_ zEp{6+Io*vd#tio6PjMt&YP1_$Oi`oV*kU9=cj|6zF=j@WV~a5}sT^BOQKQ}1Vq|g7 zD9094)Mz)hn4(6zvBeZM+KnxysL^h0F-47bV~Z(jv>RJYQKQ}1Vu~8=#ujs_(e0SE zLXFOnpNtEJAMg}4T8g?L%}R2SDqk(-tfi>YqQ%)H2C^(b38~RivbnoH5lZ-bps3MO zzO%a~5lWUzIjPZ7PF8f*rAG6krJ_bl5vN{uFKV<1+snc%5!6RXrCMa9d{TEg5z6`X zQBk9%oLp!zniWl#8a+cgbwt_76;xt^ntQ0xQh#H)sNDXlawX1csU((B^U-n%snL5% zvTmENm5Vv;v;1Hz2`VaTG(RLslbrsloTn)3jx(vzQaq}=nCB+z4l}9IQq1XJ?h&cc zA|xSN4S-9HPRS@8192br#0~yNgS;-}tY_T`LTYsVW0Xq5J3I9G=Ax+4(!e&BOX5
q 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½J=) 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 z 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

1TsEh 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

#U@^QjM5A8Z6(Kz$f<{u}&v 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

S9kFCOW>^FZwU1U$4^DFK?{6e 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°pu_BuA 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 z

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

@^i-cye?sAqqltn_bSh>XZ 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�KJ(UiS0;05gqvD5Z>}F^ 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ð?U9gIu0v;IY4({*SmGKVniIFCO zRF-@x07#*HH$~R(rWknDNK?SnNO#CA+nqf51J;%6vg~8OCBGPafifbWT*oeaNh5hI zl9#@I-PM_Fw~0xC14@#gpnI>uoX$ADE}f-8o2@C}xRFv|-AJRrX(Oe;870ZL=-+G5 zS$2HDHRBWC=xjPZYNN|$ZVK3Kq?9Qia3mm8A9*3mzoaxJx5*A=E~Fhz6#H~`eC<*P zpO~Y!a1>YM<^bqixD6aOM{iMxRGpagH>p0I+W}jxDbTG}JGUO%%-ZQ_!OY$Cb(4hD zq;3I6m6RXt=s1J7NY<TEz{S4J>P7PRSzQfLdNbXjuz`fti9y0ZasSqJkqNM}`vuOzd~3MBUJ+zD|# za{}6CNv!a`@kB{2wkxGTcF{chblC7EU+fNSXgQxhyDK_dZi;TVt4a1E*<{15_%_@S$S^9vLb4c1OFq=vL1iTxH3~EidbYl_1w4pj#Ao@PM+8+!FY+ zEi=nxw_9c=@!*;HJ?WPX9z8IrJ39&=X`3Ylyl$HA+*L>b<=i>X?*Q>Z9%Z~2EYN#u zim8-vfT;fgIjYJI{bpzW>F(#c#^^;)=G-?d;Z z`zc|%Qge4X-wo*3O?OV0lt3XhugUC*pWlq;D;t#Pi$OnSuh?K?UCodsIoJV7&!yz6 z?^&++g`HQVaI~}`k(GQ!NLgjcheoC{F`;L>g`cWZ9{bs%e^-HQ1+&(1VygI>2D zB7_lHzin5-rR0?l8+4GDpC1K2GMm?d$3}V^cw(gMz*h6&ZD5;`uJgIK^ECKluj8t7 z!*ss`#5wsvnD-icI(}q)*MYbvH+-R6=0m4*OH~973Cb?W;C^TCs=`4djR41tbbVam zq9gH|$BL0gfW#<&&=$x952QnWyA01{!)&h_O<$QG9%moKG z^(bjqkbRB=cJBy{j_WYt$u~WL&q|Wu6Qv0outjGsGXSR8gbj$RvCorKY1G$ov-o8o z4mKsf2s}@Fk7^h;O=EKk-8)WSMicWVPx^pNm0Xa4Cr%fTK!pp)+=(tAjtZBmum(S` zneKP+bJa*=p`Y)BevXBHMi$>#=;u43pJV2rf;MegaPmARRniS@g`~(DqU$vldzT$) z*(s-WbjER+1`qI7qDTR|m8IB-J$~!LElvW~NWv{o!hoGR)|AwMWnJOB+~_LB z3}jWF?>%{xuz{qsRW5A#VX6UTK+R>p0VE?0`ol_h68Pn}*pOs}O5Z)DlzM2Dr-FqW zXDLIIB$8quQr_$yeO9i`^zl?!U!?8T;zi!Ky1$mZjxU2M^s1qOkqRikw{?C_|H6JXjL!L6@aAenk>PA5VqVchT4OYVx(B0=}NS zjxVgdS4C}J9Wn+D)nz%~2K_+=l64?;T~r4>lnWye$ImaLD`uezL}w;gZO|h$Suen{ zg|jy#9RJ?OfWw_GhJJkB*{x|)pMb%5*fn~w7s|PcG16*x)F#pYCsR2eo$=GC%Ur1f%Yxzh*i(T66HHSz zK5tH>+X^2#lJZ+KtwY3`KQgdU1xwm;8!6w12q$C$Yh**X{47MiNHM3nnF3*1Ri98O zBy^%Mq6nwoP#}c_WSyPAyTL8>04xihy}Q9JyBn}97|tH9cABdrz_Q>-@Z2B4SrfEx z7@rtv5;&uIEW)PeieVDSbGL$#9uLsu=P-f%;&#DEuj5i-JMtGraF|(^+ye1Z-uwdM zVy3=gUwUw5a0`fw1tYx=^ogGs0j?P77LZtk3rHY^I(jawTZG}a#3C~f+*TfWK@zxD znultG-UFoyBalEcKdSbim{`OJkXS?(NG!qyB!EJl?>qfIb9e+;77UBMNB>E|3VZq4Nov86tNGSAMN;E4v9b48mEA!O8 zT(_cBVFa$8Vx+g`7=i1j80l>|M&R93jM@nrj{UOZ0NL)P-rsA`As`|CdV|hYRVTz> zvm5$rj@V>3t<+hrlg_;3{PhN%MMwNKOBngc_C+1P>-fUYpmi)Er0nrIxKjtShq7P- zYEIs=;P6r=35bt!ss-Y%a4oB1oXw1`D-CbYdlHN@q6)|*yL9!wsv3)mqBpEmkyT_( zyP|$$sR4h^NGXc08L0+DcXKk+qodYr=;igHwqhT6Vx&5-rKJ!oe5ZFssj?n{e41P^ z(&Lk1VFX@1rP16{fOp?ES1Le0x0am?h(DRpN`qdzc{c&XpMsGdAN`9)VA;Fyh<2h| zmD`O|;FLLB1I{R^NC~}l$LI&&sYBhyQV*r-zSO=FPPCN?1#%sf0D(6&gu*F$&ukA4 zUauO|tHHKi72ZZ_)}-FvQ+Vh|#|pWO$|r@s>yK4uhe_Q;=ZYh3DBN@;Us1m*a@XM$ z=yccd+j$fulW4i|YfgTnA2D3ZXubo;jk_!X?;0rua)FeT0C$z^Qt~VEHAjsUi^3Ns zIK4oEG3b(TUV^b9->zjIU8-*SA*0(B#!Vo1n^KBQ+5-(q-UVy2PrDyFVsnGew{4o! zM+%)|DUKaE(WV9+G9q??=LF!-S+@H#X?r$l*Zs-J*oeycdL18~!Rvm;NY4XR{;E7a z&mZW@3%Wip7lrqAKtcjOR#LHqUo2RO35J^+7H7?36}V-jI&iz>MAhCVz_rLh?STqB z)HX|_!k`&YiUbXuvI&_2vPO$M(A#i~z#}CUjPy<%Baoe@V5CRsX17*abqCrOjP%&Q zg%Q}LTY14qZ&0bi2pm7fNN>S021!yvujR@<`r5b1ZUYHA^P|$B=hO$U+GB3a)K`I= znlfFnpP#5O#osa63KkbjiK{k9++QhG4vWB6ja*(y-ff~oR)ud+$H`RT3|{*!ryw~7 z0*OWpEH%@?p-kII;9ky(gYBgW8)?wP!<>~4X)d(-zR|y;Kt3e`mIX(H)zYogyk*lp z-K&YDbmf)z`$~FXIi3a*ZGQ7fj)^2&pIsUwenj4&rx-TW`{v~H4e+i-lmc7S*NhE3 zXa1)wVi!_+L;c=0|I^Ub&zq~g>auJdg9?WoXDRovJ|uf#XK99|@W^lD(U^~4&qaQjubNYCjGT+ca4RSJe&s|g;8;%dJ-e#}H?b80uiGpJm9?%?NK4h? z!nR2Tb%oSDl`cuSiV36^mD|nDmx3fTCtr%p&6k3C@O8-}EuvjCzbAmqyezomB+xIi z>X|jDCz;v%_j;+o46CIyMCQmrX~;Ay*wPjQl0g(tng2lsnI)u329S=p<=dW71GCN$ zkVMJW>`O6ghdLlv2d)Fy77_|bMRpC*O^YfPlCPV7i|I~*gGxI8kaxudE5Nc~c*s-! z1nz9DgRh#hU;+^9FqR6iUrF)-$y|fZpyN|y4RY?7Sq0*Nd_jE9_&w07eJLCuVtSEQ zhEc}|yrHD?bJ}i#72p*krNFY$ihYDMWQ-MH+34BxK?>ya5@6Xv)hrB~1$$+%Y$1Ft z0*CueFqmCx4$Egcp(?CFkePTzUMAM<0uttBzJLVwYW5ID*-fPfI<+t2z-c4d4{OgD zsRCS8QZd)`o*H8v_{>NZV4@p@)`|97ZQG~-uNbKg>^vn)uiF?az&<0@f$S^i*C*30 zdliuIGQmoNUg^0LuxueL#vV<@ptiAtKwZbkvrG)>YPX0|WwK^e5e}CM1riERRfTFK zji<&;c>yqSetF<4Gbl*}GJ~>D1F;*Q5G>+(aXj%{j-FZe)%QbfC5gblGSVp42Q05x zRGuU`R`krIQlxrKD(zQ@BJt_N;AC+zRc2WMk&xH&4B-i8%VTHhd1`@Ne1T$zl_hfu zWM#>m0`Vq3r+z&7^kD$e=$sN!r$t~pR-ch-z&$0!y+GH1308nZCBce)=inX32wXAJ z1aR$?EWNwNSOMNY#Yk_*F#-uAa+Fl&1jpr~0xZW+jl@t5W2nbskk`J{$~|+f3dHLy z!_@}8hmH~GVyNRY?V^HZld1u+ob7+!zdr2~uCTzpp+iCfZW^hk$eJ!iPSF`DL_M)f zu7Lzzq`_1x2rZmZXjr(bg0jYdWeedo1q&qQmE?Vn2#|(UXSP42dLFOKRW1O(qn=ZU|BF+k_h&i;2F=VV5G&xeiKX?^4nG=ls?>pbdK5V`dWR#lO$r4 zH3qy`xGmI3Kav}1I^ z1S>#vW`dOlJ=99VfIB5uDh+zyb{c_YSHePCQUM~&u7&D59~DL}k8_?>bMl1-Vti1T z)4ZDU=;~EU=`k@R=bU|^=ALp(&ViW8%J8g@ z7%)cIr8j0EVXR!u>uRlRf~OW1hyrGCRr}4!&jin1;bAgM^NLte054J=uiz;ao7Gk( zbwMHOBYQ1Q!6NT*wx8)aOwGyQ3wg?!R5yaAQz_yXu*dew8gTj4)sEgn+jncgN2eH1 zwD&--;YHTy4SlSzEhkAJe`~2=q&MRjfwM+RfeT71Wa+IMV-5J^6eGQ7juH4kf8xH- zxTih-NI*fQ*P}mF5IGi;^FB*;1-NUez6~U~QUyEBbV#rKE-aATW^Pm(^p-T!xilRT zUa-<5=b{rx!V5-vvzD3LK(d>gq4Uu30ZDGoM~C!^VPL=JHs_77IeD{qsd8F{EBLVp+EBh=joVrOe|41iEzN7kB;S)z{ z(=;+E!WGWMBuQVgq)!6BX{6LodFB{@rNJd4_zo=PIcy=`2D%48_H34PNt%zF=`1)= zVk59@-gRp6MM%nT4IAAfQgXoqUr~Ca!834a}{OeB}?=>J|Zz+7K=- zZnL)TZ~Cdu^!pblkzCdEb3Mw~z+W z?+M#?n?>@Iy-7@hp6lzc84Wz3Nz2^0s`y%o2A($Bn++1p0V0#VNX9d}=cSxHXMAAt zT+TU(&iKI8bH=x(seMpN@kP>}>3dP$^Y;x{ANO^y%87KSV>vQ+Ytl%vko-L5q9kQg zYc40!x$lS{25BiQd+`b}e5Ztcwaxa|6!_3c_JcW;kF4n3X6k20>nA7D;hXyMbOlHq z<$QD~Bss4Dsi~ZgqH=$XVUo)XS5Oh1)nstl$wf&YOIP@Stm2%H4z(qGz-PAFQ(&T5 z%|+=@ZXya~x#xWTf-mfvKSgH0O&<(O$D(yW&q|KK7b7G@19Ua>X(;LdJ75bjW!T4n5X%&gw7f zoXDy!rExE~n)PUQ`mM}szyTwrz)}vkEr%4l7~O8BL*isr10TB;vfWJQUn)^n2$0>k zHPd%_Nq(3UN}^kaCUN1Dt^0}&Rr$Si4e%X znrnS)*P#gd!3v3j+p<+WO}QOA60x&zMG)9!LEdHs zZ#$B|SVhoVsYzW6Y1<0QetDo&P{&qKWkrPSC zJ&XP(kWDb>BPE<-aw182!!l3-miD@pW-?VOhm~f^ft-oPl{3p>&9YSia`hCsg-diw zDcrCWa{3U?jaU{oV*Aj-B?_aoEH;|SLutp^uw_w-Z^Pm%?Km4jd}Eq9)J2~9aJl=s zn{!|(u;b=+ok3<)mf@z7?%U*6_>7rAbu9etyt;D8lr5U#_USy?72#XA_@h1B-G{2Snl%0mzc%ZYo>N+FPSzz;; zZs;WJsU{G*m%OAy%cHKX?CjGD7aWQ0kgp>P7x0s|SA69kHR#~2{4Mx@)S$zGN`&!x z!HOge^DCm^A{HWx*yUGUIQg-_>LxwQ9-bw|?DT{gpmAV^Odv9it*^$kDuGLH)WTT|f~U$)1!2aLp7= z0r9s8h~BXMfT6_-7D;U>%Vk|*mi@Aj0zlUd z4N*uItO7i^qW$b|hU+_mkX|l{?WWMa91qDUwEVI-WN!qHtAcEc8#&{(MZ9OHEWHp3 z$r-abVdCW_5@6ZbS?@?<%xQf2$r^aAi0`=d=WMydh-v5`{XypoE5=yA4@5&~|VVx;$2sgdV8I$}TSAR8+?9RA3> z0r5vRBp}WdQ%P^tEY^XzD6&BOD`e?8Z-Y6<+dflY1x_1j0*H&UqXF?RvsksC-^L$d z1maA=NYA+z9ArAw{{IK(c+k6vl6v8O>WbarPXUMRmN&a`pttWBf%kRm&r*~&=si@b zJdXgfZVE=tlQnqfJ~gWVc}yr@WC7w&rmJG!jhlB9z_QVBDPxrTOPP5fd5}MY0W2G> zn$bfudJ9MrimIVU9z-Ls?48w|rDQ`VjNAFk$@|GG|K?K-`cHLS*7J$Nc5|ji1|Hh` zEVW~Wn>IOBoO@=Z8nE_C;fW+=O5qbnYI(I79oJU4W)%KQM>Js~YC35+)}&tL$iUSf$O$H`~E3Vd;t{Y*pLr(I?myP6hZ} z*<|x3Ut~n`HLjVUS~6we8LOO;!ysYRDa{I5$|U!dMoKaon4E~wuy%r6+}B*VS_%$0 z>?^yrr0zr>#qd}fL0`{E&W0_#TVV8(}k#9%+b$+LO zQuf$FN!wJX^E;(Jc5DUQ0lF2C0$t|r_Oi-rPm_OUPb>ggqVicVka@`TgO_Yhrh(f=8UwPBMH%o& zxh^Hk?=|SKx`hwOv}Q)ZEO=o9GSwLy*v$b4Je!I&EqS+wZj!MrTUIxLEJ`UU;I!>; zH)j>P#dp)}DA-V)ziYaKLVT=4Zp)njJ~gRZz;-h~1)MX|Eg&l{@=*^ve5*-K0Z}MF zfZ5uhbB?O#>K?3;rFqrrq=I}0S>bnE2o)gF73X<+1SpqzAnFUo7h9-e;ZTjrCpf!JbTA~u{e%vt6^e$m%fQGeG|Cu z(l_C|j-PlU=OW;`a~=55NcE=*TP-aUz+ofR&+&8Bab3VqKgH!5#bG&9182<9N#LB3 zQXp3q5%kkuE?X`j!bUtZ=6niVFwz~Sg6o6`h9OS+Q*mC1L+1P>kWl5(32@JGofi-D zByItR%=t+|bW328cqs%@ackauxP=dHW#000%0u#X_xv2#&A}so zTt@GjQf1izAD&`7%fhS)R)I?;!D@pZ>f};-mM-3RlSc}`?vkz%`?2=BW^@FI`s^@Z zPm|3M`Pi|1i~`FRM$N)CvoH!QTL}Md3>JpX!rQ>I;M+V+HrKAHK&M$uyA_T*(z-%) zMJ{K)B01f+TRf=BiN3O&XbvgBd;H387JScgVnkhQ5GLwcEvD-z+j1n}wvyy;Ee0oN zCa%lGY>M35h@)ZIjrtLysKpdjfbGtH>ovs>9b2GD7w4baB29s9_UNS!>@ZRa>{e27 zMyJuj4{Z&Tn^tD`&D6b_o3!BbA8I-DZlH6^{0 zTzdLP!+BPoE2+h71ovbmZp?G^Dh>HL#-+rv_WTe0oBTZk?@VNd+et;xJZuo(zCF2%wR7sf^V3)?=Jjz58Yj&Ff z-nF=EK;oAj;k^bO3P?WUBo}iQQ4L5cG7IZEysvHcXRX1`*&1-yVtT6qc9UN7Cq1)3 z0Wjy81%JxNG(IXoKTD$LNs&10zSCdQ0-xjbr%a@feBE1T>)tVQR`Bk~Fby2GH4t1! z4^@G4GGJjL!}3b9l<2E^#6jVfhWsGzYRGJ5kzMUl@*nLqk%uYgGjL8xIp6;S`l;+( zzrQ-7Mp>ji>RE9mAO!RkR9|8Is^M$Qi_KS<6McQrvgDBXM6=(TEMHn}l0Pxrfb!Hz zF$JC|Np6tBKYzs;laOT|{i$F#?$WHZW%Ih)qBR2*MWO(R&eHc z($iymQVQ%d()5L{d*4fgelXNDo_~~Dnb$-tYAZWiAG;p3T^*BWBS1`**~wO~rKSQb z?VG0Ej{;9neenXtsXsP9?H2%^JCbj&Mcu?+qzF$`8ZEEL=RI11kkBI1Kopj^ecSX0 z6^JyjI5j7Ue1HX9RIcLYn4WOt|AY~EV5CXlk&+5o>)GAaWQ)QsBi#lL7-iia+@=XOG36&?pz_R*LQ~%WbxCJDeS(u{@ zdQ^aD1QL0{=zGglk;s`)?6+MIkN@uxHLj&5--OYFKK3y4by zF36SVJ&SzP{7Uhs*9t8K){RsH&MPT9?1I;g&3?0%<(9Fr$asV+z5z)<#s((m!bYx1 zfRKRKG-Y{IbpD|dFH6!czu6g_ypJ{NR_8Er%{dbA9~-F(ylBZ!7I8B&&reJ&)5NYubm=>Q)(LExT|zQ+aj-8sMI+ydgUqz_nfeqRM#MlZM! zd_TG7JunZZfKGSyNJlA&$m>ris+*!|;H;4h=csQt_4b!K?;2?o*lx+10$x$l zm8=3jC;!PAdFUT>_vRC99t=7`;Ly2(j4qnsDDbY5vKT83diRZS3b?JLACzw^elGvQ zqH~P2(sHJ_VL_+BJtK|a)vy^$XB5tAn_tZ6;DLOmiy_)U1z3@Jjc6ZLt&hEV!BNI{B0E9h#bfiL2E-dl zDbP7)za8crOK}V@@)H^v&~`@KIkT5C%PSU7>Io%C%{wU|0Z3vZihP%Z%h!#uD{5X| z&>pk}M|3$6{lu3OeRZQsaDLfLW1*Oxezk{*f{Kj|OGX_?ECnMyre0n?0^(o13dRBl zM=*+DWSuRl)RMMR6l?0@y17a!l_yDd9& zgJnL&LDQuai2z6y6`|83`@#sEQrUQpbTIapf4G#$ohuMCnXZcc`3Wq^+6H1Ya@UK+ zpHv_@1D4ghzixp}VFaQ+^CNsEfpf)xS+HNuxT>W54%F8sNy9n69aMs_02hoj0bEg1 zk!pJDjuCk86eGRT{XKB&6r*;m=~2XTkZfagO^1YpdUQqR1Vw`?m0dW%scEVMSy1xz zm-iZUW*r|+5Uy;Ez7w%a)3juSrV-)&oM`Baeb?=NC`BjcD&!rwd^Q2oQ&%7g-OW}vW;ebSYwAaQP%U5X@` zEVkDpiT!t-Gl4Rz3a2egxT%X}|EfBTr`h*wz$C87e!HJWU$j+3S6gNzL%xF7@`BUB zv(%8YA3+US`btuuEFCamVZ>+7XYwWTY)Ojb{NF3Nk5l;?%u3>=X2Gn*ri29bDv(_Z z*r%lUKDnl&TTT#oO^=&#!MiH3Y3gTJzS5v~;HW3R);QGO7fs`=P?c!SeMQL1nmAMv zfe@yM?TQW! z8cPK@tfY_0zW>(WZO}!j99MwoS5B3)rccpTZRNTcD#LA)>Qsbu#QAAuc|m4olx;;@ z(F8e|LOyJb&} zyvA{&@9PGu!{?3ZTT^`-+De_^=_5zNL)t^ni%6ZKg?MAeL!LK-AbcL#ME=7UGM$%| zyXyOW3$I34v@5@LEr*-hN_fD9Zx%!HRRQ3Vl8UOOcj6d<$#Nm9<*mI=ZABxn=M*Eo zVaJH0v^ad<9IgQ8%#S({7c)O94SLTUBe3kStRc1EWq#CwxL9bU=Nzu%C@l^@GKZ_c zhoy8@8}zHNtJ6xFE)o5dD;f6-T zbd*cj53W2$MrnOLnJr&FW`A1k&sw6>BZW_mRG|i1tOhE~cCV3Ae4)LfLmiG~P~ngx z!A;A|Jl3p9)XBdnE*K4Hz2;g<;?^8#Lm@>J*`_ekqpVqKz)tzwC`VH)gZOkq%te4htd%Fr5#m;Zsw~<_uK3QHxIaj zbR@UqDm`mjg4+UoaK|M3N!v|32~PldR9|eM^m^^BiV4*DZI=?{$N(HQ^|djD_Z$h` zJC5{NVPfX&ttj4U$*KbEyb3NaoG=LbvK%(wmnVJnr`6l+rIn0Mf6AP>2_!Sw8!Fk& zZ36-Uv-7Fa#> zvW}OB#+Bj+$(CoWW=8?KmsKkJeuJ+(qxq_0--Fmzojcl!>%cK{Y8vgkj)ZbvD2lw^ zf2=ykO)5nZfr~j5xqyRBmQ(q>a}xNzkt)DNB^66aJ3&LGiU&Z7G4eBBh{GzY4d|qT zi8@>-1cNHyTFkpdt4 z&XyWFTWaP~Vg8?LE9QZGWv3`5dV7u$c%-C)k=|3s2y9V5;>DS&z&~_?!0A&Km^j)) z1?_HM0`?hc0yvZ3U}lk>^U{JtgWOBxNoF7@K8x{bE`VKZh|Qg1#;UCM3-1p zert$o%mPkjBl%K2fm9`w3hsN5>NCYJCv_1IlmD_v z;uUQrnZT+4n*81Y&M2u!CcPcU2;4ozNN>+E0{ib4MhcDem}2=!BR{1${26n&0<4?* zX&^3U>MIR;4;&*97Yjyu9qOGN&4Jw|hbs+w{aTa42)t^f3UEqEg%Nr#SPsG#bFT(D zWWlDuV(Idwn8Q_@ zifQsbWC2c-WS7yPWKcu}$btqs-L+764c*L|2m+nCV74$fYkmg@rO?(z;s~W)(!+=% zKlv*<>-`qQ^sd4qN22~I3|Z?G8o3h^x$3u~pJt&`iNf__5ANW>o_TNwh*QO;8Txf6 z^y^OO*PYO>V7Gm&nK^dr0_c)8iL3Y}ceJ5Xlc7_Sp;MEgQ%ONtcbsnE zbJIN;>YfaBPd-p{2j)SrBcGSwWy?ScTv1Z~&N-b;#|PXh^U)#Ok}eX!9F^y5&AbhY z4GqjuCgvw_%S&L!Lk6cUgH|L60Z6Wl}f7|$cYEosK@Tjo^myfnk*)t>wdrE^6S2@a2_hBeB)~^{NA6>6`8Tes^H*UMeMJM zPKcOW5p&x6gtqcw6R`a>qvt;A;Qs#P{l3c|B(J~m%ICVX?^}56Nr!6d*S0wscp;B` zfIsv?rg++XbFv5e9(8&iMPAYC3Rp&bEd%Stwdoyg#Srj;k?O!*B^B3WdV7u$cyx-9 z-V?_NOmycjG}3FgOGF)b?`s+R9o4jw`8{M0(4P5qNB*8t~+lEWOsX!k8EVwkfGFLT~6lg|P-4RZ>gx{*(Cz zy)C0=KV0Caj^J=qc52{L^SKVh%gmKZgB~u4ED)oSqw!T$JFM*+@_PFZzOlf+rqBJ* zl~S+xIg19&(<;<0-*vhCLMh+Di%Iz@no^tOB`X{7@9CKA^1y8+$zK6{uR&+m_^tz~ zgUAJ4llH=}s2=PEBuA$~WDqCaL@^ZQvChlN#Mnh%q7gnuh)}UGmyyOJ3mv zBh?NS_Wu)GilYkaMoOm@ZW<}rVP;g(oas)1&RjiIRQLU!{f`Sz=Cl>R7Zt8Jk}ox& zLv?Mly!kxqI<|GTnr$8WW5)t~tfXQKqj%&OfzMAd`cAyGVE=zo_w;1wkm-qY(e#uV6Xq&l$olq@~&QzF;-`|1*A zc~EL$g=`4x6Gn5F44rN`v04F;;-i zVsJ&m;&ZcD1&*4cNgy^di&e9@VT@Ivvlu)Jh2_YkYCW2fQOiv2hC-((xGHa{g2&oQ z;oR#P%2OI#9(~^Cv-3k!H1!FLmo_mqEg9vg)gDpp}ptQBf zm~YD0lSSvt$0GLSia>nHczC|7gy#!JB5v2DbZILQZ!u@jmDb@RwlP0qUr%%L4;sFF zMthN5OY$4{J|0LG)ECLh+V@RHKB?mS@N>O|KG{To&p!)kqWz}|IQ2Or0q2c$9k^+v z3E-BIQefSd^aOCmNGWhhNyWBBZ_^lqH_-^_o&{6^o>)LNAb}No6g~Wr3IR@=#R?E- z3R!w9juD8r1!Ivx_kSFIXbx9_Et+=u!CxRQX1b~kdUz>}z$19M%PR%`DbPpS_dA~z-_L-tP%L@O{NGZ^nyOZerw77ZNSNKVrr|WB8#^mKJE<=l!uj`K# zk|Oz&+rUHPnsx~(P^U)GXVFX(O|Q8gNFC}BRV&E^QgYdw7tP}uOx?u?qz-ew4Gs3L z1)Tz2nTS5hgs^jAuD{G(PW0n^pqeRMVcKaXv3IRHQ((#Lj#Zs2FcJ1G_{y@IpolhC z!<4PK!i(rm=f3*;MBDPYG|?jM(Du}rQ;{QIPksjVSywH8#SeWp%sJ@nDS;D0EW43NaffyF= zHi8mB8%&X0Jkw43xoy@d@C{oeZv#tCzDaM+5_uHZF$x!#(q3+<>O_-DGq3(L9`+BH5coG%rekas@E7bi?s5|&Oglm7V$kMj9 zQsuy-pD2c;et}Pwl+|3?pf{$!IV+679VHcv^xEw{a{}0=^yo zPSw{LZL_TpylJ#I8{jAEa`sJqFkWU`DHw-h-{{BYs_HLq;n2`6WAkk9(AqSdvK%z* zmgUZhd0y?yYy!89RKePb&07j2$jIjwPqadwyGj8Pw!Di4#O$SHskK3eR12})a*XMm zlMa65oZ)1re&FpI-4%)>C0_S1rr&xb$3 z%EIW=DapzQ{PR|IBff933+$+RFs^OJ170wPs}#t3i49EVWI~xeQWUe;p)=d*W*E3- zq#7EitjJSI6!oZ7wh+KqP16W)$Ve67sF6mxG;P?+l=&0+RD&Ngu@~$qq(e3z;=#_D zdx~!~QDdJpqgA#nr@rb-wFOc^S&}}IFVhDki;{HUurm)Nd-BWY?=^^v{6*$#>y5(8 z18v11u%){gioL&z7(BB4fsa*8p1uH&jg$gsKT{}=JfjJ9SJ8c7if#c>n9W_aLC>kb z<egySLs$LF-_nYaUQizL9bkLu3zSzQO#KK8a#KLY8v2dc_mv(l-7~aOhzNKgq zh{`NQZ%0xToJ~UY*HMqp68J(aMSHOT7J@shE9zyZd7A=vjC33L$Ve%W>6gDDp%-{s@p^>J0RBOK(Oo7;t8{l0{!=7bkx}^s+|?q@0i0?;9Vn40P#9gU$q#nn)(SKj?0&LfOuWV(pz-0 zK)fy(>1{ejKZYH3bl)6KfrBPBiN$$G3UyEVx_gv+z@$S)tQmD*ZiT5v@hAPw0Z$8`x4jL&1I^DND)k&y(1l2#rWy!=$t4Cz z(&Tj&VA=bMdGFK*x16Ja`s$pL4zz7bz6>O9a>xUYT4uf+X6DObxus;L*V6E1(m;iY zdSL3ffG(QgfES5|# zrgjywEeaRmkp4^=m}CpvQ%wMI2?sYPe{P$B}p(o3tQs-+g5*$w3Q1AKFpe1>72q9M_N^gry{tcq+Q2_qt1ii#4z+@ zg-fg2iXz~Vk-q#);d3LMsc6MmD!?rxO#uJGNF%^j%fSTjijuOOE&PVVxaz=+xDISF zU3FktSK26ocK`QvWiuZttNF^rq|;HLP4#NWB1|7D+;^k{g~yKME27__Kx_fWjWhl~Nvr#r?qfToQ zO`>H4;MI5Pxz(s1q*;#Nk{}&)ea=q5(a+f&^byo>auR z!U@m9w^h%&tMH*7oiZ?eCdxu*otU0n?#^FDSGV>)e+Noj0P;mvVFCHp zs(gH;r3tZMHI?#})xy`bfqXPI`)&!uU~BHSm;my9PS+)A6N=AiiXd=a+h)E%urVug zJ9@sa&1`6n>_G5?7C{9#Y@^~U6HSN_Wjfy~O@hEjsd{{yv$!fiJe2LPiKs_WO#bAL z8u7=^`3$^h2Vz*Hu#I71kpdrg%>q_{IeJ=J0qJQs&^226Ior5{SoSFct{N-FdGBc@ z_OwC|wObEWfSt<9Y(n^mqKi0R=jR)+#mC3+o~VDt$HzE`cg1sewG(l(s58tcAH&BF zH*CS!&o(dB2Yhimm7x!gMh#A12}d{ z5bDdym0AJbGgc!^QS4fZYfsI!I&j}u>4CyS&jKDBtB&_w=0OVljIvsjk2~;v+>5=; zQI~r>^={RH7DBoKox#2Ia|;#*>H z-Lpb_-Fga*vaK_rtcD)*Szn21&zy;z-_nyudX(uHc;~g;vh2M8?~-$2omH&N68*51ll*$deaV_hZ(Tvk>l2XW`eO%9m;L_r^f51^5s_5US+ zPb`2c&<8LJBoLRMY7?sO9B#}4hn3Zqd}E;rvDul+<*lI}DOa8d0cSo{6ogt)t_T8m zP6cINa-+T>MgAZe3L zCLj}rGkV1`xMCT+0W4h}Oal7~eRs79HKbf;1w3;~5^BY(1g@SE zgt}W$38n&aFQF&`2?y9-nCq@Kp{NVzC78mH#z3kfw*p0Bh#;_CFZoU%n9F?L7>fFF zl3)r*6atI2boCW#=~`GzqQASWn66ndapiK7VCus8e9cBU6Qh#^Qy94<6xS^$38ueu zNhrEJ^HV#RZp`OT6!_Fw*MTcKd&!FnK&C5E4*+ftRtFv!>pGBfl-m~|GmLlvq+`T=;A30jUZ?yhDrs2ghz#y%dRfM|CEw|2 zLQqmI$@@T(bWTQb_1%tW9B1uG8wo*}3{Yb5!fUMRRJzrY0UtsCs{`UNtHadA|Z@Hk=oTY`CsZ$ewhlS#6$|n^P+G{uT(HrjF>LIoHM)JLZwbnO3`Q+{B#;$NGv{g72rh=K6S=Y_POuJ7k zaQPOV?pP3!lMDMJo5eL^hP~Vx%qVL`kFt;1{m!M#5t|RGUZ;WzX7D>6n9dcoKoaW2 z8oC<0t4GJ%Q_P-<<81|*cRW^56u;yBDA~HN+dQrv*&5N19S=-8q)rCGq{hjCDQzbQ zCJmWytUUE77YR~Q43%A@FiG`i) zOq5(chr&*DZNm<9yfER87beK@!sIw!7(O!#qe=b%%%`sXR4A3$41`?C@2yfDh;ud| z%TX5yePyZR3vlc0%?0i_>=!E>2vJU0XWvf?b@xlf)hPon%F)My?jF zZTK(F-GJ5fOB0a@|2B-emFwg&p1Wpmzc4(EU*Sl&9MpfC9Kpykpp;pa#t>5~O? zm^HVi4i+lnS(po9{U~A2TiCNcC2@FHgp^L%0wkVtp*T1DV9#Q{c&gbO|B~$em&P*|G zah_%Rp+DA*Y_r}^s(ca~?&xG1nqWLHdMMm_N zVo{H8BwtC~2FK@nn&En}a4OVtq+u++nV)etPw}coUSiS}7V33-kEjM@$(jp>iK=P(kE~}#fzOrY*8AZ< znt7SH5(jmC^e^=&_i5Z1u2?+L2<6lr6S*E5C!#?MHU;h(s{uSvmU|SIHldz-LEwq8 zBBxOQ)I=s@MU$bQv>MY^t;si&3B?ZzJXHP10x#5+oX<4u~htFL|d}1-$xb=RXd+O4!F{ zaTbU|r@m_Hcg&Aj;DevcBgh4zo+wvV7QhKjMlJ}|(M>*Pfy>Iu1)+Ro(efgWY&4E+ zrYy2ii)_pyn*kDw^JBCL_0S@l0TN3t2(@aRKLdPRh-|b8wPz`q0q&m?ggW$sz@t-w zMp==~v@7h?W9}o=MK1`vd`b|i<^_S{rv#yHdO_gYDZxU$=TK{p9+P<)*lT?<4J_)4 z-*2K2C^>iW2h%O`v=z9h$#Y_0%1s`2jQq@{%)=%;j63bUz01$||GSedV zqgWi)1ZMA=LX6pnPJtbk%^M7E0+N@N!gy9yL8rEAOKx}AU|H7E&X^Q8$}(oCZcEiL zYse2&cT~w=*f<#lG842Ve{iTTzI%mbs#H5;RQebdH*L(+y^0+5>PYsjW=2%nw~AKA z>rt!d5_ebK!BcUEB%N5WkvlgvxrHkGq0zBTm_{SkP+b~rZgH>f0w$t)SoYzU)9j{i;+ka-MY?Z$2QTW zz&`!E<5ITkZ4fJ;%Z=pmLETrbBm&56a|gIbv_fW;W%SA=5=wK5B}5(~953-Ki;ws57)f_#=g zis4F`h4_Wg*uvE^3s*}lTrIN@za|)4xK?K2T8V{gWftOh-5%=T*s(z}27IQh*5soE ztAl>vEVVuC(E;;c=0_P#OKoIxRkP|^gSV8I35FxOQ&nS1-lYshaQ48wc;k~M#Gx`} zpaOgK>5^0>aM)OL6AC{v)+q3{vc%EtR)}^DH@kd8^e9tI0Q-t^5My2rIA4^5Sn_fY z6wX`LB-&*qhJKoy3lm~Qnetcz_%DqW&5vZ0gu4|Em^4WOc3Vl*iO^aGgI#8ZMJbCU{m^;CwNVLcyN2KGy&UL`tQkhEG~wB}av`yb>n{9L& z=EdVp8^&~svjQd)nIIiQr#L}kFLcnR{$$Tbb6I^Y#sOZoIOe+4)owjX8TV=-F^q&Y zuB-{Gu{lNxVTlyugaCx){mBttrRG5jB$Kk-CXc>mZiHDBsW4x{B1>eZWa(bkzvSh_ zyqZa(yv)R2&BR{KkPo~o_Uxk7@l2ennX;}XAi7-ce!`UQs;5t_2cubMU%TzVx-SJ5 zrii0x9MP^I6c<{F&{A8U&O8l211+^d94k|pWaS5zl?t$7u1x~T zLw^4Rb=wO9$wMv(MbL7i1>E*+fkd3Qg(4Pd3-n<{QvzWvT3A&et(^M!#*2m|L6()k z33GKCNCup)(I(WQ7X*@lTo8&Rh!NmJ-xf#)^0rVULD~X|tmK<}_cRa0^7j(ff2J51 zwSO-Im>3>dKm5at%ecd8anIMnIWBJX_b{4C(YB>%5{QegR4Yv=>hslx?v|G7jHz!h zuvR?_Cu%meHGoWnuZa`syB&~zbVL`*JvG^3`coh?pFHNmi;uh%@V2q0aBSPNh=1OE zO@ZF2=soZwb?R7;@^%IAL|JXgZ{CXb0lU=jpgE8Nf7w_SATyb)R)B=;9vl)4bCHNG zX%x#o8laD6Cag@NX*U;Yz_*mumfZZEC>pAPDbuZCaEc^mt7`S;mU%UbqbthFmOqN| zRGwXo{p_X8*~s*v`gLM1SAp%SCi{yC5FKW^3Orww>sDgO%Tb#R&k7S4d(nu!_?mpm zR8@4Es;fZng~-Jwqv5ctyVB#f`-H3861b&}O0x=!i(7FPArZGtcJZpi#X~|C~n87296(GIl#K8FM zBDi7^&}&W-OrPbFPz2~C!9*ygfduQs&g#Jq>#nOnx=j{4z+w+xE$P7-67a~1{VH(Z zdT<621ZbwK=+Jyjt7 zi4@Sg8oe~}R6FEEkJ;P;(P_@6K;p>cATF3(1309twq$vs2{G^G+O>bWte;X~zp|uS z5-`6El9%6sLn@YAP-4Z@HK==1<nn~Vr$j2LR-A^`vO~`h};Vv{nuyQ3x={KzuOK)T=GJ% zF6z2?!j{Yp7RSe)1?tcL$+;8d73^C( z>`!?6b}qD!-F4L`YxPiscjpjsg8}@&n$>|1l_ie?;=vH>8ZccOrfU+oX}Z37s|m5^ z<%ph@h?F9*&t_wJV6XUs9z_f|pe%Wgb<17|B!MOOHmLU^(GWret1`-fzhDle7{2UT zVd97M)C+8dB2qrRKYzyf2xUutEEbBCjgM8mlyS2vvo(+(%1GXTPgGj!ii-}{u9EDc zo7U~go3H&7`~A&h(^cPA=+)Ol^?BPcr?~1HreQ+~C~VcOztDJOztp(Snt%&V$!}ZY zR#S1S=-Lyul21zZ+ASp3GUm&?l!ZcPXwdOq)=pjn2%D9>84&s@cPnwL>6hD@j9W#Q z9Blosnt%D>Nk^!8N6+=xWqszkUVC_rSeE1SI;L2(35#``UkOKxc69$?S8i3Z*ndZ{ zw>OKu6SeEaz}|=1*oRqs_-l19YpK}#6}`TSU*3o7_~7kbkL_K@p4T01pghp{_VrjY zEKW4#{)c@7P4ETZY)Ij_9^I_crQ1h+wvChyE4-*jCkDRc#l{piJnO7dI4Kwe`&8A# zR5^ojuIgc~$|l8Q&BUHXZQ3aSxeTDmyIx<>D11jm*AsM8e6p^`bFcdy5E+)er_#_vKl(FpvD$0gDH@%lR>dS z#OLi7QQup*pm@B%<2PPM1s*BFH>WSmzvG3jk&o0|s{+TBB@Y=Enh@ko{(PD2RR{k_ z#T`vaCIsQD;7ZUeY1dUxm#uzM;#g2sGD3m3j5P`*(y|B-HA{ZdsH2=_CHD&b>Iy$_ zDVZT2YUyq3v1EDqSWoTgv21w7GVvb_4`tetj^B;49}1PYe4>7k0Qt=qIq=;R&BQ~R zaNjCgM{nqFKc4APYy)@oO)j~tue3lsSEk!mOPf%`ujQ4Ii9$S4W-bbKPp^@gC`9KQ zdHY-x>Vk4JQHa4)qEMZ0794=+)i3VkTA})sn`wo3cuEwiUsolWD8!sHbFJZsAfL}I zpA}%2rcM@Rz@o1B*8=E5TApwLcYWU+B@pz6^Q>CdH%CcX-&C9Q&Cxl_;!y(8p&gcM zg_`%>c$7eN7y72!gzER*c$7fUak*Bg4&RMO2?V{7i$WdvZahjL_^^^@Kt<>|=|*ut zyRVq~_-&pz^`oSohN5jL`r%aEu2$0SIINl^Zg(YY=VFR~$q+ZZO2a!=Z;i(acRh<@ znQ6&wO5iBeJ__rlbwXhFt78?WdhmK?eA4o5h>}?&X0xuF> zq`I{xH>@`6^xdM>W*ta5iY=i3TPk(nfmW!KQpm?VWy!#FH=xsX$Yh{rD52IGT8Q`p}|lmhi=|l36S{^3zS)F>l6DPV9_IXxVNpb!@i1YVBoWJXF{yrdoTqb1Q z1N3$D0r0V3LhdJVQa^~3I!S&%YjgDnKuR$iEf91(SHERmtyYo7bZq4K%+O0z;f%LU_2kiAy;Z-2h7S_U^4jey9 zQo3}_hD5rfkgk;*2%sM&)wn~eVTXzj+X-KWBJ;B3jgw*D&m@ejY3M$s%-kriM#QCD zqi+45)~W%yn8?lW@oNxdpe^~<@oV(wBb)kbK>9Un9J+Q}XDRPmHFho9jG)z;T_{r^ ziq0h~Nyoo=D`e*1c?+* zk#k`Ixlqdk79dF!DO~6NN?1UOR~p9AT#uu<9!A6H#ZT#p6{}FT!7^s2&Qmy;F>#Hp zt&E9teYz0Ln4x3BTpNL;TiUI*T+~EgwuGm^LLjRa2zkyL6M)ZfjWBlo zKF?~)d3B#~vc?b>Y>}G+2YtA!Ef6DK4tU>KRUqA%nJCHBYT2k?ed!z|cWz|rnPqA! zuEVJ~B~zqiOH(4c4iu6DVF3xCHTm^s=)Z`a)z2f=&o?e9yy;nCt8tBC!D6`qq}L0( z9TcyyC|$}xScG@M!kYtLRF=CA#<9$WUh#3}CG)BQ^j=Mp^cB0&ngn`B8?mF4IND)V z(>Sk?us7ma;zrntJC75+SjdF75=~PGaZi#7LF{QunfieTrtD_?>#!L;xnu1rz-Puv zf%sMOXzhtgW9@Z$K>M%0)c1C@?j+`$3gpfb_zh!KfNX@jEzZ5Q21Ie_kA%VrP zu2@)PS_FXv;=;Ppgd)=-2*f)XLqodO$0dKnBYDjMxTDMM3D=6$4?`CmlyJZ#fI_Y0-9e|AW!pQMaP1S&Ujv=Tj51L zwj>NJlUY`D$3#-#J!Q#TlUwH??kiLN=F7mjcel=w{3G8UNZPaZ+Uqz1>7BTI_^1Rj{weZto^=-L{FQfm_OQ-Jdq0 zc-kU^7o5{5Ud)ZvffZ$pxX7%#RyDT+0Pt z?p+n{2F>VoV9~p(dH2i<0`bQgtu~=>MeZJ7?#C#899ZHSKt9VUFYxcZ265u$@bjU0 z*1(53%TNP&Q(3Yhxu;8i@7}&bypcr#aKyAv0x|63u33T(y&w>GazUuu=G-KZoaKVv zuN=kRU5UM$D)a72iFZ?YM_J1oVgq1&bdFpp>C)&9>w@;jjP=VLutyUje`vGC{GfI+ zCf2Cpj2TA%f|=-!rMwQLZ)C9qJn&LL!WAhXT~M+Ub4gc)A?9~*wv%E`vfz{+>Z%%)!Qd} zbaEJFES2rxGRKhvnfAg6gcbT)vhzHmhJW4CmI52bnglKwYX-PztQ5FntQny9b29cb z8lX}zVM4ofIQQ7FPJz8P=g77)#238Wpu!=~0uCFi0=#If6gY0IN;s92cuGdenJkQe zGnSYJkOYYoiRm|U(L8|eR28|>0FRmS6niLlVrXwS?NN@=P60@8Ks3q^7hcfu%jSah zvJWQO!k~-$6o@(C17kIStX|xlnKq$zyddz2vT{MFeJ`jeI{dteRDc+l=?aKtr@m6+ zN4?CCN;CGO9y(A{#+>;P?cUSmf{CO+HYLPW;G#}GZOL~xTOs=qN^G`5Bzm_Zzkl6qg=kl1-X4mlL0NlA0GRyCn`WPExBATO?#zTlJ@o1vb0z1@2HY#N!xl^ z+Sg0dUTL;#Y-BoX4?(7-+tynlNVE&Q(u7*~Ia)7E`+8~G<*OFjj@AR9 z%W)N0$ni#Lj;m!k-YCs+wJgUQWjWp`&2hCX#~ZCBIo>GEakVVR8)Z4(D9y2av?I>( zMrj?Ny^-@TEXSk3LXMAHAgEkd9HV79K5i+iF9*MOvkf zk6R%6itQnmPql|C)bVi(!~<(DN+HN$MPpCfq$Z` zE_uaaq%ZqK&`96gUr&Cs9fRf(OQjh&sv*~A{VMBC&zdsCg2jZol{vFgBk#;VS1ZYf!r z@JZ%adoCs{o>1Yhu-Y}h_$w^(i@(AGQUl@_ka7?yb;k}w!!_D1&A@Bsdy1nInouVO zUbZC90q-hH{$|9jCWP;dxlLX4?bzaP4!EZ*Y1-O^7_$7#jVSafOM%-aRR``H>k6<( z*9)>mJfLvMSSfJCRu!^{UsQs>o9*tDz^f+s)s`m29aC5ZJ}Ao3eGhH$N@HH3p!Qsj zt)CREX$|e@(aC`Kl_yJgAh&k%ciVoa3DIZ$H8rg8q8^<(Fx@8VfDf%@3S^{-6wvo` z%8N*c)~O$hA4(h<^V_$Y5Z%^c*MU9CYD>P|(wtM`w#lWyJ0>Sx265lZF&fCPxE!XJ z`>-)}O>O}gkK5LzDf8X0YVVy(zA4{kYiZJ}+sZGw8EdFw-qaEi;Di~N0%BXFMpWlz zuN$~vtSKxr7nFoZ0+%f@6(Bjw{>mT3LoXK(sw#u(nU@0cK4hj1!VkU*gD_1Io$JiBm0K$sIMxy2AZ+4KSH-AI^*?qK}e`nyCjmW}F-&f{ZyH8NwgOBSlXw zqu)%96>~Loa^XMH_DE02mN1YNXIt`(jo0vIOLB;)nu zx3j--YU?aC7aI}va~(3)DC{RYah6L2<;nw$EAkvK)F-S^(=%oGR#)Oy(R2UjsIhC+ zl_V$;S+}5*VbhlU{!CPhB8M`L6RL`Wm!ATkx9Ufk45Zl6=v4!T105|ptytlR!eju#4p2Izkh_tC2t;z2v9g4g3 zSn|RG*9m5L83{mU>`x`1|2XORM zmE?RtwbD>x!Y|({HPZ@u_0^IA|3V7Tzl4|qM^q{+%`qhwebXg{gZf^N_`v&DT=TKg$6gf3d!vYUt78M^ z;FTeT_*`~P?N!ZW%Ps%Gv~Nj%16X{+4~%*d3sbVB+6lQe`RC2Bnd6<+ZdKd2Ccn}| z2d>Dg1gN6NoEVsQw_1~tCKykhTxgOm*tS&H_7!@IwXoHa4v~F5N<{$=l$8%Hs9sYa z)%tC1uw}Zg0G}Fb6h+TG3+Q!6*QO1Xe&|~PcZ^j7mYC}_ziU8mZZu3wuj>3&)13lS zV>N(d%E~hZwcrJTOQ!_SGRiN(WD){iG+lLIQCGYjiWDx&?gD_+o8HOJ@U*%)oTNt|l(ps$v?LD$7lHELd4O$a^!F_3G^J zv8SK3=ZeqUP2KdMLVT5mYCJmNo%ADc)f}w@xzUnvfOl0&?lonoKzlanH*Ew~BHQ z?9hmBz%JX?r~`QzEmD{DY-f9(81W5w-dGi2ud(XDVPjQ*myJ~i`f8~FpLnU~3OlTT zD!@)`1zAyiq{C@lQ+u?U<*}Un_f4?g`$H?5!?k%2!x2fkooqRQUBE;9`}+a86m7Hi&0l4#-Z0$jR2ep7)oUS>TAyFPT1w zb}f4O+83}xS(!cvk|lB)q#Y&{oj2EJh{|ty%mDr7NeVo#JuJxu_8Kb%dJksIv;w+> z`**n*g(Cer`(D(eEcQZ?74`p)9_2%7y-kQ?3vTSPs`!Sf8jIHu9RtnVdj5xA?!0yZ zT_U%PECl|&o)Q+9cqS%cJ=Z=VKf)T+6#2Z2ofXlhMI?U@7{W(%Esp3K5#3Ygv%hQn zAd2W(9MQEnqH9F7X4Q5LNRXLqaub$WJkgcpK1Q&CeGg$9UST?IK%w~sHO6D^8 ztQDCMGdAq1FHG`7F9&2+&5S_!&WN^;8Ew2Q>-K`cJW+MGLSbh(Ir`$Ec97$RDR#Ut z$4(#lB#BNA%&IxFtI4H4om^O+ju+$yukk)VDUh9w^4$d*9$Ui-@PciHG=P_s<#bh=P&~qx7r}w!rv#xEy+&ZsyLg8O?}$a_ zDBy_cngrsH^R8;%)x01Oe{w-6Tq*gCI)0FcY%YSpyo3+L6X_`+0cTAiyve8}PP9YL zoBJv7v&O0bhmBRoU}~&1j1+0 zksB*{v7x37CQMfYIAg2|aMf51oVc$nH@$)PO)LdIGgbqyy45S!5h5MhfgURzVJdyY^VEQV+o5q?37InpQQRynJW^Jk8K}SZg20ngf}w@3 zAImKa>QO8JH$Ro1l1=vQ7KnSExtBmZQ4^VDXkkD#-_e$Ghf2Ex&$^&0hAn{EhQi05 z73yA4-D{?32Hp2PD^?WUq2eS8T|a_1EHw?3Z<+E2b}-^v;xTz~ywLR*S~T@@Sj3Ec zPX$=C2*$FA0bk_AGJRtqPTohy~0 zaWv87+pA`O)|(G)k*60|S=b8c6R#N9;|q~8{j#xAAkIsj(*-~9Qb2m8WWVO2TK47| zj1I56fo`uTy3)mpreZ}?v7)IkCwDvZnc$HgW&Z~F)L1F-nX&4?=f;W_X!Ck%*F+k7 z3TZ7XLKL)H0Y=d-X{$|Blmd5*HHq#+&q8-%x+5q1Rr;c}N`aS^Reps^-^?>NuSc0) zfvd)<-%)tivw)k*Dw{$U_1uazOM$nIRRLm8o*2zHV~bJDH&w-&scO&)r%HaZy8l)l z@N+#nzrkctk`PuHBJG+@*9_cgNv{CUD@$Uz)r9Era-sTNjp2#Kk{&7SR7d5W2zb$0 z>6pSr&jPL+s|wsORtmgttZ0pgGv`&r#SFe?&925SM6VyxYS>zh(rVnZCKM8Yyz?LC z>47pH=}~$LxNEEi@I+bJy%@w>{`MSr*;ozWn6Xken*PwUfLq3D03RAFs-YouXWl$b zfy>6K18*BE1#TFt4%{+Ux~uSsXDz5R_spp}{%sp8Re3uMD#AHQa*6I&P;@~R(OTB0 z!2d^2NmT=nj5P_Ysgv!=cXyK}6n!JyjS2gW|IJgfP-GyNg`%^>A>e~k&7lY~Zw|F< zxvK)%aV%Ma6U=jqF9lLC3srcf z5xDK!0(VZeg*xKCzJJl7E$nbn(QQ4-MIUE3JPUZwSSj#N zmE~S7-%-48Vs#)cJF#ba8ox@e6iDEnhydrka^Qlp@{WR9G{F?ObV?A4fXg0OX@g68 zl#vGfbz|8Zt0)vHJ!yx2MRR&|mjN85W*iUfeM(J-f}_`R(B=26fc^IN)eRsod1(== zz$GsTtSKuOgqrb!!1+^xXL-j<&+=voaM>K50T#WhG@!8ugz8hS%#Fb1Q-V;NUJ!Wylpxf$38uhj#+nSPfna~#BC7!Rjnx1WUf#)2ymBHl z8j$dEK`0^=K_KDff>1;#f=t5jU+$QXun;TtFd9<(6 z|Iu2F0z0i$V@@GSE18^x6?!zJt-fK3qNN8{MBeF^3l4DMtz4g69)P!%*xL#ZJS&Xmj+!GKQnGOl zq8_Hz18wb=0^n`s$wUJ5pRukJ%TtZXwG4f_s~R>%eH4h>W7n>)X$Cee6Y;AL8g7>-dvTUwNG$g?HI+xlBQc~@q;l`+7dfXSGQ0xV@r zh@x3A!zB}Zpfe!@Cby%LeUBb9=CBfsql_7*g*4*6{DKxpB<{D!n%H3*FgL;|M2hs| zx99>Af=Gn{IQ4=1!U~-iR_HpD>!0c*D;pJEq0B=)x92C~P~?)r2{FolBZ{Qzi0V+?^q#!2|!+r!_m)}qwfLv8);b?$KJn( zr$6vbfrrYHrt+b?U;v5Lu-G!Wuuj4NTy_ZNz=CQJ)R=aO6Kg15wVrDbC_UoD!l26X z?|5MZju(dDcwq$m(zwsur~vsPbw{!+)Am>7Vah@2Lgx30NqLmDUrLW2TZCSZNKjnlZzWo@z_f$#R-@ zHJ#Xm1-xdg_d`WJTA5$4#cs4j-N0u*Wv+8^94|Cd{gnvPq=OMW$aq(@0P z9zHWg(R4GST|I7Ho&xV1s{!P__`G1DcD*2QPg%Jj6kB#BH9Myb_`#!eU#z|!s+Vev zbw_t-yE*|J+02px`#+s$OUwZWm6f{=HS7g}7f%U7EqFnyfaBpm5P?9kaK zZwu9Bb5ae+WlIH%1Fc*X(44I;|Np$EjT~#2C%TxqnFI8F{cs5dK4 zZcOon-M~x(mkVNd6dxCO-~n62Oam_~%UK1l8c$xpP`vA#hP}j+fKJ`*UYJV93;*#Amy{(guf3DL27E-_3)~zM) zi>v{p*d$e}Z4g`#WFZBl0y8-Xx>Dqr{HeiA4uaklIr8BPvH@iB&zkz=ZKWJB=nTraELK=qNy9pw6zvN=_YR=!l`F(T#2F~x>q;(^9 z{zmNljoA5UE+}_CnjbFfHe+f#k13E1a(Pw&obXaWwk}1A2rpWMvtdV1=(2|gdnMa> zJhwr_1rn-3h9{J=`wXO+{K8=`Y?csO&BsA#)1DPJ>(wD$)1x@ew9ot@EQY~^)mR!T zdaMfgAdOrWfqafe++MIH-g8T2v~Sj>SHoUCx-5Yg>`ECmLuAZEMkf^B^eiBXy5!?r z_N-WbGy5*X)dCFXIOh)6R;FkfI>1i7wss`9W#!c)U%lt@!@MZMK&D7998TpT%$&_+ zC@f}d#*eVfUj^NIDe)KfMy$I*C-Zx2ndoA3jo4fxG z1j1F^bK!u!tJh*5uEjpcuk$re-iK?k577sI%6ur(9;O*T`Tm3amB{ViZbIF*M5p+` z+dn1cwG(yE2ZT>IW!HKL-#;G!SG0dJIeLSPv?L!q4emor*A55j$DDO`3dD{)=U;j~ z)}NyPx%GB5Wsj*=RLR5WSW)z+h=`fmEGv1=^{9pR2#wOFsDDp{ee(lvjcM%98Kx zx18y~j5^{n3idCsr9k{_O}^HFqnLJ0!7PBKzC-8B`fNb0U$O;T6*yt66xdLfeAc|B z34znHWWlj#z9}%V^wfa3EUp5*_qEXblHbelRtu}nk|%%k`h)_p1>|9kv;sDC=ON$L zgSx5Qk|_iAYo^}5y-REP8}WBqAiSz*A%iOROeJ0*?#X+mKomMpt4%1cK6=3y_5J4Q zD3GlxSp@)5%94IvZCO$Rk7fIPTUoeQ^4r>N)y{HW zR6S341VGm0=>*!B&5Js4#k`Qe9RWcq+maReP=iWzTN3MGln2T<(WA_!vB?Sn?U)x) z?P3d235ZAS-X@9Tca~WK{plR-s*ycC%C8m^@KfcrC%^UR^>a|{bjx@F@@&6!-bLH7 z4+lu9Ue64?8!uZ!K}lE`0Aqt0;VlUu|GPo*C>SQS@hLYqthL*D_zb^OjYCUEzw~Pv ztMixhqfAf0^Fy%ez+PqLQyWy*ubLpRM_IWb)Sedv{-v=}V9$SR>OyZ9)XTeibfXpA zZtlL9{PSExzaE_!cv*R}V!^Eo=0mh%iIu;P@&!}$0dV72@ceyrcMZe(U_#-XXFXK7 z?ODKGV?|5tWsQEz`fLpNP+9UPlUkaOlsNWsK$0cj1eDjXHIe~~Xlz8`mS+LCjrHD+ z!aZaCYv8`I-s{n<`0QBb$1L+>zVVY zv9RVSfyb7`^gtn5ltDvzU9`BQ*2<>LRL5oxv zvakr4G7}ci=ODU6pNX6rkB7mBu~Xx*Qy<1oeHc6SVeHg+*f9g@6w{C!<@=f{YR>V% z=Pl_|xJB(aF|g0yRP5^1Jsp-L%e4d_+K`z*3Tm|?$W%uwB2 zRBm6Uwz@5WUk+8ZBwr2{alK%mekS>yr1w_R`!ikg`;P42t+$(~K2m>6g+gPcLZSIE zEv?BfnKiQFc%gE~3w5n&PMD5l)v&9qr+O?|NUUj0Ox_~$Kv}zbENR7v>DOep%HPie z4|v{8O|g&Vw?ns+ZZ*RMDdtjTji2qou#Q!(3esvqSqnCdqh%9A_`Zs?Cf`WF4?XYZ zfno-elMBbXbf@c92m6iQ{uqR49^>X_P4?OEo;WN*A zxmy+78n;#z;9X-~1#TIu0=%!R?2AZv%3`skWY9iuszw(T-uA4}^9en*X(Ck&KlZG! z6`R7{eq#6mWHPU7`;MW{ zwT&HoDf9ZBCg)N0S@%LwzQ{i<7)IHp_aqnW-XsOC8*A#k-qCTFATRRVR@P&?*}KjI zk$dgA6_L8H@QG)g<-vlQa~H{niswyv9eacJ0I80>JyTw1EC0c3xDeff5^>QU@6mgE zv)JR40`3W(+M!cQegIUaJPf#BgCox}3jpy+wq0VErf`WjS)7z6$a^`3m;08Lsl&+e zsnDq&O{-TlODl3J;gZ%DWB^4x@H;1a9p99n+CUFm|3&vtoLVuF`ia6$3+8>G_q2Xq zd;5a#^@|E`de*YS+s3K@eTeliF*t=MvPr^o!-5Co3Qt6;Pt6pZ8c^1td0>BJ9_OSX z&^uL$^M0nEJYaRh2s~~HtpF#KB~x}w6Jp-W(Fg0wa_YeMOl*>@bXfmP0?AVL4NnMC z=G2iZ5+%E$7d0`y*CscVMK)Z^u#a#SZ{Cp0@z;}{??~CvF}|?ZW zD(s5FsnD(ankU?n_o;Bl$6UjWFI!R6Li5rvG+Xj+7UquBY*%tKIX(Gv28TrA)@g~* zzgS1;ZY&XcA4`P6#1dgDA81UwR(f^dQ)Qi#r{MF_Cl{zGj_13S3u~+&kThDt%w)`$M}hrod;$x&i!aW2L}Evm$@USsoB6 z(XL0?;s*8@D`gPSYkAWkbH{3m_Ht1JdR23wDv=8GB=J%s<+{g@iKG=5IlrzrQ_+Na z=9W(RA7eOO@|%e_uy~^DHp-?5VD#e3AyD-!VWx#aX_pA0iE1vV~VZfN%(7@dq4}8}WT)n68 zfoBmOWm~p74qpTKy4~$g@J~EblZ2G`hb>K5&MazsOJ@tQ>NCo&vSuWF+ zCe&ju2>f$nRe@N{+v<5cY%0Q%^b+uqp2{0OQR*-CC|gXxLuJV?zJ{6*m=$LHELs~R z-KMMpY$z+Y3N`Nqfs3aEm9RsoPT~q1mRt~fwf&GDrPyh;;8{RCkY53I=~+AUDe{`C zXu4^ds=$J#Zd0Kkzw{^eWxSGiGA^qq*(%xot3@KCp`lph%olMkXj>T(z<*(^3J}lb z-5g;53#W`;)q&0zt7klm`tz!`PmjU^Vo`Ldb~}tHTGpf6F;TdpNBIjk3r)25nD#ob zS6P{ywz0#AqWgLj7f|&AuXa?r!&_619mwX4a@@5FyrjI6>PGW(6QN*~k=Tnoe{CXB z*7o((k%?4*wEFR6IXSny*KzKh-%Q@QnVkFSx0@<#hy4zP`V$1ny`59gucy9fA}Mgp zSW&A~PkE7PAm1&MSI_V1?+YH=?+nPFd4ZxOvz2Zr-1ICI-8V&1!ceqjt)^+UYptfu zt^!)|l`Kinsw(h`>an6IA$!`YU2VBy0rM%LlEKm5o;$*u=C0Y0s#q+j+Ee_z!0Xmu zO7wN+I?C2keX8FtI#VDfCFIbeutI~v3hfCiOeYK4RLwe#;t?cu(zSVTtYExVNiP^F*x<0agh$u22m+L zM*zN9d-QjL&_1X@`VhEf(Uknj7WZWg?)Zl-Ta%~@kH2c_D?qP)3W&n|eg(>_j|LQG z&?!9)yl37wfGBk8t0mqyP!}H2DV+#Jr_8UwqWaMi_4QCKGztHE%KeIF!qppi)3P%S z#C`DsNakHjoaJ~)!J=u3nw884m$emsNcuu!C0DGtRU>W{^YxLpM-J zL2$&E6=k$0U+n<1NiJ%|;58xF`+Hc_Dfq6L41hY{q+E(?thtt9e{S_82a%5Wr_nZ%9ej(2h`FqNc zDe|F0nhOh`{KLE|kj+l{5yh=0#IC<~V~FF90&dS+k}JS&O-x(zn~TjJC0Kfh9B`;8 zhijM?IZSaJQ+Z0pO{CGFiB?EYv=s(qc7Gam&6$^D)QK%%P5p7#m$V5ru3QlWPMi`{ zB08K`j;y^~DS}^eB5&YYLxw7SbFa{ky!?t{%k$ z;DNE~z(ZrvzvxL;)W-MCRwS~ct$%Q~77P)D8_`7ZL^V4en8>o9#F{TT=u-I}?-8)y zSasllu~OiOvFgB!#)_gtcb^wQ_b+=^;A66_r+#p@$kC&`i#mMTfZfWq3`HXLI*xo zmU9>USH}BF0=_(!t0>P02GAhx0#T5;3sKY-yPK-5IX#NIz-47Qcfr4JyssqSXUZ#g z7XxSzcY!F#+=VD=i``vSTTMMm)7`LUlMOw&rALV=l-bpa==8k=tQo5T99LEzA=HEy z4Al?osmmsk0@2x;EO&v?_?o-kzS{-)Wo_+5Lkoj?4i$3Y0Mh)Gz1>t@f9$;l-cwe2 z-;#k9-w?QAtU3@g<+>KN0SctkfGCg~D&UKC4PD6x(1IRC7jVT`b>OP9%Kf_ecc=?X z56p=a_~*tN1@^pf)PTHyyIxO7KFD9rEBk zKhv(9Zaqo~hE;mRFnurY5b20Eg*|#K&pMmp-_YfrGz2ax>s1?8${NNwh%Hvj8djtI zgC$*{f6==NoO_|Gal=Yk!`M|CcA3R0@S?J0&K>}xv{hb(02e(wJ0xCc@nw&;!kgDc^k02R{-RbG95)vYJt5T%d~B=+a6oVG@`8uD zqg)wvz~fVbP#5eDw*jPp%7+l%aicC*Y+#=modV*I(h-{NzW~NT|h>* z^hnr>4XQiVD!OxA*HicO=x#VeHL=X+UnzpAUA_C4ZjU?Y)YJr&Z%t!wt1hcwaJXi#n%><*5&1eOPC3!{!#Ez&s zP9U%&%m-ygkG(ZT7~M9bRUnq+L!vQ zwGs>aWfnHdEbK=X9%#Zkd_S)!E0UED&*lGQm;e(?_zbY!SSgV1Df!wjR%)iZ0`#rw zNQK95SgR_~+{kVVphnE8DsWy|?gCM5LUFZ{DHljWazUsKuQBurn!zlE0la4pH-P)f z`fSp6=~r?&xn+?55BywzOY)PSX(He)GWNA)k_;$fK`FCV>}ND%3qc2?+HCHbqy?p$6*tx0vC-n3B*QTolt8gSOt2E zQ6XUYytPV!J<7`Sg2TOel{WpmC|g zk}K4H3q-f(D(`71UKNyYQ9eo_#x*;+=vjt`&G0C2-&k|NJ{_J;*Ju-pS+pgY1CqX6 z5X$Fd4oGftK`7s&bHHL4@kV3lvs>BXbeGL3Q@~z};}7;*&Os4RyG!3WsEaD=RDx@! zG6fQ&)FqG@T}$w`uN2^+vYZ(BqAzJ6iEv_Il2WpPR+bS$;(Fjzfp;yW8wU!BLw>ps z#OI=~=grp}K>uBm86Yob%hz06nh^B2ECzst<}7Fd+F?%-JuA}!kUo@8kRP@{5U-4f z?F3@T0!@KLm&wsnbVY0O1?!d*?W#-=0?(Zw-qSIep!u(Wu9;Wbg$gDfx%%L6mrX%+ z9A&_Z6!4kO2u>Mz*ow`5JiFpqKmv9x!H>Ndc{uVcBJZ@Guag84P;&LWq~X@|D7^=~ zrYw0O`&M&IiE%FnWcm}imL`$++jS!aE+{LLgE%m`dKh|%w~K0h#d`t#ePw0dvMTb| z^%S`7<>U`&X!;iQn7I~aEn{jcJG@%COj9nTMfR0})I+g0NP&m}>HK0LY+J8SA1Y*! zOUuyzlD%v$L$@sZ(aUJ}^wgi4Ncu?Ou4e%|%p?085D$l>qJX5kWFwNr#gA4GYwF1# zn@80!Z*retou*(TYL$i}a~jVri;GcVlJ|86pg&7K4#xH&8-S7u;3qbJMDDTl@`|I~ z%t39gs+5G)*wi)zk_$rNwHN{7wXCv%M`pJI^Z`V@Ng!N3WRL;-P0|l!?;os#udV#dSw0p79+b-64{k7GHDx! zbtMd|WQJlL&}{)+$8m~6KKQb&XUR{=H(gur_(0$^~p}WVo0{*nI zqFTN5^#7e>>M9gA>@RtX$CCR)EntvrqvZ8fyxO8Kz4ix%a@CUprjvS9O*&z+^`q3Ux3 zkoH5Wr)*FX8-cvYMkrgR?~x`1eI+BBL^af{7nuxY%S?``9`u!%Tu_lkJ<1FbCXm*M zlv#>p;+K^|nbMb)LZKI>;6!~M(i!SUku3|NQ}y)Nj2F$h7xWY+OVZUHh?H51W#V*& zGNtJXg(f&MCK825>oF6FF2tAhRLw*pEqgcf3*oUI zrE-BIzsWVS0coPaYidm zsAFq83B;dV5DJ$>Be3XQywGe{-%(I9>etlxwmHGwhK2f2Pdzq~sFTR*k%>eFbD*c5 znMkB%T&?rRA~fqgIG5W#-)q^{6Ncv1`mfc+?89^WW!6^Y&2t z%FRqcwEqv-m-Y|?%FNqCT`Gz~)U=>;QK&WLW~LyhvRu?UMgeKNX*sF@NsDOPD$P-) zS(2lz){-1;mFB3@EXmPUYe|l_N^>N?NzmMo7I{9n)e1pYT;P=^6luw#f+*%F9tq@V z+;UU}?i;HCBqz>n)iQKbt3W0P;9j9zs!b@o7eQdryZ9G9c-JsjMuEr1ssoGOjhc5o z=3O0#KQ4?>^X|MRT=q18^g%8Nh3{_jL)#R?h@bHj#-EwbHDI9-S4#`AW`R(9(z~l= zg}7Q;h_$jpTrDfa)zU(g-(|#wxLR6>wX#B7Z7nOrT6D`E=jaMK+SCb2-qHXTyZVY{ zh+YuEa4vYRIxbl?OaiG{8DJZ&7c^LcmP<;gs&31-Tf$sJ9-pW zzs_rnVPTQ54ZE^O>w`fJ19Rg0N{R1QpGO*2CU>I5_`k707E{KO_{aVN~%1Fe2a-mU8BN7Cnb#6J3 zW+|v4tDe~~U_2oK>t6I_okr8J``OT8As1YlQ7U8j?$ym{3tY|Xq`dHERSkd)ZQM3d2D2n68c}+Sqs=Sx> zOj*NPyut!580!jS#AhBOeQG@k#W{4kTVnvhLZ;B&nqWh<&M4B8chc=gwd zK2{Aowz7-t(>}4;q5;*JH+PsFIteEEi&&o%kFNzt&V$*>xC)@I_`9Aa2RWXAcuwHDEvlL;b=E z6F8`$jp$LnM>_;=D6eELrvkZL$mrQ_UD3-jm+6ejN)KN$CILUuz%yp(T4=-FgVdU# zk(?V^$+@AKocl66;>>1QESs&Nl}s`;k}*RYueeqVn~?(6K(0W*=WP<01@;*025{I| zvq08}GEV|`OezH)8tcY+T?;(Xqcq%8xNoc!=u6^_Ppr2#Y{hm1=&R)SZ#Bv6uFAC~ z-}#*;#4~GL3D>l`u#^lt6K~bP%g`mK6jNBap_pRF+Kwq>ekg}957vPJ+6fvU2 ze_@5?B z6f1=sx`z`~IteQ)fjOO5OxRIU=Q3i#}C)!S^(fcGA)D8W! z`Azl(J<6O998^}Gy|9aEIA9Gcz+%IAmz#!|`TMsxq%NlBY6_e&RvkF6tUPR}n_dvO zcuFwL4@PU&umZ%AOw&NjIHQ#&6qZB~STq{v_L3S)&FFuINH41~!jl;fNO*tuk&da+ z2_Gq0BSlhJVW*6%^h^DEdBZd6C2Y8%7VmpMfgN_AS_gJ1E3ZAMVJ{e}-&3^*roI9^ zF;+BH3@zt_{_(f+qnmV26fdoK-m>C51zzaEi0WF@quikZmz5>A^tW3V16?I|ax*GV zJLlGF(5&=It*)=?QP#k~2gaHN5_HKOD2AVZGtYtC<&zfNFS+qwQMXU5)%CblyfdY( z+O1V|Lwp=4mcMxVzkly%k|fj)KkS;4_W$mT_8I@I_WS1Is|1Es-|AJ8NUIm5gHxU6 zP73t4>S1z9x_Lwu%$TA%;JmWhlH0eM3rehdIpDg<$=3oQ?wDK+xLuUPwF|$Omsj?w zL5MFHQ+~WSti+fed7DQ+Qd;Et)53tSXunhgABKZw1^n)(yP(BO%(`oLAqL z&Fva+wdgj)Jue4*Y^(}!*H~5Hv9T(^6JuQgcIez8pV+_Egy>eL{FVcFp(qD2?B#&( z7v;jia;WwZlB*z)jL8D~NPn8(TmP+dK@?&TNDT6YP2iA)Qw3f&)>R-Lw+VO<=iY6NZkD$-^c_9EE?;{3#lGK4-tkf9C{>GS{?W{YtzR|6al0B05SsMNe$+D^ zTKh~ct;sLiRg#8|7e+a!*PQ!y?TKdgMLp%OMbWJYS1?4%E_}$`GfR`9GqK2-mb{k8 z-|?k<##+(i8%f)OzQg}WS&#K7t1jSQ#L|y{H&=9|N0A0@{ZGt_f3W@karVA3QmBBjrE-mV3Q&wK;u_xwZ4|h&zAF?0bRCq%_Th-qkf-zmh zupX0z@;1HKehzBPBv!ziM)iT)Mzw)NUiLP0Lu7;^E^p2DHjq#?Y>LjPQ3L%>(-ZN^}2dgO+=T-cQoz@24GHL+aHmdEFOH6&((T!K>z7lxT zG%W#fN;CnBGfTd|rZ;GhtI}UL?3nV4J=lzN2}KVY*wvD6V{^%VJC80eZft6k@)_v*I!i|-qBd#M{KX1eJ-*EfwxlR-B^i#qO{5M9;0g0(R_xmr0uj=jL+xcnmd(%$HS?7P zBfRhb&Uw->tubhEwyEN_dc`T^UC zixUbD=%?Ot(blOV2yA~KNb5oo1g;y^1`a+r*Vje#Y&LqLIK|z)dRjWY6&>;-_-WYx9Gnb(wI_Gq6M58l{>DD z(?t$=epIffjed~>ULKXBu~FoJTcdI`ZWTG;?NPajuWF}`>t}ZEj5fOZ*-#23b;{y2 z3w&(U8j#r6QxC00Qy+dC6!p`lYYvD`d7U*X3in@8blVhlfSjF->I`Y!wSaYi#Hbde z^~+{`2Y5m$xfA|m9}R+8pG~WTwgV&_wV)qG*M3+h>bic)nhwOGhSv~Zs@wF@a9xSW zVRO6(q(4Phoi?V&Od1lX%JbF z0~W8tx6~hLN4xr&H)M+GM%?yEY6#8)G%Zc3%?vcj9}sgJh8a`a4b5YH z&+T{OJvaO)JuXMvmwi!HT1>}FQ33z9Q43K~SOAZxbU7>h#nM|U@`t9leP7}KRH&y4 z|Mx<@RQSG7-VcV(6&sUn;I>gc;Dm0f(?Dy79WAhm{uTF4cstl z1$bYn=D_R0ieJu=nF6?Dx_ZD-T``{M!k9F?!BVZrDDr<7_{ zKdHdPuI_>sF3Y|HX#QqftYzN!@P5*$4zL6y+#V+&C#)X3!1G3Z2J9Kt1zK&1UELwA z%NCH&fW#_!+8xp&T=HE9Aaz&^(xMba5J)N3g0zUN2m)_u;A=rz4=qEV0bhS0NQ=td zSA7ONp+#J4r1hnh_GiEYTC_4>ZMSGlk5saJYgJo2qoOp(YTXg7Z(EMLz!{}#L0X+6 z2<(0!NbAcY2)z7(U_C<1{}c{&AWw{eH?2x80*~9^S^EW1u1End6kR}yQKW!RwOB<@t;Fh` z|F#~bUZn>h^(vkNDOQmJQmi5cylg#&%a>TR3luFyl)}HzFpn+xlBxw`RW10clA-^+ zx|XK0+58(g0#ME z@m~Ov(^`;Lrw9T`Yb{9Y%OVK8tW+&nrllH@=a;t3p9QkVldSAEZ8hK8R+H3bNg5}M9kzQYgJigYY^o=d4XLoeBRp~Z8 zKb2C<#3R>aK;kSl>|J`IW|Q%>RlTJJ^F%*e)jzA4EtwRP+;z3$rha~0{nzrU(>I5- zDFgYz0W2WB>2#*JH|B(Nt&TGacKU>wOL+}-wDcV3{m8uT2?i8`o zSB+-05YJeNw}BUwYE{=OaNoEut`do3MLY1f%+~AGBgK!481UJM82E*8Ut9%K`(nve z@4)H39auDDuluvAZJpIw-}10xGGcklB(oe-Mkbjzm^3oUy2TukNhS*B`%HRsyfreX zds~F^mI&qT5XxI2l(#{saTYM#y&3S{7I<$EytfM8n+8A5KAAwgX+n9cgz^RnkhXu)cLUkx?T* zm#7QS$f%JYMpSZS)aK7IGf^lD71>;()`r<11a#07|v{S#ReD1^$@8*QsjchO^ECFQ>+>{PlWgSg^OV57_~IbTRR3*P8v_LQbB&*e<)+qxsnq~Et^l4XoL zp_%j>^-N;KmhKQT$<-X2^-OXN$96rF&g{zDE&C{MwNTz>p|JS>_k{%xh%RrwP~Lc< z#+lCg;O&R^PQc>{v4{8JhxZwP_g=tzSK!C_BMS|#oUu!ap7%neaDXRjLIJ02Jd|sC z>Y-sFi`8Hkqtvi$5TXfonMn*q%7;%VA333X(1h~w5^8*?mI+m{b2-|%OsI;T%hAr| zXy7DXRV8G<`4Z)qmIt(o-JX42c6NpEo`z0H~QR%dd2e9vO_Wh=$A-e$Sr z#o|iqE?omFET#CPDSUWX#JCU7WGiQK3xfMsLIDqy+3$I4S{uwL;?nb0gY(Z@IL~dZ zWS;xyQ?{>KjIJ+6*B5aeKjp;e=3;bnF}k_f;O6}%H}5yOdB4F;U6_ln-p#b8c|Q}! zEjET#;=J>T^WNukHM`sTnK&?+PnWFE_4rGZ`*i5zl+LBd30OK8d|K~ZB{}dF<31gN zx9kpA8%Qn57p8qB2}K=kYmv!z4Y*^}fWo?L_fX^SL%r860?!wcso?INaV}{dD7_kJFjyXsM7IvGVk7*tdbq z1V2;#_QuXfLyG;bW>EqKEXn?1MPlC+G2j8URu$4bY)=2sZfT!XPC5ZHW?B*l|F5Uk zW4fFM{J@L&*Qy@==e4e>|DyhsGl5r?ny9|G`PGotZQaewTT)x{{#5_)5av!f@>JfR zk|Qwpb!%MCf%#wcNZkjmWBPkeMIL5GkJR$C4rt{Sc^@F$e5UTo>vF)GYPO68ARdXn z&H5cN7(9|AkL!2DV6Z{d?A7^e>wFG)#X7$TL}7ZyIcFiwec7*5P z1mT_8(E(mEJJx}tc67{+8U3wP*|Y$=N_|wxF9p)Lq-64_$E@oj>V%3 zyk*o1@P9C>3oLGj?*!uZWpijAc*`8>14kX2Z*Zs|9h#30^`k@cI8;mxKM#wk56#pC zAZbb2UKr9MGxFL3@UYDwNs!i2WknE(Beh0a_#%S9%IaC3_tDsIb-w`I87c9FA+481 z5J+(9o@o&u=^04EYe8D%Tm*p+wIXUkTK|XD$pVnz*MfUZOvF;Qi$Eqk*=ycu(V$p_ z+^uL3@+?VX+Two}NW`-o4Pq`m1BrN+qe09?4oJYW91TLAJkdlD?<_}yh>IMMaA!Fh z1YG2RL_5pTAl@PeB=lL%NB)3TJgcg#M?iut=WR7b{;5TtAZAG#gi$mCaXQP>H*3Q7JbGjPPS%_h$tn`e|!)<|Q@YN`Xo=`2SBx20zw zWt8P;OxQ^600~Z(qcLs6ssp4vvK)=uMGi=LWH}m-iX3nx^6~Fd5cwk-`FyFMc*|z= z9^(;R4YxlIs`Mc{tG%d@RbO6lf1q)Gub-(uFtL+uBIEFqg>m_adPd|#Sy!pc=JYb~ zs!?h~86;hG@2M5r8j$*uKc`WFDKL4*vAF^lqo#*=>8p6M@PfwM5?~}GO+4x z0~uyAA-vm14dP%Xagi~UNk$Q=&g2{Qg#llm?u>b-;{bbQ;KnqzN#hNzc9DuXYctXb zxkwRpLM~Lp@W#^j7JZFkF?LI99oASw!%#9mRk za`*bm5wEr!*~{N4O_j`X2d-&>UAIZ~`T?&o$?c`Hxb+eN_GS4~H}`O-?0xcq@A#?@;V;o(_*%hYP@>dp_#c+b*RC zbQ5@a;<>0g2c}z>$i2^MRsW>&rzOt+d+XNvJj$8qSkp4eOuM7=PA2_wpGj6NroT*% z>sZza->p!-Q=xp9LirAb8rL23h3^yIcMR`)hxaDHkF!H&8gGJ7zIUN~$3po&g&N=8 z#n|1&*xkk0-No2lnA?0c$=nvZ8^rDgvAaR+F3fkUds{Rc{$>3C`Y_0<;Y&~ zK51L$>j%)gqoX&?koOfo9^rg1O*1JT-!}a-Logdvxnl6{rxyXe zGme@WKd!*1l#}lj0S89S0xu~gKkxO!Aq_l{Q@sbWW$+FNh5aS8KdxeEe_Rn}{7ici zjXaZ7xO9uZyh3oTa!(hx zdf8C*`}H%EJKA_QO1{*_>rs+DHAdyrxsc)NC6ipYd~kU%&Td&~ywz##Q46qHC~vV) z-d>@+wL)R*$VC^H{wY^jKEA9*-dK2VF}yb$-rElE9e~FRA`Xu$1RZ{S+}Cks(QY8D z11TW+{>Hy<4ZUx&N_w}1@*dUadVgxxdsDOCmxk5Yr$rt_;RZGf6%D=^4Zi3NmJ_|T zLU~h#igt!&JlZ*kb`GMQgJ|a<+Bt}J4x*idXlGdey`5!U_U4u&-s*D18()riAIcH$ zN;%>^Do4Cy<;eK5pZAW*Qt3Ss%DWVYMoVP1+-mt`B8OuxJ2;nU?EpeF3 zJeRm}_R8H!%;oWqP{0|BYX`{m_fhrbS3??CP3|)w&hIrn+8x%%8X4&p_|z8H-~Vbz zgJoFce30aaAAF4dd~;~H9g7#Gu=KT<63;E&RovFk6m9U1ao-w(?-}=rRR~W!)49hr zh6FDEID4p?Z#7iNCk++yNkfHv5~`uEeHJ%oiS4eXMYpiUbFyA6{i@Agt8gbg zanvnCKXLxwmH(t>Zt17ossuhUY8Lp?s5bEYe_AV$E!R$q#)U#YtY|#Y7c8>mUUqC* z53|6wDwC@qApOWht3Ou+LuYbCf366I?nTXBoj7pA{$=S(UTg+V8?_GX8MO**{{uQ*2c9=-71%dw9XRt3IdK)ZVbnVCu~DnQ z-fwW?I&fgrD)8MIlL8*H7im_3$CRprLF-Hr1ePR)8y{5a8OulqIBntY0SS2Ov18$X zXMybjf5k%90iLm7^niV((l?^P#IEjw7B0(!Mj-yyg0yg11c7Y}NC#K~625;#K<-#T zy1++9eFl7DR2N8XCA+#qS`RHop8<(gEl7)S$;&)I>aZ51MJb9PkW#D#X%X2Zr~%*A z&svbyq!r?4z!{}fqqeAAS+#)IJ`kk!M@1uWQA=CqtL+wzD@xYg(0Vs2N`tJ{qO^Ws zIqm|lj*O1(kk%g*LEx z*)gg`J@C06k`sZHW$h*{DpS+}DN<1fJZ*(H52R8>3dnRTodT&`kpgZPT|kOaq<~CI zq6>Izq+aHSv?y5-1pdHkZ5~LyN)Nz4C{jR*RiuD_RHT3pj0#t zTks`S3&yHi@Kq&4|9Q*TReg3Wtp#6NwP38S1*(fmsRe0GS{4_86pLz90g6Ljfdf(r zwIHnAZe`yY5h?V1U^uz7A(_JjmYz9Td&Rn+2cu8 zcAK`EZ*8kdYO^E_k}Gec0r5M_(fEOxd=`kwSNu0@kkHx z=Zfgzvc+T$$nq|hJ#NupV8~TFaKsY%StFg&naAbi=Vl4v${J}9FwqEP0Ax8D3;~e? z64oq7qh~Rm171}s%hA{>a==@oax`{|9Pq)Y++I0*r8!F%h2YAfJPRaXV%w{x=)JS( zjr7{^b49wkzOhyI?0em9ozZP*G6c-TBiCd=;w&}nU7As|$#~kTa(!}4J4`=U#B9l= znB<a|^5tX3k~sfQf2XKM9=_-&3ApKks_+1eL;-XyC zG6g(TkJ5Fn!b%Mn3eTt=p@6t0SF{vq*Dk5neYJ=bg+tMZF5qR`TCGw(ENpTj8=ot- znypeiY;8n}LSY~Zgdvjzg6&l%NiI`hCcU+p z^tL?L+I?-)Mte(LxUHWuMNDhjW-OC!VBe^-r!=XHmfSFr_}XlG>8z(386MegGK+#t zQsLyd(L>Y~L&H}W5urzUuyktTn^omIh4=l!``~)Layjl*3gxv4HC~aGIsuVdjEX{e zMvIoCMaxmq@;Hkm^gAuDDwAGWCihZTlB8e9D}tDgNP7F=vd#wE`kB7J34WxUlrNB2 zrK-cMH%07#P7#z-(pLJf(RD4(2UhkSyxuZR9pJw-yRKJWd&7%j2Xqj!u;hAXCOM$P zF_TOUjMYpsU>U8MJg$S0!I?=$C=+cay{q0DnM}PcLU~Js@^%R2tq{uFAk;Vu7-!xL zcy9~5HwfNa1@BFRA7`J8TyL6C-YTKIK|*<3gz{zxHQs{NXu)c8ZB6j7Oal9 zU^!Z_94%Om7A!{#mZJq>D)MzI#VkJwq@!hI)a=-TIx=c@THcO)y0;{g-j+=66_2tl zj=vLx#YJXj=nYQ46GYVd>P(uqE-T(N?$aSIycyxZlQvPcfd`E0XJYrxI(6b|r~9uu>gqI*<(I-#HGRPagVMt_S3?vy*0 zer*R1xBv9t;$h`^U@K4?$V{L=okOP=)w!BLTbFduIU(|s)@OQ&G%6wZt z>po~5)4Ttr513PWq?V_3Imp-jmH%<`ytz3G+^=R!MFa6j`roX7Q3nQ(dKIX-%n%A_ycVwIHoxM}IFnu9+Pj;7hZk2c+ku zzGHS=*M!Ly33ykjkE&~54QV{K#HO=p-THgD+XLQKs_upsK1w%09IORt6?c1kxjU_O zEN`y>7md0IykJxpIAN7>5jYwY`AcFdFgS@@7lD_I>H--B@~9n1!Ha3YMGNpn;CZ9E zz^4|-i@^WKs4noWQ5S)K+3KhZB$Q$ouv4UfCD0f53iNxct9jt0g>V%}&{7`fErdiw zu4aHlMBdW?VxLF>u}`Fc#nf&Ew)^W@70+5=hd!|KMNY6mZq86k@Wr!e34SfOSE&$7*=7QnVkHQ7S~MsYA$Kbpggi^qAn2kIxTz`0ax}IqPiKK-rtVq8 zPHsdWkj!K`8stXgfFvf%(I7P<2P7|9js}?#IUs4tax_Sc$N|YpmZL#lL=H%bvYgM* zEgi(H_wvR7kfg|YTTK~yY8e`ds7Qv0&Jj_J%o=I1s!Pwn5sTw*{b2E78`B*iqgeEB zwrEgra-$h?+L1;5u*MGRP3XvGP| z#8bqWr4Cs|tusrVDHO1+RCZM{VHagYp0Eqm)eMwUS+Cqb;z!BI&+bq)gj2q!U2SVf z@9U?C0Us!pzF-Wd+C+@NpR@{IBJRXoqzF497wVP9iy+Bv&DmbP)bgPi zkhwFHEMBZ!nH*>Sgz{DhFFnm=<(3WS~_vQuf+LY61SKB z9n(KE1XntE<;n?oP^q*CfZ4E%n2(=O1n#iSqbt$=nIXO~6{QZMPx7b0)aOm}J+3I^ z7eCVF3HYJo@F650`Ztv1Qu{d2Ffprhf9i z674(6e@zmee;JAGJJ(I=hC=D0M*B5ZXDsKkGWv_QyxviB`?Z@)a#hnCCAqjbHo8qe zu8mWpB$jbSmvwRh$0bK5|4dg(-WgdVy(>a_M}+cj2<4p+%DW(xcR(o2|MOjcded1$ zz5Vds33%@bymtrQ`vmVDgU36P1Ml+#Kd#)~t6>PWQgmg5y2wN6-3rh8yxEGy2evKJ>j0a-w%YsAzrPTQ5@MO&>(l z2hsFFG<^_FA4Jm!(eyzyeGp9#yBR-j%3i{IP>y&<$`S8RIpWqEY>aOXCex?L~XN>#S5PaOY zPZ|s9rglZ((l0;7qWM-sfqc?XAfF5wix`0ru5wS#^PUB>G;7kJE>TFnIK}>Zix^0SHWJ zSi9-_o%KBj>{;I{Koq9;66S`qiu#q}REoPJO#JDyi=dX~q>8J3}`X5d3 zGvMNXH0m|2U;W$W4Dgszb=S1kiy(0Dfgr7GMG$!J13_A)ct5LcDF4Umny0!La{1zt z2IVW{=M$UV)kH&~+56v@-%#t)PQ#1lGGRx6mMHD&Uh{bRA?PW0~CvW@!F;euu z3Kq9y{lj{qp9N`jEfpOgzGOKXcq1JHslY5p4x9UwkuIU0SN4?Dn-0KD2W05h7p zv_Aw7Y;|73S9HnS7Cw{@zg07j^iy_HM^(WoQ?!0uN8lCxO#OiwkaFf*J-qp8tyH$t z*L01#ZOhmC5q0*MIo$@HF>3v>!rel>S9nO53Q>PrA?t-u-ox`6BPvARZrxIf^}kj9 zUiDN1@Z18iN>xnQs=o@HR4Sdxntw>Wmkxle{Yi|4yl;_M1+t(gvAB${#szzo0y}8Y zS!Hb{aAF2gd0_!teXWqSPo(047hdc=uR)<&E&NQ4fgw^66%-u=hZzjkzA^^IQ`a^$4Nt_Nhsh$j)D>>j6nXJc%PEHNBXc9;tb51FQ!mMNu_JO7g<<x&bHTkxFrZ>N^{iYh6er)BfGd{_AUCbFJSXNCN7MUJB-78d#Uyoot zv-tI1D#R4Iy&vP(i}AA(D#7Z-VD)0KLd`@6XQ_tb;B0hoHaa*P9h{90&PE4kql2@t z8fK$|v(drXaT%0HLErerZ&sD}65hKC@BM}MPQ!c8;l2CtJ_hhU5b!=4@IEB)ugZ=1Wco66v zEVn$ppXG>mw;b_amm}W!a>U1=9PyzjM|?!e5g(Xx#K)%`@nI@Q_Nw<8+vZ*Xp0MkV z%>#R#R%B*|KD=pV+}5>i$5z!(hdw;%DUjEX-ZN%a2Ur%>Ro|mrVE9Z5&z(@- zs-!DSJ*z%VBIWZVluwLMJ|jZyG)r{m2nD4m`eG>N2*p#| zX3gREUE9mgMJMN?lXEzE*mml3KsKP0@-wkF_D%kqzZxq4sycK{KhxtbaPjJU(W~#h z(lN&7yH$OA_(P~`B5$wE$z<+yRUtb>yj#5TGZQONz7+KI`GwZQ_b1d&yTAwtCS|% z`0}%oz~8C9S?3TEUw*DW_^reBVf>;3(dqksuL=j91U#Urv{IdG=uOAskFYGSdar2@b zy=X@-+R=+}DL17C9MjJ#>CR~pB+LX5=qBs5MO+R|mkKXj7H~r{MKYG)T z-t?n4;o8f4Q?5I_Q{{;FtsL<#mLuNNa>P4aj(ESz5$}FE;-gTG_+XSHd(~@s0JM34 zXpG!250_ZP^8R$KF|AJEGj+6L4O`+Z@oUrGW z>p*7t)Td90JRS475XvV(C?9>HeAtEZ@fK=)pntC-V2?D2@>Ua&Aj$Or!66;#;!M3R zv6&+_cr7PJr{|*6bJ6L!==5B4dM-LW=bgsE2j<`ah@c72RgDDNWnwnD&K5-HoyP)T{xPW|a7n1fQ z@|9A1KZ&HwMGs~Dr#zgDo~%Vr)}kkC(UZ04$r_$CJnk-bu0=b;C5E@tw&E`A@ZMs0 zZ#KNQ9UcdWJ3P;Q@dDnv0>4)UJ+Vc98Mv#|U#Na6)%nd|xh;P#UcEf3pCgBG^ne!G z$RT{)j)!pTsg~2oS$K9>r^%5+yq|eK9`bKwj-2H~GID6IsFZQFg6m~mt>AJQS1Y*6 zR4Cu7^%)fkuQzO5tpG>zd-Si!b4a3aT3wYqW}Y^A7p?gB%+{3^;2U=~?MeG_m=)k5 zrRa!u8N1=q#*c~g;7)T79BLXhauLDc<+-zStQqTD+YjTX|=0IpVD@ zN4)Xni1(o!@vf93-lKBFJ64X2uiCRQ4`;nc@$~z_0Ufxu;w#`OwX7T2Xt!=Z>n_0Zsv72MFcyqzV;B2&W7CWEWn3|1aXEu(J z*}c4BQcW*A@-iB;OyY2{s}-3zFjG(3MBz7cPm;rN=Gnx7A8UNlx!_mE$+x{U4CnPT zoeO5*rN7ZZ#)(zpz>LOpt`A(|2qFX6NvfR-kX~O<@Wf3GDwJZrap+T)#TBK=Tb%8AHd>}}R+=w9X`3Hiu zUKaLW$XAOsZMXEZ?w!_lVa0x0ca@b*Kk&X%`N0j1$A#Qy`6t(PM`WAq)U40X3k@#e zl$S40suv|b{|LvZPLcA8E(Aq$j2m_)a?MUg4rm`j5&P{z5jl1sB1Mg}^APHoj(>I> zLiwr}%7;NHZ+cfvzonmY&Ayk&4HId5k*9j7M6yi)4(P-o*RjA7lSSZ+O8rcAB|YS! z$xI_Z_fPaDEmUn_N!DTv=;C8N;gy}ZNQ|jGQBRD^%CSg{%gV7xjIY}C+XhmAqKmLU zDpEkE7m)&1w&!UBnOsB)c(_ObOL70?U+)W(&wh>QL7TWg8G=h#7bY|+6lJ;!2TxnX z7Km%FP{ft-A;b2HI!r9mwfaNlp6F+~Fn_O@iM8n}oXVKC`uQ9E1ELLN*43L>G#^`p+Q27D zrN^&dR1~G^;5pi zGYx*CUsKJ3-gV4)uja@dXJDne(gRn8bR)ZW`J=h%d$cfgCP(=D1bPnLH$1nc^JC`S z9Po)ztH5VQwSmw7U4pj;#E|q=HTf$BYQ%l>Wes@jDCe#MUm3Lqoc#Aq3V6w=HDLR1 zm=y5RuR^T>uNt)q+%{?rc;NY%ic7#>HL3$7nn{;Nk7&v^1V}VR3i!fe z-2uK?Tk>l{aCr(Sh@XJx!qW~{aCr(Sh@XJx!qW~{aCqO zDwk@L+epC6R%Klv)h1HFQ)xrXha;gPsQBmR{kb0^GX+0_$fxAl8g0!e9(FmlX zYC&2QRSK?7L6lT2NQ8|&x z?S5y0Bazx^ij@4l84U(bOAk9O8n`XjQb3H%ax^w=nVJQX+$^`3#n;T@IpB!J+f5eB z-;s$HZ#P&x*I@B>3yW`>#dE+Bi?>^QS-hwgr~BRDNvo$7Y(tkk2K1V?^@8NCU6`ER zuh#}=^fM_3GmXhr^#wgVuuF-vUimFGkCD=n7vj0Zd~K%xe#KB=E>3dHzz_6#CULJ7 zzthi;s~^eTjc*QVQz-JfDDy1SX*!)r^sdgjiDSO}O6SYO?I_-_vsU8#ESNYy;U&(` zZHZ%;G8_}DSDsk=Kxin4o9DBvTj*lUx!ib;%gc~^5&=7Tk#pdGEG(dzOtcXa4(>!(Zx zK$0kha ze_BsxSY;zGYjL0;lW&xyHZtjx+vp>G6jRTQGecg*`1qIQT@Y^xyf+5k+XFwYKe^@L zyAsOxB9!kysPVejqVBb*yJ4h+N+y(~OYW0K-My&07wryTjPbf9ms>5bJ(FI4CVdZ? z+$%PeLb@qV7u#B3=>|CXk#aHy9xHrmV&56k=V_ZY!tMHj7WjsZlUX{vV#;TM|I(CS zukf;O)7xxc`zdo-ccvR)qEWpV zsjy`Du^=5<1bY{C(?n>h)~|FY3=*Ch3k_c_@r^)9)eFBH!}ox zjg!CErue3Q%2J47i?(jd4|2QtJ}rCR+O+TR=3Y>>1O04X3ZLlF!@8f4qPy85gA>|y zO=`j@(@c^@9v^0stERiUWM z!SQa(Jm#HFlyg}q9DZfxYZr;QD^lKBp}ea?;V4&z=|puC-{r=ET_obVhN9_Coov3*{p&6b=?| zR(+gBYJ7-$gt$1^iw^b(adEI09qdI1d(pvObg&m4>_rEA(ZR5F@EMd@XRB!*71E8W zEa~0Mq<1uv-qlQcXEW*D&7^lYliua}bT^@7a(rIDPhOwe(D}Z1d0+K?94@E*4#BsSlZ_;h+K`|4^_7vd5hAu2X+!H{l;nJn5_d?egJ`95!SD5$bPJrYIlm30 zu0)FHGI6F3d|5r$-PkMrOfujJyW`XLb(O^WYR^^uOdNPaxv$GlD*v=P{Pi#P$?Xf} zuDN5EC4u~>CAN08_gQYQy|F=DZHxb`kCsBjh&B%G%4@&6VK%Agbm6z zDZ5@MAOl<#`b0|CK953qgP*EZ&#k~d8G>IL_w6D0m2ope@LS`)Gd!er9yfbuvEsE- z>9!g8t#R@bwThXNn(k@!f2nrhx_*jBz=uZ70-qYy1|IwCwSqi@)0kE=y)6so0ea(9 zj~N@*!7Ok}b;<2pAl=A2vA65DWnt({j-( zUxQi)(nor8V9t8n{$&#cJ~nC<_}-{>;HxQ4Tm`;0Y8_bp+a?9PY1BIKt~?k>|HJ{{ zeWTWaJ$p%c6?j>x+9z5iimSEW@;^~LZXxRcD@)-La5Q8c3)!uyTA%D%;XWGC+p*|% zfs{p3-yPCAZ*l1Y30W;j>yL{dkP@l|X;DS#M+~%(sG?es)*~ykE|4(Rg0y-T)GqMm zNKm^&TDO#yxnZ+KgNWBUX}vBwf&Z^j-v!?JmAa6!LK+hzCEXp;B8yp+21%^@rZu#b zc7eA)&`Il$iy-jP2ZFTz&mst1{@ zrbq#wTjlnFN3D34fs}9UCM_yh)B%}M#abX`Ds}*Ot%rFa6)7hIceP^WL?Fc|Qa~!P zHjNg=D5e3aL^&5oC5jY~G88EwWhhcWDpI6MA=W6C;{xSKEhJMH8m6rUUm3MvERF?V z95PZLwtRWiXU7Uz@D)-E#v)muNJw}sNQ<1y3xhxsTno~AYUy48lBZgb7O4`AKvGo; z(jr?T2qaszAT1Imf+0;ezF24oLV#+3kj0%r)fVc9SI!%@V?&HPRpf@~i;Jc*=4#7*Xl_ z%Q~TwrYuKe%NDmeAZf~SH0~8SAZf~SG@chZ;7CMoxAw}}bIn=0Y6ZV3c?6O==~Hf3 zxV2HpR~EgIULS{EAN{r3j>q~b6?S{7rgrr+83JY=lM62(ah5ad^UD8IS{!$*NCrTP zB)v!orZD6V0qg&yn$@a)QZYqus$C*R-y~Kjrpj$wJO@mQ*S}etmZTKkDHJmzOI)%- zSGk_0azGUjRFNwF)~KsC|3p9Qr%eR-g?V(XdZn1HO)c5it;|3_YxcUfwm)Fm)ja)x zy{-|urJt!BT3w1?KWnvk`^V~P&3czeITA&a_7x1ao#M*O($4dcFCO3>)qfFQ@rH4y;lyVXEKw>FUKq^S2 zfTft$Vll-BRT{U^vhmqDs^LCnVQ&MeEUAE-EdozSGf7Y}E0f-^O!{tj)HJ3LnG??I zJaow}q1(?Dz9hEQ#{rWysAysRXpkx6oUUvu2( zw(mn8rTz1~7kAyj`<~!^XYk%{-(PxW=DHHf_ac<3gV8cb#BARhnKbnAE_}=x4eM4nD1%41+T+KdDqP z9(SlyIAj}2c0x9OLrcon*q*0fkkx?Vh zpp_gMHCrujN!ICY$>d%cDI3@LQW_Q)nVF#vT6!rBdylJ$X&O1HxNF>}LtMBq!h!E9 zC$kdpo>3QZ>8&lhZ6I^QzUrd)@s&M3k2|f<aCR%y{$rdONAO|Clj4F7T#M7kJ$to9@~jEymtWJdjaoV zfgk6O%$T?`GgS)<<-HIJ2e_#wl8;M>`1snx(NYHuPeSdnXBqD6*jtACy0=zdCib=pJz9_q^5XIUie* zBC=(8oWoA;E{ha)@>EMG;2piYAmMx1n$Wu`J^joi=5u>fP97KLv|@Ps6UW^TVxKtg zRN}l>iNmckBTE|?SJS5dsvc)%OC0_`895jH-ndVP;DZ_zS(<@2jk*ZDWmFqTG-YY_ zu@s6(vO*=dd??$xpkC0=Bm=&xoS4-VwVv8@ML*N2;H%1gU4DX&muuiQ+_Cif4BVC; z`_o^pdGn3hjrL!zKgB@c4W%ZkFK&J{q;>4C)PnMQ#Z7tfqJMY@GhL26mlrSO2+XO! z>d%3>s7LBPXdTo$v!xH1!+NBar_~Gcb${i5+?+5sXMu;+Y}sT3@ksjL(w9qA2#@5* zQ+>Hak6=T?%O!Mv*gBsBPFUv`fpn1`*T|bBDsa+nR$m0REfz_TR&F|lLD?C1cG znjHfmJtsTl^^D+Vyt33%+BWrF;FPKF15udNcTGKYA|+>7x7S-V2%nHoDjL|HC23&2 z+{pxDWtO9XogxRs#hY(Jd2kE^@NJ+}^5 zUMYN6C@g<()5Xd`HHT`DUs}N$!YCA0owtat1eeuc*pEg~44c<|4>NwS}Hz(C4hP<_!{xn=#qW`>&g&$X7 z`joW=xM7x_1Ku*K3&b$FE8y*ty*6gOvT=M4$T&!E3A=w7iY0O{4TvSOc>!KCqvn9c zs7^GhgHgqT@V61}yTvmPRwgzU!+Kb2?<`@NoKbf_m|2~ZmG48=65oSRFPwg%y!M7g z$m?b}`wrlJFYvxA`0>6Bd{=2&2)+z_2MsfY_eExksQY5neKG0|lSkCui@JMJcQ5J= z^NH78<_6zIIpTXNM|_9n$X>a4sWmJ+rvqMZ;=IPhjn_3ZMDK(x>g)Rz9w-!WN~tt) zfsYh1Lh*P+49qx_`=!zTnPIelCQNzc0Gnlc1MX^gWFG;1ZPXkP&qNA{XY$q}@Sr)= z1{NRZ@bR8W%>j#xZSSI(>OB-{T!Lh(#6et;%{1_hIXDX}b}nIOF={CqwHl2IyUjOR zN8Nv`HdlfNyra}a_1khgkk;TAYC$RLH~aEUKbTA9NctX@+zy1fR*vX7Fn9Eb_MxrU z2YnwfKmUvMky@VChTe!OHo@G`BeguOCqW+O({EE9?u6L2&*Utp3zv!{V3plqt<~>j9LS}HfkL> zqtO>#z>`L;0|!ct*saV)5eB|BY7IE0IS?m+(?+cUj~lfPTvV!b40G3n*MRqoS_eKb zY7IzT6qPX4gv6qhL5(PeLzekD;60<(fv5jceU>bzz(u9f4Y;`>t;1F#10ba$p#oA0 z^|`dD2I&NNrsNm+z^DQ6iBapo*G3J1RD;+7B*D@nkOYeqkOYeqkOYeqkTi-EkTi-E z@V=#Q03?kf1tfoUd}x(y#&>gchMcj~b%4ZN9svLecv9c73Gkj(c@OwZsgJ5_Ukz!z zRkA*t)_HTR2fUzEEl3L=#U3CI)`GN(yJ0It@!mFfyTGSLeGbHJ*-CG;XpF|7YcZhi zvM7xkR?}VJ87r^Pfs|Q3l?Ic)T$BK3M#9$}(xUwG*)*)M zuk~r;4=qPs;N6iNb%(S_Og@_ic}ZF74r%>~>HHi>;%dRYCLY#mdEfxNZ@Ie&Bwg}Q z1vr|y`H(pgByaaDZ}UKsC3}7#sge_cq)JQ!k|#M4NS5S8AXySAAUP5#AUP5#An8iF zLbB$4vgAacDLJtzPxB3Vn)i7Ub$ca=Q6&#vfJ8TCcVS3t%VNC%B$~A#EdnYUfdo{l z?Rtv_VW`ihMI_{G;Apiigbh101#^Ksjsdb!k#09zG$<}1pI0<+GE34pV^hFcAUdo&EZSiH@4$;aPUTl(6p{|sXs9DfL!Y_9NyY; zXge%Cl}*=Ob(U#RPV|YpiV{R=5uL0v8m-8@a3o+4eCMqAY9BQSswwL($HjbS{rOqGwFkuNyZ1$LbBWc zJE1Y^TKJZLToSb8{ouYHrY__j0;NGKG!s5lw=_g7p7QHpz*Cm`Wgw~li}|}~o7MEM9o<)b z;}`5IamJ#%3}kobPl?fACi;Y2YyrNu=r8*bA#shN{ytIPwZd5jk_B%OJSh>yKvE(W z0XHla%Vej_P|IY8AtomRNm$+ek1d8iGY?(%WZs+5@E))*w+RqqN2H!;tjaKI6SGB& zMth);*vW}80ByWIW!|=%N~`=82#Ro?-;?*-m>1wXDoxeWJR3FUhc z%6A~tc-@1jdk}RGqVDh>U(A8s#W`u!YPa`DOSvT$d$s#JB|G81itknQ>CIv9SUKW* zDo4DV<;Y%{x6>>jhMms7tbg+RAWyy}+b$oX>w40)P9^EI*nfa)D-Ya^kYaDwTnF(0P z*uMzHD#;`(RKps@q&l)7jqh$PcDEM0Yub>+?!paU?;R6_?-Sm44DX$V_a?xPcf03J zkg3J@E|l+BDBowpoaEh3w`X<5EJ+>2?gp{DLF_I}Q?a}C*xh>UZasFl9=i+klkcv~ zD8AQn#CKkfcpJ(QZ%R3`S9;&+V3KXU-kUCxSdEO#A;5#Snd}@=c-W{mu#C`-_fzH! z@1Rh4cExr?9q&@Z^}!qU;ec7N1jIObRSH;)T8c(3MWdE5iv4W5DAKuX*QU-TAT!BF z)fZR8ZLUeR@Q7JD7j2k}9nR4q+T~tJ$y1GP=_GnzKhsq@_@Q$A-5AeGs)aAb$ z!`0>m+rq`Ks@&4#yt5>I|GmP~7LV_rr>ZQ_wJ3Mcr#rcf<9t zUHq2(hSd$-chvq5pVd=QW!mx`mm}V{a>R$P92uXXj_**W8{d;qzKe!Q2~Xdur!oUY z-Lp~mY}6etMu;BqlGy;=Cu{`HMcs2zcbG=Df3}X&#Qyp-U8gEMrJr@uXzl!5Ehu4@ zKQ5VG)quHIj_7x~U>@j^S`)2Df6;4#`4c@-%hT%XidA}s+0Y}kJS`qF6#2Tp@;}Z$ z&>%?CfIW-HIhFWW5Dht^-v@)ar2fjYX5f}l1K>@g)`0{} zOadPI`Px6x1-x(60C+?rCQ`t*Q3K$jQR_fLUfhGZSA>BNjT!(+igaA^P$RPO#Ii95 zykOZF00&03fmbaXt3a|M0Rj^A^ayKiNQ=0OAn>xqdlh(1srp=6gg$*4Tm=Zdr~~e| zV5|ZOy+{Fxv*-d6;JQ;okv8cVY%320i zYQ#s?kG>kxz`OcvT3xeu8HjhaAg$s>xCunjw5=SvK*pWiHNV-SfgeJ?s%Y$5;dFr{ zGM`L?nMkgaftZ-(X#BV4SQkh_YJGbAPl_B6SF_w+DPt~{C*i<5=0XpMcPWN? zI1j`<*?0hPPkI32oJaw2PNaa?->``xRSZ{oS_~XDb-_$!Ac`Om`;t!!Lt2<9f*PggCtSH5sl9_9k6N3rilQ*rKEapJn148-qzG7UUW zPmFaI!ow^_10O{Wh`Y7E;O$xOZI<)SzSDVxij-XnaKzcoCTE|Uv+NDzWFY=Yr<*Mr zcqno}{L6AQHf)5=0jba|H{OX(gA*G~PCPXy9@!A<0I^#--Dq&4)8NEL3nvEVLrFP>@T(G_sW8oYn&~-&|Z1)at(QiA|Ve^B;>)1?41WMDJz!`)in(f zq58!%S$`Zd;ZJ+4Y1_5&AwR9I__coW%Zaq#DQ~}=$f#r zy`ld6oML}+W8VFl*H76|0Vh7L57l=rX+8Z~&5HT@UIWatazwu< z2lKid(Q{zl>yf$-TD`yE`+)he9;xMNoz%;_ViU}w9;xMN-3jt_f8~F|a>>Fn3p}D> zNw+5zZm1WsLIZCbwGJdsVx@lZ4Td<`7vCTVlPCs0oUE;s?t#-96p;d+GHM-22t^8b zw@3l+8`THyDpl-;c~^vi8(%l`fRByp178@m4%{`W51c4z(tyEC>k$b8kc<~AVFpDQ zc-g2vkeX7OgLFopF zceNm`;zf9I4lnjwwRM5VjrtsjH?k;iv}oW=>a%OEQBGNu#*|GuT_80k-yj20J^54` z%+YdR8c0di9n+$!^4T;FS)e}$Qde1y##58)0x32z5Jne~@RC`K`LJ)O8vM%a? z8omZi7#1@#*|fa z2Z%3Ojt1UH$3RAOmZQNuFLFS9&T=$P*<9QKQqWnB#zv6?jsz-x^^HJ1&{9ZO+Te#) zo-4!zT@81o&a3nVJF6WxgoD0r)3)_9^#^8v%hek*Clh1i9%~S1uy7mtnfgWcTh(TD zLKmK2HcQU|u~=gIZXZsQdwE?GNbZw57Lh4+DW6N@l#+5TaB)mv}< zO(tnjImsFpiHWkJzuV^nmCvSRm<7|>{@)D^)l*xmmw>F*>FL5NJxmSA8=aKFB@J@Y z4kpSXM(|$QxLP7~ghr$uXviK}G`rVyO}%exYxjXd!XleB@6TH;hhyf?GVrQZ!+K2o zI*Gq)b}nQ35i_dcDs|mwQ?ATN?1Y)V?9(e!ctJwtmJpEKiWHf>WaECFyq2-L?8DGg zUr9()>MIQqyKi~96v%c>o;3lfhM&*he3RW9Uwz{MJ2yE8$QC}HqvjEGIR{A4#TsB4 zI%_f5YXqAaMNS0vE&gjj@(@ho09g@}fMi891KE~|6bT|LLID|gaw3qNjr;Q3NsZ7I zE7~^UVED)^dP*y^jHEUZdTK@6-c?AXx-Oa}CW@C5Z7N+k` zZXW-QQ}R&9_X+PihWEY0dlTTtyWR69$Q8fuT`1qNP`*#0#&eut^6JpLB^w?5d0kEgGJ5l=-a9$fyCszO2g44U z_AU^^K;VhgQz=9I8k>$>h4F~{ir+4AzpVG+rEpDBQ8Sai0`l**((KOu$~+{-@*Z7pY=SjTTksRnxr$#1gr|04x?PMGKa& zfQ_kKrC`B%8t^s7<@hoh?M3CkCYN6M z%V=CT9MFq}rpM|NI{o);8TkG{;e$fGQx^|v7qW$AE5$}pDDOnny^QX=rh6IPBbP@} zceteSx|vAm0OR551rOkTSMcL~>G`f?s`0%DS&h5n$J>>Ge@jamZ|C+Stcwgy9-)maET*(E8s)R zzyL_tWn}{rcF8V~m?u*^4H@Xg3=GJ?P0K(JNX%<>vyNEE(wSm4O`#cNfSsB)bG4F_!!M+btTS0q=%@XHi1l zvq`24B=ph?kcj3}X)r0vRWpz<%c(#Dm`|ngKUwXQOycz{EAI8 zT_B+rg+QX7Pu(l-cP;Moz=IZ~W#DLt=R=6)4n6@sY3I%Z37|*;3837k0OFcR0dY;F zfVd=5dpSg@$UXsxaVfG3Lt1281cBIB3(~?w5d@O%99kNryFQy18JDwxI9LnP!bcGV z;%+TC-s7`)%nB^_-D%Mvi9)`uXb_DoNrQOEwh>4$vK$S7zc%wxFcVtNf;!KvKQQ2J70giYUzha1I zm(|&HtqwkDwyjW~=xTT{e_!{a4{T4`j@#7r4P72LZE0;kQuw4$?-icVsXAE&W_-&v z1n|0w$>rkx_B4D+ z8RPb}`M3sbE7hugw<0QciWvLq5}k%k^qL>qsZam!m|9&N>XR!ROLyAAByVITo;0)i zSbfE)Ss+g2o9Z-*`F-Haaw@4gX(Mo#?Ws8sW_R?ZnlUAqiJ9DTO^m7%5pRqCn5*Lr7TB+ z87Z0cMrYDnd|NGjY8JP>B{CP$>8@2?+jl8aba=`NJu}w zJ_+zvz1rcY5Z9Y7hQvKXO-JI zzRPlCFC9lTM`^AHA5~6P4&W)JCaW*1PmcV4_06I0N`!qMQ+iU*^mXG|Tu$4`oJH4Z z>HuSg+?Mj1nr0YIn^pt9hV|B&0;Yg7I-saXKjh)Zoj%J;77?%lO7s#~0u^8ZB@h8iAOb=lY?nm@R6qrUK-HFi2nZKt zyK1X;)LQNIIrl!F=Ukq1sTn6u`$u0h8Y zpMQP(R%aEriZ@hzuKU$5+ZyV7K{Q|C4?($(3?@LCr^Cpq`a9KnHMCdAOPJGCHxg|v zoigyO@_48Qy{LRQhz90l27s{~R0xfY>t={QD9<2TSN@@v@IS7;3@)mc_E{fSOSI>M zh^i&4m4hqvT28CNs>1p>t8&U1*ShxcwXVmtqUkmC&<~-ovcK~2mg`~ViY2xgw5UwS z)OxI!D!x_4wsx09IyJCQueo!KG}Zr|yIASN+! zy8{9f!n~tlh5F^U=*@yXaG;)xqJCl%(Fk%V0Hg`T;6_DzG-waJ&gCHRT9|7V0?m?3 zLUdUhHGsIB%f&$!oOuhi3B+?bQUDT!i@upb;kpO{&7E8jie4jvK%6Typ5z_&<%koA zahY0x7#ArZiF4{NWl;Ddb%FRJb%FF|Sv-Nm+A*afklQhl0?v6UAl+T0fOK}z1uQ4y z(kJL#m&0U86W^}rT$f1){VA7&AS=RLsp?#}J4w=OdoWCaG3EePiTNR`TyZi$Awa!_Bu&QpP$$FIw4M5Z%l#Y zOXA<_tjN?}XGNy=qWQnVmmTw^WMikw#!i)uoyf*TZJy`0Bu^17UAyAx&10=KV6|p| zqsr=av3Gxer?dO)J8#>RN79a8C2u@~l07A`6y`%a>>kunAo+cGDxB_eX4vTtB8OWT z?YH)80SA@!s@!sXb@2OJ5(BI&UK&_(@p+Yt&#PQ~u6n$qxOk*2cNYLAxpG>K+XLpv zjo7yv6~4Ww^6f>HZ%nG*w-Gg#n$b3J*I3iQePgA-$HtmIR7l!nurowxS7C*%DlG3# zfrxQd6}p6h7tP*mXs_y4ZA-;>tXhgsecIP#n~P5uJ?pB%mX=OAn5j`}hOY1EAbDWp zCnX(zj!l7_!N@NDg4)3qS%D6eN$G$ptmaJSHq} zzd)fE?vX?2gyY3NT#kLXJQ4&hk6mLQE{8s#`@9BI)%Nq+220i!t=kGYtCw>dAW_LI zv){R>YM)xJS~U8+`de}2vltni+=vWL#s=pfcF`!_;ACuYGR(rZy7$oBOb->(%cYN^ zh_qI8+bhriL9Tm7OA!IKmF0H0X$Cdx1w*IMHDMw(Ahn#XTD1SX_`eoT%xWo401u5d z4Ltv>kS_d!np3XKDnR@x1Ve8zI%gJYz&|lo3M}h7Ie=BGSO*T6U)O-R?EI={P*{-N z-bt>mnfeB>-_*|lQRvh+D%3~Eq-26vW%~vs=dyDKmen^+{hImF22T9%zMYyG)Vy*< zBaq0Q!_BC3+|r=2FT)QPZky58`2SWIyP~B?VX^DO;!?%9-3oMnI{9Am>5o2oeOXT5 zFtVyf%GXdmr@@r3g^d^5_^f*$;?}9q46y{4!?=RWIPzQ_2`-1e5YsPcOsCyrx9*WQ z%%ig|^03yTO5>uu91^-EEL{1aHSoK@bJ_wj!!GG^>}~9-_QzVv;0IzwT5d(#^_I17 z3cP3rTR?mfU9>(v2n+bscMRZ%#!7+bY&L6MP)LWZ=uxZc%wtn@omx#(6rD5LoIZ)eP5QxP> z@Fb(R%xE2W%XCcwF;k=r3JdZKGgNDs9s7jx4Ed7r~AO2GrBmxrUQ%&kA#JTWbxQNQ+t%o)y-*7u4!bmXq(uCNHcCKdis4_4l+aZ*}3} zk<;lKh&D^(Pm9hxp`~PH#Gs4YKj;JC5Uroy(dqRDPsJv?Uy>$vr6o`qXCJuA%J(8*c2V_BG7Q3bb5 z(d0da4~&(*G~{O{H(3$#-=lwVJWxEEXam(VkK>Ewq;O$tdYd}(77KcYPa)=lPQx*@Kh@kLNI{12&p`00N&6%OP z4Rw0coR8+aTYBlPiA)0-c(2O3*fTKLGw|hTmUynU2wSG%(6Nf`3AK7{ET;Vm&v_P# zCOj*Q@1C~reQW0^J_g)?j}OT7Q;LtCFzcm(bIK}7GZn0O>CnTz|NNJ7)}WR$Ap(bu zH3|F$W2L|mWfhBbsD41NqVvbBe(3)wCg_%yq8>P-EcZij;eT^_t^faIexC#m8Y=~k z7;7?B*fdrOyke}$HH90-N`Z&Qngsq2%6c{F-2ZRKb61a)^;AnYy?~#44Zt57D}AA` z>xV^Tt|s`L@+vxfTN5(x^Ej)T7QON?jbS!Ala-EaS>;!>l+9^J265Y%A_?&?%t9Ub zpe#q^iTa z{?aVef#`G=>KW9ab?7>wdhMSuK|6nR#=NmbT>J~1Jc>@o);#!y63h3uVV3A)>3=`_Ws|j_)`}YZh02) zzOv+R+0JDU`(6$>{!yW=a0BX!a>XpLrL250Y%4KWX5Lcbww96s;HI%|oKF5>p1QQ7 zC=0`Fr8cyby1={2lI(TJTQ^0m0WFK#P{YcVmr8&W$}0Zuf)aO3t_8g3cXmJP#e~4E#Mtx6@pN-vt$q0tC=qZ zp;oOuT0q*R5QOU2))I}tC(0@Wp=eGK1kzT8AXLB4J&-gPf>7jJGy=(UAqds>*#|Bv zs}O{`Dwyz!fY^{2>9AKUKPixmNRJEs zX3WuEGTaY;p9Z*RBS)AJPmTHg{SF8kC$G+E8nq!I)gdk#Q>sJYU}v&=`1`#&Xa=;D zIRtp#Skpk7R-V1>cRpF13SSjZE%-nV0&loEO_A9G1`Jf|%@NPx@c3cfzHG@;Y zwz4Gk9T|=-D%0JHfmf_O`@krOPpR%_fl)c*j`R zn0>lzGQY+&z+CN=f&E-_?Tot2NUwP3rm2(FoK0HMYdN8an{4Boy+u{9X^N)9WQQWv zics*t6h%!Eid5zMqTY6__?s2r$P0E>Enrhwg-cM+ydbbw*Y`pY>VmEME#UYuL8z7& z46_qET*Ki}^J5x_i_VW)2KC$v0&%ergc>$Krh&Lv2ts*>qvi}9cAaorv%T-L4t#2? z*+ktOHg{)YS}FxDY~ze zp?wh73F4v!ah)LMJ?o6xA2mO&14Jt)9{h=UP~TR#t7U$J1o0Opmp)MV(6fNv(|YVy^g(aj3Es)* z1f!;WigujyEbK6}U zUEPI|1uezMU4>hor6E{xplHYfr~!NJBL&%-6k_}ZO=)T%E*FW0I&Uo!bpR}0FpG5{ zUj)ev0>rXYU(cYfnrkz_8^)>wy%RGUr4_Lg4V>^zISs_DbD~k<#B}UL11CnT8%zV~ z4uv|XZEMPDAWd2bLXBB#P6LUw5VR;2@HYRZxsn1gE+4h;(ZNjpEb4o#HD`MjVzJ_D z_{VDIi8lxI<|Z-sz`{;}&y6(+^!+@=sd4i&1$sXxV?QUuw6xT}-}QcmA_v+>=?HFx zQs*Yj$#h;JonNFvMd#GUSG4R*{%Biud(jJeanc;B(-X*6#b^0fRC>It&?Gm!Nc*f= zPua7qO~)yk_P!LTt-A|^6BgbS z@Yjr0L(_TdsZ*h%xK@e+exa`7P=8Zxd}y|QHB`K%mv+1eaMxIM;J&itr}1w_NkY|2 ztc9w3MbE8{o{wJt>fpDNvsihkR^;mM`>Ubn`107h2|Rk4n_<1bIi)|nLeU1QaNd&Zh#wr5h8Uct!Tut7i7rIwkFD*Dcx zE=dcvG^Iek8?2lM)>VGP*9%*2TQBW+5#V1cD_8wOiNvOq6xgM#N*AyX%Y$_|? zQ9~?xIpDIfYQR-vrMDE`*D}`zvE$`{yT+f06^3`a98`4qp%QkLPAb$=- zZaRU#>!pB;%5vFFZ7td`!AW(<3O>s{<3|9ntE-TbbADjIvI_N3crAjaR{`q#OnnX5 zYwBl!C@lI0lvh6!svlRi>{VnO0%yEM;2mSNfj=--v#I`E(K3IB6k^t#Z3CB#HT6tk zkIjE6@bkv10nZq#eNG$Zyq3AmFvu0E4{A@*t}M3{x+jpH{xJ!;JEkbM(j~^6FwB=&JDyk zd2Q^KGX);BOub{j;7L?2dtmQa8;FC>Dwy=Ss$iPm$%Q!`)d=X&imI> z71kn!jG|M?a)Jj85627tTT}0zo0n~%-%!>_!GQIu8j!5W4m#A$XWi?jI|XLOs)x-` z(f3*^J!iGj&=xT+naETqa-^3S^kN9uYXfMCQ2Q;^6gX(CsZTT|{5TDU!93Dn7;s(5 z=+_6Mu3B(Us!Kyl(*gg+Z65lSzt~Jp=_{3QJ2Sf9vKFiZnIh#r{ergCoVD02aLHJ8 z;2mSl0{^A4>OkfOQ6G-~ij#q>s(|gZbR*z~>5j%i99@l2n8igAkdWLb_o|bSEjAg%N$VR%T3-!bVP>T_8y)1fj@-3|Sy~ z5F}T?9|sS{`)3a2NH212u09h z1h{JLKMf?}qAnCc%P0bJ?jY)bL|oK`^6^JIWOe=jx9!ha0WB*N2Tj9Kld$4ONXhLZ z>x3z}q*DUa5;E>&>V6xI0wA@6uS)?G(8=TFjm_SDQ{ zGZ#HBP5#SY%A>ier5v9DCykZ16wVrJieyl(>!rIUG6~!hybc%L7H+yYi(;OlPT~|jTQBQz1RL>uAu7+MJb&L*i@FhJa^Cmv7$^j zfYS`>PFWOU{?S1P#QmQt+b2zw z1pY)5;O2aV3zmx+Ac4BDYZf*ZLttmBo6pgM^T~s+iF8*G2o)Ibp1LB^S1CrrfE_5ts#;(E%U0R&gV(KiN`I_aadcV;Y~InNpyy z6-`4un)Rmj(G=J=)^*zEkByZA{j3+gJJ+Yur?splbA8MKBX7*vd~o))xk30nvv14| zK%D*J>A#!*p@!GyPT%U9J9De+Y%znt&rm(6CjODUCHP}fjmjZa{qIMr=aV1NTT~63 zw=HFhfQBA+7B_EWU^Mg`zeo$`C4=S4T18L3=Dw;FwXMYPlhRK8SP=^gs z$=L^9_^!>mog{<0s$BPXVY=TMjoi@7$!P^*0Ept^)&s$??DZ9agUYI|*riv`Sj8HUil23N zFulo}Pdi@!X7Z&IeWsfD4CH23mRI0Cy@@Tnf$CE?s@7q3Y{feWq*ifTqSvEh$ST%> zckE7j28bt4S3QHmLd7i(c5p@xOM#1~ehP>}r@mq8pLZ5oHrlK(YQNxJHX8prD_Nrn|0b=8t}%`1Q;GYn_6%}P+0uuAE1JywBQ^+HO{+r^ zaJOqjQ439Sa~%)_tvbRK&nkobO4PtXJJh*0qHx@^9;w3@t#Pjbo5pGZ@uuSQq|k#` zQ zZq2R5)XfE1SSA1St7Q*;vtRtcc{9qK!z=B#H*DStid#9!;7C1-mN3lb3E8Idih?LGSBz z_xH*MzAJqM22N7pB*pwS%I@U-`~(6TJv{~gt&R%KMU9g*KUCMc<#*%V*#@-NobxL+ z7d1l7_(p6MPZ?*`=%N|_uDo^7FW+_+%9gZzMYwssVC)1HLfa^wH@Wvk#n}uRJuY9u zm#E-)%|(rqG%uLu4|2`W=y7L3CuuHfgqrc~mTH!P2K?vBdZkeM4*LvKv7rK6=GAiE z@u2US0_k`z5ioqXMFrES0L6DqanX&S(c?QF9Iv^$Ejm9n8l(-Y_Z^n7KsJVD)P(R&R(Eb7W>*e{kk&VQ&*W} zk6#VVp^LvJA&Wflp{?kx#|mENbZK^bv~OP z0(Xsd8Hk_xOX#7e2Lt-h?@L7~ZgncWXRImUePy|u#WaIDeU`dYz;nh*fkVnF>V|#{ zsOCX4ngZ__YZ{BsJu6f+u9vnI>9-_%lO2&z5ttT1>)NK}>PSSEhU zIF#v3dj24~84HD8mWEO7_y0so>G!~8V@(48*jOp>ma>ZO47Fu~lfa#0f>3)Vm;xUk z6AUwn!?RYg23#>#3y7D}NMs$!~k*8`BATMc&f_bdWORf&EYz*>~Q=Ok1PGfH1-!-N|yk>_*rJSX<*+Q1*>R( zs1Y+d9X259@0j`;a9h>qZ(cy4vS06joPSc)T63K zJ*sTfMn*1Z$J{B1ayA;#1l*2vg8~qALJqtLdtj^?n3)yWY_Pre08PJX__e#J) zWw~Em9ar4;Vw(zAtT}HG)dd@%(YH9E_in8s62g#2hd|ty*9L%XbAA@*hs@KVEcP^d zp8imW!($s3DRA4Aw@~gwZUJX43n}oqv0CwfXpxvlmaAwd^hlk-1L+a_9ib07b5Tt# znaLFRKv}sQM5&MOSM~Az4m_qQWi;$p_2&H!0->wshQeuwP)JvKi-7a=@$$8k^gPql zxV}RD+Zt)rUZ3RXoeN@z2? z0dcmX{rXkGd9Ub&!d_DpwK`Gb^vfC|l&$I^=hPJXDvmT5IpnKKO)L|4v{0t9qlH2* zi;rgZt@E;GzGr!knwg%uuRXSGls-fUDqjnSWT?kwDy(0Xy$5O+`_c$hYnj*4%k1-d z3C}9}7+MgiG9JssO&7{kHeD$6vP^NzaaE5ysvKL>Yuj3u^*vBt&s)V#y?iZfl~9kf z71pn^zaH3^R@qn96D=!7%QL<7+(e==e4v+bzRGwk6SqnzQ`st^(91Hl^mdWE?`bJL z3b?8)weCUNu2r`sspI2tq9=S2O}Ie6}nIwV+%lsPOJFL8wPw5V(I# z5bE^j%tzp$vI-xe+FlU&;`3!6p?3OABe3;aSrF=>awQnx!7)LoLoW!t_l2@Xs6FMn zmQlF*#j+sOmU2Z9nCR2fB5J5!<%%G1cc82h>QK2N2weM8SrF>BazzmM^q3%2@7bcd zGp+EUmW7W{&%Ge7s`JmjQIc22dT?uk)$X zRnMSOn`P@jrprPQiWyT5je+=42zn<9gexQFN(0CMmiuEMqu1$b*jPSqWBEFe(OU>Y zF@QxQusoJUV>FhpSB>RH##laQWBEFe(OZ~?VgQS2AfvYsgkk`TAdt~p2tqM{MG(m7 zEd-$$z#<5|GEii{5QJg?iy)BEs~WW$16TxsjNU>JiUBNwKt^vN2*m&vK_H{I5QJg? ziy)BETL?lifJG3<=v5zez%qbE5Xk5)1fd3Oh+YSdmWF5}gF5hnKt^w&5sCpUrh$y! zLJ*2EB!Wf5`G1#n;M~*FZQa3Fbv2YDwUtf?#*i=%e;eYcED7;KnNB5`Enlt@VprEn z_d7#irjA@NoHTMK69i40Gig*J&Y3>i0$tQt**Tv|e%>a7Wpn!HGXm+=4YQMreg64u zU;Te(ar}H1?nGT(Vq&M6+tn#!Rm)S!Xco?fPA=TzIUb{nLF9O3gG4yq1?{SIWM_k} zG4ghi6UPhlw5k*1mX@v|!GESa_pW8P{1NJ1rI{<`86Q*MIo-wx3)ohc9P4&u5bMg6 zw{8zlb<1mIFqkbx0h8bA>xHwz0^U(pt`mZ3(R6O=#^%13b^!+SqiANjJG9-*6tL%w z!hUWHA{i){rV|Fc9ns0mxE0F6*wzao3#6S*@0{*&m?v{Dm?0n9259P{?rRpc%;g|f zY$raorf}D@=qsuA9kUH%PA}v-A($dfnkjKdr6sCxP7_u*dkL$^r2m(BilyB3MP?s% z;EqTCW2`wI)5qzbDD*iVxTQR~w+7BDtJD3dN|toSq^rx!v!u6ejt5?|ySfy}IB;TD zw2#kf*_ABIXFGIoR(mITRrmDtc*h(3sUm>YpDs#yq5OryJ{u4%;AtBWbEDay62o5Z zg2FM+0*)(7QZSl9tQd27G-H4b=^cf*vZ8R;vmPjX>{*P+b2bZB0*A=(16f9Z68>+DFckLtJ;cdsbC@}?zoLgA`sttnjBQjVm4GlSUoa$^I9 zmQ+hI0A$EJf5BT`EF9%hb62nWiCw-V(_zin7qR(Z8W0vU0+WHW$%OFKCWaR9ybgFL z24>R8^R}P@Od3v*iGx`~%xj);MI~Cc-F*H;7w(HE?JPTgE~iF`A2ypo?TM@K}k)x>2e;hh_c&oyj(-+A11C9 zyF*EVtHzoE-ZEASWS1h}hB4u>NfFkX?pGdZDZefYd~B=~$c{#&fX`J*hWe=tf*p?- z0RD*`B)$veKv6bXOP!n}KKF80UoG;$d7|9awe|3jlSAn{Ys%{ROd&1DqZ_)BVzVVI z;C;Q6y9>dlQQQspV#0c%Rl4j@@Lgb!vhrWYh2UsWlEf}<+^Wt1IaibjfKN=Sk?3jT zMJ*+QroxtI0cVxfnSA?Zwxq-ZF9&>DmV@9ZQ%nF^{3HU_zBRiAp8;+vOIGlOY+DKT zrjj?7zP4^ng#~1{Dh3|tRZc}EAFPjEwiY%nD!k%ZERURrivK`X%)Dc(%i>QB~z4i&|aNH z`n1dkHpCg5VcwlrxTs}s@>}vF5NG8x?%$So+u<(j)mMwF?$VLQ%e|i1JknwRv^<$W zJhM6B-A6ja_HEqBPjW*XDpMK`cvP0_(M{>9mLdndYpf>lk+I$d9vG|nMB$JP>?Uy7 zSSfHsSu*3^%pk_R+^oXVoDgq@-%WL>&e|wWfh)#(mkn@gk35>`K+*nJw3M!KMu*nl zw;}d!#X!8Oqk~0WGWH2Z$tUY(6}_M$4HZs(0uS!!diYRF33x#}(Tepj+0t$(ao>7a zYe(UOvK+I;Gn*~aBBTCa*6e;=u;p`a*6ej-wKo;=AW)vn0R3{_1QLcwZATH+32s)8 z4MYk!Z>$<{-B@kz?|#Lmq9%~3OID5Nry!WR+|~@tUP6qrbdyYB0XHp)D>pL;R#=f^ zrJS>Y)dnsqt20^Y$RHT5QWeN>6}g)kqw>&Kmfwa_;OTywl zI7J^kV=Lnn&@Yxvx@BfkP3xA%nmSPUk+GVI_Ru%2r#1%^jv8wU_-n>$URCJV;^vaF zGB35E@XtJJN8y37rWh`-yq)C#Npmw?e$}%k6#lMf72^KibJ2QMV+3v42&%=yr4|pD z8pCD7ZrW<`{aK9>^uRWIwRi;8xNW*%TjmVnm!d$dz>gVv*%;~U2tRNi?l zMISe0FN{?Oa%dx=c7VHVK-Yns>ExlZKKdhY76*tv;oK;{HV8*@RQ z&IP&6aOmeu_H>+`NM-hFJVFpwxPuZ_IEIDA#)!Y=F02bWba^f$?k*{7!$$QKf)LFAPB6YGyy;oH3J*Pt z9S8efsYp|@e-Kvqh*(%`5`61kV;c9ZdyQ#)z~o=t&%o_&vYL3MOd6a!8F3d#AIRnC1&?h* znF2pF)_d`=e~-pwi4_CB84JV<78BZ-?*0qxN9i=J>4)Sra71(FYJ$ftkJCU>EN4@D z34|ZJ(?G_sQwLtMUD7l!8g%LN)eiX^CHkw=z!r&_w2;HL6qjcX~K^(<~1Ms=IzYJ$gX>yk zv%-19*<`nHM_a}5z;~^s()$YcJd25u<)lOJj%G%aaSaUkU=ItiB&G=*RiBvf0IbS)gxoWdnyQOf} zvv{!0&9o?EF#Ctu_69odxrh|Y8y#F&MLhmrKGtaa4h!Uc*;B~}J_IEI(7 zyxIbBo4``|Y55u2{O<|>W^$G_k#pVhwLR^RFMPiQvTlAsRDE@@?}hxL|JPst;Azr* z_EuNMV!CX5{}gzntjc=a89&jrvQmgmd5`V3Q{WwCRn`mdu`7kbrMa99R$UTaseny5 zH{_K<;VpWlP`Goi6k>PDy?dn)ixDSXl|t+q+XF?PsT2xt>nnxW4KC?YRw=~(kQ1Xy zp+t9zZ)#a7#J2L+UM94p7rC#f)U=^O+*4Evu^MxvR4K&y0Vhh8Lg6Uw*A>U_VN*7b zBer==8Tl<+oTK4BrqUByemeP2bV+)C6COkDRI)b8-N7Sm`m#K{L%rtYL&vHAL}lc$ zK9FkpbMmm>f!>)v(el&sQw=sPDUVzE@<43q^0cUB`5L@sz1Ayljq0CAm&pz;>!Cc# zm0HJpWyUk#_&<5$DE_4w6rQaye( zoK25k4X4rLSHt=9_|p32+GN7x4TA6@ zGqkv+7O|WQQG++KDr;W&3Du?ZeV$Rp<67o_U4t$`cW{Cn#POKJ@xn8o_*@Yg?W7k&8FZ%3;QAn((5Cq2XN zce%r~^PqqIk}IJH&vX~lujabt%_><8 zGX^!2I($^NRVDmTZ&<&#(EHWF%EgeNZ?w6Rj4_h2UWz`nlq9^5#|1FxtRD{94|v_4+ZY^-QDRx}$bx~r-GOKXD5 zzjBfPzS<6RDL`yHt zY3VvAcwTw=OMnmyUKeoLSoN!VV#5iJy#39I%_BR^sRNIcB~OfQW)K|fNL9{fIGm{( zIpb>liaBu^NNo9!;X-Vx+-H*IU;cYv?im>D8TfM6jNHDA+uohap*zP^ge`<$*y|O0 zJzszQ1cS$~hPIDi4c$0?HS~jI;73Pt`L7qPR6I#Hxs}JXU(ez$&*+VFneGt6FneOZiJCiDnrVN(bb}>)(_{cyn1Cecj=K!J)sC|4BNn!Jr$~ zL0D1->!M!zcx9od7qsS>maaR4(dss}VZ9ZNY+cK$VGw_|`Hp?I$#XC{t>k&;3)@<@ zIsN6xCZu9ACC#!J+&e`hlGU8aDLv`QnIwqYq?}2L2)>XE!q1su z0&*rPU{L4GFbO%6X`3_kLNdrr&fHMuj+Qy|K(~h6r{>Hsk2$kwME`G}zW8`X%g@V{ z@Y<(`yS{i@|E2*K`c>eo$vd*G{_3Fn_v|}^9}a)`3*S!Mzi;%6e)tP-3rgO3`>nrs zOb2zxRfnv%zzJj3E^0?%&J`){BOlmqI$D)?bqFywrIwGbKzq7lyrs6}4px6dSZij21qxPigX=6G0dC}0xbLp-$^XEG%t7F1$RL6Fsh}> zDn&0SxF==dywAd&&J2q0*5xMehPE`dGl156Lfn;Gt^4W$@o@Yox7u@ z+dqz~cRo)yZYhgBS9kKevS04cp#3NQH!y~)RXb9wVWB(u4cV8!oskTh1Af>h@WY0I z9|jIT%vtEitKvuTXQv}qN|!=!N|!>1N|!>PN|!>nwzM&Jt>-j>50urJ$RCP_AdPYy zM+P^ohc!ZXMJjYtSfP8u3f+35wx4^qfQg#R-GUe~A8NR@;aRa;HQZtV$on?2TeZ+F zvW0uH7eRp^LD6J@bf0;Y0+)zAoIiL`vx$QS$2tPQee8jC>qK#jF!0pW0yy45>GG)sg%vhWVinxo3}m zPiS51;kC3JkO@Wh@CTRSZ^qVTH*U z(qvq;wXp#tKa%H_SKQ1z!dPju`U69ZClM;}|K$HgI zr`w#17c}Rb7qaPv_C5Q?x;6!glNIS@iSRRe1IYY_L(t`%`79KOypHRjmGx$$GlN32 ztg1kiN@n9#6>SJhwt&>bxzLf*nkl-jn52`Qu}+!}D!kxX^wAa13U&8Kx-TuNG~Kvj z$z$9wzjPO8;ExX z3YGFK4Cr?lGqDHJt=}!xxn;U*z#U^v0QZemL-&32U;?;ntZ17~=Gv;LJ6Vy<>(6G; z^JX9gl91O#^t&SbM!!6Yk++%$-u_a?wcEa0+z`>Oe^sTa)h%x$Iwv-if7fdx7xW3b?M9J}=RHI6PnM^M6bB`CNEl#_Mq?mUVBuUUUHe?_*W))GGoK zg}f@Mcew5j!&fa33Jz33ce0q@UO+!l{^v!Dw1TLRcPIwlKAUj?GZOYmy1mGM7>Z!V zi%f(fd+LD~iFUiONYwR1k(15`9;!7Q>qsVmIN<*JuRFR39Uag)ioKs~w?Yvv4XbFE zyixLI2F27U6Ge4%Ib zE3YR*Uwlp9I!=~em(O3`8T{f~9bf#)zy9b8Ss3HG>f~m@-Qp>Ws45pD>LFBdi#Pt$ zg|ViVqG#{a9VK?Olvsef#!7(?ja3IeQkJ~f(2+qrHn|k|#8`D8KfUSNaUjY>msS|G zis?Cp7d&f2w?lVrTNF((5A_K8ztK{jm;(p&5rd>c{zUpfk)Kq{oXHZgU1o+)0&+<< z9xJ-J$eBD1xLsz3=k$g3!npmruimcM0muxeGdzKmB{1|^SfR(l3jGyU=&i8ubys~A z7TM*&gs^yq#FIo}h4Bc>!cefPi9WDrIurNK6xVjNlqqmm;gM%u94Mq{6q!-B)j#iN zH0y0eilVun2NX*x>IOD=)B4vmeboQ#>oky`f6ceP+Dg8)ro+~9VqtSRUf5oa7dDvV zg)QcIVUsyt+-B2pn@xvp=4xtNSwV{Ww9%Xlm{$(i<3sxd+z1okrlg=XoyH$${9+;w z|3(~s^a?>$_2e8Q^X^tJq2D=R%i0fj;J0p z$q&q43S?l&d=lTSP!FMs1!7k1E_s)%FDU5J20W*wEVg04tXQ}iR|ht((tdd9M`YO$w{Sa&USeoYnJF+~j^PQGUM6yMR_7vEW+=9a4ImOaupCa|dW(k(Q4#Y>dfh|VHcif_ALZOPupHE--nK#k1(s?+bDg9DW=FBk5Z57(o zG8f{AeC=g5(e!NvG8X^`ItrewCcvLFRtl8YP4oZUUu#J-s39*1yke{=VEb5Is3k85 zTstNRb=w3};Eu7TfDez=g?jDl?J!4G*Nu6uyT6U-c zPrV?J)D?om8gx_3!sj)m$f^A4U*J8z;{ea8 zlnbC2`{3S9B(fTX#o3$^40fosQ%Ky8>{9k^qxY2d?Sb)o3UG7SUEO;OLF$g~Io zw=L;)Aej~^;4?1;^nE&-`)Q9+YljAK+*mWfma<&pF0Fmq{k8p9WPW>_3cG06Q4OC<2&k527aai zRO!C2j_+uBCVBSn^c1+S4ByC*@DZ(zY9%XZV`f2_o`KAQGBE)eyTzWIB^S?1{Fr2w_t;3cycP51~`?URLTHGtWz{#;4^-PjEnks$D=+@y;OkLH2>KD-W(qxR8Ew;#=RJ$A<`#u~i{1q$`kiQbfHKa|%ox4Q`I8gNrtMdF}l&FD4YLMi@w21Op^hbDoE{UlZ$Savx6Tj)4U9%QZu-ZF>V zKwNYVH!`TUIot-~Vj&2Hm+rMDt@G6CHh^V^8`0Q}9d6?AnmIfT#6{;v(;U8PMyG+e zSO`MlrF3@SXDq`_VATuxa;MJYu-GqH6CI2khQGDRV@M_syn8d3g%gki#)nw?^oGS2&8hxtZO;Z%@ zKp(0nN9Iv_MimX4M`>v5aa3zEt`&J0*Q!(NoY|@a&nqi$P6+Q))GD#|2HN{gdjp6S z`Q4L+48m)V@`QHZa@T-9buTkGVBv^Ch)-b9Yp=!O)M7=^4z{grwVRo8}BmNrDr|xA2mnPrJ zqTWT@%_)$%9=NG2x3s1i)Sr4mAomZ2AR5DRz$(^&>&BV_V#evJnNcjf2da?ig?A z`_<3$TFPM}a7bCb@|@TCDSt+=`)oF>T-v1Kr%pnD+|q$>zFPFkBh^OCl?HHBSu!zp zWDs6eG%>1pg0s?nfv7BI4X81#A%eh*$|?lW7?wCK;~&_oGO|W=WDsR-@uYxOROHJG z1XU}xl=S0%Rq%>Dkp9}>9Dm^gwMl{-2+ED-pk5^f73Yl9_aZ59NRK(>jCSi3#IR>B zbwG^S0Zs~B@N!$HAlQ>g69Cy@6-@xOsEH9lAUB-urG!O!{tbP`*4PQ)U1O!dd&(-z zKplBO;IQ6(=0QU=?UpnJ&Kqk2xN58vc)zTTREH(qR;E%Q*%mLht5UyGk@{Li>bEWR z{T6BscuraQ>rN1)#wDtjL6IGC5jgBa+dc)+RAx~difl-2U@0-%+Ec=`B+00tWcfNX<0eRd`*ITiQbs&#x+q=OZLP>-w!Hi2}zLJ*3ai8nyHSs@5@ z*U~o)ET=C%cO#GVFL}HNJY(^;faUaEsz~3ZIDIYBw`l4v0ZEvP;gY3q$JGLg!6`de>P&1edLa;0gbFBk{7RV(b7PPuk3Er}GMr=dS5V=Z-`zq;bgJ~Xj zhyXq;$$@DwCkGzV25|boG?|kF(<*r=Gy)|X5IU4>P=7yz=(S;Z3D{@h{zgXz!PZ2& z5s+nAmfxEh#BI}81FoAsc`F%$jJZ972HCXURs+r(E82-OyKLBqY2xdU`Ow51iLba5 zXsZG*as`jP`70!ol2w3YbSDe>JI0~s@To@`)_+y%>kGx9iqa)&Q{GbFw=D^mfqTYk z0=q0Pm$A{Z1YZWu8mkHPdAN*a%13JEshN8Zn3%Z+kZj3T0S_k3Tmy(FB83@B(nhPh zSGa#i-tfJn=I@ys4Il~W&EEnals{MKzG{TK?<-)|M;qOqPGY$CcG7e{Ld!STngsXr_Hgq?$sby#K8^4!9BzhJv3k9%CSt8ewL0q+gcWGWz$+p8) z4gR~Ork>bFs*a-bX0X1au*Y;af#-~6PhrN4)dXHNR((RD_p`aH2|co0M`!8y`PBUU z27cZ$Kfi&WPmI+7J~P%gfL-QPBaY@91a{s_0f&wC4dAG;8pKSX9mzLR`hPH=-tqxM^O_;Bkn+* z?$wscf7)YJiPM(fU#DSwpZawm@#a-S7wFCFsc#mk|6 z$>!)^2QDisuL|KOo?j2Wm{6^Aro9PVHZSBC;vhD>99}G#Ns)uVpNfTmbe~sM?h78b z$rx7ps+nk@#Rm{=S(-sDwk$k5rBS78;4oS%ddrY%BQ4@Sif((iVnr36Mgt24cfBGY zPWC4MRCme0Tk)d`DA-g5-N_%wuP45dLElmS=S7S3U%8~8HE{tm6^*j4b?=#TlR#>D z=YFrkIh;VcVw|n2ZZ8tePq9eUV?zEjHBW+n?o~lU7lB!wOQZ^AX+LYk6NqO4{*r(HGXYzsEy(%%NrO1sbm%Zps{1 zfbJuurMs`{3!1mJl-qK?soC``(#cVnRE(W!;uObCA_eTTsZf4FB0SI#xlO%J+JzN5 zpQ<~D=GHaf3uVdg^LAtqgO$DNV9YtIq9g8WO>(2D^zHEda{0WX>t za=Zm`#mnKvnwbg+86q+Puj6QdSu_DX+GZh>(6HT=E0HWc*S4Gr9+j-TpX4>qT z9$MwuWa!&dWsnwe|C}mlnxZ<9dqs7i_cV&Tr3&UvQ4NTbpOg0pi_?+sugLe{(S(bN zwyJP@8Ta)v^sMrGgkNZYGpAR6LM+H)m|t{%p+tUBiA&4|vg-lj*SS(HJp7I1jkDlf zU9K!lC>}3b&`lu9do5^D8HG#$NLL(Yq^f(@Y(z6YB3?^086tv~?j-;HugIYZwSr^f z5D@L%MY^J@B&Sz_bU+}xfB7+>o(!U;a^3QXBz>zVgPvD@E)2002rC&Cr;LJ zywPwfgIH3gdm<9Q4AHMwFK8(TL%agfG}a~HlCh#Y*E4$QoEHI7TaH73FHuA$@vPzy zMNQa?7Nz{p>orN~f<3WWRA!$43;h}NT3Hxk-I()p8N^*>iY4H#vRq!%6T8SAt5^e; zE5@HysC+{5q<*0X@C#%clY8f#`tA%V)bC%_|UsgVXY_1_$xn%fX|iHnf%dS2bsKYBVU-I zG8VBpy;8Lxb8W$7hO#?~F(R(dY7{G4x))r)t3JZegDc8lSjf#s*u#Vs`XH<|b>TnN z(%rSFnRzqU0KRWtttRw>BQF+ug~$V|Hk5&RS|l-t)mqA63UE0HWge=(I4j@9uBsKR zR{Z)yuZo;ApHtv@^YMewRzfvoWR3%lc}+leCiyGmt9pII%KOMz$x4k*igf8;)+=+EFVi@5KP>VLEE zj|#=7)f5Ku?~gvl=8yLM5t@siXnF1$~@lZhNyt{C5ihZ%HjfyoI|mU737 zvWiwkQ`>6Qfz+066`#;IRlcRA`@3XvXgFW-TZls{GG-<&0k10SwY>emDc?KsK3RNt zh#K~w-SVb}`!#y#QPtI3@N;+0+P6zsJQG;@?c@!WMB<|A`MFrqb(mvL=EtN|XlccY z!>U2Oblyblqpz#VD!wEV?Mhog9paRQ0!ZCgarLb(tEOP!)dF1AQn~=}2gbSr+)|e7 zu4xAKCnlHz_m2reJ@JCTFMPVN-;rDao>5j|1nNx_Oo4;P1fedN;1%G=F~O5kuxZ}a zfW$2)o24z;X&ImIzHQ z_QgUtFm9{kclN>?`(kG6gOeYYND_HqP}lgIY1c6nLSBSz!t|rmUha)V3D{ z{;9E2AkAIz*?1g4jR5A%uQm{uof9<+V9Nw+z!7tz4aDW5E)-tNjSUd5W%L4l0PV1m z2w>2hr~{kEY5`}ARR_*1t224O!`^Z$2U@p4@A}%nK?}46Y$?kHTF;<-2&{t^2_cYp z>59Oz9}V;4&&-bo@SOQ^9XM9Uf_4IphHQb5{5yaVnWvjF8Iy>1~Y z7*NN_x!iODiPSxRs=w2p#b)cFS*aZwxTprMT82_!OIe?iXPw_p&O*`+UP<0hhTU0M zTjg-5VpF)RBEy!rNg!!1!uWDU+9%_**Gc=bR|x!LV>N)JM&gfi9;f7$B1x&15)W|I zShK)2Ww{TRSKWupO0Sz}+NBd2?)OwF zVLKj%P~~`DNr4`!j>jck;HS!~Xxv+R>E4ebGKut_)v5s>C@cST3IgY3k_-LDfxA}k zJ3Sf1ebYY;#7<}O9r-Kmdfn@vK1u(&R|Uk1sCuc%9q-yg2JsS;w^e@2OxCD{!xb&j z6Ld6p1WBhGw4RoZDQsz(e<2H>*XEC7jBq<}u`=!mjk%@A1C)0sFADdGh0 zmQC=ud437Fpe!c_ru$1b2d?^>q~TtvCYa!*=8j$_QelPj+hd(ePMh*Z=)LSjn|hUY zl3O%f*z^^Fj7yQi8PYGhaAx0E44n!^Tw)MEvT9K*&x3ifYPWJuAO1|*L#q_XBQ+Tj zzOj1fpXCMOvJ0S| zLE*Is0`Xer37`+)+DQTU_m&&L74vHn_#Ydq4%}3h{P1^220`06XB!siq1A2x59}$~ zB=E0{)d1eN_M8O1D0Rq22K9>dz6Q|8K6z5?w3rNWU^#%M1@Mst&;;VOOu<0BmIeSm zv;d}nk4phGtvv}u)By=Z)B*WeQ>1{uV39Y0bO@0G(jg>LAo+1k6~CO))QD+V(FG($ z?yj{VH{Y?1MrcE7hi$N^25wnuQ{Zi7eM;Uck(+NwI^HYEAIi=5a&mTE<#4ECVc1cT zi`KVhfs@8+0Qao5W`VR;5$u<(y-2^j8wDi&vN`})tZ`<6|J+y&APE#*VU`}KlMl_= z6xeUh-T)3Lt2_Cg+>xKnpm`lc611)&TUI-Lp^!K#-k{?_^i_33zS}tJXeqI;^>Ze~ z;}SE0z(OuLtBD}`oEgTyq&9eT?-s-RLB*;CvaROlwRAGz73EcQmqES6Lt_yEj_IZ1 z(USB&7~^{3)#Us89o=7Z9W#sqwTMbX1FxDhbzn%2yb#4 zlTXa#G!WDIkq(468QuJ0a!Xb9B=5_kSn0MEDSDaRL+|oJ2JsTRcU9g;RihSOS2QKP zeN2If0OyP~2`oLF2j1~gz#kYZ1@0MZl6NEj%2+Azsj()3KQvYf8=3@RE|b~1S&%VNTBWoaMeMeA_aV4>ZgIkUhI~ko|s?_Ncds_Ncds_ zNcbWJ?6t6KK%a@Iuc~4D*i)vzrt(-TOeenw=3$T z_bi%q@odl(*>93!S#~`@8b`;0OP`XsL{qGnXB``fE2sP(50!dP#QLjfumsPYsg;1^- zzn6!Geyi93mMfk-BuT$)V9^zpq*B5LmUXB0)z-2(kpfqgRfG+7-wOhFj|oCO^n$=g z#{{7cy`Z9~=rxfVkXp{WA1Sxxig9j7)l%DATvK@0vw+*m`aANmfA?$Wx|1*TjDF?y zWax{peNL||y?*Z1rNC`t zHGubxRRfawiXN!KRe!mi{74#rL?z#Fbz~3|-XL(+SkZ?Rc~w%dXmT~+sLBrL-L^SB!h|!hcXy{WC2kwZJQyV>w0w z&MB*y0-&CFLHwXZ{e4qk1Gayq5R&5#APSxOS_ZXb>RZ6=k{`7UYR3x#ajnpZSCseE ztH)Y)$=?L&$e{kdIoJTsnq4Odg`=NJzW@A(zh{1X+fEpplq0Hr)U2ey3l_%=stHj( zUn8`AFNIFZZPn=&MVXVVqv)Y2YN3FV1np>o+%XOK(3&&_k|sHwe|`#=F(W+-wUo2! z=N-#I3ukSEgfMQ+#L*)ZS6QX{d@% zgQ@l6uT|?nYjr0p^8HkQ2JL-l;KQF=3q-r0C4EG|qX~%^c(JQ!Z#f7Ba^_XchENM$ z5O~vADR46O2wwaqYIcC^refF{{-A;!H8`LCt$XApVFtAkGwZp}cD?-|-6+ zKG2b+?RFP=+c$qx+<4dANP%r-$;@#Ws!w^U;$7Y9*$)sut!~ywpkNAF3Pf%~IFHp}kvm+#;*8eF(MfDC0;=>ES@m zi;FG^^`_sQ0(tL2o~i)vs#H-I>XFr*2JRmdgnHryfrrNgKR%2aVLY?QrhvraCR9~R zEYk0RgC&c#3~Jb1YXRqtH3j5t5?NM(n_db?Uc?U|8IWlONaXH0Q1IW5(g#{f0|N

+Dtg|;Wh_;uTS4gLmc@VfN* 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

    Tv!ZMx$ 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 Date: Mon, 6 Nov 2023 17:27:29 +0000 Subject: [PATCH 06/96] Updated OSTest. --- test/unit/OSTest.cc | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/test/unit/OSTest.cc b/test/unit/OSTest.cc index 70184e5759..9f327d5ed2 100644 --- a/test/unit/OSTest.cc +++ b/test/unit/OSTest.cc @@ -11,20 +11,20 @@ class OSTest : public testing::Test { OSTest() : config(simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/a64fx.yaml") .getConfigFile()), - proc_elf(simeng::span(reinterpret_cast(demoHex), + proc_elf(simeng::kernel::LinuxProcess(cmdLine, config)), + proc_hex(simeng::span(reinterpret_cast(demoHex), sizeof(demoHex)), - config), - proc_insns(simeng::kernel::LinuxProcess(cmdLine, config)) {} + config) {} protected: // Linux class is ISA agnostic so we can just use one of the supported ones YAML::Node config; - const std::vector cmdLine = {SIMENG_SOURCE_DIR - "/test/unit/data/stream-aarch64"}; + const std::vector cmdLine = { + SIMENG_SOURCE_DIR "/test/unit/data/stream-aarch64.elf"}; simeng::kernel::Linux os; simeng::kernel::LinuxProcess proc_elf; - simeng::kernel::LinuxProcess proc_insns; + simeng::kernel::LinuxProcess proc_hex; // Program used when no executable is provided; counts down from // 1024*1024, with an independent `orr` at the start of each branch. @@ -45,12 +45,14 @@ class OSTest : public testing::Test { // syscalls and are tested in the Regression suite. TEST_F(OSTest, processElf_stackPointer) { os.createProcess(proc_elf); - EXPECT_EQ(os.getInitialStackPointer(), 1074790240); + EXPECT_EQ(os.getInitialStackPointer(), 1079830624); + EXPECT_EQ(os.getInitialStackPointer(), proc_elf.getStackPointer()); } TEST_F(OSTest, processHex_stackPointer) { - os.createProcess(proc_insns); - EXPECT_EQ(os.getInitialStackPointer(), 1079830624); + os.createProcess(proc_hex); + EXPECT_EQ(os.getInitialStackPointer(), 1074790240); + EXPECT_EQ(os.getInitialStackPointer(), proc_hex.getStackPointer()); } // createProcess From 33aa8127c21834ecd86452f89d0cb0b5888bb1e5 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 8 Nov 2023 11:45:50 +0000 Subject: [PATCH 07/96] Added unit tests for LinuxProcess. --- test/unit/CMakeLists.txt | 1 + test/unit/ProcessTest.cc | 102 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 test/unit/ProcessTest.cc diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 5335461e6b..5e8a656f16 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -15,6 +15,7 @@ set(TEST_SOURCES RegisterValueTest.cc OSTest.cc PoolTest.cc + ProcessTest.cc ShiftValueTest.cc LatencyMemoryInterfaceTest.cc ) diff --git a/test/unit/ProcessTest.cc b/test/unit/ProcessTest.cc new file mode 100644 index 0000000000..a4be62bb69 --- /dev/null +++ b/test/unit/ProcessTest.cc @@ -0,0 +1,102 @@ +#include "gtest/gtest.h" +#include "simeng/ModelConfig.hh" +#include "simeng/kernel/LinuxProcess.hh" +#include "simeng/version.hh" + +namespace simeng { + +class ProcessTest : public testing::Test { + public: + ProcessTest() + : config(simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/a64fx.yaml") + .getConfigFile()) {} + + protected: + YAML::Node config; + const std::vector cmdLine = { + SIMENG_SOURCE_DIR "/test/unit/data/stream-aarch64.elf"}; + + // Program used when no executable is provided; counts down from + // 1024*1024, with an independent `orr` at the start of each branch. + uint32_t demoHex[7] = { + 0x320C03E0, // orr w0, wzr, #1048576 + 0x320003E1, // orr w0, wzr, #1 + 0x71000400, // subs w0, w0, #1 + 0x54FFFFC1, // b.ne -8 + // .exit: + 0xD2800000, // mov x0, #0 + 0xD2800BC8, // mov x8, #94 + 0xD4000001, // svc #0 + }; +}; + +TEST_F(ProcessTest, alignToBoundary) { + EXPECT_EQ(kernel::alignToBoundary(63, 64), 64); + EXPECT_EQ(kernel::alignToBoundary(1, 64), 64); + EXPECT_EQ(kernel::alignToBoundary(65, 64), 128); +} + +// Tests createProcess(), isValid(), and getPath() functions. +TEST_F(ProcessTest, createProcess_elf) { + kernel::LinuxProcess proc = kernel::LinuxProcess(cmdLine, config); + EXPECT_TRUE(proc.isValid()); + EXPECT_EQ(proc.getPath(), + SIMENG_SOURCE_DIR "/test/unit/data/stream-aarch64.elf"); +} + +// Tests createProcess(), isValid(), and getPath() functions. +TEST_F(ProcessTest, createProcess_hex) { + kernel::LinuxProcess proc = kernel::LinuxProcess( + span(reinterpret_cast(demoHex), sizeof(demoHex)), config); + EXPECT_TRUE(proc.isValid()); + EXPECT_EQ(proc.getPath(), "\0"); +} + +// Tests get{Heap, Stack, Mmap}Start() functions +TEST_F(ProcessTest, get_x_Start) { + kernel::LinuxProcess proc = kernel::LinuxProcess(cmdLine, config); + EXPECT_TRUE(proc.isValid()); + uint64_t heapStart = 5040480; + uint64_t heapSize = config["Process-Image"]["Heap-Size"].as(); + uint64_t stackSize = config["Process-Image"]["Stack-Size"].as(); + EXPECT_EQ(proc.getHeapStart(), heapStart); + EXPECT_EQ(proc.getMmapStart(), + kernel::alignToBoundary(heapStart + ((heapSize + stackSize) / 2), + proc.getPageSize())); + EXPECT_EQ(proc.getStackStart(), heapStart + heapSize + stackSize); +} + +TEST_F(ProcessTest, getPageSize) { + kernel::LinuxProcess proc = kernel::LinuxProcess(cmdLine, config); + EXPECT_TRUE(proc.isValid()); + EXPECT_EQ(proc.getPageSize(), 4096); +} + +TEST_F(ProcessTest, getProcessImage) { + kernel::LinuxProcess proc = kernel::LinuxProcess(cmdLine, config); + EXPECT_TRUE(proc.isValid()); + EXPECT_NE(proc.getProcessImage(), nullptr); +} + +TEST_F(ProcessTest, getProcessImageSize) { + kernel::LinuxProcess proc = kernel::LinuxProcess(cmdLine, config); + EXPECT_TRUE(proc.isValid()); + EXPECT_GT(proc.getProcessImageSize(), 0); +} + +TEST_F(ProcessTest, getEntryPoint) { + kernel::LinuxProcess proc = kernel::LinuxProcess(cmdLine, config); + EXPECT_TRUE(proc.isValid()); + EXPECT_EQ(proc.getEntryPoint(), 4206008); +} + +TEST_F(ProcessTest, getStackPointer) { + kernel::LinuxProcess proc = kernel::LinuxProcess(cmdLine, config); + EXPECT_TRUE(proc.isValid()); + EXPECT_EQ(proc.getStackPointer(), 1079830624); +} + +} // namespace simeng + +// getEntryPoint +// getStackPointer \ No newline at end of file From 4520bbb2329756398b78f5fbef0188f6ec958a75 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 8 Nov 2023 11:55:41 +0000 Subject: [PATCH 08/96] Fixed header formatting and spelling mistakes for A64FXPortAllocator. --- src/include/simeng/pipeline/A64FXPortAllocator.hh | 13 ++++++++++--- src/lib/pipeline/A64FXPortAllocator.cc | 1 + test/unit/pipeline/A64FXPortAllocatorTest.cc | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/include/simeng/pipeline/A64FXPortAllocator.hh b/src/include/simeng/pipeline/A64FXPortAllocator.hh index 74f27faf25..22261abad2 100644 --- a/src/include/simeng/pipeline/A64FXPortAllocator.hh +++ b/src/include/simeng/pipeline/A64FXPortAllocator.hh @@ -21,17 +21,21 @@ const uint8_t BR = 5; * described in the A64FX Microarchitecture manual. */ class A64FXPortAllocator : public PortAllocator { public: + /** Constructor for the A64FXPortAllocator object. */ A64FXPortAllocator(const std::vector>& portArrangement); + /** Allocate a port for the specified instruction group; returns the allocated + * port. */ uint16_t allocate(const std::vector& ports) override; + /** Inform the allocator that an instruction was issued to the specified port. + */ void issued(uint16_t port) override; + /** Inform the allocator that an instruction will not issue to its + * allocated port. */ void deallocate(uint16_t port) override; - /** A mapping from issye ports to instruction attribute */ - uint8_t attributeMapping(const std::vector& ports); - /** Set function from DispatchIssueUnit to retrieve reservation * station sizes during execution. */ void setRSSizeGetter( @@ -41,6 +45,9 @@ class A64FXPortAllocator : public PortAllocator { void tick() override; private: + /** A mapping from issue ports to instruction attribute */ + uint8_t attributeMapping(const std::vector& ports); + /** An approximate estimation of the index of an instruction within the input * buffer of the dispatch unit. Increments slot at each allocation thus cannot * account for nullptr entries in buffer.*/ diff --git a/src/lib/pipeline/A64FXPortAllocator.cc b/src/lib/pipeline/A64FXPortAllocator.cc index d7cb9626ee..95a55cdb9b 100644 --- a/src/lib/pipeline/A64FXPortAllocator.cc +++ b/src/lib/pipeline/A64FXPortAllocator.cc @@ -145,6 +145,7 @@ uint16_t A64FXPortAllocator::allocate(const std::vector& ports) { } void A64FXPortAllocator::issued(uint16_t port) {} + void A64FXPortAllocator::deallocate(uint16_t port) { issued(port); }; uint8_t A64FXPortAllocator::attributeMapping( diff --git a/test/unit/pipeline/A64FXPortAllocatorTest.cc b/test/unit/pipeline/A64FXPortAllocatorTest.cc index 2e7b5df70b..28058b4b2c 100644 --- a/test/unit/pipeline/A64FXPortAllocatorTest.cc +++ b/test/unit/pipeline/A64FXPortAllocatorTest.cc @@ -223,7 +223,7 @@ TEST(A64FXPortAllocator, table5) { rsFreeEntries[1]--; } -// Test correct allocation for Table 6 condition +// Test correct allocation for Table 6 condition TEST(A64FXPortAllocator, table6) { auto portAllocator = A64FXPortAllocator(portArrangement); portAllocator.setRSSizeGetter( From 2572e8db1ae6fd67c4752e71b35c916918f5fa6d Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 8 Nov 2023 14:04:34 +0000 Subject: [PATCH 09/96] Added unit test to DecodeUnit. --- test/unit/pipeline/DecodeUnitTest.cc | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/test/unit/pipeline/DecodeUnitTest.cc b/test/unit/pipeline/DecodeUnitTest.cc index 71062f35bc..f86dbc0caf 100644 --- a/test/unit/pipeline/DecodeUnitTest.cc +++ b/test/unit/pipeline/DecodeUnitTest.cc @@ -22,6 +22,8 @@ class PipelineDecodeUnitTest : public testing::Test { decodeUnit(input, output, predictor), uop(new MockInstruction), uopPtr(uop), + uop2(new MockInstruction), + uop2Ptr(uop2), sourceRegisters({{0, 0}}) {} protected: @@ -33,6 +35,8 @@ class PipelineDecodeUnitTest : public testing::Test { MockInstruction* uop; std::shared_ptr uopPtr; + MockInstruction* uop2; + std::shared_ptr uop2Ptr; std::vector sourceRegisters; }; @@ -60,6 +64,7 @@ TEST_F(PipelineDecodeUnitTest, Tick) { // Check no flush was requested EXPECT_EQ(decodeUnit.shouldFlush(), false); + EXPECT_EQ(decodeUnit.getEarlyFlushes(), 0); } // Tests that the decode unit requests a flush when a non-branch is mispredicted @@ -84,6 +89,26 @@ TEST_F(PipelineDecodeUnitTest, Flush) { // Check that a flush was correctly requested EXPECT_EQ(decodeUnit.shouldFlush(), true); EXPECT_EQ(decodeUnit.getFlushAddress(), 1); + EXPECT_EQ(decodeUnit.getEarlyFlushes(), 1); +} + +// Tests that PurgeFlushed empties the microOps queue +TEST_F(PipelineDecodeUnitTest, purgeFlushed) { + input.getHeadSlots()[0] = {uopPtr, uop2Ptr}; + + decodeUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0].get(), uop); + EXPECT_EQ(input.getHeadSlots()[0].size(), 0); + + // Clear micro-ops queue + decodeUnit.purgeFlushed(); + // Swap output head and tail + output.tick(); + + decodeUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + EXPECT_EQ(output.getHeadSlots()[0].get(), uop); + EXPECT_EQ(input.getHeadSlots()[0].size(), 0); } } // namespace pipeline From 60d5d91578e543ed4156052d6a6778eeed7b4cbe Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 8 Nov 2023 17:28:45 +0000 Subject: [PATCH 10/96] Created MockPortAllocator class for unit test suite. --- test/unit/MockPortAllocator.hh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 test/unit/MockPortAllocator.hh diff --git a/test/unit/MockPortAllocator.hh b/test/unit/MockPortAllocator.hh new file mode 100644 index 0000000000..19d7142b74 --- /dev/null +++ b/test/unit/MockPortAllocator.hh @@ -0,0 +1,21 @@ +#pragma once + +#include "gmock/gmock.h" +#include "simeng/pipeline/PortAllocator.hh" + +namespace simeng { +namespace pipeline { + +/** Mock implementation of the `PortAllocator` interface. */ +class MockPortAllocator : public pipeline::PortAllocator { + public: + MOCK_METHOD1(allocate, uint16_t(const std::vector& ports)); + MOCK_METHOD1(issued, void(uint16_t port)); + MOCK_METHOD1(deallocate, void(uint16_t port)); + MOCK_METHOD1(setRSSizeGetter, + void(std::function&)> rsSizes)); + MOCK_METHOD0(tick, void()); +}; + +} // namespace pipeline +} // namespace simeng From 1167b04e7d5e5ff5a33ac1eea7b440ae7632ac3c Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 10 Nov 2023 12:07:10 +0000 Subject: [PATCH 11/96] Removed non-existant functions from MockInstruction. --- test/unit/MockInstruction.hh | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/unit/MockInstruction.hh b/test/unit/MockInstruction.hh index 4d9757c24f..41af10f5f7 100644 --- a/test/unit/MockInstruction.hh +++ b/test/unit/MockInstruction.hh @@ -8,7 +8,6 @@ namespace simeng { /** Mock implementation of the `Instruction` interface. */ class MockInstruction : public Instruction { public: - MOCK_CONST_METHOD0(getException, InstructionException()); MOCK_CONST_METHOD0(getSourceRegisters, const span()); MOCK_CONST_METHOD0(getSourceOperands, const span()); MOCK_CONST_METHOD0(getDestinationRegisters, const span()); @@ -33,8 +32,6 @@ class MockInstruction : public Instruction { MOCK_CONST_METHOD0(isStoreData, bool()); MOCK_CONST_METHOD0(isLoad, bool()); MOCK_CONST_METHOD0(isBranch, bool()); - MOCK_CONST_METHOD0(isASIMD, bool()); - MOCK_CONST_METHOD0(isPredicate, bool()); MOCK_CONST_METHOD0(getGroup, uint16_t()); MOCK_METHOD0(getSupportedPorts, const std::vector&()); From 375de54218f38c8c2519f5ec49f38899902d1d70 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 10 Nov 2023 12:07:42 +0000 Subject: [PATCH 12/96] Removed un-used function setRegisterReady() from DispatchIssueUnit. --- src/include/simeng/pipeline/DispatchIssueUnit.hh | 6 +----- src/lib/pipeline/DispatchIssueUnit.cc | 4 ---- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/src/include/simeng/pipeline/DispatchIssueUnit.hh b/src/include/simeng/pipeline/DispatchIssueUnit.hh index 63ebd84972..f720bedc1e 100644 --- a/src/include/simeng/pipeline/DispatchIssueUnit.hh +++ b/src/include/simeng/pipeline/DispatchIssueUnit.hh @@ -30,8 +30,7 @@ struct ReservationStation { uint16_t capacity; /** Number of instructions that can be dispatched to this unit per cycle. */ uint16_t dispatchRate; - /** Current number of non-stalled instructions - * in reservation station */ + /** Current number of instructions in reservation station */ uint16_t currentSize; /** Issue ports belonging to reservation station */ std::vector ports; @@ -75,9 +74,6 @@ class DispatchIssueUnit { void forwardOperands(const span& destinations, const span& values); - /** Set the scoreboard entry for the provided register as ready. */ - void setRegisterReady(Register reg); - /** Clear the RS of all flushed instructions. */ void purgeFlushed(); diff --git a/src/lib/pipeline/DispatchIssueUnit.cc b/src/lib/pipeline/DispatchIssueUnit.cc index 18837422d2..8a6a902a22 100644 --- a/src/lib/pipeline/DispatchIssueUnit.cc +++ b/src/lib/pipeline/DispatchIssueUnit.cc @@ -197,10 +197,6 @@ void DispatchIssueUnit::forwardOperands(const span& registers, } } -void DispatchIssueUnit::setRegisterReady(Register reg) { - scoreboard_[reg.type][reg.tag] = true; -} - void DispatchIssueUnit::purgeFlushed() { for (size_t i = 0; i < reservationStations_.size(); i++) { // Search the ready queues for flushed instructions and remove them From e39a4ef7a3ffdff588d6737f11a0563394ae49b0 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Mon, 27 Nov 2023 15:06:34 +0000 Subject: [PATCH 13/96] Added new unit tests for DispatchIssue unit. --- test/unit/CMakeLists.txt | 1 + test/unit/pipeline/DispatchIssueUnitTest.cc | 544 ++++++++++++++++++++ 2 files changed, 545 insertions(+) create mode 100644 test/unit/pipeline/DispatchIssueUnitTest.cc diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 5e8a656f16..9391b7cc46 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -3,6 +3,7 @@ set(TEST_SOURCES pipeline/BalancedPortAllocatorTest.cc pipeline/ExecuteUnitTest.cc pipeline/DecodeUnitTest.cc + pipeline/DispatchIssueUnitTest.cc pipeline/ExecuteUnitTest.cc pipeline/FetchUnitTest.cc pipeline/LoadStoreQueueTest.cc diff --git a/test/unit/pipeline/DispatchIssueUnitTest.cc b/test/unit/pipeline/DispatchIssueUnitTest.cc new file mode 100644 index 0000000000..590a26842c --- /dev/null +++ b/test/unit/pipeline/DispatchIssueUnitTest.cc @@ -0,0 +1,544 @@ +#include "../MockInstruction.hh" +#include "../MockPortAllocator.hh" +#include "gmock/gmock.h" +#include "gtest/gtest.h" +#include "simeng/ModelConfig.hh" +#include "simeng/pipeline/DispatchIssueUnit.hh" +#include "simeng/version.hh" + +namespace simeng { +namespace pipeline { + +using ::testing::Return; +using ::testing::ReturnRef; + +class PipelineDispatchIssueUnitTest : public testing::Test { + public: + PipelineDispatchIssueUnitTest() + : regFile(physRegStruct), + input(1, nullptr), + output(config["Execution-Units"].size(), {1, nullptr}), + diUnit(input, output, regFile, portAlloc, physRegQuants, config), + uop(new MockInstruction), + uopPtr(uop), + uop2(new MockInstruction), + uop2Ptr(uop2) {} + + protected: + YAML::Node config = + simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/a64fx.yaml") + .getConfigFile(); + + // Using AArch64 as basis: {GP, FP/SVE, PRED, COND, SYS, SME} + const std::vector physRegQuants = {96, 128, 48, 128, 64, 64}; + const std::vector physRegStruct = { + {8, physRegQuants[0]}, {256, physRegQuants[1]}, {32, physRegQuants[2]}, + {1, physRegQuants[3]}, {8, physRegQuants[4]}, {256, physRegQuants[5]}}; + RegisterFileSet regFile; + + PipelineBuffer> input; + std::vector>> output; + + MockPortAllocator portAlloc; + + simeng::pipeline::DispatchIssueUnit diUnit; + + MockInstruction* uop; + std::shared_ptr uopPtr; + MockInstruction* uop2; + std::shared_ptr uop2Ptr; + + // As per a64fx.yaml + const uint16_t EAGA = 5; // Maps to RS index 2 + const uint8_t RS_EAGA = 2; // RS associated with EAGA in A64FX + const std::vector refRsSizes = {20, 20, 10, 10, 19}; + + const Register r0 = {0, 0}; + const Register r1 = {0, 1}; + const Register r2 = {0, 2}; +}; + +// No instruction issued due to empty input buffer +TEST_F(PipelineDispatchIssueUnitTest, emptyTick) { + // Ensure empty Reservation stations pre tick() + std::vector rsSizes; + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes, refRsSizes); + + diUnit.tick(); + // Post tick(), ensure RS sizes are still the same + no RS stalls + rsSizes.clear(); + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes, refRsSizes); + EXPECT_EQ(diUnit.getRSStalls(), 0); + + diUnit.issue(); + // Post issue(), ensure Reservation stations are empty + rsSizes.clear(); + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes, refRsSizes); + // Post issue(), ensure output buffers are empty + for (size_t i = 0; i < output.size(); i++) { + EXPECT_EQ(output[i].getTailSlots()[0], nullptr); + } + // Post issue(), ensure only front-end stall recorded + EXPECT_EQ(diUnit.getFrontendStalls(), 1); + EXPECT_EQ(diUnit.getBackendStalls(), 0); + EXPECT_EQ(diUnit.getPortBusyStalls(), 0); +} + +// Single instruction has no exception, 2 source operands (both ready), 1 +// destination operand +TEST_F(PipelineDispatchIssueUnitTest, singleInstr) { + // Set-up source & destination registers and ports for this instruction + std::array srcRegs = {r1, r2}; + std::array destRegs = {r0}; + const std::vector suppPorts = {EAGA}; + + // All expected calls to instruction during tick() + EXPECT_CALL(*uop, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); + uop->setExceptionEncountered(false); + EXPECT_CALL(*uop, getOperandRegisters()) + .WillOnce(Return(span(srcRegs))); + EXPECT_CALL(*uop, isOperandReady(0)).WillOnce(Return(false)); + EXPECT_CALL(*uop, supplyOperand(0, RegisterValue(0, 8))); + EXPECT_CALL(*uop, isOperandReady(1)).WillOnce(Return(false)); + EXPECT_CALL(*uop, supplyOperand(1, RegisterValue(0, 8))); + EXPECT_CALL(*uop, getDestinationRegisters()) + .WillOnce(Return(span(destRegs))); + + // Expected call to port allocator during tick() + EXPECT_CALL(portAlloc, allocate(suppPorts)).WillOnce(Return(EAGA)); + + // Ensure empty reservation stations pre tick() + std::vector rsSizes; + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes, refRsSizes); + + input.getHeadSlots()[0] = uopPtr; + diUnit.tick(); + // Ensure post tick that EAGA's reservation station size has decreased by 1 + rsSizes.clear(); + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes.size(), refRsSizes.size()); + EXPECT_EQ(rsSizes[RS_EAGA], refRsSizes[RS_EAGA] - 1); + // Ensure no stalls recorded in tick() + EXPECT_EQ(diUnit.getFrontendStalls(), 0); + EXPECT_EQ(diUnit.getBackendStalls(), 0); + EXPECT_EQ(diUnit.getPortBusyStalls(), 0); + EXPECT_EQ(diUnit.getRSStalls(), 0); + // Ensure empty output buffers post tick() + for (size_t i = 0; i < output.size(); i++) { + EXPECT_EQ(output[i].getTailSlots()[0], nullptr); + } + + // Detail expected call to port allocator during tick() + EXPECT_CALL(portAlloc, issued(EAGA)); + + diUnit.issue(); + // Ensure all reservation stations empty again post issue() + rsSizes.clear(); + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes, refRsSizes); + // Ensure no stalls recorded during issue() + EXPECT_EQ(diUnit.getFrontendStalls(), 0); + EXPECT_EQ(diUnit.getBackendStalls(), 0); + EXPECT_EQ(diUnit.getPortBusyStalls(), 0); + EXPECT_EQ(diUnit.getRSStalls(), 0); + // Ensure all output buffers are empty, except the one associated with EAGA + // port which contains the uop + for (size_t i = 0; i < output.size(); i++) { + if (i != EAGA) + EXPECT_EQ(output[i].getTailSlots()[0], nullptr); + else + EXPECT_EQ(output[i].getTailSlots()[0].get(), uop); + } +} + +// Single instruction with exception +TEST_F(PipelineDispatchIssueUnitTest, singleInstr_excpetion) { + // Setup supported port instruction can use + const std::vector suppPorts = {EAGA}; + + // All expected calls to instruction during tick() + EXPECT_CALL(*uop, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); + uop->setExceptionEncountered(true); + + input.getHeadSlots()[0] = uopPtr; + diUnit.tick(); + // Check that instruction has encountered an exception and that it is ready to + // commit + EXPECT_TRUE(uop->canCommit()); + EXPECT_TRUE(uop->exceptionEncountered()); + // Ensure all reservation stations are empty post tick() + std::vector rsSizes; + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes, refRsSizes); + // Ensure input buffer has been emptied + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + + // Perform issue() + diUnit.issue(); + // Ensure RS still empty post issue() + rsSizes.clear(); + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes, refRsSizes); + // Ensure all output ports are empty + for (int i = 0; i < output.size(); i++) { + EXPECT_EQ(output[i].getTailSlots()[0], nullptr); + } + // Ensure frontend stall recorded + EXPECT_EQ(diUnit.getFrontendStalls(), 1); + EXPECT_EQ(diUnit.getBackendStalls(), 0); + EXPECT_EQ(diUnit.getPortBusyStalls(), 0); + EXPECT_EQ(diUnit.getRSStalls(), 0); +} + +// Single instruction that can't be issued in 1 cycle as RS is full +TEST_F(PipelineDispatchIssueUnitTest, singleInstr_rsFull) { + // Setup supported port instructions can use + const std::vector suppPorts = {EAGA}; + + // Artificially fill Reservation station with index 2 + std::vector> insns(refRsSizes[RS_EAGA]); + for (int i = 0; i < insns.size(); i++) { + // Initialise instruction + insns[i] = std::make_shared(); + // All expected calls to instruction during tick() + EXPECT_CALL(*insns[i].get(), getSupportedPorts()) + .WillOnce(ReturnRef(suppPorts)); + EXPECT_CALL(*insns[i].get(), getOperandRegisters()) + .WillOnce(Return(span())); + EXPECT_CALL(*insns[i].get(), getDestinationRegisters()) + .WillOnce(Return(span())); + // Expected call to port allocator during tick() + EXPECT_CALL(portAlloc, allocate(suppPorts)).WillOnce(Return(EAGA)); + + input.getHeadSlots()[0] = insns[i]; + diUnit.tick(); + } + // Ensure Reservation station index 2 is full post tick, and all others are + // empty + std::vector rsSizes; + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes.size(), refRsSizes.size()); + for (int i = 0; i < refRsSizes.size(); i++) { + if (i != RS_EAGA) { + EXPECT_EQ(rsSizes[i], refRsSizes[i]); + } else { + EXPECT_EQ(rsSizes[i], 0); + EXPECT_NE(rsSizes[i], refRsSizes[i]); + } + } + // Ensure no stalls recorded in tick() + EXPECT_EQ(diUnit.getFrontendStalls(), 0); + EXPECT_EQ(diUnit.getBackendStalls(), 0); + EXPECT_EQ(diUnit.getPortBusyStalls(), 0); + EXPECT_EQ(diUnit.getRSStalls(), 0); + + // Submit new instruction to same port + // All expected calls to instruction during tick() + EXPECT_CALL(*uop, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); + // All expected calls to portAllocator during tick() + EXPECT_CALL(portAlloc, allocate(suppPorts)).WillOnce(Return(EAGA)); + EXPECT_CALL(portAlloc, deallocate(EAGA)); + input.getHeadSlots()[0] = uopPtr; + diUnit.tick(); + // Ensure Reservation station sizes have stayed the same + rsSizes.clear(); + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes.size(), refRsSizes.size()); + for (int i = 0; i < refRsSizes.size(); i++) { + if (i != RS_EAGA) { + EXPECT_EQ(rsSizes[i], refRsSizes[i]); + } else { + EXPECT_EQ(rsSizes[i], 0); + EXPECT_NE(rsSizes[i], refRsSizes[i]); + } + } + // Check input pipelineBuffer stalled + EXPECT_TRUE(input.isStalled()); + // Ensure one rsStall recorded in tick() + EXPECT_EQ(diUnit.getFrontendStalls(), 0); + EXPECT_EQ(diUnit.getBackendStalls(), 0); + EXPECT_EQ(diUnit.getPortBusyStalls(), 0); + EXPECT_EQ(diUnit.getRSStalls(), 1); +} + +// Single instruction not issued in 1 cycle as port is stalled +TEST_F(PipelineDispatchIssueUnitTest, singleInstr_portStall) { + // Setup supported port instructions can use + const std::vector suppPorts = {EAGA}; + + // Submit new instruction to a port + // All expected calls to instruction during tick() + EXPECT_CALL(*uop, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); + uop->setExceptionEncountered(false); + EXPECT_CALL(*uop, getOperandRegisters()).WillOnce(Return(span())); + EXPECT_CALL(*uop, getDestinationRegisters()) + .WillOnce(Return(span())); + // Expected call to portAllocator during tick() + EXPECT_CALL(portAlloc, allocate(suppPorts)).WillOnce(Return(EAGA)); + + input.getHeadSlots()[0] = uopPtr; + diUnit.tick(); + + // Ensure correct RS sizes post tick() + std::vector rsSizes; + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes.size(), refRsSizes.size()); + for (int i = 0; i < refRsSizes.size(); i++) { + if (i != RS_EAGA) { + EXPECT_EQ(rsSizes[i], refRsSizes[i]); + } else { + EXPECT_EQ(rsSizes[i], refRsSizes[i] - 1); + } + } + // Ensure no stalls recorded in tick() + EXPECT_EQ(diUnit.getFrontendStalls(), 0); + EXPECT_EQ(diUnit.getBackendStalls(), 0); + EXPECT_EQ(diUnit.getPortBusyStalls(), 0); + EXPECT_EQ(diUnit.getRSStalls(), 0); + + // Stall issue port + output[EAGA].stall(true); + + // Perform issue() + diUnit.issue(); + // Ensure correct RS sizes post issue() + rsSizes.clear(); + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes.size(), refRsSizes.size()); + for (int i = 0; i < refRsSizes.size(); i++) { + if (i != RS_EAGA) { + EXPECT_EQ(rsSizes[i], refRsSizes[i]); + } else { + EXPECT_EQ(rsSizes[i], refRsSizes[i] - 1); + } + } + // Ensure all output ports are empty + for (int i = 0; i < output.size(); i++) { + EXPECT_EQ(output[i].getTailSlots()[0], nullptr); + } + // Ensure portBusyStall and backend stall recorded in issue() + EXPECT_EQ(diUnit.getFrontendStalls(), 0); + EXPECT_EQ(diUnit.getBackendStalls(), 1); + EXPECT_EQ(diUnit.getPortBusyStalls(), 1); + EXPECT_EQ(diUnit.getRSStalls(), 0); +} + +// Try dispatch two instructions with RAW hazard after renaming, second should +// not be issued as it is dependant on first. Use forwardOpernad() to resolve +// dependancy. +TEST_F(PipelineDispatchIssueUnitTest, createDependancy_raw) { + // Set-up source & destination registers and ports for the instructions + std::array srcRegs_1 = {}; + std::array destRegs_1 = {r0}; + std::array srcRegs_2 = {r0}; + std::array destRegs_2 = {r1}; + const std::vector suppPorts = {EAGA}; + + // All expected calls to instruction 1 during tick() + EXPECT_CALL(*uop, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); + uop->setExceptionEncountered(false); + EXPECT_CALL(*uop, getOperandRegisters()) + .WillOnce(Return(span(srcRegs_1))); + EXPECT_CALL(*uop, isOperandReady(0)).WillOnce(Return(false)); + EXPECT_CALL(*uop, supplyOperand(0, RegisterValue(0, 8))); + EXPECT_CALL(*uop, getDestinationRegisters()) + .WillOnce(Return(span(destRegs_1))); + // Expected call to port allocator during tick() + EXPECT_CALL(portAlloc, allocate(suppPorts)).WillOnce(Return(EAGA)); + EXPECT_CALL(portAlloc, issued(EAGA)); + + // Process instruction 1 + input.getHeadSlots()[0] = uopPtr; + diUnit.tick(); + diUnit.issue(); + EXPECT_EQ(output[EAGA].getTailSlots()[0], uopPtr); + output[EAGA].tick(); + + // All expected calls to instruction 2 during tick() + EXPECT_CALL(*uop2, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); + uop->setExceptionEncountered(false); + EXPECT_CALL(*uop2, getOperandRegisters()) + .WillOnce(Return(span(srcRegs_2))); + EXPECT_CALL(*uop2, isOperandReady(0)).WillOnce(Return(false)); + EXPECT_CALL(*uop2, getDestinationRegisters()) + .WillOnce(Return(span(destRegs_2))); + // Expected call to port allocator during tick() + EXPECT_CALL(portAlloc, allocate(suppPorts)).WillOnce(Return(EAGA)); + + // Process instruction 2 + input.getHeadSlots()[0] = uop2Ptr; + diUnit.tick(); + diUnit.issue(); + // Ensure correct RS sizes post tick() & issue() + std::vector rsSizes; + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes.size(), refRsSizes.size()); + for (int i = 0; i < refRsSizes.size(); i++) { + if (i != RS_EAGA) { + EXPECT_EQ(rsSizes[i], refRsSizes[i]); + } else { + EXPECT_EQ(rsSizes[i], refRsSizes[i] - 1); + } + } + // Ensure all output ports are empty + for (int i = 0; i < output.size(); i++) { + EXPECT_EQ(output[i].getTailSlots()[0], nullptr); + } + // Ensure backend stall recorded in issue() + EXPECT_EQ(diUnit.getFrontendStalls(), 0); + EXPECT_EQ(diUnit.getBackendStalls(), 1); + EXPECT_EQ(diUnit.getPortBusyStalls(), 0); + EXPECT_EQ(diUnit.getRSStalls(), 0); + + // Forward operand for register r0 + std::array vals = {RegisterValue(6)}; + EXPECT_CALL(*uop2, supplyOperand(0, vals[0])); + EXPECT_CALL(*uop2, canExecute()).WillOnce(Return(true)); + diUnit.forwardOperands(span(srcRegs_2), vals); + + // Try issue again for instruction 2 + EXPECT_CALL(portAlloc, issued(EAGA)); + diUnit.issue(); + // Ensure correct RS sizes post issue() + rsSizes.clear(); + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes, refRsSizes); + // Ensure all output ports are empty except EAGA + for (int i = 0; i < output.size(); i++) { + if (i != EAGA) + EXPECT_EQ(output[i].getTailSlots()[0], nullptr); + else + EXPECT_EQ(output[i].getTailSlots()[0], uop2Ptr); + } + // Ensure no further stalls recorded in issue() + EXPECT_EQ(diUnit.getFrontendStalls(), 0); + EXPECT_EQ(diUnit.getBackendStalls(), 1); + EXPECT_EQ(diUnit.getPortBusyStalls(), 0); + EXPECT_EQ(diUnit.getRSStalls(), 0); +} + +// Ensure correct instructions are flushed from reservation stations and the +// dependancy matrix +TEST_F(PipelineDispatchIssueUnitTest, purgeFlushed) { + // Set-up source & destination registers and ports for the instructions; + // creating a dependancy + std::array srcRegs_1 = {}; + std::array destRegs_1 = {r0}; + std::array srcRegs_2 = {r0}; + std::array destRegs_2 = {r1}; + const std::vector suppPorts = {EAGA}; + + // All expected calls to instruction 1 during tick() + EXPECT_CALL(*uop, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); + uop->setExceptionEncountered(false); + EXPECT_CALL(*uop, getOperandRegisters()) + .WillOnce(Return(span(srcRegs_1))); + EXPECT_CALL(*uop, isOperandReady(0)).WillOnce(Return(false)); + EXPECT_CALL(*uop, supplyOperand(0, RegisterValue(0, 8))); + EXPECT_CALL(*uop, getDestinationRegisters()) + .WillOnce(Return(span(destRegs_1))); + // Expected call to port allocator during tick() + EXPECT_CALL(portAlloc, allocate(suppPorts)).WillOnce(Return(EAGA)); + + // Process instruction 1 + input.getHeadSlots()[0] = uopPtr; + diUnit.tick(); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + + // All expected calls to instruction 2 during tick() + EXPECT_CALL(*uop2, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); + uop->setExceptionEncountered(false); + EXPECT_CALL(*uop2, getOperandRegisters()) + .WillOnce(Return(span(srcRegs_2))); + EXPECT_CALL(*uop2, isOperandReady(0)).WillOnce(Return(false)); + EXPECT_CALL(*uop2, getDestinationRegisters()) + .WillOnce(Return(span(destRegs_2))); + // Expected call to port allocator during tick() + EXPECT_CALL(portAlloc, allocate(suppPorts)).WillOnce(Return(EAGA)); + + // Process instruction 2 + input.getHeadSlots()[0] = uop2Ptr; + diUnit.tick(); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + + // Ensure correct RS sizes post tick() + std::vector rsSizes; + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes.size(), refRsSizes.size()); + for (int i = 0; i < refRsSizes.size(); i++) { + if (i != RS_EAGA) { + EXPECT_EQ(rsSizes[i], refRsSizes[i]); + } else { + EXPECT_EQ(rsSizes[i], refRsSizes[i] - 2); + } + } + // Ensure all output ports are empty + for (int i = 0; i < output.size(); i++) { + EXPECT_EQ(output[i].getTailSlots()[0], nullptr); + } + // Ensure no stalls recorded + EXPECT_EQ(diUnit.getFrontendStalls(), 0); + EXPECT_EQ(diUnit.getBackendStalls(), 0); + EXPECT_EQ(diUnit.getPortBusyStalls(), 0); + EXPECT_EQ(diUnit.getRSStalls(), 0); + + // Remove flushed uops + EXPECT_CALL(portAlloc, deallocate(EAGA)).Times(2); + uopPtr->setFlushed(); + uop2Ptr->setFlushed(); + diUnit.purgeFlushed(); + + // Check reservation station sizes + rsSizes.clear(); + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes, refRsSizes); + + // Perform issue to see if `uop` is still present + diUnit.issue(); + // Ensure all output ports are empty + for (int i = 0; i < output.size(); i++) { + EXPECT_EQ(output[i].getTailSlots()[0], nullptr); + } + // Ensure frontend stall recorded in issue() + EXPECT_EQ(diUnit.getFrontendStalls(), 1); + EXPECT_EQ(diUnit.getBackendStalls(), 0); + EXPECT_EQ(diUnit.getPortBusyStalls(), 0); + EXPECT_EQ(diUnit.getRSStalls(), 0); + + // Call forwardOperand() and issue() to release `uop2` (if it were still + // present) + std::array vals = {RegisterValue(6)}; + diUnit.forwardOperands(span(srcRegs_2), vals); + // Check reservation station sizes + rsSizes.clear(); + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes, refRsSizes); + + diUnit.issue(); + // Ensure all output ports are empty + for (int i = 0; i < output.size(); i++) { + EXPECT_EQ(output[i].getTailSlots()[0], nullptr); + } + // Ensure frontend stall recorded in issue() + EXPECT_EQ(diUnit.getFrontendStalls(), 2); + EXPECT_EQ(diUnit.getBackendStalls(), 0); + EXPECT_EQ(diUnit.getPortBusyStalls(), 0); + EXPECT_EQ(diUnit.getRSStalls(), 0); +} + +// Test based on a64fx config file reservation staion configuration +TEST_F(PipelineDispatchIssueUnitTest, getRSSizes) { + std::vector rsSizes; + diUnit.getRSSizes(rsSizes); + EXPECT_EQ(rsSizes, refRsSizes); +} + +} // namespace pipeline +} // namespace simeng + +// tick +// issue \ No newline at end of file From 925e831a60272cdee03e3236a531e1de927209ff Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 28 Nov 2023 11:44:27 +0000 Subject: [PATCH 14/96] Added more executeUnit tests. --- test/unit/pipeline/ExecuteUnitTest.cc | 134 ++++++++++++++++++++++++-- 1 file changed, 124 insertions(+), 10 deletions(-) diff --git a/test/unit/pipeline/ExecuteUnitTest.cc b/test/unit/pipeline/ExecuteUnitTest.cc index eb130f53ad..3885d80952 100644 --- a/test/unit/pipeline/ExecuteUnitTest.cc +++ b/test/unit/pipeline/ExecuteUnitTest.cc @@ -62,11 +62,29 @@ class PipelineExecuteUnitTest : public testing::Test { // Tests that the execution unit processes nothing if no instruction is present TEST_F(PipelineExecuteUnitTest, TickEmpty) { + EXPECT_TRUE(executeUnit.isEmpty()); executeUnit.tick(); + EXPECT_TRUE(executeUnit.isEmpty()); EXPECT_EQ(output.getTailSlots()[0], nullptr); } +// Tests that a flushed instruction is removed from the input buffer and not +// processed through the EU +TEST_F(PipelineExecuteUnitTest, flushedInputInsn) { + input.getHeadSlots()[0] = uopPtr; + + // Setup instruction + uopPtr->setFlushed(); + ON_CALL(*uop, canExecute()).WillByDefault(Return(true)); + + executeUnit.tick(); + + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + EXPECT_EQ(executeUnit.getCycles(), 0); +} + // Tests that the execution unit executes an instruction and forwards the // results TEST_F(PipelineExecuteUnitTest, Execute) { @@ -119,7 +137,8 @@ TEST_F(PipelineExecuteUnitTest, ExecuteBranch) { // Check that the branch predictor was updated with the results EXPECT_CALL(*uop, getBranchType()).Times(1); - EXPECT_CALL(predictor, update(2, taken, pc, BranchType::Unconditional)) + EXPECT_CALL(predictor, + update(insnAddress, taken, pc, BranchType::Unconditional)) .Times(1); // Check that empty forwarding call is made @@ -128,8 +147,13 @@ TEST_F(PipelineExecuteUnitTest, ExecuteBranch) { executeUnit.tick(); + EXPECT_EQ(uopPtr->wasBranchMispredicted(), false); + EXPECT_EQ(uopPtr->wasBranchTaken(), taken); + EXPECT_EQ(executeUnit.shouldFlush(), false); EXPECT_EQ(output.getTailSlots()[0].get(), uop); + EXPECT_EQ(executeUnit.getBranchExecutedCount(), 1); + EXPECT_EQ(executeUnit.getBranchMispredictedCount(), 0); } // Test that an instruction that already encountered an exception will raise it @@ -192,7 +216,7 @@ TEST_F(PipelineExecuteUnitTest, PipelineStall) { EXPECT_EQ(input.getHeadSlots()[0].get(), secondUop); EXPECT_EQ(output.getTailSlots()[0], nullptr); executeUnit.tick(); - EXPECT_EQ(input.getHeadSlots()[0].get(), nullptr); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); EXPECT_EQ(output.getTailSlots()[0].get(), uop); } @@ -207,10 +231,8 @@ TEST_F(PipelineExecuteUnitTest, OperationStall) { ON_CALL(*secondUop, getGroup()).WillByDefault(Return(4)); ON_CALL(*thirdUop, getGroup()).WillByDefault(Return(2)); - ON_CALL(*uop, canExecute()).WillByDefault(Return(true)); - ON_CALL(*thirdUop, canExecute()).WillByDefault(Return(true)); EXPECT_CALL(*uop, execute()).Times(1); - EXPECT_CALL(*secondUop, execute()).Times(0); + EXPECT_CALL(*secondUop, execute()).Times(1); EXPECT_CALL(*thirdUop, execute()).Times(1); executeUnit.tick(); @@ -218,21 +240,113 @@ TEST_F(PipelineExecuteUnitTest, OperationStall) { EXPECT_EQ(output.getTailSlots()[0], nullptr); input.getHeadSlots()[0] = secondUopPtr; executeUnit.tick(); - EXPECT_EQ(input.getHeadSlots()[0].get(), nullptr); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); EXPECT_EQ(output.getTailSlots()[0], nullptr); input.getHeadSlots()[0] = thirdUopPtr; executeUnit.tick(); - EXPECT_EQ(input.getHeadSlots()[0].get(), nullptr); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); EXPECT_EQ(output.getTailSlots()[0], nullptr); executeUnit.tick(); - EXPECT_EQ(input.getHeadSlots()[0].get(), nullptr); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); EXPECT_EQ(output.getTailSlots()[0], nullptr); executeUnit.tick(); - EXPECT_EQ(input.getHeadSlots()[0].get(), nullptr); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0].get(), uop); + executeUnit.tick(); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0].get(), thirdUop); + executeUnit.tick(); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0].get(), secondUop); +} + +// Test that a mispredicted branch instruction is properly handled +TEST_F(PipelineExecuteUnitTest, mispredictedBranch) { + input.getHeadSlots()[0] = uopPtr; + + ON_CALL(*uop, canExecute()).WillByDefault(Return(true)); + // Anticipate testing instruction type; return true for branch + ON_CALL(*uop, isBranch()).WillByDefault(Return(true)); + // Return branch type as unconditional by default + ON_CALL(*uop, getBranchType()).WillByDefault(Return(BranchType::Conditional)); + + const bool takenPred = false; + const bool taken = true; + const uint64_t pc = 4; + const uint64_t insnAddress = 16; + const uint64_t insnID = 5; + + uop->setInstructionAddress(insnAddress); + uop->setInstructionId(insnID); + uop->setBranchPrediction({takenPred, insnAddress + 4}); + + EXPECT_CALL(*uop, execute()).WillOnce(Invoke([&]() { + uop->setExecuted(true); + uop->setBranchResults(taken, pc); + })); + + // Check that the branch predictor was updated with the results + EXPECT_CALL(*uop, getBranchType()).Times(1); + + EXPECT_CALL(predictor, + update(insnAddress, taken, pc, BranchType::Conditional)) + .Times(1); + + // Check that empty forwarding call is made + EXPECT_CALL(executionHandlers, forwardOperands(IsEmpty(), IsEmpty())) + .Times(1); + + executeUnit.tick(); + + EXPECT_EQ(uopPtr->wasBranchMispredicted(), true); + EXPECT_EQ(uopPtr->wasBranchTaken(), taken); + + EXPECT_EQ(executeUnit.shouldFlush(), true); EXPECT_EQ(output.getTailSlots()[0].get(), uop); + EXPECT_EQ(executeUnit.getBranchExecutedCount(), 1); + EXPECT_EQ(executeUnit.getBranchMispredictedCount(), 1); + EXPECT_EQ(executeUnit.getFlushAddress(), pc); + EXPECT_EQ(executeUnit.getFlushSeqId(), insnID); +} + +// Test that the flushing mechansim works correctly via purgeFlushed() +TEST_F(PipelineExecuteUnitTest, purgeFlushed) { + input.getHeadSlots()[0] = uopPtr; + + uop->setLatency(5); + uop->setStallCycles(5); + // Set up instructions so that only one is in the EU pipeline at a time + ON_CALL(*uop, getGroup()).WillByDefault(Return(3)); + ON_CALL(*secondUop, getGroup()).WillByDefault(Return(4)); + ON_CALL(*thirdUop, getGroup()).WillByDefault(Return(5)); + + EXPECT_CALL(*uop, execute()).Times(0); + EXPECT_CALL(*secondUop, execute()).Times(0); + EXPECT_CALL(*thirdUop, execute()).Times(1); + + // Stage all three instructions in EU pipeline + executeUnit.tick(); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + input.getHeadSlots()[0] = secondUopPtr; executeUnit.tick(); - EXPECT_EQ(input.getHeadSlots()[0].get(), nullptr); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + input.getHeadSlots()[0] = thirdUopPtr; + executeUnit.tick(); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + + // Flush first two instructions + uopPtr->setFlushed(); + secondUopPtr->setFlushed(); + executeUnit.purgeFlushed(); + + // Ensure non-flushed instruction progresses through the pipeline + executeUnit.tick(); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); EXPECT_EQ(output.getTailSlots()[0].get(), thirdUop); + EXPECT_TRUE(executeUnit.isEmpty()); } } // namespace pipeline From 6179669b4e58e9579f183618fbd598af44a7e6ca Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Mon, 4 Dec 2023 16:34:18 +0000 Subject: [PATCH 15/96] Moved ShiftValueTests to Regression/AArch64 and added missing MSL shift test. --- test/regression/aarch64/CMakeLists.txt | 1 + .../aarch64}/ShiftValueTest.cc | 31 ++++++++++++++++--- test/unit/CMakeLists.txt | 1 - 3 files changed, 27 insertions(+), 6 deletions(-) rename test/{unit => regression/aarch64}/ShiftValueTest.cc (54%) diff --git a/test/regression/aarch64/CMakeLists.txt b/test/regression/aarch64/CMakeLists.txt index fb5e499ce3..8d0d2692e9 100644 --- a/test/regression/aarch64/CMakeLists.txt +++ b/test/regression/aarch64/CMakeLists.txt @@ -4,6 +4,7 @@ add_executable(regression-aarch64 Exception.cc LoadStoreQueue.cc MicroOperation.cc + ShiftValueTest.cc SmokeTest.cc Syscall.cc SystemRegisters.cc diff --git a/test/unit/ShiftValueTest.cc b/test/regression/aarch64/ShiftValueTest.cc similarity index 54% rename from test/unit/ShiftValueTest.cc rename to test/regression/aarch64/ShiftValueTest.cc index 8cfe74e731..4ee7286cd0 100644 --- a/test/unit/ShiftValueTest.cc +++ b/test/regression/aarch64/ShiftValueTest.cc @@ -3,9 +3,31 @@ namespace { -TEST(ShiftValueTest, ROR) { - const auto ARM64_SFT_ROR = 5; +TEST(ShiftValueTest, MSL) { + // 32-bit + const uint32_t a = 0x0000FFFF; + EXPECT_EQ(simeng::arch::aarch64::shiftValue(a, ARM64_SFT_MSL, 16), + 0xFFFFFFFF); + + const uint32_t b = 0xFFFF0000; + EXPECT_EQ(simeng::arch::aarch64::shiftValue(b, ARM64_SFT_MSL, 31), + 0x7FFFFFFF); + EXPECT_EQ(simeng::arch::aarch64::shiftValue(b, ARM64_SFT_MSL, 0), b); + + // 64-bit + const uint64_t c = 0x00000000FFFFFFFF; + EXPECT_EQ(simeng::arch::aarch64::shiftValue(c, ARM64_SFT_MSL, 32), + 0xFFFFFFFF00000000); + + const uint64_t d = 0xFFFFFFFF00000000; + EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_MSL, 63), + 0xFFFFFFFE00000001); + + EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_MSL, 0), d); +} + +TEST(ShiftValueTest, ROR) { // 32-bit const uint32_t a = 0x0000FFFF; EXPECT_EQ(simeng::arch::aarch64::shiftValue(a, ARM64_SFT_ROR, 16), @@ -15,7 +37,7 @@ TEST(ShiftValueTest, ROR) { EXPECT_EQ(simeng::arch::aarch64::shiftValue(b, ARM64_SFT_ROR, 31), 0xFFFE0001); - EXPECT_EQ(simeng::arch::aarch64::shiftValue(b, ARM64_SFT_ROR, 0), 0xFFFF0000); + EXPECT_EQ(simeng::arch::aarch64::shiftValue(b, ARM64_SFT_ROR, 0), b); // 64-bit const uint64_t c = 0x00000000FFFFFFFF; @@ -26,8 +48,7 @@ TEST(ShiftValueTest, ROR) { EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_ROR, 63), 0xFFFFFFFE00000001); - EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_ROR, 0), - 0xFFFFFFFF00000000); + EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_ROR, 0), d); } } // namespace \ No newline at end of file diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 9391b7cc46..ac1890ff04 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -17,7 +17,6 @@ set(TEST_SOURCES OSTest.cc PoolTest.cc ProcessTest.cc - ShiftValueTest.cc LatencyMemoryInterfaceTest.cc ) From 1ebc1502b14a0578ba3475babd794a7c9b605bba Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 5 Dec 2023 16:57:22 +0000 Subject: [PATCH 16/96] Minor change to RAT test & removal of un-used function. --- src/include/simeng/pipeline/RegisterAliasTable.hh | 3 --- src/lib/pipeline/RegisterAliasTable.cc | 4 +--- test/unit/pipeline/RegisterAliasTableTest.cc | 6 +++++- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/include/simeng/pipeline/RegisterAliasTable.hh b/src/include/simeng/pipeline/RegisterAliasTable.hh index e3a30ea7b1..84a9ec4379 100644 --- a/src/include/simeng/pipeline/RegisterAliasTable.hh +++ b/src/include/simeng/pipeline/RegisterAliasTable.hh @@ -43,9 +43,6 @@ class RegisterAliasTable { * is reinstated to the mapping table, and the provided register is freed. */ void rewind(Register physical); - /** Free the provided physical register. */ - void free(Register physical); - private: /** The register mapping tables. Holds a map of architectural -> physical * register mappings for each register type. */ diff --git a/src/lib/pipeline/RegisterAliasTable.cc b/src/lib/pipeline/RegisterAliasTable.cc index 935c65292a..af4ec42893 100644 --- a/src/lib/pipeline/RegisterAliasTable.cc +++ b/src/lib/pipeline/RegisterAliasTable.cc @@ -93,6 +93,7 @@ void RegisterAliasTable::commit(Register physical) { auto oldTag = historyTable_[physical.type][physical.tag]; freeQueues_[physical.type].push(oldTag); } + void RegisterAliasTable::rewind(Register physical) { // Find which architectural tag this referred to auto destinationTag = destinationTable_[physical.type][physical.tag]; @@ -102,9 +103,6 @@ void RegisterAliasTable::rewind(Register physical) { // Add the rewound physical tag back to the free queue freeQueues_[physical.type].push(physical.tag); } -void RegisterAliasTable::free(Register physical) { - freeQueues_[physical.type].push(physical.tag); -} } // namespace pipeline } // namespace simeng diff --git a/test/unit/pipeline/RegisterAliasTableTest.cc b/test/unit/pipeline/RegisterAliasTableTest.cc index 99b3daf059..6b6f1d9985 100644 --- a/test/unit/pipeline/RegisterAliasTableTest.cc +++ b/test/unit/pipeline/RegisterAliasTableTest.cc @@ -62,11 +62,15 @@ TEST_F(RegisterAliasTableTest, AllocateIndependent) { auto multiRAT = RegisterAliasTable({{8, architecturalCount}, {8, architecturalCount}}, {physicalCount, physicalCount}); + auto initialFreeRegisters0 = multiRAT.freeRegistersAvailable(0); auto initialFreeRegisters1 = multiRAT.freeRegistersAvailable(1); multiRAT.allocate(reg); - // Check that the same number of physical registers are still available + // Check 1 fewer physical registers are now available for regFile 0 + EXPECT_EQ(multiRAT.freeRegistersAvailable(0), initialFreeRegisters0 - 1); + // Check that the same number of physical registers are still available for + // regFile 1 EXPECT_EQ(multiRAT.freeRegistersAvailable(1), initialFreeRegisters1); } From b552d3161025e42f035a5b3f2547962d4da8be58 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 5 Dec 2023 18:13:23 +0000 Subject: [PATCH 17/96] Added tests for FixedLatencyMemoryInterface & changed assert to simulation ending clause. --- src/lib/FixedLatencyMemoryInterface.cc | 10 +- test/unit/CMakeLists.txt | 6 +- test/unit/FixedLatencyMemoryInterfaceTest.cc | 123 +++++++++++++++++++ test/unit/LatencyMemoryInterfaceTest.cc | 63 ---------- 4 files changed, 133 insertions(+), 69 deletions(-) create mode 100644 test/unit/FixedLatencyMemoryInterfaceTest.cc delete mode 100644 test/unit/LatencyMemoryInterfaceTest.cc diff --git a/src/lib/FixedLatencyMemoryInterface.cc b/src/lib/FixedLatencyMemoryInterface.cc index 6ccf48a147..4bf57f1f40 100644 --- a/src/lib/FixedLatencyMemoryInterface.cc +++ b/src/lib/FixedLatencyMemoryInterface.cc @@ -1,6 +1,6 @@ #include "simeng/FixedLatencyMemoryInterface.hh" -#include +#include namespace simeng { @@ -24,8 +24,12 @@ void FixedLatencyMemoryInterface::tick() { if (request.write) { // Write: write data directly to memory - assert(target.address + target.size <= size_ && - "Attempted to write beyond memory limit"); + if (target.address + target.size > size_) { + std::cerr << "[SimEng:FixedLatencyMemoryInterface] Attempted to write " + "beyond memory limit." + << std::endl; + exit(1); + } auto ptr = memory_ + target.address; // Copy the data from the RegisterValue to memory diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index ac1890ff04..f366f127d6 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -11,13 +11,13 @@ set(TEST_SOURCES pipeline/RegisterAliasTableTest.cc pipeline/ReorderBufferTest.cc pipeline/WritebackUnitTest.cc - GenericPredictorTest.cc ArchitectureTest.cc - RegisterValueTest.cc + FixedLatencyMemoryInterfaceTest.cc + GenericPredictorTest.cc OSTest.cc PoolTest.cc ProcessTest.cc - LatencyMemoryInterfaceTest.cc + RegisterValueTest.cc ) add_executable(unittests ${TEST_SOURCES}) diff --git a/test/unit/FixedLatencyMemoryInterfaceTest.cc b/test/unit/FixedLatencyMemoryInterfaceTest.cc new file mode 100644 index 0000000000..e1dbecb8b6 --- /dev/null +++ b/test/unit/FixedLatencyMemoryInterfaceTest.cc @@ -0,0 +1,123 @@ +#include "gtest/gtest.h" +#include "simeng/FixedLatencyMemoryInterface.hh" + +namespace { + +#define memorySize 4 + +class FixedLatencyMemoryInterfaceTest : public testing::Test { + public: + FixedLatencyMemoryInterfaceTest() + : memory(memoryData.data(), memorySize, latency) {} + + protected: + const uint16_t latency = 2; + std::array memoryData = {(char)0xFE, (char)0xCA, (char)0xBA, + (char)0xAB}; + + simeng::RegisterValue value = {0xDEADBEEF, 4}; + simeng::RegisterValue value_oversized = {0xDEADBEEFDEADBEEF, 8}; + simeng::MemoryAccessTarget target = {0, 4}; + simeng::MemoryAccessTarget target_OutOfBound1 = {1000, 4}; + simeng::MemoryAccessTarget target_OutOfBound2 = {0, 8}; + + const std::string writeOverflowStr = + "Attempted to write beyond memory limit."; + + simeng::FixedLatencyMemoryInterface memory; +}; + +// Test that we can read data and it completes after a number of cycles. +TEST_F(FixedLatencyMemoryInterfaceTest, FixedReadData) { + // Read a 32-bit value + memory.requestRead(target, 1); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick once - request should still be pending + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick again - request should have completed + memory.tick(); + EXPECT_FALSE(memory.hasPendingRequests()); + + auto entries = memory.getCompletedReads(); + EXPECT_EQ(entries.size(), 1); + EXPECT_EQ(entries[0].requestId, 1); + EXPECT_EQ(entries[0].data, simeng::RegisterValue(0xABBACAFE, 4)); + EXPECT_EQ(entries[0].target, target); +} + +// Test that we can write data and it completes after a number of cycles. +TEST_F(FixedLatencyMemoryInterfaceTest, FixedWriteData) { + // Write a 32-bit value to memory + memory.requestWrite(target, value); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick once - request should still be pending + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick again - request should have completed + memory.tick(); + EXPECT_FALSE(memory.hasPendingRequests()); + EXPECT_EQ(reinterpret_cast(memoryData.data())[0], 0xDEADBEEF); +} + +// Test that out-of-bounds memory reads are correctly handled. +TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsRead) { + // Create a target such that address + size will overflow + memory.requestRead(target_OutOfBound1, 1); + + // Create a regular out-of-bounds target + memory.requestRead(target_OutOfBound2, 2); + + // Tick once - request shouldn't have completed + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick twice - request should have completed + memory.tick(); + EXPECT_FALSE(memory.hasPendingRequests()); + + auto entries = memory.getCompletedReads(); + EXPECT_EQ(entries.size(), 2); + + auto overflowResult = entries[0]; + EXPECT_EQ(overflowResult.requestId, 1); + EXPECT_EQ(overflowResult.data, simeng::RegisterValue()); + EXPECT_EQ(overflowResult.target, target_OutOfBound1); + + overflowResult = entries[1]; + EXPECT_EQ(overflowResult.requestId, 2); + EXPECT_EQ(overflowResult.data, simeng::RegisterValue()); + EXPECT_EQ(overflowResult.target, target_OutOfBound2); +} + +// Test that out-of-bounds memory writes are correctly handled. +TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsWrite_1) { + // Create a target such that address + size will overflow + memory.requestWrite(target_OutOfBound1, value); + + // Tick once - request shouldn't have completed + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick twice - simulation should have come to a stop + ASSERT_DEATH(memory.tick(), writeOverflowStr); +} + +// Test that out-of-bounds memory writes are correctly handled. +TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsWrite_2) { + // Create a regular out-of-bounds target + memory.requestWrite(target_OutOfBound2, value_oversized); + + // Tick once - request shouldn't have completed + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick twice - simulation should have come to a stop + ASSERT_DEATH(memory.tick(), writeOverflowStr); +} + +} // namespace diff --git a/test/unit/LatencyMemoryInterfaceTest.cc b/test/unit/LatencyMemoryInterfaceTest.cc deleted file mode 100644 index e728b9bf76..0000000000 --- a/test/unit/LatencyMemoryInterfaceTest.cc +++ /dev/null @@ -1,63 +0,0 @@ -#include "gtest/gtest.h" -#include "simeng/FixedLatencyMemoryInterface.hh" - -namespace { - -// Test that we can write data and it completes after a number of cycles. -TEST(LatencyMemoryInterfaceTest, FixedWriteData) { - // Create a memory interface with a two cycle latency - uint32_t memoryData = 0; - simeng::FixedLatencyMemoryInterface memory( - reinterpret_cast(&memoryData), 4, 2); - EXPECT_FALSE(memory.hasPendingRequests()); - - // Write a 32-bit value to memory - // Should ignore the 7 cycle latency and opt for the interface defined latency - simeng::MemoryAccessTarget target = {0, 4}; - simeng::RegisterValue value = (uint32_t)0xDEADBEEF; - memory.requestWrite(target, value); - EXPECT_TRUE(memory.hasPendingRequests()); - - // Tick once - request should still be pending - memory.tick(); - EXPECT_TRUE(memory.hasPendingRequests()); - - // Tick again - request should have completed - memory.tick(); - EXPECT_FALSE(memory.hasPendingRequests()); - EXPECT_EQ(memoryData, 0xDEADBEEF); -} - -// Test that out-of-bounds memory reads are correctly handled. -TEST(LatencyMemoryInterfaceTest, OutofBoundsRead) { - uint32_t memoryData = 0; - simeng::FixedLatencyMemoryInterface memory( - reinterpret_cast(&memoryData), 4, 1); - - // Create a target such that address + size will overflow - simeng::MemoryAccessTarget overflowTarget = {UINT64_MAX, 4}; - memory.requestRead(overflowTarget, 1); - - // Create a regular out-of-bounds target - simeng::MemoryAccessTarget target = {0, 8}; - memory.requestRead(target, 2); - - // Tick once - request should have completed - memory.tick(); - EXPECT_FALSE(memory.hasPendingRequests()); - - auto entries = memory.getCompletedReads(); - EXPECT_EQ(entries.size(), 2); - - auto overflowResult = entries[0]; - EXPECT_EQ(overflowResult.requestId, 1); - EXPECT_EQ(overflowResult.data, simeng::RegisterValue()); - EXPECT_EQ(overflowResult.target, overflowTarget); - - auto result = entries[1]; - EXPECT_EQ(result.requestId, 2); - EXPECT_EQ(result.data, simeng::RegisterValue()); - EXPECT_EQ(result.target, target); -} - -} // namespace From b45d118a22aba82bef701e98316df261ecae68cd Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 5 Dec 2023 18:29:44 +0000 Subject: [PATCH 18/96] Added new FlatMemoryInterface unit tests & changed assert to simulation ending condition. --- src/lib/FlatMemoryInterface.cc | 9 ++- test/unit/CMakeLists.txt | 1 + test/unit/FixedLatencyMemoryInterfaceTest.cc | 3 +- test/unit/FlatMemoryInterfaceTest.cc | 81 ++++++++++++++++++++ 4 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 test/unit/FlatMemoryInterfaceTest.cc diff --git a/src/lib/FlatMemoryInterface.cc b/src/lib/FlatMemoryInterface.cc index 8360626e3f..730e615101 100644 --- a/src/lib/FlatMemoryInterface.cc +++ b/src/lib/FlatMemoryInterface.cc @@ -1,6 +1,5 @@ #include "simeng/FlatMemoryInterface.hh" -#include #include namespace simeng { @@ -25,8 +24,12 @@ void FlatMemoryInterface::requestRead(const MemoryAccessTarget& target, void FlatMemoryInterface::requestWrite(const MemoryAccessTarget& target, const RegisterValue& data) { - assert(target.address + target.size <= size_ && - "Attempted to write beyond memory limit"); + if (target.address + target.size > size_) { + std::cerr << "[SimEng:FlatLatencyMemoryInterface] Attempted to write " + "beyond memory limit." + << std::endl; + exit(1); + } auto ptr = memory_ + target.address; // Copy the data from the RegisterValue to memory diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index f366f127d6..f5dd16c848 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -13,6 +13,7 @@ set(TEST_SOURCES pipeline/WritebackUnitTest.cc ArchitectureTest.cc FixedLatencyMemoryInterfaceTest.cc + FlatMemoryInterfaceTest.cc GenericPredictorTest.cc OSTest.cc PoolTest.cc diff --git a/test/unit/FixedLatencyMemoryInterfaceTest.cc b/test/unit/FixedLatencyMemoryInterfaceTest.cc index e1dbecb8b6..d9862f5d27 100644 --- a/test/unit/FixedLatencyMemoryInterfaceTest.cc +++ b/test/unit/FixedLatencyMemoryInterfaceTest.cc @@ -3,14 +3,13 @@ namespace { -#define memorySize 4 - class FixedLatencyMemoryInterfaceTest : public testing::Test { public: FixedLatencyMemoryInterfaceTest() : memory(memoryData.data(), memorySize, latency) {} protected: + static constexpr uint16_t memorySize = 4; const uint16_t latency = 2; std::array memoryData = {(char)0xFE, (char)0xCA, (char)0xBA, (char)0xAB}; diff --git a/test/unit/FlatMemoryInterfaceTest.cc b/test/unit/FlatMemoryInterfaceTest.cc new file mode 100644 index 0000000000..93d9b5f5f0 --- /dev/null +++ b/test/unit/FlatMemoryInterfaceTest.cc @@ -0,0 +1,81 @@ +#include "gtest/gtest.h" +#include "simeng/FlatMemoryInterface.hh" + +namespace { + +class FlatMemoryInterfaceTest : public testing::Test { + public: + FlatMemoryInterfaceTest() : memory(memoryData.data(), memorySize) {} + + protected: + static constexpr uint16_t memorySize = 4; + std::array memoryData = {(char)0xFE, (char)0xCA, (char)0xBA, + (char)0xAB}; + + simeng::RegisterValue value = {0xDEADBEEF, 4}; + simeng::RegisterValue value_oversized = {0xDEADBEEFDEADBEEF, 8}; + simeng::MemoryAccessTarget target = {0, 4}; + simeng::MemoryAccessTarget target_OutOfBound1 = {1000, 4}; + simeng::MemoryAccessTarget target_OutOfBound2 = {0, 8}; + + const std::string writeOverflowStr = + "Attempted to write beyond memory limit."; + + simeng::FlatMemoryInterface memory; +}; + +// Test that we can read data and it completes after a number of cycles. +TEST_F(FlatMemoryInterfaceTest, FixedReadData) { + // Read a 32-bit value + memory.requestRead(target, 1); + auto entries = memory.getCompletedReads(); + EXPECT_EQ(entries.size(), 1); + EXPECT_EQ(entries[0].requestId, 1); + EXPECT_EQ(entries[0].data, simeng::RegisterValue(0xABBACAFE, 4)); + EXPECT_EQ(entries[0].target, target); +} + +// Test that we can write data and it completes after a number of cycles. +TEST_F(FlatMemoryInterfaceTest, FixedWriteData) { + // Write a 32-bit value to memory + memory.requestWrite(target, value); + EXPECT_EQ(reinterpret_cast(memoryData.data())[0], 0xDEADBEEF); +} + +// Test that out-of-bounds memory reads are correctly handled. +TEST_F(FlatMemoryInterfaceTest, OutofBoundsRead) { + // Create a target such that address + size will overflow + memory.requestRead(target_OutOfBound1, 1); + + // Create a regular out-of-bounds target + memory.requestRead(target_OutOfBound2, 2); + + auto entries = memory.getCompletedReads(); + EXPECT_EQ(entries.size(), 2); + + auto overflowResult = entries[0]; + EXPECT_EQ(overflowResult.requestId, 1); + EXPECT_EQ(overflowResult.data, simeng::RegisterValue()); + EXPECT_EQ(overflowResult.target, target_OutOfBound1); + + overflowResult = entries[1]; + EXPECT_EQ(overflowResult.requestId, 2); + EXPECT_EQ(overflowResult.data, simeng::RegisterValue()); + EXPECT_EQ(overflowResult.target, target_OutOfBound2); +} + +// Test that out-of-bounds memory writes are correctly handled. +TEST_F(FlatMemoryInterfaceTest, OutofBoundsWrite_1) { + // Create a target such that address + size will overflow + ASSERT_DEATH(memory.requestWrite(target_OutOfBound1, value), + writeOverflowStr); +} + +// Test that out-of-bounds memory writes are correctly handled. +TEST_F(FlatMemoryInterfaceTest, OutofBoundsWrite_2) { + // Create a regular out-of-bounds target + ASSERT_DEATH(memory.requestWrite(target_OutOfBound2, value_oversized), + writeOverflowStr); +} + +} // namespace From 25f764de01b343aa5e45ded91e60d14e258d858c Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 6 Dec 2023 13:40:02 +0000 Subject: [PATCH 19/96] Updated test structure of A64FXPortAllocatorTest. --- test/unit/pipeline/A64FXPortAllocatorTest.cc | 68 ++++++++------------ 1 file changed, 27 insertions(+), 41 deletions(-) diff --git a/test/unit/pipeline/A64FXPortAllocatorTest.cc b/test/unit/pipeline/A64FXPortAllocatorTest.cc index 28058b4b2c..f593788684 100644 --- a/test/unit/pipeline/A64FXPortAllocatorTest.cc +++ b/test/unit/pipeline/A64FXPortAllocatorTest.cc @@ -8,19 +8,29 @@ namespace simeng { namespace pipeline { -std::vector rsFreeEntries = {20, 20, 10, 10, 19}; +class A64FXPortAllocatorTest : public testing::Test { + public: + A64FXPortAllocatorTest() : portAllocator(portArrangement) { + portAllocator.setRSSizeGetter( + [this](std::vector& sizeVec) { rsSizes(sizeVec); }); + } -void rsSizes(std::vector& sizeVec) { sizeVec = rsFreeEntries; } + void rsSizes(std::vector& sizeVec) const { + sizeVec = rsFreeEntries; + } -// Representation of the A64FX port layout -const std::vector> portArrangement = {{0}, {1}, {2}, {3}, - {4}, {5}, {6}, {7}}; + protected: + // Representation of the A64FX reservation station layout + std::vector rsFreeEntries = {20, 20, 10, 10, 19}; + // Representation of the A64FX port layout + const std::vector> portArrangement = { + {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}}; + + A64FXPortAllocator portAllocator; +}; // Tests correct allocation for RSE0/RSE1/BR attribute groups -TEST(A64FXPortAllocatorTest, singlePortAllocation) { - auto portAllocator = A64FXPortAllocator(portArrangement); - portAllocator.setRSSizeGetter( - [](std::vector& sizeVec) { rsSizes(sizeVec); }); +TEST_F(A64FXPortAllocatorTest, singlePortAllocation) { // Allocate in blocks of 4 to simulate dispatch width of 4 and test dispatch // slot logic @@ -57,10 +67,7 @@ TEST(A64FXPortAllocatorTest, singlePortAllocation) { } // Tests correct allocation when for RSX -TEST(A64FXPortAllocatorTest, RSX) { - auto portAllocator = A64FXPortAllocator(portArrangement); - portAllocator.setRSSizeGetter( - [](std::vector& sizeVec) { rsSizes(sizeVec); }); +TEST_F(A64FXPortAllocatorTest, RSX) { rsFreeEntries = {10, 10, 10, 10, 19}; portAllocator.tick(); EXPECT_EQ(portAllocator.allocate({2, 4, 5, 6}), 2); @@ -83,10 +90,7 @@ TEST(A64FXPortAllocatorTest, RSX) { } // Tests correct allocation when for RSE/RSA -TEST(A64FXPortAllocatorTest, RSEA) { - auto portAllocator = A64FXPortAllocator(portArrangement); - portAllocator.setRSSizeGetter( - [](std::vector& sizeVec) { rsSizes(sizeVec); }); +TEST_F(A64FXPortAllocatorTest, RSEA) { rsFreeEntries = {20, 20, 10, 10, 19}; // RSE portAllocator.tick(); @@ -120,10 +124,7 @@ TEST(A64FXPortAllocatorTest, RSEA) { } // Test correct allocation for Table 1 condition -TEST(A64FXPortAllocator, table1) { - auto portAllocator = A64FXPortAllocator(portArrangement); - portAllocator.setRSSizeGetter( - [](std::vector& sizeVec) { rsSizes(sizeVec); }); +TEST_F(A64FXPortAllocatorTest, table1) { rsFreeEntries = {20, 0, 0, 0, 19}; portAllocator.tick(); EXPECT_EQ(portAllocator.allocate({2, 4, 5, 6}), 2); @@ -146,10 +147,7 @@ TEST(A64FXPortAllocator, table1) { } // Test correct allocation for Table 2 condition -TEST(A64FXPortAllocator, table2) { - auto portAllocator = A64FXPortAllocator(portArrangement); - portAllocator.setRSSizeGetter( - [](std::vector& sizeVec) { rsSizes(sizeVec); }); +TEST_F(A64FXPortAllocatorTest, table2) { rsFreeEntries = {20, 20, 0, 0, 19}; portAllocator.tick(); EXPECT_EQ(portAllocator.allocate({2, 4, 5, 6}), 2); @@ -172,10 +170,7 @@ TEST(A64FXPortAllocator, table2) { } // Test correct allocation for Table 3 condition -TEST(A64FXPortAllocator, table3) { - auto portAllocator = A64FXPortAllocator(portArrangement); - portAllocator.setRSSizeGetter( - [](std::vector& sizeVec) { rsSizes(sizeVec); }); +TEST_F(A64FXPortAllocatorTest, table3) { rsFreeEntries = {0, 0, 10, 10, 19}; portAllocator.tick(); EXPECT_EQ(portAllocator.allocate({2, 4, 5, 6}), 5); @@ -198,10 +193,7 @@ TEST(A64FXPortAllocator, table3) { } // Test correct allocation for Table 5 condition -TEST(A64FXPortAllocator, table5) { - auto portAllocator = A64FXPortAllocator(portArrangement); - portAllocator.setRSSizeGetter( - [](std::vector& sizeVec) { rsSizes(sizeVec); }); +TEST_F(A64FXPortAllocatorTest, table5) { rsFreeEntries = {9, 9, 10, 9, 19}; portAllocator.tick(); EXPECT_EQ(portAllocator.allocate({2, 4, 5, 6}), 5); @@ -224,10 +216,7 @@ TEST(A64FXPortAllocator, table5) { } // Test correct allocation for Table 6 condition -TEST(A64FXPortAllocator, table6) { - auto portAllocator = A64FXPortAllocator(portArrangement); - portAllocator.setRSSizeGetter( - [](std::vector& sizeVec) { rsSizes(sizeVec); }); +TEST_F(A64FXPortAllocatorTest, table6) { rsFreeEntries = {20, 0, 10, 0, 19}; portAllocator.tick(); EXPECT_EQ(portAllocator.allocate({2, 4}), 2); @@ -250,10 +239,7 @@ TEST(A64FXPortAllocator, table6) { } // Test adherence to the dispatch slot logic -TEST(A64FXPortAllocator, dispatchSlots) { - auto portAllocator = A64FXPortAllocator(portArrangement); - portAllocator.setRSSizeGetter( - [](std::vector& sizeVec) { rsSizes(sizeVec); }); +TEST_F(A64FXPortAllocatorTest, dispatchSlots) { rsFreeEntries = {10, 10, 10, 10, 19}; // With less than 4 instructions dispatched in a cycle, the next cycle should From 663dfe9205c98fb7cc6c0c5fa651269e2acbc2b0 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 6 Dec 2023 14:01:25 +0000 Subject: [PATCH 20/96] Added new FetchUnit unit tests and outlined structure needed for loopBuffer test. --- test/unit/pipeline/FetchUnitTest.cc | 180 ++++++++++++++++++++++++++-- 1 file changed, 172 insertions(+), 8 deletions(-) diff --git a/test/unit/pipeline/FetchUnitTest.cc b/test/unit/pipeline/FetchUnitTest.cc index fef76a9f61..e7878a7248 100644 --- a/test/unit/pipeline/FetchUnitTest.cc +++ b/test/unit/pipeline/FetchUnitTest.cc @@ -24,13 +24,16 @@ class PipelineFetchUnitTest : public testing::Test { : output(1, {}), fetchBuffer({{0, 16}, 0, 0}), completedReads(&fetchBuffer, 1), - fetchUnit(output, memory, 1024, 0, 16, isa, predictor), + fetchUnit(output, memory, 1024, 0, blockSize, isa, predictor), uop(new MockInstruction), uopPtr(uop) { uopPtr->setInstructionAddress(0); } protected: + const uint8_t insnMaxSizeBytes = 4; + const uint8_t blockSize = 16; + PipelineBuffer output; MockMemoryInterface memory; MockArchitecture isa; @@ -52,7 +55,7 @@ TEST_F(PipelineFetchUnitTest, Tick) { ON_CALL(memory, getCompletedReads()).WillByDefault(Return(completedReads)); - ON_CALL(isa, getMaxInstructionSize()).WillByDefault(Return(4)); + ON_CALL(isa, getMaxInstructionSize()).WillByDefault(Return(insnMaxSizeBytes)); // Set the output parameter to a 1-wide macro-op EXPECT_CALL(isa, predecode(_, _, 0, _)) @@ -84,8 +87,8 @@ TEST_F(PipelineFetchUnitTest, TickStalled) { // Tests that the fetch unit will handle instructions that straddle fetch block // boundaries by automatically requesting the next block of data. TEST_F(PipelineFetchUnitTest, FetchUnaligned) { - MacroOp macroOp = {uopPtr}; - ON_CALL(isa, getMaxInstructionSize()).WillByDefault(Return(4)); + MacroOp mOp = {uopPtr}; + ON_CALL(isa, getMaxInstructionSize()).WillByDefault(Return(insnMaxSizeBytes)); ON_CALL(memory, getCompletedReads()).WillByDefault(Return(completedReads)); // Set PC to 14, so there will not be enough data to start decoding @@ -99,12 +102,173 @@ TEST_F(PipelineFetchUnitTest, FetchUnaligned) { fetchUnit.requestFromPC(); // Tick again, expecting that decoding will now resume - MemoryReadResult nextBlockValue = {{16, 16}, 0, 1}; + MemoryReadResult nextBlockValue = {{16, blockSize}, 0, 1}; span nextBlock = {&nextBlockValue, 1}; - EXPECT_CALL(memory, getCompletedReads()).WillOnce(Return(nextBlock)); - EXPECT_CALL(isa, predecode(_, _, _, _)) - .WillOnce(DoAll(SetArgReferee<3>(macroOp), Return(4))); + ON_CALL(memory, getCompletedReads()).WillByDefault(Return(nextBlock)); + ON_CALL(isa, predecode(_, _, _, _)) + .WillByDefault(DoAll(SetArgReferee<3>(mOp), Return(4))); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + EXPECT_CALL(memory, clearCompletedReads()).Times(4); + EXPECT_CALL(isa, getMaxInstructionSize()).Times(8); + EXPECT_CALL(isa, predecode(_, _, _, _)).Times(4); + + // Tick 4 times to process all 16 bytes of fetched data + for (int i = 0; i < 4; i++) { + fetchUnit.tick(); + } + // Tick a 5th time to ensure all buffered bytes have been used + EXPECT_CALL(memory, getCompletedReads()).Times(1); + EXPECT_CALL(isa, getMaxInstructionSize()).Times(1); + EXPECT_CALL(isa, predecode(_, _, _, _)).Times(0); + fetchUnit.tick(); +} + +// Tests that a properly aligned PC (to the fetch block boundary) is correctly +// fetched +TEST_F(PipelineFetchUnitTest, fetchAligned) { + const uint8_t pc = 16; + + ON_CALL(isa, getMaxInstructionSize()).WillByDefault(Return(insnMaxSizeBytes)); + + MemoryAccessTarget target = {pc, blockSize}; + EXPECT_CALL(isa, getMaxInstructionSize()).Times(1); + EXPECT_CALL(memory, requestRead(target, _)).Times(1); + + // Request block from Memory + fetchUnit.updatePC(pc); + fetchUnit.requestFromPC(); + + MacroOp mOp = {uopPtr}; + MemoryReadResult memReadResult = {target, RegisterValue(0xFFFF, blockSize), + 1}; + span nextBlock = {&memReadResult, 1}; + ON_CALL(memory, getCompletedReads()).WillByDefault(Return(nextBlock)); + ON_CALL(isa, predecode(_, _, _, _)) + .WillByDefault(DoAll(SetArgReferee<3>(mOp), Return(4))); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + EXPECT_CALL(memory, clearCompletedReads()).Times(4); + EXPECT_CALL(isa, getMaxInstructionSize()).Times(8); + EXPECT_CALL(isa, predecode(_, _, _, _)).Times(4); + + // Tick 4 times to process all 16 bytes of fetched data + for (int i = 0; i < 4; i++) { + fetchUnit.tick(); + } + // Tick a 5th time to ensure all buffered bytes have been used + EXPECT_CALL(memory, getCompletedReads()).Times(1); + EXPECT_CALL(memory, clearCompletedReads()).Times(0); + EXPECT_CALL(isa, getMaxInstructionSize()).Times(1); + EXPECT_CALL(isa, predecode(_, _, _, _)).Times(0); + fetchUnit.tick(); +} + +// Tests that halting functionality triggers correctly +TEST_F(PipelineFetchUnitTest, halted) { + EXPECT_FALSE(fetchUnit.hasHalted()); + fetchUnit.tick(); + EXPECT_FALSE(fetchUnit.hasHalted()); + + // Test PC >= programByteLength triggers halting + fetchUnit.updatePC(1024); + EXPECT_TRUE(fetchUnit.hasHalted()); + + // Test PC being incremented to >= programByteLength triggers halting + ON_CALL(isa, getMaxInstructionSize()).WillByDefault(Return(insnMaxSizeBytes)); + fetchUnit.updatePC(1008); + EXPECT_FALSE(fetchUnit.hasHalted()); + + MemoryAccessTarget target = {1008, blockSize}; + EXPECT_CALL(isa, getMaxInstructionSize()).Times(1); + EXPECT_CALL(memory, requestRead(target, _)).Times(1); + fetchUnit.requestFromPC(); + + MacroOp mOp = {uopPtr}; + MemoryReadResult memReadResult = {target, RegisterValue(0xFFFF, blockSize), + 1}; + span nextBlock = {&memReadResult, 1}; + ON_CALL(memory, getCompletedReads()).WillByDefault(Return(nextBlock)); + ON_CALL(isa, predecode(_, _, _, _)) + .WillByDefault(DoAll(SetArgReferee<3>(mOp), Return(4))); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + EXPECT_CALL(memory, clearCompletedReads()).Times(4); + EXPECT_CALL(isa, getMaxInstructionSize()).Times(8); + EXPECT_CALL(isa, predecode(_, _, _, _)).Times(4); + // Tick 4 times to process all 16 bytes of fetched data + for (int i = 0; i < 4; i++) { + fetchUnit.tick(); + } + EXPECT_TRUE(fetchUnit.hasHalted()); +} + +// Tests that fetching a branch instruction (predicted taken) mid block causes a +// branch stall + discards the remaining fetched instructions +TEST_F(PipelineFetchUnitTest, fetchTakenBranchMidBlock) { + const uint8_t pc = 16; + + ON_CALL(isa, getMaxInstructionSize()).WillByDefault(Return(insnMaxSizeBytes)); + + MemoryAccessTarget target = {pc, blockSize}; + EXPECT_CALL(isa, getMaxInstructionSize()).Times(1); + EXPECT_CALL(memory, requestRead(target, _)).Times(1); + + // Request block from memory + fetchUnit.updatePC(pc); + fetchUnit.requestFromPC(); + + MacroOp mOp = {uopPtr}; + MemoryReadResult memReadResult = {target, RegisterValue(0xFFFF, blockSize), + 1}; + span nextBlock = {&memReadResult, 1}; + ON_CALL(memory, getCompletedReads()).WillByDefault(Return(nextBlock)); + ON_CALL(isa, predecode(_, _, _, _)) + .WillByDefault(DoAll(SetArgReferee<3>(mOp), Return(4))); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + + // For first tick, process instruction as non-branch + EXPECT_CALL(memory, clearCompletedReads()).Times(1); + EXPECT_CALL(isa, getMaxInstructionSize()).Times(2); + EXPECT_CALL(isa, predecode(_, _, _, _)).Times(1); + EXPECT_CALL(*uop, isBranch()).WillOnce(Return(false)); + fetchUnit.tick(); + + // For second tick, process a taken branch meaning rest of block is discarded + // & a new memory block is requested + EXPECT_CALL(memory, getCompletedReads()).Times(0); + EXPECT_CALL(memory, clearCompletedReads()).Times(1); + EXPECT_CALL(isa, getMaxInstructionSize()).Times(2); + EXPECT_CALL(isa, predecode(_, _, _, _)).Times(1); + EXPECT_CALL(*uop, isBranch()).WillOnce(Return(true)); + BranchType bType = BranchType::Unconditional; + uint64_t knownOff = 304; + EXPECT_CALL(*uop, getBranchType()).WillOnce(Return(bType)); + EXPECT_CALL(*uop, getKnownOffset()).WillOnce(Return(knownOff)); + BranchPrediction pred = {true, pc + knownOff}; + EXPECT_CALL(predictor, predict(20, bType, knownOff)).WillOnce(Return(pred)); fetchUnit.tick(); + + // Ensure on next tick, predecode is not called + EXPECT_CALL(memory, getCompletedReads()).Times(1); + EXPECT_CALL(memory, clearCompletedReads()).Times(0); + EXPECT_CALL(isa, getMaxInstructionSize()).Times(1); + EXPECT_CALL(isa, predecode(_, _, _, _)).Times(0); + fetchUnit.tick(); + + // Make sure on next call to `requestFromPC`, target is address 320 + // (pred.target) + target = {pred.target, blockSize}; + EXPECT_CALL(isa, getMaxInstructionSize()).Times(1); + EXPECT_CALL(memory, requestRead(target, _)).Times(1); + fetchUnit.requestFromPC(); +} + +// Tests the functionality of the Loop Buffer +TEST_F(PipelineFetchUnitTest, fetchUnitLoopBuffer) { + // Register loop boundary + // Fill loop buffer + // Have loop buffer supply instructions + // Make sure `requestFromPC` does nothing + // Exit from buffer mid supply due to a branch + // Ensure `requestFromPC` works again } } // namespace pipeline From 4ce5b87d389bf14a406276f9e5917812821bbb2d Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 6 Dec 2023 15:55:51 +0000 Subject: [PATCH 21/96] Added M1PortAllocator unit tests. --- test/unit/CMakeLists.txt | 2 +- test/unit/pipeline/M1PortAllocatorTest.cc | 157 ++++++++++++++++++++++ 2 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 test/unit/pipeline/M1PortAllocatorTest.cc diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index f5dd16c848..920019297f 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -1,12 +1,12 @@ set(TEST_SOURCES pipeline/A64FXPortAllocatorTest.cc pipeline/BalancedPortAllocatorTest.cc - pipeline/ExecuteUnitTest.cc pipeline/DecodeUnitTest.cc pipeline/DispatchIssueUnitTest.cc pipeline/ExecuteUnitTest.cc pipeline/FetchUnitTest.cc pipeline/LoadStoreQueueTest.cc + pipeline/M1PortAllocatorTest.cc pipeline/PipelineBufferTest.cc pipeline/RegisterAliasTableTest.cc pipeline/ReorderBufferTest.cc diff --git a/test/unit/pipeline/M1PortAllocatorTest.cc b/test/unit/pipeline/M1PortAllocatorTest.cc new file mode 100644 index 0000000000..bdfe4c6cd7 --- /dev/null +++ b/test/unit/pipeline/M1PortAllocatorTest.cc @@ -0,0 +1,157 @@ +#include "gtest/gtest.h" +#include "simeng/pipeline/M1PortAllocator.hh" + +namespace simeng { +namespace pipeline { + +class M1PortAllocatorTest : public testing::Test { + public: + M1PortAllocatorTest() : portAllocator(portArrangement, rsArrangement) { + portAllocator.setRSSizeGetter( + [this](std::vector& sizeVec) { rsSizes(sizeVec); }); + } + + void rsSizes(std::vector& sizeVec) const { + sizeVec = rsFreeEntries; + } + + protected: + // Representation of the M1 Firestorm reservation station layout + std::vector rsFreeEntries = {24, 26, 16, 12, 28, 28, 12, + 12, 12, 12, 36, 36, 36, 36}; + // Representation of the M1 Firestorm port layout + const std::vector> portArrangement = { + {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}}; + // Representation of the M1 Firestorm Reservation Station Arrangement + // std::pair = + std::vector> rsArrangement = { + {0, 24}, {1, 26}, {2, 16}, {3, 12}, {4, 28}, {5, 28}, {6, 12}, + {7, 12}, {8, 12}, {9, 12}, {10, 36}, {11, 36}, {12, 36}, {13, 36}}; + + M1PortAllocator portAllocator; +}; + +// Tests correct allocation for single port groups (i.e. INT_DIV_OR_SQRT) +TEST_F(M1PortAllocatorTest, singlePortAllocation) { + std::vector ports = {4}; + EXPECT_EQ(portAllocator.allocate(ports), 4); +} + +// Tests correct allocation of multiple INT_SIMPLE instructions +TEST_F(M1PortAllocatorTest, allocationIntSimple) { + std::vector ports = {0, 1, 2, 3, 4, 5}; + EXPECT_EQ(portAllocator.allocate(ports), 0); + rsFreeEntries[0]--; + EXPECT_EQ(portAllocator.allocate(ports), 1); + rsFreeEntries[1]--; + EXPECT_EQ(portAllocator.allocate(ports), 2); + rsFreeEntries[2]--; + EXPECT_EQ(portAllocator.allocate(ports), 3); + rsFreeEntries[3]--; + EXPECT_EQ(portAllocator.allocate(ports), 4); + rsFreeEntries[4]--; + EXPECT_EQ(portAllocator.allocate(ports), 5); + rsFreeEntries[5]--; + EXPECT_EQ(portAllocator.allocate(ports), 0); + rsFreeEntries[0]--; + + // Ensure `issued()` logic works as expected + portAllocator.issued(3); + rsFreeEntries[3]++; + EXPECT_EQ(portAllocator.allocate(ports), 3); + rsFreeEntries[3]--; +} + +// Tests correct allocation of multiple BRANCH instructions +TEST_F(M1PortAllocatorTest, allocationBranch) { + std::vector ports = {0, 1}; + EXPECT_EQ(portAllocator.allocate(ports), 0); + rsFreeEntries[0]--; + EXPECT_EQ(portAllocator.allocate(ports), 1); + rsFreeEntries[1]--; + EXPECT_EQ(portAllocator.allocate(ports), 0); + rsFreeEntries[0]--; + + // Ensure `issued()` logic works as expected + portAllocator.issued(0); + rsFreeEntries[0]++; + EXPECT_EQ(portAllocator.allocate(ports), 0); + rsFreeEntries[0]--; +} + +// Tests correct allocation of multiple INT_MUL instructions +TEST_F(M1PortAllocatorTest, allocationIntMul) { + std::vector ports = {4, 5}; + EXPECT_EQ(portAllocator.allocate(ports), 4); + rsFreeEntries[4]--; + EXPECT_EQ(portAllocator.allocate(ports), 5); + rsFreeEntries[5]--; + EXPECT_EQ(portAllocator.allocate(ports), 4); + rsFreeEntries[4]--; + + // Ensure `issued()` logic works as expected + portAllocator.issued(4); + rsFreeEntries[4]++; + EXPECT_EQ(portAllocator.allocate(ports), 4); + rsFreeEntries[4]--; +} + +// Tests correct allocation of multiple LOAD instructions +TEST_F(M1PortAllocatorTest, allocationLoad) { + std::vector ports = {7, 8, 9}; + EXPECT_EQ(portAllocator.allocate(ports), 7); + rsFreeEntries[7]--; + EXPECT_EQ(portAllocator.allocate(ports), 8); + rsFreeEntries[8]--; + EXPECT_EQ(portAllocator.allocate(ports), 9); + rsFreeEntries[9]--; + EXPECT_EQ(portAllocator.allocate(ports), 7); + rsFreeEntries[7]--; + + // Ensure `issued()` logic works as expected + portAllocator.issued(9); + rsFreeEntries[9]++; + EXPECT_EQ(portAllocator.allocate(ports), 9); + rsFreeEntries[9]--; +} + +// Tests correct allocation of multiple STORE instructions +TEST_F(M1PortAllocatorTest, allocationStore) { + std::vector ports = {6, 7}; + EXPECT_EQ(portAllocator.allocate(ports), 6); + rsFreeEntries[6]--; + EXPECT_EQ(portAllocator.allocate(ports), 7); + rsFreeEntries[7]--; + EXPECT_EQ(portAllocator.allocate(ports), 6); + rsFreeEntries[6]--; + + // Ensure `issued()` logic works as expected + portAllocator.issued(6); + rsFreeEntries[6]++; + EXPECT_EQ(portAllocator.allocate(ports), 6); + rsFreeEntries[6]--; +} + +// Tests correct allocation of multiple FP / VECTOR instructions +TEST_F(M1PortAllocatorTest, allocationFpVec) { + std::vector ports = {10, 11, 12, 13}; + EXPECT_EQ(portAllocator.allocate(ports), 10); + rsFreeEntries[10]--; + EXPECT_EQ(portAllocator.allocate(ports), 11); + rsFreeEntries[11]--; + EXPECT_EQ(portAllocator.allocate(ports), 12); + rsFreeEntries[12]--; + EXPECT_EQ(portAllocator.allocate(ports), 13); + rsFreeEntries[13]--; + EXPECT_EQ(portAllocator.allocate(ports), 10); + rsFreeEntries[10]--; + + // Ensure `issued()` logic works as expected + portAllocator.issued(12); + rsFreeEntries[12]++; + EXPECT_EQ(portAllocator.allocate(ports), 12); + rsFreeEntries[12]--; +} + +} // namespace pipeline +} // namespace simeng \ No newline at end of file From abece7e9bb147547e7b017fcc718c8cd123388c0 Mon Sep 17 00:00:00 2001 From: Jack Jones Date: Wed, 6 Dec 2023 16:55:23 +0000 Subject: [PATCH 22/96] Added new fetch unit Loop Buffer tests --- test/unit/pipeline/FetchUnitTest.cc | 180 ++++++++++++++++++++++++++-- 1 file changed, 172 insertions(+), 8 deletions(-) diff --git a/test/unit/pipeline/FetchUnitTest.cc b/test/unit/pipeline/FetchUnitTest.cc index e7878a7248..7766498e2c 100644 --- a/test/unit/pipeline/FetchUnitTest.cc +++ b/test/unit/pipeline/FetchUnitTest.cc @@ -10,8 +10,13 @@ #include "simeng/pipeline/PipelineBuffer.hh" using ::testing::_; +using ::testing::AllOf; +using ::testing::AnyNumber; +using ::testing::AnyOf; +using ::testing::AtLeast; using ::testing::DoAll; using ::testing::Field; +using ::testing::Ne; using ::testing::Return; using ::testing::SetArgReferee; @@ -26,7 +31,9 @@ class PipelineFetchUnitTest : public testing::Test { completedReads(&fetchBuffer, 1), fetchUnit(output, memory, 1024, 0, blockSize, isa, predictor), uop(new MockInstruction), - uopPtr(uop) { + uopPtr(uop), + uop2(new MockInstruction), + uopPtr2(uop2) { uopPtr->setInstructionAddress(0); } @@ -46,6 +53,8 @@ class PipelineFetchUnitTest : public testing::Test { MockInstruction* uop; std::shared_ptr uopPtr; + MockInstruction* uop2; + std::shared_ptr uopPtr2; }; // Tests that ticking a fetch unit attempts to predecode from the correct @@ -261,14 +270,169 @@ TEST_F(PipelineFetchUnitTest, fetchTakenBranchMidBlock) { fetchUnit.requestFromPC(); } -// Tests the functionality of the Loop Buffer -TEST_F(PipelineFetchUnitTest, fetchUnitLoopBuffer) { +// Tests the functionality of the supplying from the Loop Buffer +TEST_F(PipelineFetchUnitTest, supplyFromLoopBuffer) { + // Set instructions to be fetched from memory + MemoryReadResult memReadResult = { + {0x0, blockSize}, RegisterValue(0xFFFF, blockSize), 1}; + span nextBlock = {&memReadResult, 1}; + ON_CALL(memory, getCompletedReads()).WillByDefault(Return(nextBlock)); + + ON_CALL(isa, getMaxInstructionSize()).WillByDefault(Return(insnMaxSizeBytes)); + // Register loop boundary - // Fill loop buffer - // Have loop buffer supply instructions - // Make sure `requestFromPC` does nothing - // Exit from buffer mid supply due to a branch - // Ensure `requestFromPC` works again + fetchUnit.registerLoopBoundary(0xC); + + // Set the instructions, within the loop body, to be returned from predecode + MacroOp mOp2 = {uopPtr2}; + ON_CALL(isa, predecode(_, _, 0xC, _)) + .WillByDefault(DoAll(SetArgReferee<3>(mOp2), Return(4))); + ON_CALL(*uop2, isBranch()).WillByDefault(Return(true)); + + MacroOp mOp = {uopPtr}; + ON_CALL(isa, predecode(_, _, Ne(0xC), _)) + .WillByDefault(DoAll(SetArgReferee<3>(mOp), Return(4))); + ON_CALL(*uop, isBranch()).WillByDefault(Return(false)); + + // Set the expectation from the predcitor to be true so a loop body will + // be detected + ON_CALL(predictor, predict(_, _, _)) + .WillByDefault(Return(BranchPrediction({true, 0x0}))); + + // Set Loop Buffer state to be LoopBufferState::FILLING + // Tick 4 times to process all 16 bytes of fetched data + for (int i = 0; i < 4; i++) { + fetchUnit.tick(); + } + + // Fetch the next block of instructions from memory + fetchUnit.requestFromPC(); + + // Fill Loop Buffer and set its state to be LoopBufferState::SUPPLYING + // Tick 4 times to process all 16 bytes of fetched data + for (int i = 0; i < 4; i++) { + fetchUnit.tick(); + } + + // Whilst the Loop Buffer state is LoopBufferState::SUPPLYING, the request + // read should never be called + EXPECT_CALL(memory, requestRead(_, _)).Times(0); + EXPECT_CALL(isa, getMaxInstructionSize()).Times(0); + EXPECT_CALL(memory, getCompletedReads()).Times(0); + fetchUnit.requestFromPC(); + + // Empty output buffer and ensure the correct instructions are supplied from + // the Loop Buffer + output.fill({}); + fetchUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], mOp); + output.fill({}); + fetchUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], mOp); + output.fill({}); + fetchUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], mOp); + output.fill({}); + fetchUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], mOp2); + + // Flush the Loop Buffer and ensure correct instructions are fetched from + // memory + fetchUnit.flushLoopBuffer(); + fetchUnit.updatePC(0x0); + EXPECT_CALL(memory, requestRead(_, _)).Times(AtLeast(1)); + EXPECT_CALL(isa, getMaxInstructionSize()).Times(AtLeast(1)); + EXPECT_CALL(memory, getCompletedReads()).Times(AtLeast(1)); + fetchUnit.requestFromPC(); + output.fill({}); + fetchUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], mOp); + output.fill({}); + fetchUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], mOp); + output.fill({}); + fetchUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], mOp); + output.fill({}); + fetchUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], mOp2); +} + +// Tests the functionality of idling the supply to the Loop Buffer one of not +// taken branch at the loopBoundaryAddress_ +TEST_F(PipelineFetchUnitTest, idleLoopBufferDueToNotTakenBoundary) { + // Set instructions to be fetched from memory + MemoryReadResult memReadResultA = { + {0x0, blockSize}, RegisterValue(0xFFFF, blockSize), 1}; + span nextBlockA = {&memReadResultA, 1}; + MemoryReadResult memReadResultB = { + {0x10, blockSize}, RegisterValue(0xFFFF, blockSize), 1}; + span nextBlockB = {&memReadResultB, 1}; + EXPECT_CALL(memory, getCompletedReads()).WillRepeatedly(Return(nextBlockA)); + + ON_CALL(isa, getMaxInstructionSize()).WillByDefault(Return(insnMaxSizeBytes)); + + // Register loop boundary + fetchUnit.registerLoopBoundary(0xC); + + // Set the instructions, within the loop body, to be returned from predecode + MacroOp mOp2 = {uopPtr2}; + ON_CALL(isa, predecode(_, _, AnyOf(0xC, 0x1C), _)) + .WillByDefault(DoAll(SetArgReferee<3>(mOp2), Return(4))); + ON_CALL(*uop2, isBranch()).WillByDefault(Return(true)); + + MacroOp mOp = {uopPtr}; + ON_CALL(isa, predecode(_, _, AllOf(Ne(0xC), Ne(0x1C)), _)) + .WillByDefault(DoAll(SetArgReferee<3>(mOp), Return(4))); + ON_CALL(*uop, isBranch()).WillByDefault(Return(false)); + + // Set the first expectation from the predcitor to be true so a loop body will + // be detected + EXPECT_CALL(predictor, predict(_, _, _)) + .WillOnce(Return(BranchPrediction({true, 0x0}))); + + // Set Loop Buffer state to be LoopBufferState::FILLING + // Tick 4 times to process all 16 bytes of fetched data + for (int i = 0; i < 4; i++) { + fetchUnit.tick(); + } + + // Fetch the next block of instructions from memory and change the expected + // outcome of the branch predictor + fetchUnit.requestFromPC(); + EXPECT_CALL(predictor, predict(_, _, _)) + .WillRepeatedly(Return(BranchPrediction({false, 0x0}))); + + // Attempt to fill Loop Buffer but prevent it on a not taken outcome at the + // loopBoundaryAddress_ branch + // Tick 4 times to process all 16 bytes of fetched data + for (int i = 0; i < 4; i++) { + fetchUnit.tick(); + } + + // Set the expectation for the next block to be fetched after the Loop Buffer + // state has been reset + const MemoryAccessTarget target = {0x10, blockSize}; + EXPECT_CALL(memory, getCompletedReads()).WillRepeatedly(Return(nextBlockB)); + EXPECT_CALL(memory, requestRead(target, _)).Times(1); + + // Fetch the next block of instructions from memory + fetchUnit.requestFromPC(); + + // Empty output buffer and ensure the correct instructions are fetched from + // memory + output.fill({}); + fetchUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], mOp); + output.fill({}); + fetchUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], mOp); + output.fill({}); + fetchUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], mOp); + output.fill({}); + fetchUnit.tick(); + EXPECT_EQ(output.getTailSlots()[0], mOp2); } } // namespace pipeline From 11f325d546ba7a36ffe4c692e80c4a259ed4c847 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 6 Dec 2023 17:06:21 +0000 Subject: [PATCH 23/96] Added unit tests for RegisterFileSet. --- test/unit/CMakeLists.txt | 1 + test/unit/RegisterFileSetTest.cc | 48 ++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 test/unit/RegisterFileSetTest.cc diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 920019297f..19846e09b3 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -18,6 +18,7 @@ set(TEST_SOURCES OSTest.cc PoolTest.cc ProcessTest.cc + RegisterFileSetTest.cc RegisterValueTest.cc ) diff --git a/test/unit/RegisterFileSetTest.cc b/test/unit/RegisterFileSetTest.cc new file mode 100644 index 0000000000..ed8485eb61 --- /dev/null +++ b/test/unit/RegisterFileSetTest.cc @@ -0,0 +1,48 @@ +#include "gtest/gtest.h" +#include "simeng/RegisterFileSet.hh" + +namespace simeng { +namespace pipeline { + +class RegisterFileSetTest : public ::testing::Test { + public: + RegisterFileSetTest() : regFileSet(regFileStruct) {} + + protected: + const std::vector regFileStruct = { + {8, 10}, {24, 15}, {256, 31}}; + + RegisterFileSet regFileSet; +}; + +// Ensure RegisterFileSet is constructed correctly +TEST_F(RegisterFileSetTest, validConstruction) { + for (uint8_t i = 0; i < regFileStruct.size(); i++) { + for (uint16_t j = 0; j < regFileStruct[i].quantity; j++) { + const Register reg = {i, j}; + EXPECT_EQ(regFileSet.get(reg), RegisterValue(0, regFileStruct[i].bytes)); + } + } +} + +// Ensure we can read and write values to the register file +TEST_F(RegisterFileSetTest, readWrite) { + for (uint8_t i = 0; i < regFileStruct.size(); i++) { + const uint16_t regSize = regFileStruct[i].bytes; + const uint16_t maxRegTag = regFileStruct[i].quantity - 1; + const Register r0 = {i, 0}; + const Register rMax = {i, maxRegTag}; + + EXPECT_EQ(regFileSet.get(r0), RegisterValue(0, regSize)); + EXPECT_EQ(regFileSet.get(rMax), RegisterValue(0, regSize)); + + regFileSet.set(r0, RegisterValue(20, regSize)); + regFileSet.set(rMax, RegisterValue(40, regSize)); + + EXPECT_EQ(regFileSet.get(r0), RegisterValue(20, regSize)); + EXPECT_EQ(regFileSet.get(rMax), RegisterValue(40, regSize)); + } +} + +} // namespace pipeline +} // namespace simeng \ No newline at end of file From 483f8c507e3d8f1d9709674e99c0bab5b0def59b Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 6 Dec 2023 17:10:58 +0000 Subject: [PATCH 24/96] Added unit tests for ArchitecturalRegisterFileSet. --- test/unit/ArchitecturalRegisterFileSetTest.cc | 41 +++++++++++++++++++ test/unit/CMakeLists.txt | 1 + 2 files changed, 42 insertions(+) create mode 100644 test/unit/ArchitecturalRegisterFileSetTest.cc diff --git a/test/unit/ArchitecturalRegisterFileSetTest.cc b/test/unit/ArchitecturalRegisterFileSetTest.cc new file mode 100644 index 0000000000..1529ef1cea --- /dev/null +++ b/test/unit/ArchitecturalRegisterFileSetTest.cc @@ -0,0 +1,41 @@ +#include "gtest/gtest.h" +#include "simeng/ArchitecturalRegisterFileSet.hh" + +namespace simeng { +namespace pipeline { + +class ArchitecturalRegisterFileSetTest : public ::testing::Test { + public: + ArchitecturalRegisterFileSetTest() + : physRegFileSet(regFileStruct), archRegFileSet(physRegFileSet) {} + + protected: + const std::vector regFileStruct = { + {8, 10}, {24, 15}, {256, 31}}; + + RegisterFileSet physRegFileSet; + + ArchitecturalRegisterFileSet archRegFileSet; +}; + +// Ensure we can read and write values to the architectural register file +TEST_F(ArchitecturalRegisterFileSetTest, readWrite) { + for (uint8_t i = 0; i < regFileStruct.size(); i++) { + const uint16_t regSize = regFileStruct[i].bytes; + const uint16_t maxRegTag = regFileStruct[i].quantity - 1; + const Register r0 = {i, 0}; + const Register rMax = {i, maxRegTag}; + + EXPECT_EQ(archRegFileSet.get(r0), RegisterValue(0, regSize)); + EXPECT_EQ(archRegFileSet.get(rMax), RegisterValue(0, regSize)); + + archRegFileSet.set(r0, RegisterValue(20, regSize)); + archRegFileSet.set(rMax, RegisterValue(40, regSize)); + + EXPECT_EQ(archRegFileSet.get(r0), RegisterValue(20, regSize)); + EXPECT_EQ(archRegFileSet.get(rMax), RegisterValue(40, regSize)); + } +} + +} // namespace pipeline +} // namespace simeng \ No newline at end of file diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 19846e09b3..bb2feeb636 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -11,6 +11,7 @@ set(TEST_SOURCES pipeline/RegisterAliasTableTest.cc pipeline/ReorderBufferTest.cc pipeline/WritebackUnitTest.cc + ArchitecturalRegisterFileSettest.cc ArchitectureTest.cc FixedLatencyMemoryInterfaceTest.cc FlatMemoryInterfaceTest.cc From e76031721e744fe1fb7238a2bc10221c99aa0dd4 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 6 Dec 2023 17:46:15 +0000 Subject: [PATCH 25/96] Added unit tests for MappedRegisterFileSet. --- .../simeng/pipeline/RegisterAliasTable.hh | 2 +- test/unit/CMakeLists.txt | 1 + .../pipeline/MappedRegisterFileSetTest.cc | 56 +++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 test/unit/pipeline/MappedRegisterFileSetTest.cc diff --git a/src/include/simeng/pipeline/RegisterAliasTable.hh b/src/include/simeng/pipeline/RegisterAliasTable.hh index 84a9ec4379..43b8e0db4c 100644 --- a/src/include/simeng/pipeline/RegisterAliasTable.hh +++ b/src/include/simeng/pipeline/RegisterAliasTable.hh @@ -15,7 +15,7 @@ class RegisterAliasTable { * structure, and the corresponding numbers of physical registers that should * be available. */ RegisterAliasTable(std::vector architecturalStructure, - std::vector physicalStructure); + std::vector physicalRegisterCounts); /** Retrieve the current physical register assigned to the provided * architectural register. */ diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index bb2feeb636..af26b4051c 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -7,6 +7,7 @@ set(TEST_SOURCES pipeline/FetchUnitTest.cc pipeline/LoadStoreQueueTest.cc pipeline/M1PortAllocatorTest.cc + pipeline/MappedRegisterFileSetTest.cc pipeline/PipelineBufferTest.cc pipeline/RegisterAliasTableTest.cc pipeline/ReorderBufferTest.cc diff --git a/test/unit/pipeline/MappedRegisterFileSetTest.cc b/test/unit/pipeline/MappedRegisterFileSetTest.cc new file mode 100644 index 0000000000..fc63657779 --- /dev/null +++ b/test/unit/pipeline/MappedRegisterFileSetTest.cc @@ -0,0 +1,56 @@ +#include "gtest/gtest.h" +#include "simeng/pipeline/MappedRegisterFileSet.hh" + +namespace simeng { +namespace pipeline { + +class MappedRegisterFileSetTest : public ::testing::Test { + public: + MappedRegisterFileSetTest() + : regFileSet(physRegFileStruct), + rat(archRegFileStruct, physRegCounts), + mappedRegFile(regFileSet, rat) {} + + protected: + const std::vector archRegFileStruct = { + {8, 10}, {24, 15}, {256, 31}}; + const std::vector physRegFileStruct = { + {8, 20}, {24, 30}, {256, 62}}; + const std::vector physRegCounts = {20, 30, 62}; + + RegisterFileSet regFileSet; + RegisterAliasTable rat; + + MappedRegisterFileSet mappedRegFile; +}; + +// Ensure that with continually changing physical-architectural register mapping +// changes, the correct register is being updated with set(). +TEST_F(MappedRegisterFileSetTest, getSet) { + // Loop through all register types + for (uint8_t i = 0; i < archRegFileStruct.size(); i++) { + // Keep allocating the same register to a) keep past values and b) more + // easily verify correct functionality + const uint16_t maxRegTag = archRegFileStruct[i].quantity - 1; + const uint16_t regSize = archRegFileStruct[i].bytes; + const Register rMax = {i, maxRegTag}; + + std::vector physRegs; + for (int j = 2; j < 12; j++) { + physRegs.push_back(rat.allocate(rMax)); + RegisterValue regVal = RegisterValue(j, regSize); + mappedRegFile.set(rMax, regVal); + EXPECT_EQ(mappedRegFile.get(rMax), regVal); + } + + for (int k = 0; k < 10; k++) { + // RAT constructed where Arch-Phys mapping is 1:1. So, first re-mapped + // value will be to maxArchRegRag + 1 + EXPECT_EQ(physRegs[k].tag, maxRegTag + k + 1); + EXPECT_EQ(physRegs[k].type, i); + EXPECT_EQ(regFileSet.get(physRegs[k]), RegisterValue(k + 2, regSize)); + } + } +} +} // namespace pipeline +} // namespace simeng \ No newline at end of file From 3448ab540bfc90825440fefa328791edcf31ed8e Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 6 Dec 2023 17:50:44 +0000 Subject: [PATCH 26/96] Minor fix for ExecuteUnitTest. --- test/unit/pipeline/ExecuteUnitTest.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/unit/pipeline/ExecuteUnitTest.cc b/test/unit/pipeline/ExecuteUnitTest.cc index 3885d80952..8f3fb19713 100644 --- a/test/unit/pipeline/ExecuteUnitTest.cc +++ b/test/unit/pipeline/ExecuteUnitTest.cc @@ -228,8 +228,11 @@ TEST_F(PipelineExecuteUnitTest, OperationStall) { uop->setLatency(5); uop->setStallCycles(5); ON_CALL(*uop, getGroup()).WillByDefault(Return(3)); + ON_CALL(*uop, canExecute()).WillByDefault(Return(true)); ON_CALL(*secondUop, getGroup()).WillByDefault(Return(4)); + ON_CALL(*secondUop, canExecute()).WillByDefault(Return(true)); ON_CALL(*thirdUop, getGroup()).WillByDefault(Return(2)); + ON_CALL(*thirdUop, canExecute()).WillByDefault(Return(true)); EXPECT_CALL(*uop, execute()).Times(1); EXPECT_CALL(*secondUop, execute()).Times(1); From 4af60550dfd0bf7421d1271c2f5f007581a384cf Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 6 Dec 2023 18:55:41 +0000 Subject: [PATCH 27/96] Further minor test fixes. --- test/unit/pipeline/ExecuteUnitTest.cc | 3 +++ test/unit/pipeline/FetchUnitTest.cc | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/test/unit/pipeline/ExecuteUnitTest.cc b/test/unit/pipeline/ExecuteUnitTest.cc index 8f3fb19713..9c69686dec 100644 --- a/test/unit/pipeline/ExecuteUnitTest.cc +++ b/test/unit/pipeline/ExecuteUnitTest.cc @@ -320,8 +320,11 @@ TEST_F(PipelineExecuteUnitTest, purgeFlushed) { uop->setStallCycles(5); // Set up instructions so that only one is in the EU pipeline at a time ON_CALL(*uop, getGroup()).WillByDefault(Return(3)); + ON_CALL(*uop, canExecute()).WillByDefault(Return(true)); ON_CALL(*secondUop, getGroup()).WillByDefault(Return(4)); + ON_CALL(*secondUop, canExecute()).WillByDefault(Return(true)); ON_CALL(*thirdUop, getGroup()).WillByDefault(Return(5)); + ON_CALL(*thirdUop, canExecute()).WillByDefault(Return(true)); EXPECT_CALL(*uop, execute()).Times(0); EXPECT_CALL(*secondUop, execute()).Times(0); diff --git a/test/unit/pipeline/FetchUnitTest.cc b/test/unit/pipeline/FetchUnitTest.cc index 7766498e2c..df6396c5e6 100644 --- a/test/unit/pipeline/FetchUnitTest.cc +++ b/test/unit/pipeline/FetchUnitTest.cc @@ -173,6 +173,7 @@ TEST_F(PipelineFetchUnitTest, fetchAligned) { // Tests that halting functionality triggers correctly TEST_F(PipelineFetchUnitTest, halted) { + ON_CALL(isa, getMaxInstructionSize()).WillByDefault(Return(insnMaxSizeBytes)); EXPECT_FALSE(fetchUnit.hasHalted()); fetchUnit.tick(); EXPECT_FALSE(fetchUnit.hasHalted()); @@ -182,7 +183,6 @@ TEST_F(PipelineFetchUnitTest, halted) { EXPECT_TRUE(fetchUnit.hasHalted()); // Test PC being incremented to >= programByteLength triggers halting - ON_CALL(isa, getMaxInstructionSize()).WillByDefault(Return(insnMaxSizeBytes)); fetchUnit.updatePC(1008); EXPECT_FALSE(fetchUnit.hasHalted()); From f4998a4ff4de61906b7428fd5fc5f975eff1c116 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 7 Dec 2023 11:19:05 +0000 Subject: [PATCH 28/96] Fixed shiftValue tests. --- src/include/simeng/arch/aarch64/Instruction.hh | 4 ++-- test/regression/aarch64/ShiftValueTest.cc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/include/simeng/arch/aarch64/Instruction.hh b/src/include/simeng/arch/aarch64/Instruction.hh index d61bb43582..5277f72571 100644 --- a/src/include/simeng/arch/aarch64/Instruction.hh +++ b/src/include/simeng/arch/aarch64/Instruction.hh @@ -27,14 +27,14 @@ std::enable_if_t && std::is_unsigned_v, T> shiftValue( return static_cast>(value) >> amount; case ARM64_SFT_ROR: { // Assuming sizeof(T) is a power of 2. - const auto mask = sizeof(T) * 8 - 1; + const T mask = sizeof(T) * 8 - 1; assert((amount <= mask) && "Rotate amount exceeds type width"); amount &= mask; return (value >> amount) | (value << ((-amount) & mask)); } case ARM64_SFT_MSL: { // pad in with ones instead of zeros - const auto mask = (1 << amount) - 1; + const T mask = (1 << amount) - 1; return (value << amount) | mask; } case ARM64_SFT_INVALID: diff --git a/test/regression/aarch64/ShiftValueTest.cc b/test/regression/aarch64/ShiftValueTest.cc index 4ee7286cd0..a4f09320bb 100644 --- a/test/regression/aarch64/ShiftValueTest.cc +++ b/test/regression/aarch64/ShiftValueTest.cc @@ -22,7 +22,7 @@ TEST(ShiftValueTest, MSL) { const uint64_t d = 0xFFFFFFFF00000000; EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_MSL, 63), - 0xFFFFFFFE00000001); + 0x000000007FFFFFFF); EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_MSL, 0), d); } From f3513db5197060b05e3059bceeec629c3dfaa8bc Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 7 Dec 2023 14:19:41 +0000 Subject: [PATCH 29/96] Removed usage of Dynamic_cast to allow for compilation in Debug mode. --- CMakeLists.txt | 3 +++ test/unit/ArchitectureTest.cc | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index da89b4c9b5..13e9f84bdf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,6 +82,9 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON) # Enable additional compiler warnings for all targets add_compile_options(-Wall) +# Disable RTTI for all targets +add_compile_options($<$:-fno-rtti>) + # Include SimEng API headers in all targets and install them include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/include) install(DIRECTORY src/include/simeng diff --git a/test/unit/ArchitectureTest.cc b/test/unit/ArchitectureTest.cc index 4690642b93..68478b5b5c 100644 --- a/test/unit/ArchitectureTest.cc +++ b/test/unit/ArchitectureTest.cc @@ -207,9 +207,12 @@ TEST_F(AArch64ArchitectureTest, getExecutionInfo) { EXPECT_EQ(insn[0]->getInstructionAddress(), 0x4); EXPECT_EQ(insn[0]->exceptionEncountered(), false); - // Insn[0] = z1.s, p0/m, z1.s, z0.s + // Insn[0] = fdivr z1.s, p0/m, z1.s, z0.s simeng::arch::aarch64::Instruction* aarch64Insn = - dynamic_cast(insn[0].get()); + (simeng::arch::aarch64::Instruction*)insn[0].get(); + // The above *dirty* conversion between Abstract and derived types is required + // to avoid the use of a dynamic_cast. + simeng::arch::aarch64::ExecutionInfo info = arch->getExecutionInfo(*aarch64Insn); From 102c1e60509004681967a5013ab470a52307dc6b Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 7 Dec 2023 14:43:51 +0000 Subject: [PATCH 30/96] Added flush test to GenericPredictor. --- test/unit/GenericPredictorTest.cc | 37 +++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/unit/GenericPredictorTest.cc b/test/unit/GenericPredictorTest.cc index 522bad3067..64ec1b487f 100644 --- a/test/unit/GenericPredictorTest.cc +++ b/test/unit/GenericPredictorTest.cc @@ -152,4 +152,41 @@ TEST_F(GenericPredictorTest, GlobalIndexing) { predictor.update(0x1F, true, 0xBA, BranchType::Conditional); } +// Test Flush of RAS functionality +TEST_F(GenericPredictorTest, flush) { + auto predictor = simeng::GenericPredictor(YAML::Load( + "{Branch-Predictor: {BTB-Tag-Bits: 11, Saturating-Count-Bits: 2, " + "Global-History-Length: 10, RAS-entries: 10, Fallback-Static-Predictor: " + "2}}")); + // Add some entries to the RAS + auto prediction = predictor.predict(8, BranchType::SubroutineCall, 8); + EXPECT_TRUE(prediction.taken); + EXPECT_EQ(prediction.target, 16); + prediction = predictor.predict(24, BranchType::SubroutineCall, 8); + EXPECT_TRUE(prediction.taken); + EXPECT_EQ(prediction.target, 32); + prediction = predictor.predict(40, BranchType::SubroutineCall, 8); + EXPECT_TRUE(prediction.taken); + EXPECT_EQ(prediction.target, 48); + + // Start getting entries from RAS + prediction = predictor.predict(52, BranchType::Return, 0); + EXPECT_TRUE(prediction.taken); + EXPECT_EQ(prediction.target, 44); + prediction = predictor.predict(36, BranchType::Return, 0); + EXPECT_TRUE(prediction.taken); + EXPECT_EQ(prediction.target, 28); + + // Flush address + predictor.flush(36); + + // Continue getting entries from RAS + prediction = predictor.predict(20, BranchType::Return, 0); + EXPECT_TRUE(prediction.taken); + EXPECT_EQ(prediction.target, 28); + prediction = predictor.predict(16, BranchType::Return, 0); + EXPECT_TRUE(prediction.taken); + EXPECT_EQ(prediction.target, 12); +} + } // namespace simeng From 5d22b122bfa0a94422db04b7b0a000eaad479646 Mon Sep 17 00:00:00 2001 From: Jack Jones Date: Thu, 7 Dec 2023 15:15:25 +0000 Subject: [PATCH 31/96] Fixed incorrect case for ArchitecturalRegisterFileSetTest.cc --- test/unit/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index af26b4051c..08a9443cb0 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -12,7 +12,7 @@ set(TEST_SOURCES pipeline/RegisterAliasTableTest.cc pipeline/ReorderBufferTest.cc pipeline/WritebackUnitTest.cc - ArchitecturalRegisterFileSettest.cc + ArchitecturalRegisterFileSetTest.cc ArchitectureTest.cc FixedLatencyMemoryInterfaceTest.cc FlatMemoryInterfaceTest.cc From e02c938aa4ea2bc6aeb4d9978e94b290f59db6a4 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 7 Dec 2023 15:27:47 +0000 Subject: [PATCH 32/96] Changed dirty pointer cast to reinterpret_Cast. --- test/unit/ArchitectureTest.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/unit/ArchitectureTest.cc b/test/unit/ArchitectureTest.cc index 68478b5b5c..431f864e89 100644 --- a/test/unit/ArchitectureTest.cc +++ b/test/unit/ArchitectureTest.cc @@ -209,9 +209,7 @@ TEST_F(AArch64ArchitectureTest, getExecutionInfo) { // Insn[0] = fdivr z1.s, p0/m, z1.s, z0.s simeng::arch::aarch64::Instruction* aarch64Insn = - (simeng::arch::aarch64::Instruction*)insn[0].get(); - // The above *dirty* conversion between Abstract and derived types is required - // to avoid the use of a dynamic_cast. + reinterpret_cast(insn[0].get()); simeng::arch::aarch64::ExecutionInfo info = arch->getExecutionInfo(*aarch64Insn); From 1e6ca462c4afd13510866df8a62333427e92df34 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 8 Dec 2023 15:30:15 +0000 Subject: [PATCH 33/96] Minor change to EU unit test. --- test/unit/pipeline/ExecuteUnitTest.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/unit/pipeline/ExecuteUnitTest.cc b/test/unit/pipeline/ExecuteUnitTest.cc index 9c69686dec..3fba569bb9 100644 --- a/test/unit/pipeline/ExecuteUnitTest.cc +++ b/test/unit/pipeline/ExecuteUnitTest.cc @@ -56,8 +56,8 @@ class PipelineExecuteUnitTest : public testing::Test { MockInstruction* thirdUop; std::shared_ptr uopPtr; - std::shared_ptr secondUopPtr; - std::shared_ptr thirdUopPtr; + std::shared_ptr secondUopPtr; + std::shared_ptr thirdUopPtr; }; // Tests that the execution unit processes nothing if no instruction is present From 8d7d83c4988a734610a775870a4cb30f61b0a2bf Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 8 Dec 2023 18:33:26 +0000 Subject: [PATCH 34/96] Added RenameUnit unit tests. --- test/unit/CMakeLists.txt | 1 + test/unit/pipeline/RenameUnitTest.cc | 460 +++++++++++++++++++++++++++ 2 files changed, 461 insertions(+) create mode 100644 test/unit/pipeline/RenameUnitTest.cc diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 08a9443cb0..a53dcf2753 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -10,6 +10,7 @@ set(TEST_SOURCES pipeline/MappedRegisterFileSetTest.cc pipeline/PipelineBufferTest.cc pipeline/RegisterAliasTableTest.cc + pipeline/RenameUnitTest.cc pipeline/ReorderBufferTest.cc pipeline/WritebackUnitTest.cc ArchitecturalRegisterFileSetTest.cc diff --git a/test/unit/pipeline/RenameUnitTest.cc b/test/unit/pipeline/RenameUnitTest.cc new file mode 100644 index 0000000000..b5cc74f5f9 --- /dev/null +++ b/test/unit/pipeline/RenameUnitTest.cc @@ -0,0 +1,460 @@ +#include "../MockBranchPredictor.hh" +#include "../MockInstruction.hh" +#include "../MockMemoryInterface.hh" +#include "gtest/gtest.h" +#include "simeng/pipeline/RenameUnit.hh" + +namespace simeng { + +namespace pipeline { + +using ::testing::_; +using ::testing::Return; + +class RenameUnitTest : public testing::Test { + public: + RenameUnitTest() + : input(1, nullptr), + output(1, nullptr), + rat(archRegFileStruct, physRegCounts), + lsq( + lsqQueueSize, lsqQueueSize, memory, completionSlots, + [](auto registers, auto values) {}, [](auto insn) {}), + rob( + robSize, rat, lsq, [](auto insn) {}, [](auto branchAddr) {}, + predictor, 16, 4), + renameUnit(input, output, rob, rat, lsq, physRegCounts.size()), + uop(new MockInstruction), + uop2(new MockInstruction), + uop3(new MockInstruction), + uopPtr(uop), + uop2Ptr(uop2), + uop3Ptr(uop3) {} + + protected: + // 3rd register type has same arch & physical counts meaning reneaming is not + // permitted. + const std::vector archRegFileStruct = { + {8, 10}, {24, 15}, {256, 31}}; + const std::vector physRegFileStruct = { + {8, 20}, {24, 30}, {256, 31}}; + const std::vector physRegCounts = {20, 30, 31}; + + const Register r0 = {0, 0}; + const Register r1 = {1, 2}; + const Register r2 = {2, 4}; + + const unsigned int robSize = 8; + const unsigned int lsqQueueSize = 10; + + PipelineBuffer> input; + PipelineBuffer> output; + + MockMemoryInterface memory; + MockBranchPredictor predictor; + span>> completionSlots; + + RegisterAliasTable rat; + LoadStoreQueue lsq; + ReorderBuffer rob; + + RenameUnit renameUnit; + + MockInstruction* uop; + MockInstruction* uop2; + MockInstruction* uop3; + + std::shared_ptr uopPtr; + std::shared_ptr uop2Ptr; + std::shared_ptr uop3Ptr; +}; + +TEST_F(RenameUnitTest, emptyTick) { + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + + renameUnit.tick(); + + // Check output buffers and statistics are as expected + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + EXPECT_EQ(renameUnit.getAllocationStalls(), 0); + EXPECT_EQ(renameUnit.getROBStalls(), 0); + EXPECT_EQ(renameUnit.getLoadQueueStalls(), 0); + EXPECT_EQ(renameUnit.getStoreQueueStalls(), 0); +} + +// Test the normal functionality of an instruction passing through the unit +TEST_F(RenameUnitTest, tick) { + input.getHeadSlots()[0] = uopPtr; + + std::array destRegs = {r0}; + std::array srcRegs = {r0, r1}; + ON_CALL(*uop, getDestinationRegisters()) + .WillByDefault(Return(span(destRegs))); + ON_CALL(*uop, getOperandRegisters()) + .WillByDefault(Return(span(srcRegs))); + ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); + ON_CALL(*uop, isLoad()).WillByDefault(Return(false)); + ON_CALL(*uop, isStoreAddress()).WillByDefault(Return(false)); + + // Setup expected calls to MockInstruction + EXPECT_CALL(*uop, isLoad()).Times(1); + EXPECT_CALL(*uop, isStoreAddress()).Times(1); + EXPECT_CALL(*uop, getDestinationRegisters()).Times(1); + EXPECT_CALL(*uop, getOperandRegisters()).Times(1); + EXPECT_CALL(*uop, isOperandReady(_)).Times(2); + EXPECT_CALL(*uop, renameSource(_, _)).Times(2); + EXPECT_CALL(*uop, renameDestination(0, _)).Times(1); + renameUnit.tick(); + + // Check output buffers and statistics are as expected + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0].get(), uop); + EXPECT_EQ(renameUnit.getAllocationStalls(), 0); + EXPECT_EQ(renameUnit.getROBStalls(), 0); + EXPECT_EQ(renameUnit.getLoadQueueStalls(), 0); + EXPECT_EQ(renameUnit.getStoreQueueStalls(), 0); + + // Check ROB, LSQ, and RAT mappings have been changed accordingly + EXPECT_EQ(rob.size(), 1); + EXPECT_EQ(rob.getFreeSpace(), robSize - 1); + EXPECT_EQ(lsq.getTotalSpace(), lsqQueueSize * 2); + const Register mappedReg = {0, archRegFileStruct[0].quantity}; + EXPECT_EQ(rat.getMapping(r0), mappedReg); + EXPECT_EQ(rat.getMapping(r1), r1); +} + +// Ensure input buffer is stalled when output buffer is stalled +TEST_F(RenameUnitTest, outputStall) { + output.stall(true); + renameUnit.tick(); + EXPECT_TRUE(input.isStalled()); +} + +// Test that an instruction excpetion is properly dealt with +TEST_F(RenameUnitTest, uopException) { + input.getHeadSlots()[0] = uopPtr; + uop->setExceptionEncountered(true); + + renameUnit.tick(); + + EXPECT_TRUE(uopPtr->canCommit()); + + EXPECT_EQ(rob.size(), 1); + EXPECT_EQ(rob.getFreeSpace(), robSize - 1); + EXPECT_EQ(lsq.getTotalSpace(), lsqQueueSize * 2); + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + + EXPECT_EQ(renameUnit.getAllocationStalls(), 0); + EXPECT_EQ(renameUnit.getROBStalls(), 0); + EXPECT_EQ(renameUnit.getLoadQueueStalls(), 0); + EXPECT_EQ(renameUnit.getStoreQueueStalls(), 0); +} + +// Test for when no physical registers are available +TEST_F(RenameUnitTest, noFreeRegs) { + // Take up all type-0 physical registers + // All arch regs originally mapped to phys reg, meaning remaing + // regs = physCount - archCount + for (int i = 0; i < physRegCounts[0] - archRegFileStruct[0].quantity; i++) { + rat.allocate(r0); + } + EXPECT_EQ(rat.freeRegistersAvailable(0), 0); + + input.getHeadSlots()[0] = uopPtr; + + std::array destRegs = {r0}; + ON_CALL(*uop, getDestinationRegisters()) + .WillByDefault(Return(span(destRegs))); + ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); + ON_CALL(*uop, isLoad()).WillByDefault(Return(false)); + ON_CALL(*uop, isStoreAddress()).WillByDefault(Return(false)); + + // Setup expected calls to MockInstruction + EXPECT_CALL(*uop, isLoad()).Times(1); + EXPECT_CALL(*uop, isStoreAddress()).Times(1); + EXPECT_CALL(*uop, getDestinationRegisters()).Times(1); + renameUnit.tick(); + + EXPECT_TRUE(input.isStalled()); + + EXPECT_EQ(rob.size(), 0); + EXPECT_EQ(rob.getFreeSpace(), robSize); + EXPECT_EQ(lsq.getTotalSpace(), lsqQueueSize * 2); + EXPECT_EQ(input.getHeadSlots()[0], uopPtr); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + + EXPECT_EQ(renameUnit.getAllocationStalls(), 1); + EXPECT_EQ(renameUnit.getROBStalls(), 0); + EXPECT_EQ(renameUnit.getLoadQueueStalls(), 0); + EXPECT_EQ(renameUnit.getStoreQueueStalls(), 0); +} + +// Tests that when ROB is full, no renaming occurs +TEST_F(RenameUnitTest, fullROB) { + // Pre-fill ROB + for (int i = 0; i < robSize; i++) { + rob.reserve(uopPtr); + } + EXPECT_EQ(rob.getFreeSpace(), 0); + + input.getHeadSlots()[0] = uopPtr; + renameUnit.tick(); + + EXPECT_TRUE(input.isStalled()); + + EXPECT_EQ(rob.size(), robSize); + EXPECT_EQ(rob.getFreeSpace(), 0); + EXPECT_EQ(lsq.getTotalSpace(), lsqQueueSize * 2); + EXPECT_EQ(input.getHeadSlots()[0], uopPtr); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + + EXPECT_EQ(renameUnit.getAllocationStalls(), 0); + EXPECT_EQ(renameUnit.getROBStalls(), 1); + EXPECT_EQ(renameUnit.getLoadQueueStalls(), 0); + EXPECT_EQ(renameUnit.getStoreQueueStalls(), 0); +} + +// Test a LOAD instruction is handled correctly +TEST_F(RenameUnitTest, loadUop) { + input.getHeadSlots()[0] = uopPtr; + + std::array destRegs = {r0}; + std::array srcRegs = {r0, r1}; + ON_CALL(*uop, getDestinationRegisters()) + .WillByDefault(Return(span(destRegs))); + ON_CALL(*uop, getOperandRegisters()) + .WillByDefault(Return(span(srcRegs))); + ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); + ON_CALL(*uop, isLoad()).WillByDefault(Return(true)); + ON_CALL(*uop, isStoreAddress()).WillByDefault(Return(false)); + + // Setup expected calls to MockInstruction + EXPECT_CALL(*uop, isLoad()).Times(1); + EXPECT_CALL(*uop, isStoreAddress()).Times(1); + EXPECT_CALL(*uop, getDestinationRegisters()).Times(1); + EXPECT_CALL(*uop, getOperandRegisters()).Times(1); + EXPECT_CALL(*uop, isOperandReady(_)).Times(2); + EXPECT_CALL(*uop, renameSource(_, _)).Times(2); + EXPECT_CALL(*uop, renameDestination(0, _)).Times(1); + renameUnit.tick(); + + // Check output buffers and statistics are as expected + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0].get(), uop); + EXPECT_EQ(renameUnit.getAllocationStalls(), 0); + EXPECT_EQ(renameUnit.getROBStalls(), 0); + EXPECT_EQ(renameUnit.getLoadQueueStalls(), 0); + EXPECT_EQ(renameUnit.getStoreQueueStalls(), 0); + + // Check ROB, LSQ, and RAT mappings have been changed accordingly + EXPECT_EQ(rob.size(), 1); + EXPECT_EQ(rob.getFreeSpace(), robSize - 1); + EXPECT_EQ(lsq.getLoadQueueSpace(), lsqQueueSize - 1); + EXPECT_EQ(lsq.getStoreQueueSpace(), lsqQueueSize); + EXPECT_EQ(lsq.getTotalSpace(), (lsqQueueSize * 2) - 1); + const Register mappedReg = {0, archRegFileStruct[0].quantity}; + EXPECT_EQ(rat.getMapping(r0), mappedReg); + EXPECT_EQ(rat.getMapping(r1), r1); +} + +// Test a LOAD instruction is handled correctly when Load queue is full +TEST_F(RenameUnitTest, loadUopQueueFull) { + // pre-fill Load Queue + for (int i = 0; i < lsqQueueSize; i++) { + lsq.addLoad(uopPtr); + } + EXPECT_EQ(lsq.getLoadQueueSpace(), 0); + + input.getHeadSlots()[0] = uopPtr; + + std::array destRegs = {r0}; + std::array srcRegs = {r0, r1}; + ON_CALL(*uop, getDestinationRegisters()) + .WillByDefault(Return(span(destRegs))); + ON_CALL(*uop, getOperandRegisters()) + .WillByDefault(Return(span(srcRegs))); + ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); + ON_CALL(*uop, isLoad()).WillByDefault(Return(true)); + ON_CALL(*uop, isStoreAddress()).WillByDefault(Return(false)); + + // Setup expected calls to MockInstruction + EXPECT_CALL(*uop, isLoad()).Times(1); + EXPECT_CALL(*uop, isStoreAddress()).Times(1); + renameUnit.tick(); + + EXPECT_TRUE(input.isStalled()); + + // Check output buffers and statistics are as expected + EXPECT_EQ(input.getHeadSlots()[0], uopPtr); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + EXPECT_EQ(renameUnit.getAllocationStalls(), 0); + EXPECT_EQ(renameUnit.getROBStalls(), 0); + EXPECT_EQ(renameUnit.getLoadQueueStalls(), 1); + EXPECT_EQ(renameUnit.getStoreQueueStalls(), 0); + + // Check ROB, LSQ, and RAT mappings have been changed accordingly + EXPECT_EQ(rob.size(), 0); + EXPECT_EQ(rob.getFreeSpace(), robSize); + EXPECT_EQ(lsq.getLoadQueueSpace(), 0); + EXPECT_EQ(lsq.getStoreQueueSpace(), lsqQueueSize); + EXPECT_EQ(lsq.getTotalSpace(), lsqQueueSize); +} + +// Test a STORE instruction is handled correctly +TEST_F(RenameUnitTest, storeUop) { + input.getHeadSlots()[0] = uopPtr; + + std::array destRegs = {r0}; + std::array srcRegs = {r0, r1}; + ON_CALL(*uop, getDestinationRegisters()) + .WillByDefault(Return(span(destRegs))); + ON_CALL(*uop, getOperandRegisters()) + .WillByDefault(Return(span(srcRegs))); + ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); + ON_CALL(*uop, isLoad()).WillByDefault(Return(false)); + ON_CALL(*uop, isStoreAddress()).WillByDefault(Return(true)); + + // Setup expected calls to MockInstruction + EXPECT_CALL(*uop, isLoad()).Times(1); + EXPECT_CALL(*uop, isStoreAddress()).Times(1); + EXPECT_CALL(*uop, getDestinationRegisters()).Times(1); + EXPECT_CALL(*uop, getOperandRegisters()).Times(1); + EXPECT_CALL(*uop, isOperandReady(_)).Times(2); + EXPECT_CALL(*uop, renameSource(_, _)).Times(2); + EXPECT_CALL(*uop, renameDestination(0, _)).Times(1); + renameUnit.tick(); + + // Check output buffers and statistics are as expected + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0].get(), uop); + EXPECT_EQ(renameUnit.getAllocationStalls(), 0); + EXPECT_EQ(renameUnit.getROBStalls(), 0); + EXPECT_EQ(renameUnit.getLoadQueueStalls(), 0); + EXPECT_EQ(renameUnit.getStoreQueueStalls(), 0); + + // Check ROB, LSQ, and RAT mappings have been changed accordingly + EXPECT_EQ(rob.size(), 1); + EXPECT_EQ(rob.getFreeSpace(), robSize - 1); + EXPECT_EQ(lsq.getLoadQueueSpace(), lsqQueueSize); + EXPECT_EQ(lsq.getStoreQueueSpace(), lsqQueueSize - 1); + EXPECT_EQ(lsq.getTotalSpace(), (lsqQueueSize * 2) - 1); + const Register mappedReg = {0, archRegFileStruct[0].quantity}; + EXPECT_EQ(rat.getMapping(r0), mappedReg); + EXPECT_EQ(rat.getMapping(r1), r1); +} + +// Test a STORE instruction is handled correctly when Store queue is full +TEST_F(RenameUnitTest, storeUopQueueFull) { + // pre-fill Load Queue + for (int i = 0; i < lsqQueueSize; i++) { + lsq.addStore(uopPtr); + } + EXPECT_EQ(lsq.getStoreQueueSpace(), 0); + + input.getHeadSlots()[0] = uopPtr; + + std::array destRegs = {r0}; + std::array srcRegs = {r0, r1}; + ON_CALL(*uop, getDestinationRegisters()) + .WillByDefault(Return(span(destRegs))); + ON_CALL(*uop, getOperandRegisters()) + .WillByDefault(Return(span(srcRegs))); + ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); + ON_CALL(*uop, isLoad()).WillByDefault(Return(false)); + ON_CALL(*uop, isStoreAddress()).WillByDefault(Return(true)); + + // Setup expected calls to MockInstruction + EXPECT_CALL(*uop, isLoad()).Times(1); + EXPECT_CALL(*uop, isStoreAddress()).Times(1); + renameUnit.tick(); + + EXPECT_TRUE(input.isStalled()); + + // Check output buffers and statistics are as expected + EXPECT_EQ(input.getHeadSlots()[0], uopPtr); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + EXPECT_EQ(renameUnit.getAllocationStalls(), 0); + EXPECT_EQ(renameUnit.getROBStalls(), 0); + EXPECT_EQ(renameUnit.getLoadQueueStalls(), 0); + EXPECT_EQ(renameUnit.getStoreQueueStalls(), 1); + + // Check ROB, LSQ, and RAT mappings have been changed accordingly + EXPECT_EQ(rob.size(), 0); + EXPECT_EQ(rob.getFreeSpace(), robSize); + EXPECT_EQ(lsq.getLoadQueueSpace(), lsqQueueSize); + EXPECT_EQ(lsq.getStoreQueueSpace(), 0); + EXPECT_EQ(lsq.getTotalSpace(), lsqQueueSize); +} + +// Test to ensure Serialized destinations work correctly +TEST_F(RenameUnitTest, serializedDest) { + // A serialized uop can only proceed when the ROB is empty. Pre-add an + // instruction to ensure uop stalls correctly in renameUnit Pre-fill ROB + rob.reserve(uop2Ptr); + EXPECT_EQ(rob.size(), 1); + + // A serialized uop is caused when the destination register cannot be renamed + // - i.e. the number of archRegs is the same as physRegs + input.getHeadSlots()[0] = uopPtr; + std::array destRegs = {r2}; + std::array srcRegs = {r0, r1}; + ON_CALL(*uop, getDestinationRegisters()) + .WillByDefault(Return(span(destRegs))); + ON_CALL(*uop, getOperandRegisters()) + .WillByDefault(Return(span(srcRegs))); + ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); + ON_CALL(*uop, isLoad()).WillByDefault(Return(false)); + ON_CALL(*uop, isStoreAddress()).WillByDefault(Return(false)); + + // On first tick, input should stall and uop should not proceed through + // renameUnit + EXPECT_CALL(*uop, isLoad()).Times(1); + EXPECT_CALL(*uop, isStoreAddress()).Times(1); + EXPECT_CALL(*uop, getDestinationRegisters()).Times(1); + renameUnit.tick(); + + EXPECT_TRUE(input.isStalled()); + EXPECT_EQ(input.getHeadSlots()[0], uopPtr); + EXPECT_EQ(output.getTailSlots()[0], nullptr); + + // Empty item in ROB + EXPECT_GT(rob.size(), 0); + uop2Ptr->setCommitReady(); + EXPECT_CALL(*uop2, getDestinationRegisters()).Times(1); + EXPECT_CALL(*uop2, isLoad()).WillOnce(Return(false)); + EXPECT_CALL(*uop2, isStoreAddress()).WillOnce(Return(false)); + EXPECT_CALL(*uop2, isBranch()).WillOnce(Return(false)); + rob.commit(1); + EXPECT_EQ(rob.size(), 0); + + // Try tick again + EXPECT_CALL(*uop, isLoad()).Times(1); + EXPECT_CALL(*uop, isStoreAddress()).Times(1); + EXPECT_CALL(*uop, getDestinationRegisters()).Times(1); + EXPECT_CALL(*uop, getOperandRegisters()).Times(1); + EXPECT_CALL(*uop, isOperandReady(_)).Times(2); + EXPECT_CALL(*uop, renameSource(_, _)).Times(2); + renameUnit.tick(); + + // Check output buffers and statistics are as expected + EXPECT_EQ(input.getHeadSlots()[0], nullptr); + EXPECT_EQ(output.getTailSlots()[0].get(), uop); + EXPECT_EQ(renameUnit.getAllocationStalls(), 0); + EXPECT_EQ(renameUnit.getROBStalls(), 0); + EXPECT_EQ(renameUnit.getLoadQueueStalls(), 0); + EXPECT_EQ(renameUnit.getStoreQueueStalls(), 0); + + // Check ROB, LSQ, and RAT mappings have been changed accordingly + EXPECT_EQ(rob.size(), 1); + EXPECT_EQ(rob.getFreeSpace(), robSize - 1); + EXPECT_EQ(lsq.getTotalSpace(), lsqQueueSize * 2); + EXPECT_EQ(rat.getMapping(r0), r0); + EXPECT_EQ(rat.getMapping(r1), r1); + EXPECT_EQ(rat.getMapping(r2), r2); +} + +} // namespace pipeline +} // namespace simeng \ No newline at end of file From 7ff25361ca4d36151c92d75fcf76353202795ee2 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 8 Dec 2023 19:24:49 +0000 Subject: [PATCH 35/96] Added ELF class unit tests. --- test/unit/CMakeLists.txt | 1 + test/unit/ElfTest.cc | 67 ++++++++++++++++++++++++++++++ test/unit/data/stream.rv32ima.elf | Bin 0 -> 262940 bytes 3 files changed, 68 insertions(+) create mode 100644 test/unit/ElfTest.cc create mode 100644 test/unit/data/stream.rv32ima.elf diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index a53dcf2753..759151da68 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -15,6 +15,7 @@ set(TEST_SOURCES pipeline/WritebackUnitTest.cc ArchitecturalRegisterFileSetTest.cc ArchitectureTest.cc + ElfTest.cc FixedLatencyMemoryInterfaceTest.cc FlatMemoryInterfaceTest.cc GenericPredictorTest.cc diff --git a/test/unit/ElfTest.cc b/test/unit/ElfTest.cc new file mode 100644 index 0000000000..9635304bf3 --- /dev/null +++ b/test/unit/ElfTest.cc @@ -0,0 +1,67 @@ +#include "gmock/gmock.h" +#include "simeng/Elf.hh" +#include "simeng/version.hh" + +using ::testing::_; +using ::testing::HasSubstr; +using ::testing::Return; + +namespace simeng { + +class ElfTest : public testing::Test { + public: + ElfTest() {} + + protected: + const std::string knownElfFilePath = + SIMENG_SOURCE_DIR "/test/unit/data/stream-aarch64.elf"; + + const uint64_t known_entryPoint = 4206008; + const uint16_t known_e_phentsize = 56; + const uint16_t known_e_phnum = 6; + const uint64_t known_phdrTableAddress = 4194368; + const uint64_t known_processImageSize = 5040480; + + char* unwrappedProcImgPtr; +}; + +// Test that a valid ELF file can be created +TEST_F(ElfTest, validElf) { + Elf elf(knownElfFilePath, &unwrappedProcImgPtr); + + EXPECT_TRUE(elf.isValid()); + EXPECT_EQ(elf.getEntryPoint(), known_entryPoint); + EXPECT_EQ(elf.getPhdrEntrySize(), known_e_phentsize); + EXPECT_EQ(elf.getNumPhdr(), known_e_phnum); + EXPECT_EQ(elf.getPhdrTableAddress(), known_phdrTableAddress); + EXPECT_EQ(elf.getProcessImageSize(), known_processImageSize); +} + +// Test that wrong filepath results in invalid ELF +TEST_F(ElfTest, invalidElf) { + Elf elf(SIMENG_SOURCE_DIR "/test/bogus_file_path___--__--__", + &unwrappedProcImgPtr); + EXPECT_FALSE(elf.isValid()); +} + +// Test that non-ELF file is not accepted +TEST_F(ElfTest, nonElf) { + testing::internal::CaptureStderr(); + Elf elf(SIMENG_SOURCE_DIR "/test/unit/ElfTest.cc", &unwrappedProcImgPtr); + EXPECT_FALSE(elf.isValid()); + EXPECT_THAT(testing::internal::GetCapturedStderr(), + HasSubstr("[SimEng:Elf] Elf magic does not match")); +} + +// Check that 32-bit ELF is not accepted +TEST_F(ElfTest, format32Elf) { + testing::internal::CaptureStderr(); + Elf elf(SIMENG_SOURCE_DIR "/test/unit/data/stream.rv32ima.elf", + &unwrappedProcImgPtr); + EXPECT_FALSE(elf.isValid()); + EXPECT_THAT( + testing::internal::GetCapturedStderr(), + HasSubstr("[SimEng:Elf] Unsupported architecture detected in Elf")); +} + +} // namespace simeng \ No newline at end of file diff --git a/test/unit/data/stream.rv32ima.elf b/test/unit/data/stream.rv32ima.elf new file mode 100644 index 0000000000000000000000000000000000000000..ded6502b12cda5e4410dfc4dab860d70cc18508f GIT binary patch literal 262940 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 q5OFdZ>j7muR|y`5A) z>V*tBmXDaUwRUa+A7r17Z=CH*_C<5WX!T4|BZi!k$M9;5P)Xp4IJXek)bqb9(CNg*L+~Ih zpSTn!e~&-0#)?9*+{(kVg6GxhP)>CAu<*~g8Vdqvlj zf99lGBi3+=+s%ZrQ}5eqt9twWv{r9_sDBu%MPTDs!@B#8fa4B9@iCzEb?~EwsQ5bg z(UP^6=Yitu;Dsut_pN9bzYea^GVtV4R^V;)>Mj9~sV{vU{5Y~DU}M}H#PY_HDn12t zew8S3KXI}UZT$KB>ZRoc;Hf56OfQOx{e(srfhYYudKs7$nVRVa1PT5x^Np zLI$|fSDez*AgrJ25ur5Eh76f#n;Y3O^3pjK+6r{+<)EDK z0b{bEx^E6vWwX5X@t0O_KL-zDwP0E=R193yr)zf8D&K3it9$}4NlmU)Ec4@4#W~kR zcLD4m!!=ua58xYU1YSQ^xKz10Bdl*G z8|IvpV&}>~-DfRrxI&cjhRb-df74!}ehH?I^l#A!F|+nD8=gUGUW#H&1Gys466Fli)Hhr)t@5Ib#?uW33;(9Gf}Sq%n)1~cw-;>I>0RfgPVZuVM1YsP>@-O zFIEgJNaw4#LAW6<*9|yF6~!tvO4CG9q!nj%O77%Qx5k~y6GdT*1tY3_A&@QN-9J$n zs~GNoikQh~>X#7G_7YNzVG?s4S7I9z#Z_A49>5qgu;h={>(yqWh-sCbrzsQ0pY40c z6nVrWbU4Fy9Z8nXT)ZdKP~A6&s4|tez9?z+_H)Q)Dl`J%at3J*@uJ)^hr|nPoI`ps z9WoYAE)(1UHpdk}9P37RJ_tUe)^xYDTBH#htWqB}tkNaDI6=^gr#DG#2f$r%1Jl-f ziwyaw1p+g3=2qBdG{=f0MND#+NsjX&(<1shB9}VEJMF4W{jCSOR&T!)@O_>dP%OBM z^>94m|5kaytHxiVtriNR}|j_>bE&6a+_E)eBX)lj7f@6GUt_W zv}b^g-wcVwLd1Q8;J= zW5&D{Uj|CMt4pxAv_5!WNfqDK+6+Q7$mygEy5#o$U)4RtJ3T;sG19%#e3*+MjY}uR zmT?*9mpCp>!7RJTqk8jK04xeWL@m|H2z_Cj%~P#E3@Om`lFYZ4FON_d8Lq0bAk?@IBYZ;2HK>m zcpRvw$|4K)D)7)xH@*l3T~g4>=~GdmTk0`roVvnRQ*p|qP+U&QZZ8?xf_`Vpk4rUu zQOXYJevVNA@DGmZgkmRl!$A6m&k^XGCEhPntpbIfZYUx!$dWB&GV|j>+p#zdu+i7z zN+jzRObMnj09XsdU78G6EXSne3l)P|ApTbs#6pyt;G!gduR?GfSa;a3c|n|v@@0Zc zfQcK1{P`buDsc(ma%->xtUJcXnqW2fDF#G)fUY;g>{#+NrNaOZ z7qmK|;t^FbQh5SaJPFjhq%sXR+um65LfM#8SJ->NLv;M+50<|3=NI-?hhj6_B6fGYG~wMy^Z!*;>*bs zB0yS#YmvM`utZ^yt`Kxl21tuF9m!dORwzkD%*I zflOuV;JUCv(QeSzY>931otERndu`B2a6k*wGA`B2Xd)`Gd|mSjAumke}F<_x*W3 zD-C_D#M@AMY0~SdHeBLuy>41B@iyUZAn|(b79OW>O z^g2#xy0Or7!2`w`?KKwK>k{6XB3v)LwSy(WR;t`hS@~k3Mb?Qsc#pG2FD?OIUb}I0 zojpwacd@q}aJSS1kg4{Nm%hN<1vsP(uLFqd-ZW8h5Ze^SD_Q|kr*e!yI)WX&kPcv- z3v!%5=Q80Tn#5`&zD5w-iEo!4+Ltd?3_=g{fkVj9!!I>@_@&AbdUpx1*PJ}k3~gu!#Vn;lXFOjqa1x0M zDTfDTF-SvTjb^+Hbe-rApQ$`C$hRy{@yW`H(mn>uMl~k}fVxVtuKxHOsyS41sKPfc z!&QOl*AaD_&}`xd6`jI%0BVK^8=AUzj8q(VULo^CY&ZBwq<%3_;-#IBSa&3MNT!x& z50H3!dJo{aH9_cf{(TMdc9a?nJKYZlw>@Xu42QP497q<~g2^2Qo;cAT)*WSQn1Q$508+3Lb)`Lz%-z)KH zE-3Uo)n7!=4GLSxWacOJhY+6vSPyG)E0T2!mfEH<2{<$jXEpg^#d0i4vPvd64#ZV5 z#8Q--;91EpRt(Mq>%PK5T4FiMuMk`Z!fZ`=OY#1S!EIpOSN!zp3yc#0xxpZ??wiOZ z90-2BthJCfp0Cy?6E*}xh=zgt|7W_QcpNA-wbqkbH#uimawwh#o@!D>--)8aGc=k7 zg5S2$t6Knq-+E^?`mLfR;QM`e^Ta?HaOHHlw4*%&6mDA{jf#%~h1(XYn0b@iYP1Lh zw{4?WcMJ$_+bEo(8Z z1KQ0(%1;CBXCbqh1={qc;u_H0n{8$pjTV3h%|hyq04=kSA`7-TcHxOL_s>FyQ7-~* zW+BB^?QLfvjgA8knuXMz1X^YxMV9V?v(U8{S<(QV9$D)C{FylRURxe>7V7NYwCUaN z+2X&*B>AItX(8N+F@w>dAK;ItI=kP^^$&V7stl$jU#J+Iiqifn27o7gCcYlA6NTXh zO{$eG1ig}@6@xxt-B+1nBupQEIB;)Wsr=PCwgfOT&& z+gO-k3-esXU<6qA3UY~1NRE$M3u)uAB&pYf&CXp!_kd!X9{ns{b``HDwZ=AG&dAB( zOV%-^PLyqYTJZ*;*{9zK*SP40#SEoU7x17NO5J9lWrk8@xgI=2Z9>}(w3(q4_W*A@ zLuu3tJZOeew-soap%nE2X@)v`-wdVJ;-?uZS+t#@)-b#cw3(q4-vJsklw21J=G0+t zmX%6#quZMswOJ)pTe+e}d!Wn}T7DN0=@&@x3SvSe>DMXg6| z1=>teiZ=lbx0TxrJZLUbw*_dKixl-5EnXs`yMEY3&kuhEUDY-7EOEJ65}yw zeK+h0r_2Hnw!;@8E&**iSn&$b=wP{3;EAtf_br5#-vc%kx~2}UsB!c3F2&xy39tGz z*>GTu(Pf~G6DT%^w{-%It^lF++c=53Yd~oI`dYZ6$TB_|Cy3Xh=Qi}I{BPkTSBZWD zXyYV`ZvxHNu{T2|ptYeO){%dXW-tyuJZ(7E$XtpO#MJgvVOV~_x_tb5qPm;uv>DZVz39`?^n8cQ;~lr zgBgxG1J6(EI+<{MFcOXrE^78-#h`a0q~_7gP4~F`QRXp9bP{;<&CGvP4gVe`zXUw| zVqhgt1D&w^ITS|&a%X_YkbI3dnnS$x6-CQUhH@8xcgCo`6sc`RnQiq*lz$PC>}8-U zicT`3xW(YHfE8uyWsI|)-NvaCrCR}2mVVWTQ> zB+5?_oCQqWa9Q#Gior!--C@>w7G@SeZcqclE>yy!Tz8?Zg|zYT&U!r0)E#;FTn$qT8@%aTIwUf6Ah0AMHH^W;1)&_SZM=J*RfUx6}Fn#0(n{t34JHMNo+#f# zFbtTuVaWfviure$|8o_CO+eV>NrZCY%B|(Hz1ZX#HJGr;y8wL=z!&R-T>dgp_@d-0 z(C|gMt3dR{IBXfXif%R;%H0A=z8F2eqSSIU+^b@dx`8yv@f8PH805;m!_qL1MK=i> z#<=Q(XQpy+!A=FxGqvdjyxb;vliyLahG!=0ca?oNl&4{1YJEWddh|`{a32WYT!Fp} zJnW^qvm$vF=!E4mYiq&XEF>dAB6kbu!UoA3S(sCt5|!Qt9*G+MII<#pr>(KlUT#K| zjAi?PN4!7 z$EiBR`ih*b{TPz3;XcKMQqis^L%H3+6EUhjQ6Cn{hk!?-&h?w@@B_@1+pZ1sSWso5 z{Zj6XoRqEYXPV=HBPYq<_E$ z(vVHJl|R@RvL*Aj1J*|-G9CgcRan;NLP|B@ks(U!t!k(3^q56(zF`!$D5Eqrtj?EO z4Y7^1s0AO`N+xf$2s5hoZ)KzY7{JS5-_j4ImjEAtx3&O z9Jje%s2EHG;U54c7J{5d4Qa>N$QzITWlu4?^4#d6$~tX2%xfN*<5;!c#C;29I-8A^h4 zKzQa+;(U~^5?ljJ+%V)nT`^b#LZevRae${A4JLu`bfbi|b#S*9@}4E&P6}z*j*#_A zb3MPq{qMWL{SP`S&3HzG=QF}AT6zXj@p@J9bg(!k4x>!*2B2{i-37O)y|LmgWn&&z zfb~&}@ZfBn@gGg=jF&r^VZg>ZoT6~*_D3D1XCr+CWY2Uo8YWzeG>^MMsCf8|>~rsD zYX><5wQxyVb80EM}vNfqXe*^Iy(bB5r2AbEL@@HAlkmDQ`ZSSYyRuU_58&hAHN`ilZ>34e~N_yT~H z!F3=F9BEVQ;B&!82~SE_D+b1TXH!y*%pE|QAJ=@iV$f>-(H|(8^W4KRY|3@G1aEx| zSEQNX4KD-1`%}>{%6%J%6R+i=6R7^#fLB3z{n$?X4Je z2XVzfE2PQT;BhW^C&qzEfMrre;T96=I>8#MNu$(k9-l)qN1Qq0 z5S{NT7zdym3>GAZDh5Y@hfa)C49`cg!G%I>XeGL+<>!6?^npMy57z55!~(If!guOo zu0&StC_t|om`?uMcQgNpw{AvnYBsE{m|>+y0H!blqb5~K<`J$xCR8d%ef~AMaihOj zF|cChs#8dZO1@YzNCi@5fqDR98Q2v?ELQB;nv_p`O%j?6g)=x^hz-w4^R9!T$?I0B zo-U9N^M*m)llsZvqM5Meuveuw%)tN3x?g<<<&l1$e4&@FmGsiDmh{qHvyJ%DyX0eh z{^Y&LP{%j%O(=r{E}~emB!{vvv8oI)BhM6watWYm3@quxZyZ_VkR=roO)3whS#Jg) z4NU8i!`T4;q+aonf>aQE(fEB@4pj`abO4#*88hTjd4dbTLnp>7hGt$lobBw{$&6Re zo`3x%C7XaKX5VW{)r!Fmz}SXnkYclwAuW@joVN(pB58E(!o!CA84N}@fcu7_!cL;x zKMa+c?)}3sHQz(KXoouEJ)An@Z6BG_fc|EKR4Enzo|zmNi}i%q z=5EDu1fUxXOe3t`OyyjZ8yJORI0Pj_F{)g4phLDVR?OxUK#dH}0AZ4r2nkVYow*0F zl?-=EVpJNs4O#6*K4~*2AwKxtsAs3#5tGuhx~6MdRXbCbt?*6XtEB zGM*|t#|O0wz}&!=ZZ=mk9Sv-&W071UumT|woRkbhQL2?8$VKz7R*n-`7p|oCW-q{< zmtF6FBir7?zEplI@QxF;ye?F*9oP_rCl>Nxs>G6#sO1@ogKq2WY3n07%FOp6w$ccM2?4qc4K)=>zkl8 zi94Y2ZirdXb%|Rb6U$BQw#0f;8!^QZQkw*_e3EDj#yDDOyjQPBRD@BP)?x zi%?z5V{vlJ(`iv`ev6Y^o~uAM52V#=u0+UhfNo0M0o|48{6I&x0mwIjwn+5#c4Rw% zydN|uu^Tib(fPrSY!iSxU^%Gu3aAGi{RuU!=sN5T&2NEjOWXxz#LLfY?a0moS$-7D zMXe{%T~VKJ#bSq6=dqalFvKy?DFBB=zV;zROXy4`%ZCw-Yd#HHkT?vwCo%NrDGGoN zTm$k2(BU9j0-sTI7IZF%R=~SVeGh0z;xyixL{B&o#ITFtEUP6lL4!Hz3~vIt?^u zeGZ9`p9fu(SOHy@xB|K+aUFC6$Z{<;%r#h*&_I2z!A$^{0k8i-L|vdQ5?ev%f$ZM` z^;%yo3l(1^qm=#<21&~=IRKTKvo-UT`=u?X5~9%i&#Vi=T}*(T7e#5r<2 zA9B4wB9~3*3g{|8B{9Ehyz8JF#tjjToOgq^0$FZ(P8!i-Sc=@-%{(`+^;&m=LbNM8 zNfO8hX{y~oZkyeexCh$s2~#woP$%nSb#fCijod=pWVvlN{UZ=H(4xd~kd2tzif1LP z*hPsI&=zy;0a=9HGFXKCB`BDj56>YMR!5>6#bQQ1|}usL!ecOP5m^-CyhE;7HvY5 z_kyDC2)ZTBPk~NL7_S#786Af`sb~qb1~B?Dy`uRw&>E2Sl#6qk43^DFbVcGCXbs4| zShm~!p7)Z#EgO&gs3v7&B_Kcz<<>Y$?*f0TkFG$F@ zf`q&eB;-3lgAzla5s69AG{67=?^2|ETtfK*Kq0`V6)l4%*V;PZ-lI;eN_kp%c>;Mf)jDU_xoc|dPih%s^9_j;7GvwFR4gW<-jE+Wvx&Y*tK{qA3 zkdGK|78H$)vw09vH_7w>`6}p2NOKzbth!aq*9Xy6sGiRw+78++aRhWl;sz)hog>cK z&mlSoS_YsH4Jz6V^20GvblcSLfI9yI#3qn`E6PO_k>Xsr;#_&Z!~keWVi+_Da9IT_ z&Xp_9mHV%Px#*n4d60h+N4{XWT=tg48pwZ;;_?V3m&@)BBJmL*Uj+HDIQenVNr@$p z|CE$3gZx_;S_7#mKx?72>B}L3P4f7#tk~fx$+wT%?ZAvsOvMd3XpFF^#QaP z@(qfV_eyLB?Evr}uu*d5M#+t%KG&dMVgNJ<&~#wAT(%~$06Hdd5_C%9H0UhASO%-l zHBg^xpgz~YkHqJvr7mE(T(%ZOVn4x~p93vR_;p&pqf36^ zGm4Ze&R0Nwxi-H7x(cx70~I_Rc^pO)Gl z2CAl46e(YmxC6Qi(E4Dbjg8T>)9SOds=mzMP#BI<$fNC*AtpK^mSuFQsM!meykH10n@u{2K@9|s#qR5Z* zS~!+0)AaO^cC+xt1E{TKXM=+_%b)o3`({Z3l86=JzWuc_(rG4ny8Y zmfJ(NMj1BRIA~hJSHg#Z+^6z;0j?j&kEmM$3Hce&bqSH*yvY6X${mTjpzxgoD`;VI zOLI!%4Cso4ciGJ+H=`b_=G!jkC44=_3g_0?D&*E-S>ht-y2K68;0T0hTtehyX!&{2 zpmiMrjZ5sIo+Ci+S0a2p1W`Hr0p5?v2SK|eEXQu3#b}4RouK|^BjfnCbAAeR8oRCOF!bwO z$F|dRd))z+JHq^kOnwpMle4)`MXpJRZcB)|CLu(NxJjPA^1`?+S1inI{ELssaM3D@d?Y5{0oo~%o{V8AV|3ay_Ylvx3_Kd>l#O%-)ZA>{ zly?wdZARnNTdB)d+63~IliU|Ke8r;0XuY~lkni}EjErpD+{nhw(;FYTFI=2bavF3F zpjFFV;JX9)GRUXkbDt&OLZi1Bol$odbgtRR$i~f$Y~0+)^Qv!F|Wg9?S0NRfF zp9JzH(Am%!`f>1O{W$ot?(6rAa^2T)p6kAPZ*vC+7uH!FJz+#ta`UMoA>S}f z)q%Vl)F&|v8j%-Z$*gpJQzGQ+_cId! zdG`UPLjVsdi+oN3&qK6XD<3ZDmgoU(l^6i|Lw$O6GM#(M`}T zAe$+d%M$DY^4%aG6UdK(e1d`g1+OZ)0`j&!rI?9#k@I5^*MU6UW2VfrIx>aPy^ zYcKrPj+kD`FY%Ud!T7Yl79H6m*-^sOpB>r5*{{LRmg4_C`1ROZe(f(2UMl*VW6SLS zf=@ro`z8r@+rP^z>$QJBUE2M#zq>y1UsC^$V~-^M7LmLE;qG^K6Ka2(u)oCLh1b8L z9{(c#EqHs9L#-@_zgyD7X2*;2Yq3E=@k{OL9nkpe$o@+mjH{g>i<%OvURB!Z;(4oK2-Zd?B)eK=7M(vGaZjXs?J7W$uRqxYOM{yMVf5{V$C zA5J}s_4zb(l z7eAGR9ocUtvPfTc{Ku0pj<+)<{uh&~WPiJ)SAA(98Fgg8l*p3(YDxd?Hu|AYCt*kS z8;LB%pDyYD0s6()lYc*y{jT;ioG24GYJVSosiaqZ>wwr_te^Jr*OC3}L?TH2zgp7Y zY@^>gmxM9Bg<3Ozt;GMoNmZo(pW*k=sm}Ci{*jNrnBH)S$0(a@v6oNw8_>_fA4QbX zlTUi7JFhhJBd<2|#}=CTQ!V_t7XEw-zudxKXyGrm@T(>M-IPE5Qu|*o>EGK%zvEDI zd26pV_^oa17hZ4Zf2fUq)7Kh$sS73k6K(9LzuvI_Y>S?Ql{8c8gE2Z+tCwr+gryBe!_O(*{ z@50Z%$N({D8Re*-@V|K1`$Q(FByjr4A!Pru~f1Lqrhsa-AnP>KKJHu1+x zdgI?{;nzz1e{Br9LUMqKQl1P^DC#q2Fr6ml`kekGHX3E$KJ6 z(I3}2!>=QIx{ZFj7lA_G*G9klA2#$-drJI{Hugg$eTaFfIet$IKl?k)`ZNEincwoA zX8v9ae{Q8&f8(Dt_*G7M_q#tRcAODw) z_)=F&{FmC;5B{rW`!g;4xfXtVeGw6_-{(sFT$}WlOZu<2(f56?k^j%P(cdWP>qC=z zrSW*|-!$SoRCXS1te1WtepiWajenB-PE|OhBE2-f%Ew=<-|^07{%naizsuif8VT^cPF|R)4m9 zJw1*1q5SV}@cQf0V#8nc&$A`|J#F&a^23ezrgwZtgMWV;`!glI_FF#Iu>Zj}_UB6a zA8w;xDd|7eMnC)`jr7g$LJL3mqs{saJDd5n7XIAFoAv#lXy#9q_|LQ{&%%#2+g~s7 z|5F?L8zuc{8+}iIBfaT1`aLE6LL2>ZN&k&D`imv~QX75t$wvOa+D6}B(w}dmA1~=I zw$Yz0={Xsy|I+-kR?`1I`n$i(dK4>nmEUV)KmMskdH-D-{n?WKPul2x{we;L|KpKn zU{iT~fGO!8X`}byqNLy0M(=|^N&l`kdT&1`{rlSJy>pQCA8w-$hyKB!Bl}nzeK_nd z^gr1~@0oZ?f1scYtp6VD%jb(Fbo5$THl`~)8Gf5W>z8!z~O4}X{Wb-3W~z;}O@^Cb9<8Lwe+WaxV1e4*a}@A~Xy z!T(u!&$D*OKh%-E58m{s6rD=TyEu@SeBb zEA%7q&KF5P39tWME%N_o*m*v+t4Mzq{e}N6_D>i6@ilnoThDPV-@j!c?fiGV;J=C9 z^;**ZRd~-kJTKM$Z@@dhyMLDdHoW_-!-aks-t&~{g8vo6EI9`+eMtJv=N#70c^)|I% z27l+5qjhyT0t=50h-4G5Jpv z<)^+g@Sg9c^1ll2`Cy8F7~cIxD*sV<&ma4X^uGn~e3AU+ufco0S}F8=IVp2~A1V01 z1@HQ8Pr)z4&*I;g;q~v|fxlg<|L?7R+tS(w-^5K_uyThY%c778{X?t8c*MWcYium=zkC1^S|Wp*Wf+hOYQUT z;obkG`uqvJ`{|V4I&Oh^o`1yjsQ+W|p19pU~{FZ@RCM?DSi zdBRYU{s-W_o_a2A`+pSP{Z8udPr!S=-e1`N6ukG7E;G+*|9N=Nr?(dR=ixnnm@M)i zhhHRrSbXY{Y!?39FEKyTfg7_tdmY~M=hUCS0Pp>zd-^}=|F7`w?^Ahx1>Wk=`{`8wC3yGislWdwyyuyRi~N2Ke&C(F5>S-q01b7m zo?a#UP4wQM*;V-OCHV6CCvBe3j0sN zd;YXo@SlOdQL6t6y!YFaKa5gd_xHOB`!V#M*NkxM-ulnNd%t73(7z7vdE)M({k{S3 zex|3;{}p)e|JZ-V|0Q_O&wGpXz76mGDb?>c;d}oQCrS2y_E7fQ@a}Jt{yXsQ=Tdq9 zDZJ;?X}Zd;alYil})heR#nd(c^GkZs;tK+qqx%uko!G&yWX8-K;L~UYx+cWJgLJrl@xw+9p z)rkYOxkK5$xzYU-)$xP-_aDk;_I_z%thUVpmc&&GRcnefUz?j4-A}^9T1vV&Bxl z_`dlmZ1zphjMnC-#%+c`k4JiXYVS*9W2Q2-fA-+qM4hOPkJd&ri;M`X>gb2}Pwbzc zsL`ae2W#_4DgN}t0f|HNFHO{HGvm;&?34Wo=5>p4p_bH*(W~g1Wjq>VPZD#-8P{Pm!<}o@yKS4i@ zWnFLTpJ3(#D6JoEV*D#u%qtOgFi#v@TG!+L%pzxfX^t`4&SwhB#6! zOact?NHD}}O+!2ky@>@pjQJwQs?8ldFjm_aXNzhv1Ah9m17ZGiAk}B3afe((KxyV` zh#YuLHu%?lvXUUhYc?yS!8sY=`;jm=q|Llg~aQwNy$7%kBUaiodS z0|#fBtPf5YZ+>!meCi{aT|+-*RVO8*hxQNYgvJX7^=Tl;>+@e$wcmm)G&so?mx9?D z=CFymo~&AUS1`h-C!CbRL}aK3s$njRBR87u+dsplD3&u$P}TY*R!qdTeU4_wZiX|4 znq}2bg~`lP)aWb1FjO!|o`I+_T~w#D=&&(U<~iLBlg|%)a?dC0S2!n)*+cbQLUGe1 z9b(om4W=G4wkcueMr%_uG;Em9gDKZU%QZJTH9w&sj2A59Xs_X$R!-DhjdpSqc-KjzYx+K)eK2XKOKOuPmls zVtwZ+d6l56ye+p)K&9(5FRL zRGHDo4$jek3noda!$ir|ajev>p(FN=&f9~<;GmFPFo`o=3(itK5S^wvpROC|>MJ!T zU(+Q1_}Jt`xaM1psoCj6j(jgV*cVTW4Q8L**TASPz7A9F- zYBMXk)H0nk@nxa&YEz*D=j)BYOctDAzMhjMEh-TU2OBSD5C^A=krJoNFji>9Vtu6L ztCOR(V$!WPO>?nGS#=_;TODq$BtjI+3Q;t9Xo1?~91FXdY5cyaWTDyWV{rfY)V_W3 zB4I*lG}V0}EGVrIlUn@}L(hkmPMn=65FT#qVnr7lpLKInhlN%N>v>G$Y-*e^Ox2|& zmcp>Ox7_tX%vhUAvqhRFv*N88=AT zw#MQi+g6$uw?(`8B48k8+X7;Tw%>_z+uYRr*elyuBhF3jJ?K7Z+c*p7msqWg9(bw2 zhS?&i_U@gVcqJK5Pq8j9G-0=v7>b-oZ5Y7~er9Z%on}3=xdSgno_*_|_UHF6*miU3 z63;|V5_Ziii9h$q{+Hv!|Qbc^;8|sU9yPFphS<6QSMWme1B-B1!3up*CO7aQtca;YbFo zPM8KrYc>c$8~>M%%=bUiPaA)40Ew3G$L@liQ~Z+doA8NNb@#7!WS@GzFe>T(dWly1 zBmb!*d)IrU;xDD~ZP-Ms+4I;#*|&c?+K7|xH%hefd%wpEO{vk~6L|^RIH_HZ{)>mQ z=Q!U@KXt-CE5c;=um0sj+5Zt5Jz6Hae_hx`X_o!%@6jlKkhn(q{zI$XZ>-Dyx3 zXS$_k&CdRFGJRi`J&D}&D(le&=xU|nWM^-$%l>!Ik&2(``15U{vfYdSeO-9LEGR+A G?*9il>=T0k literal 0 HcmV?d00001 From 4e4a9cf1b16f32ffddd0c60ae937cf2472d18ce9 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Mon, 11 Dec 2023 15:06:12 +0000 Subject: [PATCH 36/96] Added Special-File-Dir-Path config option. --- docs/sphinx/user/configuring_simeng.rst | 17 +++++++-- src/include/simeng/CoreInstance.hh | 14 ++++---- src/include/simeng/ModelConfig.hh | 13 ++++--- src/include/simeng/SpecialFileDirGen.hh | 4 +-- src/include/simeng/kernel/Linux.hh | 5 ++- src/lib/CoreInstance.cc | 24 ++++++++----- src/lib/ModelConfig.cc | 36 ++++++++++++------- src/lib/SpecialFileDirGen.cc | 28 +++++++-------- test/regression/RegressionTest.cc | 3 +- .../aarch64/AArch64RegressionTest.hh | 4 ++- test/regression/riscv/RISCVRegressionTest.hh | 8 +++-- test/unit/ArchitectureTest.cc | 27 ++++++++------ test/unit/OSTest.cc | 1 + 13 files changed, 116 insertions(+), 68 deletions(-) diff --git a/docs/sphinx/user/configuring_simeng.rst b/docs/sphinx/user/configuring_simeng.rst index 7061217c2b..b7b5f2ecfc 100644 --- a/docs/sphinx/user/configuring_simeng.rst +++ b/docs/sphinx/user/configuring_simeng.rst @@ -333,9 +333,20 @@ CPU Info These fields are currently only used to generate a replica of the required Special Files directory structure. Generate-Special-Dir - Values are either "True" or "False". - Dictates whether or not SimEng should generate the SpecialFiles directory tree at runtime. - The alternative to this would be to copy in the required SpecialFiles by hand. + Values are either `True` or `False`. + Dictates whether or not SimEng should generate the Special-Files directory tree at runtime. + If your code requires Special-Files but you wish to use your own / existing files from a real system, you will need to set this option to `False`. + The files which are currently generated / supported in SimEng are: + + - `/proc/cpuinfo` + - `/proc/stat` + - `/sys/deviced/system/cpu/online` + - `/sys/deviced/system/cpu/cpu{0..CoreCount}/topology/core_id` + - `/sys/deviced/system/cpu/cpu{0..CoreCount}/topology/physical_package_id` + +Special-File-Dir-Path + Represented as a String; is the **absolute path** to the root directory where the Special-Files will be generated *OR* where existing Special-Files are located. + This is optional, and defaults to `SIMENG_BUILD_DIRECTORY/specialFiles`. The root directory must already exist. Core-Count Defines the total number of Physical cores (Not including threads). diff --git a/src/include/simeng/CoreInstance.hh b/src/include/simeng/CoreInstance.hh index 691a360f2f..2438b1e3ef 100644 --- a/src/include/simeng/CoreInstance.hh +++ b/src/include/simeng/CoreInstance.hh @@ -123,8 +123,11 @@ class CoreInstance { /** Construct the special file directory. */ void createSpecialFileDirectory(); - /** Whether or not the source has been assembled by LLVM. */ - bool assembledSource_ = false; + /** The config file describing the modelled core to be created. */ + YAML::Node config_; + + /** The SimEng Linux kernel object. */ + simeng::kernel::Linux kernel_; /** Reference to source assembled by LLVM. */ char* source_ = nullptr; @@ -132,8 +135,8 @@ class CoreInstance { /** Size of the source code assembled by LLVM. */ size_t sourceSize_ = 0; - /** The config file describing the modelled core to be created. */ - YAML::Node config_; + /** Whether or not the source has been assembled by LLVM. */ + bool assembledSource_ = false; /** Reference to the SimEng linux process object. */ std::unique_ptr process_ = nullptr; @@ -144,9 +147,6 @@ class CoreInstance { /** The process memory space. */ std::shared_ptr processMemory_; - /** The SimEng Linux kernel object. */ - simeng::kernel::Linux kernel_; - /** Whether or not the dataMemory_ must be set manually. */ bool setDataMemory_ = false; diff --git a/src/include/simeng/ModelConfig.hh b/src/include/simeng/ModelConfig.hh index fab383e165..2ba7ff4278 100644 --- a/src/include/simeng/ModelConfig.hh +++ b/src/include/simeng/ModelConfig.hh @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -12,6 +13,7 @@ #include #include "simeng/arch/aarch64/Instruction.hh" +#include "simeng/version.hh" #include "yaml-cpp/yaml.h" #define DEFAULT_CONFIG \ @@ -39,10 +41,13 @@ "60, Dispatch-Rate: 4, Ports: [0, 1, 2, 3, 4, 5]}}, Execution-Units: " \ "{'0': {Pipelined: true}, '1': {Pipelined: true}, '2': {Pipelined: true}, " \ "'3': {Pipelined:true}, '4': {Pipelined: true}, '5': {Pipelined: true}}, " \ - "CPU-Info: {Generate-Special-Dir: false, Core-Count: 1, Socket-Count: 1, " \ - "SMT: 1, BogoMIPS: 200.00, Features: fp asimd evtstrm atomics cpuid, " \ - "CPU-Implementer: 0x0, CPU-Architecture: 0, CPU-Variant: 0x0, CPU-Part: " \ - "0x0, CPU-Revision: 0, Package-Count: 1}}") + "CPU-Info: {Generate-Special-Dir: false, " \ + "Special-File-Dir-Path: " SIMENG_BUILD_DIR \ + "/specialFiles/, Core-Count: 1, Socket-Count: 1, SMT: 1, BogoMIPS: " \ + "200.00, " \ + "Features: fp asimd evtstrm atomics cpuid, CPU-Implementer: 0x0, " \ + "CPU-Architecture: 0, CPU-Variant: 0x0, CPU-Part: 0x0, CPU-Revision: 0, " \ + "Package-Count: 1}}") namespace simeng { diff --git a/src/include/simeng/SpecialFileDirGen.hh b/src/include/simeng/SpecialFileDirGen.hh index faf5d2fac5..f1cc7d8116 100644 --- a/src/include/simeng/SpecialFileDirGen.hh +++ b/src/include/simeng/SpecialFileDirGen.hh @@ -22,13 +22,13 @@ class SpecialFileDirGen { private: /** Path to the root of the SimEng special files directory. */ - const std::string specialFilesDir_ = SIMENG_BUILD_DIR "/specialFiles"; + const std::string specialFilesDir_; /** Values declared in YAML config file needed to create the Special Files * Directory tree. */ uint64_t core_count; - uint64_t smt; uint64_t socket_count; + uint64_t smt; float bogoMIPS; std::string features; std::string cpu_implementer; diff --git a/src/include/simeng/kernel/Linux.hh b/src/include/simeng/kernel/Linux.hh index 0908d59006..b8ec954599 100644 --- a/src/include/simeng/kernel/Linux.hh +++ b/src/include/simeng/kernel/Linux.hh @@ -130,6 +130,9 @@ struct linux_dirent64 { to Linux system calls. */ class Linux { public: + Linux(const std::string specialFiledirPath) + : specialFilesDir_(specialFiledirPath) {} + /** Create a new Linux process running above this kernel. */ void createProcess(const LinuxProcess& process); @@ -252,7 +255,7 @@ class Linux { std::unordered_map specialPathTranslations_; /** Path to the root of the replacement special files. */ - const std::string specialFilesDir_ = SIMENG_BUILD_DIR "/specialFiles"; + const std::string specialFilesDir_; /** Vector of all currently supported special file paths & files.*/ std::vector supportedSpecialFiles_; diff --git a/src/lib/CoreInstance.cc b/src/lib/CoreInstance.cc index 84f3dd45cb..388fb12ca4 100644 --- a/src/lib/CoreInstance.cc +++ b/src/lib/CoreInstance.cc @@ -3,23 +3,29 @@ namespace simeng { CoreInstance::CoreInstance(std::string executablePath, - std::vector executableArgs) { - config_ = YAML::Load(DEFAULT_CONFIG); + std::vector executableArgs) + : config_(YAML::Load(DEFAULT_CONFIG)), + kernel_(kernel::Linux( + config_["CPU-Info"]["Special-File-Dir-Path"].as())) { generateCoreModel(executablePath, executableArgs); } CoreInstance::CoreInstance(std::string configPath, std::string executablePath, - std::vector executableArgs) { - config_ = simeng::ModelConfig(configPath).getConfigFile(); + std::vector executableArgs) + : config_(simeng::ModelConfig(configPath).getConfigFile()), + kernel_(kernel::Linux( + config_["CPU-Info"]["Special-File-Dir-Path"].as())) { generateCoreModel(executablePath, executableArgs); } CoreInstance::CoreInstance(char* assembledSource, size_t sourceSize, - std::string configPath) { - config_ = simeng::ModelConfig(configPath).getConfigFile(); - source_ = assembledSource; - sourceSize_ = sourceSize; - assembledSource_ = true; + std::string configPath) + : config_(simeng::ModelConfig(configPath).getConfigFile()), + kernel_(kernel::Linux( + config_["CPU-Info"]["Special-File-Dir-Path"].as())), + source_(assembledSource), + sourceSize_(sourceSize), + assembledSource_(true) { // Pass an empty string for executablePath and empty vector of strings for // executableArgs. generateCoreModel("", std::vector{}); diff --git a/src/lib/ModelConfig.cc b/src/lib/ModelConfig.cc index b877c3fa24..60a856c0e2 100644 --- a/src/lib/ModelConfig.cc +++ b/src/lib/ModelConfig.cc @@ -542,6 +542,7 @@ void ModelConfig::validate() { // CPU-Info root = "CPU-Info"; subFields = {"Generate-Special-Dir", + "Special-File-Dir-Path", "Core-Count", "Socket-Count", "SMT", @@ -555,41 +556,44 @@ void ModelConfig::validate() { "Package-Count"}; nodeChecker(configFile_[root][subFields[0]], subFields[0], std::vector{false, true}, ExpectedValue::Bool, false); - nodeChecker(configFile_[root][subFields[1]], subFields[1], - std::make_pair(1, UINT_MAX), - ExpectedValue::UInteger, 1); + nodeChecker(configFile_[root][subFields[1]], subFields[1], + std::vector(), ExpectedValue::String, + std::string(SIMENG_BUILD_DIR "/specialFiles/")); nodeChecker(configFile_[root][subFields[2]], subFields[2], std::make_pair(1, UINT_MAX), ExpectedValue::UInteger, 1); nodeChecker(configFile_[root][subFields[3]], subFields[3], std::make_pair(1, UINT_MAX), ExpectedValue::UInteger, 1); - nodeChecker(configFile_[root][subFields[4]], subFields[4], + nodeChecker(configFile_[root][subFields[4]], subFields[4], + std::make_pair(1, UINT_MAX), + ExpectedValue::UInteger, 1); + nodeChecker(configFile_[root][subFields[5]], subFields[5], std::make_pair(0.0f, std::numeric_limits::max()), ExpectedValue::Float, 0.0f); - nodeChecker(configFile_[root][subFields[5]], subFields[5], + nodeChecker(configFile_[root][subFields[6]], subFields[6], std::vector(), ExpectedValue::String, ""); - nodeChecker(configFile_[root][subFields[6]], subFields[6], // + nodeChecker(configFile_[root][subFields[7]], subFields[7], std::vector(), ExpectedValue::String, "0x0"); - nodeChecker(configFile_[root][subFields[7]], subFields[7], + nodeChecker(configFile_[root][subFields[8]], subFields[8], std::make_pair(0, UINT_MAX), ExpectedValue::UInteger, 0); - nodeChecker(configFile_[root][subFields[8]], subFields[8], // + nodeChecker(configFile_[root][subFields[9]], subFields[9], std::vector(), ExpectedValue::String, "0x0"); - nodeChecker(configFile_[root][subFields[9]], subFields[9], // + nodeChecker(configFile_[root][subFields[10]], subFields[10], std::vector(), ExpectedValue::String, "0x0"); - nodeChecker(configFile_[root][subFields[10]], subFields[10], + nodeChecker(configFile_[root][subFields[11]], subFields[11], std::make_pair(0, UINT_MAX), ExpectedValue::UInteger, 0x0); - if (nodeChecker(configFile_[root][subFields[11]], subFields[11], + if (nodeChecker(configFile_[root][subFields[12]], subFields[12], std::make_pair(1, UINT_MAX), ExpectedValue::UInteger, 1)) { - uint64_t package_count = configFile_[root][subFields[11]].as(); - uint64_t core_count = configFile_[root][subFields[1]].as(); + uint64_t package_count = configFile_[root][subFields[12]].as(); + uint64_t core_count = configFile_[root][subFields[2]].as(); // Ensure package_count size is a less than or equal to the core count, and // that the core count can be divided by the package count if (!((package_count <= core_count) && (core_count % package_count == 0))) { @@ -598,6 +602,12 @@ void ModelConfig::validate() { "and Core-Count must be divisible by Package-Count."; } } + // Ensure that if a Special-File-Dir-Path is provided, it exists + if (!std::filesystem::exists( + configFile_[root][subFields[1]].as())) { + invalid_ << "\t- Special-File-Dir-Path must exist. Please ensure the given " + "path is absolute and correct."; + } subFields.clear(); std::string missingStr = missing_.str(); diff --git a/src/lib/SpecialFileDirGen.cc b/src/lib/SpecialFileDirGen.cc index 0a3d937117..69f25062db 100644 --- a/src/lib/SpecialFileDirGen.cc +++ b/src/lib/SpecialFileDirGen.cc @@ -4,20 +4,20 @@ namespace simeng { -SpecialFileDirGen::SpecialFileDirGen(YAML::Node config) { - // Import all values from config file - core_count = config["CPU-Info"]["Core-Count"].as(); - socket_count = config["CPU-Info"]["Socket-Count"].as(); - smt = config["CPU-Info"]["SMT"].as(); - bogoMIPS = config["CPU-Info"]["BogoMIPS"].as(); - features = config["CPU-Info"]["Features"].as(); - cpu_implementer = config["CPU-Info"]["CPU-Implementer"].as(); - cpu_architecture = config["CPU-Info"]["CPU-Architecture"].as(); - cpu_variant = config["CPU-Info"]["CPU-Variant"].as(); - cpu_part = config["CPU-Info"]["CPU-Part"].as(); - cpu_revision = config["CPU-Info"]["CPU-Revision"].as(); - package_count = config["CPU-Info"]["Package-Count"].as(); -} +SpecialFileDirGen::SpecialFileDirGen(YAML::Node config) + : specialFilesDir_( + config["CPU-Info"]["Special-File-Dir-Path"].as()), + core_count(config["CPU-Info"]["Core-Count"].as()), + socket_count(config["CPU-Info"]["Socket-Count"].as()), + smt(config["CPU-Info"]["SMT"].as()), + bogoMIPS(config["CPU-Info"]["BogoMIPS"].as()), + features(config["CPU-Info"]["Features"].as()), + cpu_implementer(config["CPU-Info"]["CPU-Implementer"].as()), + cpu_architecture(config["CPU-Info"]["CPU-Architecture"].as()), + cpu_variant(config["CPU-Info"]["CPU-Variant"].as()), + cpu_part(config["CPU-Info"]["CPU-Part"].as()), + cpu_revision(config["CPU-Info"]["CPU-Revision"].as()), + package_count(config["CPU-Info"]["Package-Count"].as()) {} void SpecialFileDirGen::RemoveExistingSFDir() { const std::string exist_input = "[ ! -d " + specialFilesDir_ + " ]"; diff --git a/test/regression/RegressionTest.cc b/test/regression/RegressionTest.cc index 66d6501818..7ced5aff58 100644 --- a/test/regression/RegressionTest.cc +++ b/test/regression/RegressionTest.cc @@ -65,7 +65,8 @@ void RegressionTest::run(const char* source, const char* triple, std::unique_ptr dataMemory; // Create the OS kernel and the process - simeng::kernel::Linux kernel; + simeng::kernel::Linux kernel( + config["CPU-Info"]["Special-File-Dir-Path"].as()); kernel.createProcess(*process_); // Populate the heap with initial data (specified by the test being run). diff --git a/test/regression/aarch64/AArch64RegressionTest.hh b/test/regression/aarch64/AArch64RegressionTest.hh index c816ae91a2..32a156e287 100644 --- a/test/regression/aarch64/AArch64RegressionTest.hh +++ b/test/regression/aarch64/AArch64RegressionTest.hh @@ -21,7 +21,9 @@ "Permitted-Loads-Per-Cycle: 2, Permitted-Stores-Per-Cycle: 1}, Ports: " \ "{'0': {Portname: Port 0, Instruction-Group-Support: [0, 14, 52, 66, 67, " \ "70, 71, 72]}}, Reservation-Stations: {'0': {Size: 60, Dispatch-Rate: 4, " \ - "Ports: [0]}}, Execution-Units: {'0': {Pipelined: true}}}") + "Ports: [0]}}, Execution-Units: {'0': {Pipelined: true}}, CPU-Info: " \ + "{Generate-Special-Dir: False, Special-File-Dir-Path: " SIMENG_BUILD_DIR \ + "/specialFiles/}}") /** A helper function to convert the supplied parameters of * INSTANTIATE_TEST_SUITE_P into test name. */ diff --git a/test/regression/riscv/RISCVRegressionTest.hh b/test/regression/riscv/RISCVRegressionTest.hh index 514f86f84f..5ca36a97a6 100644 --- a/test/regression/riscv/RISCVRegressionTest.hh +++ b/test/regression/riscv/RISCVRegressionTest.hh @@ -19,9 +19,11 @@ "Permitted-Requests-Per-Cycle: 2, Permitted-Loads-Per-Cycle: 2, " \ "Permitted-Stores-Per-Cycle: 1}, Ports: {'0': {Portname: Port 0, " \ "Instruction-Group-Support: [0, 10, 20, 21, 22]}}, Reservation-Stations: " \ - "{'0': {Size: 60, Dispatch-Rate: 4, Ports: [0]}}, Execution-Units: {'0': " \ - "{Pipelined: true}}, Latencies: {'0': {Instruction-Group: {0: '7'}, " \ - "Execution-Latency: 39, Execution-Throughput: 39}}}") + "{'0': {Size: 60, Dispatch-Rate: 4, Ports: [0]}}, Execution-Units: " \ + "{'0': {Pipelined: true}}, Latencies: {'0': {Instruction-Group: {0: '7'}, " \ + "Execution-Latency: 39, Execution-Throughput: 39}}, CPU-Info: " \ + "{Generate-Special-Dir: False, Special-File-Dir-Path: " SIMENG_BUILD_DIR \ + "/specialFiles/}}") /** A helper function to convert the supplied parameters of * INSTANTIATE_TEST_SUITE_P into test name. */ diff --git a/test/unit/ArchitectureTest.cc b/test/unit/ArchitectureTest.cc index 431f864e89..6b32f56bb7 100644 --- a/test/unit/ArchitectureTest.cc +++ b/test/unit/ArchitectureTest.cc @@ -1,3 +1,5 @@ +#include + #include "gtest/gtest.h" #include "simeng/CoreInstance.hh" #include "simeng/ModelConfig.hh" @@ -12,16 +14,17 @@ namespace simeng { // AArch64 Tests class AArch64ArchitectureTest : public testing::Test { public: - AArch64ArchitectureTest() { + AArch64ArchitectureTest() + : config(simeng::ModelConfig(configPath).getConfigFile()), + kernel(config["CPU-Info"]["Special-File-Dir-Path"].as()) { arch = std::make_unique(kernel, config); kernel.createProcess(process); } protected: - YAML::Node config = - simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/a64fx.yaml") - .getConfigFile(); + const std::string configPath = SIMENG_SOURCE_DIR "/configs/a64fx.yaml"; + YAML::Node config; // fdivr z1.s, p0/m, z1.s, z0.s std::array validInstrBytes = {0x01, 0x80, 0x8c, 0x65}; @@ -104,7 +107,8 @@ TEST_F(AArch64ArchitectureTest, handleException) { std::string executablePath = ""; std::vector executableArgs = {}; std::unique_ptr coreInstance = - std::make_unique(executablePath, executableArgs); + std::make_unique(configPath, executablePath, + executableArgs); const simeng::Core& core = *coreInstance->getCore(); simeng::MemoryInterface& memInt = *coreInstance->getDataMemory(); auto exceptionHandler = arch->handleException(insn[0], core, memInt); @@ -230,15 +234,17 @@ TEST_F(AArch64ArchitectureTest, get_set_SVCRVal) { // RISC-V Tests class RiscVArchitectureTest : public testing::Test { public: - RiscVArchitectureTest() { + RiscVArchitectureTest() + : config(simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/DEMO_RISCV.yaml") + .getConfigFile()), + kernel(config["CPU-Info"]["Special-File-Dir-Path"].as()) { arch = std::make_unique(kernel, config); kernel.createProcess(process); } protected: - YAML::Node config = - simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/DEMO_RISCV.yaml") - .getConfigFile(); + const std::string configPath = SIMENG_SOURCE_DIR "/configs/DEMO_RISCV.yaml"; + YAML::Node config; // addi sp, ra, 2000 std::array validInstrBytes = {0x13, 0x81, 0x00, 0x7d}; @@ -314,7 +320,8 @@ TEST_F(RiscVArchitectureTest, handleException) { std::string executablePath = ""; std::vector executableArgs = {}; std::unique_ptr coreInstance = - std::make_unique(executablePath, executableArgs); + std::make_unique(configPath, executablePath, + executableArgs); const simeng::Core& core = *coreInstance->getCore(); simeng::MemoryInterface& memInt = *coreInstance->getDataMemory(); auto exceptionHandler = arch->handleException(insn[0], core, memInt); diff --git a/test/unit/OSTest.cc b/test/unit/OSTest.cc index 9f327d5ed2..e074d5e0bf 100644 --- a/test/unit/OSTest.cc +++ b/test/unit/OSTest.cc @@ -11,6 +11,7 @@ class OSTest : public testing::Test { OSTest() : config(simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/a64fx.yaml") .getConfigFile()), + os(config["CPU-Info"]["Special-File-Dir-Path"].as()), proc_elf(simeng::kernel::LinuxProcess(cmdLine, config)), proc_hex(simeng::span(reinterpret_cast(demoHex), sizeof(demoHex)), From 90f12d5b082cb29b8060368d140cc531f8bb9f8c Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Mon, 11 Dec 2023 15:28:05 +0000 Subject: [PATCH 37/96] Minor changes to model config and default config files. --- src/lib/ModelConfig.cc | 7 +++++-- test/regression/aarch64/AArch64RegressionTest.hh | 5 +++-- test/regression/riscv/RISCVRegressionTest.hh | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/lib/ModelConfig.cc b/src/lib/ModelConfig.cc index 60a856c0e2..658a1393ef 100644 --- a/src/lib/ModelConfig.cc +++ b/src/lib/ModelConfig.cc @@ -554,11 +554,12 @@ void ModelConfig::validate() { "CPU-Part", "CPU-Revision", "Package-Count"}; + const std::string defaultSpecialFilePath = SIMENG_BUILD_DIR "/specialFiles/"; nodeChecker(configFile_[root][subFields[0]], subFields[0], std::vector{false, true}, ExpectedValue::Bool, false); nodeChecker(configFile_[root][subFields[1]], subFields[1], std::vector(), ExpectedValue::String, - std::string(SIMENG_BUILD_DIR "/specialFiles/")); + defaultSpecialFilePath); nodeChecker(configFile_[root][subFields[2]], subFields[2], std::make_pair(1, UINT_MAX), ExpectedValue::UInteger, 1); @@ -603,7 +604,9 @@ void ModelConfig::validate() { } } // Ensure that if a Special-File-Dir-Path is provided, it exists - if (!std::filesystem::exists( + if (!(defaultSpecialFilePath == + configFile_[root][subFields[1]].as()) && + !std::filesystem::exists( configFile_[root][subFields[1]].as())) { invalid_ << "\t- Special-File-Dir-Path must exist. Please ensure the given " "path is absolute and correct."; diff --git a/test/regression/aarch64/AArch64RegressionTest.hh b/test/regression/aarch64/AArch64RegressionTest.hh index 32a156e287..f126f89103 100644 --- a/test/regression/aarch64/AArch64RegressionTest.hh +++ b/test/regression/aarch64/AArch64RegressionTest.hh @@ -3,6 +3,7 @@ #include "RegressionTest.hh" #include "simeng/arch/aarch64/Architecture.hh" #include "simeng/arch/aarch64/Instruction.hh" +#include "simeng/version.hh" #define AARCH64_CONFIG \ ("{Core: {ISA: AArch64, Simulation-Mode: emulation, Clock-Frequency: 2.5, " \ @@ -22,8 +23,8 @@ "{'0': {Portname: Port 0, Instruction-Group-Support: [0, 14, 52, 66, 67, " \ "70, 71, 72]}}, Reservation-Stations: {'0': {Size: 60, Dispatch-Rate: 4, " \ "Ports: [0]}}, Execution-Units: {'0': {Pipelined: true}}, CPU-Info: " \ - "{Generate-Special-Dir: False, Special-File-Dir-Path: " SIMENG_BUILD_DIR \ - "/specialFiles/}}") + "{Generate-Special-Dir: False, Special-File-Dir-Path: " SIMENG_SOURCE_DIR \ + "/test/regression/aarch64/specialFiles/}}") /** A helper function to convert the supplied parameters of * INSTANTIATE_TEST_SUITE_P into test name. */ diff --git a/test/regression/riscv/RISCVRegressionTest.hh b/test/regression/riscv/RISCVRegressionTest.hh index 5ca36a97a6..8e6d552a52 100644 --- a/test/regression/riscv/RISCVRegressionTest.hh +++ b/test/regression/riscv/RISCVRegressionTest.hh @@ -22,8 +22,8 @@ "{'0': {Size: 60, Dispatch-Rate: 4, Ports: [0]}}, Execution-Units: " \ "{'0': {Pipelined: true}}, Latencies: {'0': {Instruction-Group: {0: '7'}, " \ "Execution-Latency: 39, Execution-Throughput: 39}}, CPU-Info: " \ - "{Generate-Special-Dir: False, Special-File-Dir-Path: " SIMENG_BUILD_DIR \ - "/specialFiles/}}") + "{Generate-Special-Dir: False, Special-File-Dir-Path: " SIMENG_SOURCE_DIR \ + "/test/regression/aarch64/specialFiles/}}") /** A helper function to convert the supplied parameters of * INSTANTIATE_TEST_SUITE_P into test name. */ From 27b1bb06e7aa7b65c9dd0b0eba20e572960dfbac Mon Sep 17 00:00:00 2001 From: jj16791 Date: Tue, 12 Dec 2023 16:25:30 +0000 Subject: [PATCH 38/96] New/updated unit tests for LSQ --- simeng-fileio-test.txt | 1 + test/unit/MockInstruction.hh | 5 +- test/unit/pipeline/LoadStoreQueueTest.cc | 470 ++++++++++++++++++++++- 3 files changed, 462 insertions(+), 14 deletions(-) create mode 100644 simeng-fileio-test.txt diff --git a/simeng-fileio-test.txt b/simeng-fileio-test.txt new file mode 100644 index 0000000000..8ab686eafe --- /dev/null +++ b/simeng-fileio-test.txt @@ -0,0 +1 @@ +Hello, World! diff --git a/test/unit/MockInstruction.hh b/test/unit/MockInstruction.hh index 41af10f5f7..e85ec33ead 100644 --- a/test/unit/MockInstruction.hh +++ b/test/unit/MockInstruction.hh @@ -21,6 +21,7 @@ class MockInstruction : public Instruction { MOCK_METHOD0(generateAddresses, span()); MOCK_METHOD2(supplyData, void(uint64_t address, const RegisterValue& data)); MOCK_CONST_METHOD0(getGeneratedAddresses, span()); + MOCK_CONST_METHOD0(hasAllData, bool()); MOCK_CONST_METHOD0(getData, span()); MOCK_CONST_METHOD0(checkEarlyBranchMisprediction, @@ -34,6 +35,8 @@ class MockInstruction : public Instruction { MOCK_CONST_METHOD0(isBranch, bool()); MOCK_CONST_METHOD0(getGroup, uint16_t()); + MOCK_CONST_METHOD0(getLSQLatency, uint16_t()); + MOCK_METHOD0(getSupportedPorts, const std::vector&()); void setBranchResults(bool wasTaken, uint64_t targetAddress) { @@ -50,7 +53,7 @@ class MockInstruction : public Instruction { void setDataPending(uint8_t value) { dataPending_ = value; } void setLatency(uint16_t cycles) { latency_ = cycles; } - + void setLSQLatency(uint16_t cycles) { lsqExecutionLatency_ = cycles; } void setStallCycles(uint16_t cycles) { stallCycles_ = cycles; } }; diff --git a/test/unit/pipeline/LoadStoreQueueTest.cc b/test/unit/pipeline/LoadStoreQueueTest.cc index 414363352c..85a3481644 100644 --- a/test/unit/pipeline/LoadStoreQueueTest.cc +++ b/test/unit/pipeline/LoadStoreQueueTest.cc @@ -17,6 +17,10 @@ const uint8_t MAX_LOADS = 32; const uint8_t MAX_STORES = 32; const uint8_t MAX_COMBINED = 64; +// TODO: When the associated requestWrite(...) gets moved into the LSQ's tick() +// functionality, we need to check the state of requestStoreQueue_ and calling +// of requestWrite(...) in a vareity of tests + class MockForwardOperandsHandler { public: MOCK_METHOD2(forwardOperands, @@ -36,10 +40,12 @@ class LoadStoreQueueTest : public ::testing::TestWithParam { loadUop2(new MockInstruction), storeUop(new MockInstruction), storeUop2(new MockInstruction), + loadStoreUop(new MockInstruction), loadUopPtr(loadUop), loadUopPtr2(loadUop2), storeUopPtr(storeUop), - storeUopPtr2(storeUop2) { + storeUopPtr2(storeUop2), + loadStoreUopPtr(loadStoreUop) { // Set up sensible return values for the load uop ON_CALL(*loadUop, isLoad()).WillByDefault(Return(true)); ON_CALL(*loadUop, getGeneratedAddresses()) @@ -54,7 +60,12 @@ class LoadStoreQueueTest : public ::testing::TestWithParam { } protected: - LoadStoreQueue getQueue() { + LoadStoreQueue getQueue(bool exclusive = false, + uint16_t loadBandwidth = UINT16_MAX, + uint16_t storeBandwidth = UINT16_MAX, + uint16_t permittedRequests = UINT16_MAX, + uint16_t permittedLoads = UINT16_MAX, + uint16_t permittedStores = UINT16_MAX) { if (GetParam()) { // Combined queue return LoadStoreQueue( @@ -63,7 +74,8 @@ class LoadStoreQueueTest : public ::testing::TestWithParam { [this](auto registers, auto values) { forwardOperandsHandler.forwardOperands(registers, values); }, - [](auto uop) {}); + [](auto uop) {}, exclusive, loadBandwidth, storeBandwidth, + permittedRequests, permittedLoads, permittedStores); } else { // Split queue return LoadStoreQueue( @@ -72,7 +84,8 @@ class LoadStoreQueueTest : public ::testing::TestWithParam { [this](auto registers, auto values) { forwardOperandsHandler.forwardOperands(registers, values); }, - [](auto uop) {}); + [](auto uop) {}, exclusive, loadBandwidth, storeBandwidth, + permittedRequests, permittedLoads, permittedStores); } } @@ -122,11 +135,13 @@ class LoadStoreQueueTest : public ::testing::TestWithParam { MockInstruction* loadUop2; MockInstruction* storeUop; MockInstruction* storeUop2; + MockInstruction* loadStoreUop; std::shared_ptr loadUopPtr; std::shared_ptr loadUopPtr2; std::shared_ptr storeUopPtr; std::shared_ptr storeUopPtr2; + std::shared_ptr loadStoreUopPtr; MockForwardOperandsHandler forwardOperandsHandler; @@ -203,11 +218,49 @@ TEST_P(LoadStoreQueueTest, AddStore) { TEST_P(LoadStoreQueueTest, PurgeFlushedLoad) { auto queue = getQueue(); auto initialLoadSpace = queue.getLoadQueueSpace(); + MemoryReadResult completedRead = {addresses[0], data[0], 1}; + span completedReads = {&completedRead, 1}; + + // Set load instruction attributes + loadUop->setSequenceId(0); + loadUop->setInstructionId(0); + loadUop2->setSequenceId(1); + loadUop2->setInstructionId(1); + + EXPECT_CALL(*loadUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(addressesSpan)); + EXPECT_CALL(*loadUop2, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(addressesSpan)); + + // Add loads to LSQ queue.addLoad(loadUopPtr); + queue.addLoad(loadUopPtr2); + + // Start the first load so that its accesses can be added to + // requestLoadQueue_/requestedLoads_ and expect a memory access to be + // performed + queue.startLoad(loadUopPtr); + EXPECT_CALL(dataMemory, requestRead(addresses[0], 0)).Times(1); + queue.tick(); + // Start the second load so that its accesses can be added to + // requestLoadQueue_/requestedLoads_ but flush it before it can perform a + // memory access + queue.startLoad(loadUopPtr2); loadUop->setFlushed(); + loadUop2->setFlushed(); queue.purgeFlushed(); + // Expect no activity regarding memory accesses or the passing of the load + // instruction to the output buffer + EXPECT_CALL(dataMemory, requestRead(_, _)).Times(0); + EXPECT_CALL(dataMemory, getCompletedReads()) + .WillRepeatedly(Return(completedReads)); + EXPECT_EQ(completionSlots[0].getTailSlots()[0], nullptr); + queue.tick(); + EXPECT_EQ(queue.getLoadQueueSpace(), initialLoadSpace); } @@ -231,11 +284,21 @@ TEST_P(LoadStoreQueueTest, Load) { MemoryReadResult completedRead = {addresses[0], data[0], 1}; span completedReads = {&completedRead, 1}; - EXPECT_CALL(*loadUop, getGeneratedAddresses()).Times(AtLeast(1)); - - loadUop->setDataPending(addresses.size()); + // Set load instruction attributes + EXPECT_CALL(*loadUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(addressesSpan)); + loadUop->setLSQLatency(3); + // Begin load in LSQ queue.addLoad(loadUopPtr); + queue.startLoad(loadUopPtr); + + // Given 3 cycle latency, no requests should occur in the first two ticks of + // the LSQ + EXPECT_CALL(dataMemory, requestRead(_, _)).Times(0); + queue.tick(); + queue.tick(); // Check that a read request is made to the memory interface EXPECT_CALL(dataMemory, requestRead(addresses[0], _)).Times(1); @@ -245,15 +308,40 @@ TEST_P(LoadStoreQueueTest, Load) { .WillRepeatedly(Return(completedReads)); // Check that the LSQ supplies the right data to the instruction - // TODO: Replace with check for call over memory interface in future? EXPECT_CALL(*loadUop, - supplyData(0, Property(&RegisterValue::get, data[0]))) + supplyData(addresses[0].address, + Property(&RegisterValue::get, data[0]))) .Times(1); + // Tick the queue to complete the load + queue.tick(); + + EXPECT_EQ(completionSlots[0].getTailSlots()[0].get(), loadUop); +} + +// Tests that a queue can perform a load with no addresses +TEST_P(LoadStoreQueueTest, LoadWithNoAddresses) { + loadUop->setSequenceId(1); + auto queue = getQueue(); + + span emptyAddressesSpan = {}; + + EXPECT_CALL(*loadUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(emptyAddressesSpan)); + + // Check that a read request isn't made to the memory interface but the load + // completes in the LSQ + EXPECT_CALL(dataMemory, requestRead(_, _)).Times(0); + EXPECT_CALL(*loadUop, execute()).Times(1); + + queue.addLoad(loadUopPtr); queue.startLoad(loadUopPtr); // Tick the queue to complete the load queue.tick(); + + EXPECT_EQ(completionSlots[0].getTailSlots()[0].get(), loadUop); } // Tests that a queue can commit a load @@ -275,14 +363,18 @@ TEST_P(LoadStoreQueueTest, Store) { auto queue = getQueue(); auto initialStoreSpace = queue.getStoreQueueSpace(); - EXPECT_CALL(*storeUop, getGeneratedAddresses()).Times(AtLeast(1)); - EXPECT_CALL(*storeUop, getData()).Times(AtLeast(1)); - + // Set store instruction attributes storeUop->setSequenceId(1); storeUop->setInstructionId(1); + EXPECT_CALL(*storeUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(addressesSpan)); + EXPECT_CALL(*storeUop, getData()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(dataSpan)); + queue.addStore(storeUopPtr); - storeUopPtr->setCommitReady(); queue.supplyStoreData(storeUopPtr); // Check that a write request is sent to the memory interface @@ -299,6 +391,298 @@ TEST_P(LoadStoreQueueTest, Store) { EXPECT_EQ(queue.getStoreQueueSpace(), initialStoreSpace); } +// Tests that a queue can perform a load-store operation +TEST_P(LoadStoreQueueTest, LoadStore) { + auto queue = getQueue(); + auto initialLoadSpace = queue.getLoadQueueSpace(); + auto initialStoreSpace = queue.getStoreQueueSpace(); + + MemoryReadResult completedRead = {addresses[0], data[0], 1}; + span completedReads = {&completedRead, 1}; + + // Set load-store instruction attributes + loadStoreUop->setSequenceId(1); + loadStoreUop->setInstructionId(1); + + EXPECT_CALL(*loadStoreUop, isLoad()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(true)); + EXPECT_CALL(*loadStoreUop, isStoreData()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(true)); + + EXPECT_CALL(*loadStoreUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(addressesSpan)); + EXPECT_CALL(*loadStoreUop, getData()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(dataSpan)); + + // Register load-store operation and start load portion + queue.addLoad(loadStoreUopPtr); + queue.addStore(loadStoreUopPtr); + queue.startLoad(loadStoreUopPtr); + + // Check that a read request is made to the memory interface + EXPECT_CALL(dataMemory, requestRead(addresses[0], _)).Times(1); + + // Expect a check against finished reads and return the result + EXPECT_CALL(dataMemory, getCompletedReads()) + .WillRepeatedly(Return(completedReads)); + + // Check that the LSQ supplies the right data to the instruction + EXPECT_CALL(*loadStoreUop, + supplyData(addresses[0].address, + Property(&RegisterValue::get, data[0]))) + .Times(1); + + // Tick the queue to complete the load portion of the load-store + queue.tick(); + EXPECT_EQ(completionSlots[0].getTailSlots()[0].get(), loadStoreUop); + + // Check that a write request is sent to the memory interface + EXPECT_CALL(dataMemory, + requestWrite(addresses[0], + Property(&RegisterValue::get, data[0]))) + .Times(1); + + // Commit both potions of the load-store + queue.commitLoad(loadStoreUopPtr); + queue.commitStore(loadStoreUopPtr); + + // Check the load-store was removed + EXPECT_EQ(queue.getLoadQueueSpace(), initialLoadSpace); + EXPECT_EQ(queue.getStoreQueueSpace(), initialStoreSpace); +} + +// Tests that bandwidth restrictions are adhered to in a non-exclusive LSQ +TEST_P(LoadStoreQueueTest, NonExclusiveBandwidthRestriction) { + auto queue = getQueue(false, 3, 3); + + // Set instruction attributes + loadUop->setSequenceId(0); + loadUop->setInstructionId(0); + storeUop->setSequenceId(1); + storeUop->setInstructionId(1); + loadUop2->setSequenceId(2); + loadUop2->setInstructionId(2); + + std::vector multipleAddresses = {{1, 2}, {2, 2}}; + span multipleAddressesSpan = { + multipleAddresses.data(), multipleAddresses.size()}; + std::vector storeData = {static_cast(0x01), + static_cast(0x10)}; + span storeDataSpan = {storeData.data(), + storeData.size()}; + + EXPECT_CALL(*loadUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(multipleAddressesSpan)); + EXPECT_CALL(*storeUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(multipleAddressesSpan)); + EXPECT_CALL(*loadUop2, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(multipleAddressesSpan)); + EXPECT_CALL(*storeUop, getData()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(storeDataSpan)); + + // Add instructions to LSQ and register their accesses to be processed in the + // tick() function + queue.addLoad(loadUopPtr); + queue.addLoad(loadUopPtr2); + queue.startLoad(loadUopPtr); + queue.startLoad(loadUopPtr2); + queue.addStore(storeUopPtr); + queue.supplyStoreData(storeUopPtr); + queue.commitStore(storeUopPtr); + + // Set expectations for tick logic based on set restrictions. Only 2 bytes of + // read and 2 bytes of write accesses should be processed per cycle (in this + // case that translates to one of the two addresses each uop has to handle). + EXPECT_CALL(dataMemory, requestRead(_, 0)).Times(1); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, 0)).Times(1); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, 2)).Times(1); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, 2)).Times(1); + queue.tick(); +} + +// Tests that bandwidth restrictions are adhered to in an exclusive LSQ +TEST_P(LoadStoreQueueTest, ExclusiveBandwidthRestriction) { + auto queue = getQueue(true, 3, 3); + + // Set instruction attributes + loadUop->setSequenceId(0); + loadUop->setInstructionId(0); + storeUop->setSequenceId(1); + storeUop->setInstructionId(1); + loadUop2->setSequenceId(2); + loadUop2->setInstructionId(2); + + std::vector multipleAddresses = {{1, 2}, {2, 2}}; + span multipleAddressesSpan = { + multipleAddresses.data(), multipleAddresses.size()}; + std::vector storeData = {static_cast(0x01), + static_cast(0x10)}; + span storeDataSpan = {storeData.data(), + storeData.size()}; + + EXPECT_CALL(*loadUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(multipleAddressesSpan)); + EXPECT_CALL(*storeUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(multipleAddressesSpan)); + EXPECT_CALL(*loadUop2, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(multipleAddressesSpan)); + EXPECT_CALL(*storeUop, getData()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(storeDataSpan)); + + // Add instructions to LSQ and register their accesses to be processed in the + // tick() function + queue.addLoad(loadUopPtr); + queue.addLoad(loadUopPtr2); + queue.startLoad(loadUopPtr); + queue.startLoad(loadUopPtr2); + queue.addStore(storeUopPtr); + queue.supplyStoreData(storeUopPtr); + queue.commitStore(storeUopPtr); + + // Set expectations for tick logic based on set restrictions. Only 2 bytes of + // read and 2 bytes of write accesses should be processed per cycle (in this + // case that translates to one of the two addresses each uop has to handle). + // However, there cannot be an overlap between load and store bandwidth usage + // per cycle due to the LSQ being exclusive + EXPECT_CALL(dataMemory, requestRead(_, _)).Times(0); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, _)).Times(0); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, 0)).Times(1); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, 0)).Times(1); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, 2)).Times(1); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, 2)).Times(1); + queue.tick(); +} + +// Tests that request restrictions are adhered to in a non-exclusive LSQ +TEST_P(LoadStoreQueueTest, NonExclusiveRequestsRestriction) { + auto queue = getQueue(false, UINT16_MAX, UINT16_MAX, 2, 2, 1); + + // Set instruction attributes + loadUop->setSequenceId(0); + loadUop->setInstructionId(0); + storeUop->setSequenceId(1); + storeUop->setInstructionId(1); + loadUop2->setSequenceId(2); + loadUop2->setInstructionId(2); + + std::vector multipleAddresses = {{1, 2}, {2, 2}}; + span multipleAddressesSpan = { + multipleAddresses.data(), multipleAddresses.size()}; + std::vector storeData = {static_cast(0x01), + static_cast(0x10)}; + span storeDataSpan = {storeData.data(), + storeData.size()}; + + EXPECT_CALL(*loadUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(multipleAddressesSpan)); + EXPECT_CALL(*storeUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(multipleAddressesSpan)); + EXPECT_CALL(*loadUop2, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(multipleAddressesSpan)); + EXPECT_CALL(*storeUop, getData()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(storeDataSpan)); + + // Add instructions to LSQ and register their accesses to be processed in the + // tick() function + queue.addLoad(loadUopPtr); + queue.addLoad(loadUopPtr2); + queue.startLoad(loadUopPtr); + queue.startLoad(loadUopPtr2); + queue.addStore(storeUopPtr); + queue.supplyStoreData(storeUopPtr); + queue.commitStore(storeUopPtr); + + // Set expectations for tick logic based on set restrictions. Either 2 reads + // or 1 read and 1 write should be processed per cycle + EXPECT_CALL(dataMemory, requestRead(_, 0)).Times(1); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, 0)).Times(1); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, 2)).Times(2); + queue.tick(); +} + +// Tests that request restrictions are adhered to in an exclusive LSQ +TEST_P(LoadStoreQueueTest, ExclusiveRequestsRestriction) { + auto queue = getQueue(true, UINT16_MAX, UINT16_MAX, 3, 2, 1); + + // Set instruction attributes + loadUop->setSequenceId(0); + loadUop->setInstructionId(0); + storeUop->setSequenceId(1); + storeUop->setInstructionId(1); + loadUop2->setSequenceId(2); + loadUop2->setInstructionId(2); + + std::vector multipleAddresses = {{1, 2}, {2, 2}}; + span multipleAddressesSpan = { + multipleAddresses.data(), multipleAddresses.size()}; + std::vector storeData = {static_cast(0x01), + static_cast(0x10)}; + span storeDataSpan = {storeData.data(), + storeData.size()}; + + EXPECT_CALL(*loadUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(multipleAddressesSpan)); + EXPECT_CALL(*storeUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(multipleAddressesSpan)); + EXPECT_CALL(*loadUop2, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(multipleAddressesSpan)); + EXPECT_CALL(*storeUop, getData()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(storeDataSpan)); + + // Add instructions to LSQ and register their accesses to be processed in the + // tick() function + queue.addLoad(loadUopPtr); + queue.addLoad(loadUopPtr2); + queue.startLoad(loadUopPtr); + queue.startLoad(loadUopPtr2); + queue.addStore(storeUopPtr); + queue.supplyStoreData(storeUopPtr); + queue.commitStore(storeUopPtr); + + // Set expectations for tick logic based on set restrictions. Only 2 reads and + // 1 write should be processed per cycle. However, there cannot be an overlap + // between load and store requests being processed in a single cycle due to + // the LSQ being exclusive. + EXPECT_CALL(dataMemory, requestRead(_, _)).Times(0); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, _)).Times(0); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, 0)).Times(2); + queue.tick(); + EXPECT_CALL(dataMemory, requestRead(_, 2)).Times(2); + queue.tick(); +} + // Tests that committing a store will correctly detect a direct memory order // violation TEST_P(LoadStoreQueueTest, Violation) { @@ -456,6 +840,66 @@ TEST_P(LoadStoreQueueTest, FlushDuringConfliction) { queue.tick(); } +// Test that a load access exactly conflicting on a store access (matching +// address and access size no larger) gets its data supplied when the store +// commits +TEST_P(LoadStoreQueueTest, SupplyDataToConfliction) { + auto queue = getQueue(); + + // Set instruction attributes + storeUop->setSequenceId(0); + storeUop->setInstructionId(0); + loadUop->setSequenceId(1); + loadUop->setInstructionId(1); + + std::vector storeAddresses = {{1, 1}, {2, 1}}; + span storeAddressesSpan = {storeAddresses.data(), + storeAddresses.size()}; + std::vector storeData = {static_cast(0x01), + static_cast(0x10)}; + span storeDataSpan = {storeData.data(), + storeData.size()}; + EXPECT_CALL(*storeUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(storeAddressesSpan)); + EXPECT_CALL(*storeUop, getData()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(storeDataSpan)); + + // Set load addresses which exactly and partially overlaps on first and second + // store addresses respectively + std::vector loadAddresses = {{1, 1}, {2, 2}, {3, 1}}; + span loadAddressesSpan = {loadAddresses.data(), + loadAddresses.size()}; + EXPECT_CALL(*loadUop, getGeneratedAddresses()) + .Times(AtLeast(1)) + .WillRepeatedly(Return(loadAddressesSpan)); + + // Add instructions to LSQ + queue.addStore(storeUopPtr); + queue.addLoad(loadUopPtr); + + // Supply store data so the store can commit + queue.supplyStoreData(storeUopPtr); + + // Start the load so the confliction can be registered + queue.startLoad(loadUopPtr); + + // Two of the accesses don't exactly conflict so they should generate memory + // accesses + EXPECT_CALL(dataMemory, requestRead(loadAddresses[1], 1)).Times(1); + EXPECT_CALL(dataMemory, requestRead(loadAddresses[2], 1)).Times(1); + queue.tick(); + + // The one access which does exactly conflict with a store access should get + // its data supplied on the store's commitment + EXPECT_CALL(*loadUop, + supplyData(loadAddresses[0].address, + Property(&RegisterValue::get, storeData[0]))) + .Times(1); + queue.commitStore(storeUopPtr); +} + INSTANTIATE_TEST_SUITE_P(LoadStoreQueueTests, LoadStoreQueueTest, ::testing::Values(false, true)); From a3ce86cced59b47038209dddb5247682d877a0e4 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 12 Dec 2023 11:34:53 +0000 Subject: [PATCH 39/96] Added special file unit tests. --- src/lib/SpecialFileDirGen.cc | 4 +- test/unit/CMakeLists.txt | 1 + test/unit/SpecialFileDirGenTest.cc | 130 +++++++++++++++++++++++++++++ 3 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 test/unit/SpecialFileDirGenTest.cc diff --git a/src/lib/SpecialFileDirGen.cc b/src/lib/SpecialFileDirGen.cc index 69f25062db..b66271a925 100644 --- a/src/lib/SpecialFileDirGen.cc +++ b/src/lib/SpecialFileDirGen.cc @@ -25,12 +25,12 @@ void SpecialFileDirGen::RemoveExistingSFDir() { const std::string rm_input = "rm -r " + specialFilesDir_; system(rm_input.c_str()); } - const std::string mk_input = "mkdir " + specialFilesDir_; - system(mk_input.c_str()); return; } void SpecialFileDirGen::GenerateSFDir() { + // Create root special files directory + system(("mkdir " + specialFilesDir_).c_str()); // Define frequently accessed root directories in special file tree const std::string proc_dir = specialFilesDir_ + "/proc/"; const std::string online_dir = specialFilesDir_ + "/sys/devices/system/cpu/"; diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 759151da68..7410c304cd 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -24,6 +24,7 @@ set(TEST_SOURCES ProcessTest.cc RegisterFileSetTest.cc RegisterValueTest.cc + SpecialFileDirGenTest.cc ) add_executable(unittests ${TEST_SOURCES}) diff --git a/test/unit/SpecialFileDirGenTest.cc b/test/unit/SpecialFileDirGenTest.cc new file mode 100644 index 0000000000..29530db30e --- /dev/null +++ b/test/unit/SpecialFileDirGenTest.cc @@ -0,0 +1,130 @@ +#include + +#include "gmock/gmock.h" +#include "simeng/SpecialFileDirGen.hh" +#include "simeng/version.hh" + +namespace simeng { + +#define TEST_SPEC_FILE_DIR SIMENG_SOURCE_DIR "/test/unit/specialFiles/" + +#define SPEC_FILE_TEST_CONFIG \ + ("{Core: {ISA: AArch64, Simulation-Mode: inorderpipelined, " \ + "Clock-Frequency: 2.5, Timer-Frequency: 100, Micro-Operations: True, " \ + "Vector-Length: 512, Streaming-Vector-Length: 512}, Fetch: " \ + "{Fetch-Block-Size: 32, Loop-Buffer-Size: 64, Loop-Detection-Threshold: " \ + "4}, Process-Image: {Heap-Size: 10485760, Stack-Size: 1048576}, " \ + "Register-Set: {GeneralPurpose-Count: 154, FloatingPoint/SVE-Count: 90, " \ + "Predicate-Count: 17, Conditional-Count: 128, Matrix-Count: 2}, " \ + "Pipeline-Widths: {Commit: 4, FrontEnd: 4, LSQ-Completion: 2}, " \ + "Queue-Sizes: {ROB: 180, Load: 64, Store: 36}, Branch-Predictor: " \ + "{BTB-Tag-Bits: 11, Saturating-Count-Bits: 2, Global-History-Length: 10, " \ + "RAS-entries: 5, Fallback-Static-Predictor: 2}, L1-Data-Memory: " \ + "{Interface-Type: Flat}, L1-Instruction-Memory: {Interface-Type: Flat}, " \ + "LSQ-L1-Interface: {Access-Latency: 4, Exclusive: False, Load-Bandwidth: " \ + "32, Store-Bandwidth: 16, Permitted-Requests-Per-Cycle: 2, " \ + "Permitted-Loads-Per-Cycle: 2, Permitted-Stores-Per-Cycle: 1}, Ports: " \ + "{'0': {Portname: Port 0, Instruction-Group-Support: [1, 8, 14]}, '1': " \ + "{Portname: Port 1, Instruction-Group-Support: [0, 14]}, '2': {Portname: " \ + "Port 2, Instruction-Group-Support: [1, 8, 71]}, '3': {Portname: Port 4, " \ + "Instruction-Group-Support: [67]}, '4': {Portname: Port 5, " \ + "Instruction-Group-Support: [67]}, '5': {Portname: Port 3, " \ + "Instruction-Group-Support: [70]}}, Reservation-Stations: {'0': {Size: " \ + "60, Dispatch-Rate: 4, Ports: [0, 1, 2, 3, 4, 5]}}, Execution-Units: " \ + "{'0': {Pipelined: true}, '1': {Pipelined: true}, '2': {Pipelined: true}, " \ + "'3': {Pipelined:true}, '4': {Pipelined: true}, '5': {Pipelined: true}}, " \ + "CPU-Info: {Generate-Special-Dir: True, " \ + "Special-File-Dir-Path: " TEST_SPEC_FILE_DIR \ + ", Core-Count: 1, Socket-Count: 1, SMT: 1, BogoMIPS: 200.00, Features: fp " \ + "asimd evtstrm sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm fcma " \ + "dcpop sve, CPU-Implementer: 0x46, CPU-Architecture: 8, CPU-Variant: 0x1, " \ + "CPU-Part: 0x001, CPU-Revision: 0, Package-Count: 1}}") + +class SpecialFileDirGenTest : public testing::Test { + public: + SpecialFileDirGenTest() + : config(YAML::Load(SPEC_FILE_TEST_CONFIG)), specFile(config) {} + + protected: + YAML::Node config; + SpecialFileDirGen specFile; + + const std::vector>> + allFiles_names_Lines = { + std::pair>( + "proc/cpuinfo", + {"processor : 0", "BogoMIPS : 200.00", + "Features : fp asimd evtstrm sha1 sha2 " + "crc32 atomics fphp asimdhp cpuid " + "asimdrdm fcma dcpop sve", + "CPU implementer : 0x46", "CPU architecture: 8", + "CPU variant : 0x1", "CPU part : 0x001", + "CPU revision : 0", ""}), + std::pair>( + "proc/stat", + {"cpu 0 0 0 0 0 0 0 0 0 0", "cpu0 0 0 0 0 0 0 0 0 0 0", + "intr 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " + "0 0 0 0 " + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " + "0 0 0 0 0 " + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " + "0 0 0 0 0 " + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " + "0 0 0 0 0 " + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 " + "0 0 0 0 0 " + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0", + "ctxt 0", "btime 0", "processes 0", "procs_running 1", + "procs_blocked 0", "softirq 0 0 0 0 0 0 0 0 0 0 0"}), + std::pair>( + "sys/devices/system/cpu/cpu0/topology/core_id", {"0"}), + std::pair>( + "sys/devices/system/cpu/cpu0/topology/physical_package_id", + {"0"}), + std::pair>( + "sys/devices/system/cpu/online", {"0-0"})}; +}; + +// Test that we can generate and delete special files to a custom directory +// (i.e. the one defined in the YAML string above) +TEST_F(SpecialFileDirGenTest, genAndDelete) { + // Make sure files currently do not exist + for (int i = 0; i < allFiles_names_Lines.size(); i++) { + EXPECT_FALSE(std::filesystem::exists(TEST_SPEC_FILE_DIR + + std::get<0>(allFiles_names_Lines[i]))); + } + + // Generate files + specFile.GenerateSFDir(); + + // Validate files exist and are correct + for (int i = 0; i < allFiles_names_Lines.size(); i++) { + EXPECT_TRUE(std::filesystem::exists(TEST_SPEC_FILE_DIR + + std::get<0>(allFiles_names_Lines[i]))); + std::ifstream file(TEST_SPEC_FILE_DIR + + std::get<0>(allFiles_names_Lines[i])); + const std::vector& knownLines = + std::get<1>(allFiles_names_Lines[i]); + std::string line; + int numOfLines = 0; + while (std::getline(file, line)) { + if (numOfLines > knownLines.size()) { + break; + } + EXPECT_EQ(line, knownLines[numOfLines]); + numOfLines++; + } + EXPECT_EQ(numOfLines, knownLines.size()); + } + + // Delete files + specFile.RemoveExistingSFDir(); + + // Make sure files don't exist + for (int i = 0; i < allFiles_names_Lines.size(); i++) { + EXPECT_FALSE(std::filesystem::exists(TEST_SPEC_FILE_DIR + + std::get<0>(allFiles_names_Lines[i]))); + } +} + +} // namespace simeng \ No newline at end of file From bacdc99f019e1db1aefa5e64439c277434bc4ac5 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 12 Dec 2023 13:41:49 +0000 Subject: [PATCH 40/96] restructured unit tests to add ISA specific folders. --- src/include/simeng/CoreInstance.hh | 2 +- test/regression/aarch64/CMakeLists.txt | 1 - test/unit/CMakeLists.txt | 4 +- test/unit/{ => aarch64}/ArchitectureTest.cc | 192 +++--------------- .../aarch64/ShiftValueTest.cc | 0 test/unit/riscv/ArchitectureTest.cc | 158 ++++++++++++++ 6 files changed, 186 insertions(+), 171 deletions(-) rename test/unit/{ => aarch64}/ArchitectureTest.cc (51%) rename test/{regression => unit}/aarch64/ShiftValueTest.cc (100%) create mode 100644 test/unit/riscv/ArchitectureTest.cc diff --git a/src/include/simeng/CoreInstance.hh b/src/include/simeng/CoreInstance.hh index 2438b1e3ef..006a7b02c7 100644 --- a/src/include/simeng/CoreInstance.hh +++ b/src/include/simeng/CoreInstance.hh @@ -23,7 +23,7 @@ // Program used when no executable is provided; counts down from // 1024*1024, with an independent `orr` at the start of each branch. -uint32_t hex_[] = { +static uint32_t hex_[] = { 0x320C03E0, // orr w0, wzr, #1048576 0x320003E1, // orr w0, wzr, #1 0x71000400, // subs w0, w0, #1 diff --git a/test/regression/aarch64/CMakeLists.txt b/test/regression/aarch64/CMakeLists.txt index 8d0d2692e9..fb5e499ce3 100644 --- a/test/regression/aarch64/CMakeLists.txt +++ b/test/regression/aarch64/CMakeLists.txt @@ -4,7 +4,6 @@ add_executable(regression-aarch64 Exception.cc LoadStoreQueue.cc MicroOperation.cc - ShiftValueTest.cc SmokeTest.cc Syscall.cc SystemRegisters.cc diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 7410c304cd..defbaaac06 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -1,4 +1,7 @@ set(TEST_SOURCES + aarch64/ArchitectureTest.cc + aarch64/ShiftValueTest.cc + riscv/ArchitectureTest.cc pipeline/A64FXPortAllocatorTest.cc pipeline/BalancedPortAllocatorTest.cc pipeline/DecodeUnitTest.cc @@ -14,7 +17,6 @@ set(TEST_SOURCES pipeline/ReorderBufferTest.cc pipeline/WritebackUnitTest.cc ArchitecturalRegisterFileSetTest.cc - ArchitectureTest.cc ElfTest.cc FixedLatencyMemoryInterfaceTest.cc FlatMemoryInterfaceTest.cc diff --git a/test/unit/ArchitectureTest.cc b/test/unit/aarch64/ArchitectureTest.cc similarity index 51% rename from test/unit/ArchitectureTest.cc rename to test/unit/aarch64/ArchitectureTest.cc index 6b32f56bb7..3c6e045915 100644 --- a/test/unit/ArchitectureTest.cc +++ b/test/unit/aarch64/ArchitectureTest.cc @@ -10,15 +10,16 @@ #include "simeng/version.hh" namespace simeng { +namespace arch { +namespace aarch64 { // AArch64 Tests class AArch64ArchitectureTest : public testing::Test { public: AArch64ArchitectureTest() - : config(simeng::ModelConfig(configPath).getConfigFile()), + : config(ModelConfig(configPath).getConfigFile()), kernel(config["CPU-Info"]["Special-File-Dir-Path"].as()) { - arch = - std::make_unique(kernel, config); + arch = std::make_unique(kernel, config); kernel.createProcess(process); } @@ -30,11 +31,10 @@ class AArch64ArchitectureTest : public testing::Test { std::array validInstrBytes = {0x01, 0x80, 0x8c, 0x65}; std::array invalidInstrBytes = {0x20, 0x00, 0x02, 0x8c}; - std::unique_ptr arch; - simeng::kernel::Linux kernel; - simeng::kernel::LinuxProcess process = simeng::kernel::LinuxProcess( - simeng::span((char*)validInstrBytes.data(), validInstrBytes.size()), - config); + std::unique_ptr arch; + kernel::Linux kernel; + kernel::LinuxProcess process = kernel::LinuxProcess( + span((char*)validInstrBytes.data(), validInstrBytes.size()), config); }; TEST_F(AArch64ArchitectureTest, predecode) { @@ -106,11 +106,10 @@ TEST_F(AArch64ArchitectureTest, handleException) { // Get Core std::string executablePath = ""; std::vector executableArgs = {}; - std::unique_ptr coreInstance = - std::make_unique(configPath, executablePath, - executableArgs); - const simeng::Core& core = *coreInstance->getCore(); - simeng::MemoryInterface& memInt = *coreInstance->getDataMemory(); + std::unique_ptr coreInstance = std::make_unique( + configPath, executablePath, executableArgs); + const Core& core = *coreInstance->getCore(); + MemoryInterface& memInt = *coreInstance->getDataMemory(); auto exceptionHandler = arch->handleException(insn[0], core, memInt); bool tickRes = exceptionHandler->tick(); @@ -122,12 +121,12 @@ TEST_F(AArch64ArchitectureTest, handleException) { } TEST_F(AArch64ArchitectureTest, getInitialState) { - std::vector regs = { - {simeng::arch::aarch64::RegisterType::GENERAL, 31}, - {simeng::arch::aarch64::RegisterType::SYSTEM, + std::vector regs = { + {arch::aarch64::RegisterType::GENERAL, 31}, + {arch::aarch64::RegisterType::SYSTEM, (uint16_t)arch->getSystemRegisterTag(ARM64_SYSREG_DCZID_EL0)}}; - std::vector regVals = { - {kernel.getInitialStackPointer(), 8}, {20, 8}}; + std::vector regVals = {{kernel.getInitialStackPointer(), 8}, + {20, 8}}; arch::ProcessStateChange changes = arch->getInitialState(); EXPECT_EQ(changes.type, arch::ChangeType::REPLACEMENT); @@ -159,13 +158,13 @@ TEST_F(AArch64ArchitectureTest, updateSystemTimerRegisters) { vctCount += (i % vctModulo) == 0 ? 1 : 0; arch->updateSystemTimerRegisters(®File, i); EXPECT_EQ(regFile - .get({simeng::arch::aarch64::RegisterType::SYSTEM, + .get({arch::aarch64::RegisterType::SYSTEM, (uint16_t)arch->getSystemRegisterTag( ARM64_SYSREG_PMCCNTR_EL0)}) .get(), i); EXPECT_EQ(regFile - .get({simeng::arch::aarch64::RegisterType::SYSTEM, + .get({arch::aarch64::RegisterType::SYSTEM, (uint16_t)arch->getSystemRegisterTag( ARM64_SYSREG_CNTVCT_EL0)}) .get(), @@ -212,11 +211,10 @@ TEST_F(AArch64ArchitectureTest, getExecutionInfo) { EXPECT_EQ(insn[0]->exceptionEncountered(), false); // Insn[0] = fdivr z1.s, p0/m, z1.s, z0.s - simeng::arch::aarch64::Instruction* aarch64Insn = - reinterpret_cast(insn[0].get()); + arch::aarch64::Instruction* aarch64Insn = + reinterpret_cast(insn[0].get()); - simeng::arch::aarch64::ExecutionInfo info = - arch->getExecutionInfo(*aarch64Insn); + arch::aarch64::ExecutionInfo info = arch->getExecutionInfo(*aarch64Insn); // Latencies and Port numbers from a64fx.yaml EXPECT_EQ(info.latency, 98); @@ -231,148 +229,6 @@ TEST_F(AArch64ArchitectureTest, get_set_SVCRVal) { EXPECT_EQ(arch->getSVCRval(), 3); } -// RISC-V Tests -class RiscVArchitectureTest : public testing::Test { - public: - RiscVArchitectureTest() - : config(simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/DEMO_RISCV.yaml") - .getConfigFile()), - kernel(config["CPU-Info"]["Special-File-Dir-Path"].as()) { - arch = std::make_unique(kernel, config); - kernel.createProcess(process); - } - - protected: - const std::string configPath = SIMENG_SOURCE_DIR "/configs/DEMO_RISCV.yaml"; - YAML::Node config; - - // addi sp, ra, 2000 - std::array validInstrBytes = {0x13, 0x81, 0x00, 0x7d}; - std::array invalidInstrBytes = {0x7d, 0x00, 0x81, 0xbb}; - - std::unique_ptr arch; - simeng::kernel::Linux kernel; - simeng::kernel::LinuxProcess process = simeng::kernel::LinuxProcess( - simeng::span((char*)validInstrBytes.data(), validInstrBytes.size()), - config); -}; - -TEST_F(RiscVArchitectureTest, predecode) { - // Test that mis-aligned instruction address results in error - MacroOp output; - uint8_t result = arch->predecode(validInstrBytes.data(), - validInstrBytes.size(), 0x7, output); - EXPECT_EQ(result, 1); - EXPECT_EQ(output[0]->getInstructionAddress(), 0x7); - EXPECT_EQ(output[0]->exceptionEncountered(), true); - - // Test that an invalid instruction returns instruction with an exception - output = MacroOp(); - result = arch->predecode(invalidInstrBytes.data(), invalidInstrBytes.size(), - 0x8, output); - EXPECT_EQ(result, 4); - EXPECT_EQ(output[0]->getInstructionAddress(), 0x8); - EXPECT_EQ(output[0]->exceptionEncountered(), true); - - // Test that an instruction can be properly decoded - output = MacroOp(); - result = arch->predecode(validInstrBytes.data(), validInstrBytes.size(), 0x4, - output); - EXPECT_EQ(result, 4); - EXPECT_EQ(output[0]->getInstructionAddress(), 0x4); - EXPECT_EQ(output[0]->exceptionEncountered(), false); -} - -TEST_F(RiscVArchitectureTest, getRegisterFileStructures) { - auto output = arch->getRegisterFileStructures(); - EXPECT_EQ(output[0].bytes, 8); - EXPECT_EQ(output[0].quantity, 32); - EXPECT_EQ(output[1].bytes, 8); - EXPECT_EQ(output[1].quantity, 32); - EXPECT_EQ(output[2].bytes, 8); - EXPECT_EQ(output[2].quantity, arch->getNumSystemRegisters()); -} - -TEST_F(RiscVArchitectureTest, getSystemRegisterTag) { - // Test incorrect system register will fail - int32_t output = arch->getSystemRegisterTag(-1); - EXPECT_EQ(output, -1); - - // Test for correct behaviour - // TODO: Implement once system registers have been added -} - -TEST_F(RiscVArchitectureTest, getNumSystemRegisters) { - uint16_t output = arch->getNumSystemRegisters(); - EXPECT_EQ(output, 0); -} - -TEST_F(RiscVArchitectureTest, handleException) { - // Get Instruction - MacroOp insn; - uint8_t bytes = arch->predecode(invalidInstrBytes.data(), - invalidInstrBytes.size(), 0x4, insn); - EXPECT_EQ(bytes, 4); - EXPECT_EQ(insn[0]->getInstructionAddress(), 0x4); - EXPECT_EQ(insn[0]->exceptionEncountered(), true); - - // Get Core - std::string executablePath = ""; - std::vector executableArgs = {}; - std::unique_ptr coreInstance = - std::make_unique(configPath, executablePath, - executableArgs); - const simeng::Core& core = *coreInstance->getCore(); - simeng::MemoryInterface& memInt = *coreInstance->getDataMemory(); - auto exceptionHandler = arch->handleException(insn[0], core, memInt); - - bool tickRes = exceptionHandler->tick(); - auto result = exceptionHandler->getResult(); - EXPECT_TRUE(tickRes); - EXPECT_TRUE(result.fatal); - // Instruction address for fatal exception is always 0. - EXPECT_EQ(result.instructionAddress, 0x0); -} - -TEST_F(RiscVArchitectureTest, getInitialState) { - std::vector regs = { - {simeng::arch::riscv::RegisterType::GENERAL, 2}}; - std::vector regVals = { - {kernel.getInitialStackPointer(), 8}}; - - arch::ProcessStateChange changes = arch->getInitialState(); - EXPECT_EQ(changes.type, arch::ChangeType::REPLACEMENT); - EXPECT_EQ(changes.modifiedRegisters, regs); - EXPECT_EQ(changes.modifiedRegisterValues, regVals); -} - -TEST_F(RiscVArchitectureTest, getMaxInstructionSize) { - EXPECT_EQ(arch->getMaxInstructionSize(), 4); -} - -TEST_F(RiscVArchitectureTest, updateSystemTimerRegisters) { - // TODO: add tests once function has non-blank implementation. -} - -TEST_F(RiscVArchitectureTest, getConfigPhysicalRegisterStructure) { - std::vector regStruct = - arch->getConfigPhysicalRegisterStructure(config); - // Values taken from DEMO_RISCV.yaml config file - EXPECT_EQ(regStruct[0].bytes, 8); - EXPECT_EQ(regStruct[0].quantity, 154); - EXPECT_EQ(regStruct[1].bytes, 8); - EXPECT_EQ(regStruct[1].quantity, 90); - EXPECT_EQ(regStruct[2].bytes, 8); - EXPECT_EQ(regStruct[2].quantity, arch->getNumSystemRegisters()); -} - -TEST_F(RiscVArchitectureTest, getConfigPhysicalRegisterQuantities) { - std::vector physQuants = - arch->getConfigPhysicalRegisterQuantities(config); - // Values taken from DEMO_RISCV.yaml config file - EXPECT_EQ(physQuants[0], 154); - EXPECT_EQ(physQuants[1], 90); - EXPECT_EQ(physQuants[2], arch->getNumSystemRegisters()); -} - +} // namespace aarch64 +} // namespace arch } // namespace simeng diff --git a/test/regression/aarch64/ShiftValueTest.cc b/test/unit/aarch64/ShiftValueTest.cc similarity index 100% rename from test/regression/aarch64/ShiftValueTest.cc rename to test/unit/aarch64/ShiftValueTest.cc diff --git a/test/unit/riscv/ArchitectureTest.cc b/test/unit/riscv/ArchitectureTest.cc new file mode 100644 index 0000000000..50c500023a --- /dev/null +++ b/test/unit/riscv/ArchitectureTest.cc @@ -0,0 +1,158 @@ +#include + +#include "gtest/gtest.h" +#include "simeng/CoreInstance.hh" +#include "simeng/ModelConfig.hh" +#include "simeng/RegisterFileSet.hh" +#include "simeng/arch/aarch64/Architecture.hh" +#include "simeng/arch/riscv/Architecture.hh" +#include "simeng/span.hh" +#include "simeng/version.hh" + +namespace simeng { +namespace arch { +namespace riscv { + +// RISC-V Tests +class RiscVArchitectureTest : public testing::Test { + public: + RiscVArchitectureTest() + : config(ModelConfig(SIMENG_SOURCE_DIR "/configs/DEMO_RISCV.yaml") + .getConfigFile()), + kernel(config["CPU-Info"]["Special-File-Dir-Path"].as()) { + arch = std::make_unique(kernel, config); + kernel.createProcess(process); + } + + protected: + const std::string configPath = SIMENG_SOURCE_DIR "/configs/DEMO_RISCV.yaml"; + YAML::Node config; + + // addi sp, ra, 2000 + std::array validInstrBytes = {0x13, 0x81, 0x00, 0x7d}; + std::array invalidInstrBytes = {0x7d, 0x00, 0x81, 0xbb}; + + std::unique_ptr arch; + kernel::Linux kernel; + kernel::LinuxProcess process = kernel::LinuxProcess( + span((char*)validInstrBytes.data(), validInstrBytes.size()), config); +}; + +TEST_F(RiscVArchitectureTest, predecode) { + // Test that mis-aligned instruction address results in error + MacroOp output; + uint8_t result = arch->predecode(validInstrBytes.data(), + validInstrBytes.size(), 0x7, output); + EXPECT_EQ(result, 1); + EXPECT_EQ(output[0]->getInstructionAddress(), 0x7); + EXPECT_EQ(output[0]->exceptionEncountered(), true); + + // Test that an invalid instruction returns instruction with an exception + output = MacroOp(); + result = arch->predecode(invalidInstrBytes.data(), invalidInstrBytes.size(), + 0x8, output); + EXPECT_EQ(result, 4); + EXPECT_EQ(output[0]->getInstructionAddress(), 0x8); + EXPECT_EQ(output[0]->exceptionEncountered(), true); + + // Test that an instruction can be properly decoded + output = MacroOp(); + result = arch->predecode(validInstrBytes.data(), validInstrBytes.size(), 0x4, + output); + EXPECT_EQ(result, 4); + EXPECT_EQ(output[0]->getInstructionAddress(), 0x4); + EXPECT_EQ(output[0]->exceptionEncountered(), false); +} + +TEST_F(RiscVArchitectureTest, getRegisterFileStructures) { + auto output = arch->getRegisterFileStructures(); + EXPECT_EQ(output[0].bytes, 8); + EXPECT_EQ(output[0].quantity, 32); + EXPECT_EQ(output[1].bytes, 8); + EXPECT_EQ(output[1].quantity, 32); + EXPECT_EQ(output[2].bytes, 8); + EXPECT_EQ(output[2].quantity, arch->getNumSystemRegisters()); +} + +TEST_F(RiscVArchitectureTest, getSystemRegisterTag) { + // Test incorrect system register will fail + int32_t output = arch->getSystemRegisterTag(-1); + EXPECT_EQ(output, -1); + + // Test for correct behaviour + // TODO: Implement once system registers have been added +} + +TEST_F(RiscVArchitectureTest, getNumSystemRegisters) { + uint16_t output = arch->getNumSystemRegisters(); + EXPECT_EQ(output, 0); +} + +TEST_F(RiscVArchitectureTest, handleException) { + // Get Instruction + MacroOp insn; + uint8_t bytes = arch->predecode(invalidInstrBytes.data(), + invalidInstrBytes.size(), 0x4, insn); + EXPECT_EQ(bytes, 4); + EXPECT_EQ(insn[0]->getInstructionAddress(), 0x4); + EXPECT_EQ(insn[0]->exceptionEncountered(), true); + + // Get Core + std::string executablePath = ""; + std::vector executableArgs = {}; + std::unique_ptr coreInstance = std::make_unique( + configPath, executablePath, executableArgs); + const Core& core = *coreInstance->getCore(); + MemoryInterface& memInt = *coreInstance->getDataMemory(); + auto exceptionHandler = arch->handleException(insn[0], core, memInt); + + bool tickRes = exceptionHandler->tick(); + auto result = exceptionHandler->getResult(); + EXPECT_TRUE(tickRes); + EXPECT_TRUE(result.fatal); + // Instruction address for fatal exception is always 0. + EXPECT_EQ(result.instructionAddress, 0x0); +} + +TEST_F(RiscVArchitectureTest, getInitialState) { + std::vector regs = {{RegisterType::GENERAL, 2}}; + std::vector regVals = {{kernel.getInitialStackPointer(), 8}}; + + arch::ProcessStateChange changes = arch->getInitialState(); + EXPECT_EQ(changes.type, arch::ChangeType::REPLACEMENT); + EXPECT_EQ(changes.modifiedRegisters, regs); + EXPECT_EQ(changes.modifiedRegisterValues, regVals); +} + +TEST_F(RiscVArchitectureTest, getMaxInstructionSize) { + EXPECT_EQ(arch->getMaxInstructionSize(), 4); +} + +TEST_F(RiscVArchitectureTest, updateSystemTimerRegisters) { + // TODO: add tests once function has non-blank implementation. +} + +TEST_F(RiscVArchitectureTest, getConfigPhysicalRegisterStructure) { + std::vector regStruct = + arch->getConfigPhysicalRegisterStructure(config); + // Values taken from DEMO_RISCV.yaml config file + EXPECT_EQ(regStruct[0].bytes, 8); + EXPECT_EQ(regStruct[0].quantity, 154); + EXPECT_EQ(regStruct[1].bytes, 8); + EXPECT_EQ(regStruct[1].quantity, 90); + EXPECT_EQ(regStruct[2].bytes, 8); + EXPECT_EQ(regStruct[2].quantity, arch->getNumSystemRegisters()); +} + +TEST_F(RiscVArchitectureTest, getConfigPhysicalRegisterQuantities) { + std::vector physQuants = + arch->getConfigPhysicalRegisterQuantities(config); + // Values taken from DEMO_RISCV.yaml config file + EXPECT_EQ(physQuants[0], 154); + EXPECT_EQ(physQuants[1], 90); + EXPECT_EQ(physQuants[2], arch->getNumSystemRegisters()); +} + +} // namespace riscv +} // namespace arch +} // namespace simeng From bce11e14c72d99a1dca6a44346f8d418230e5301 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 12 Dec 2023 13:42:45 +0000 Subject: [PATCH 41/96] removed un-needed namespace identifiers. --- test/unit/aarch64/ArchitectureTest.cc | 37 +++++++++++++-------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/test/unit/aarch64/ArchitectureTest.cc b/test/unit/aarch64/ArchitectureTest.cc index 3c6e045915..7731edd99f 100644 --- a/test/unit/aarch64/ArchitectureTest.cc +++ b/test/unit/aarch64/ArchitectureTest.cc @@ -19,7 +19,7 @@ class AArch64ArchitectureTest : public testing::Test { AArch64ArchitectureTest() : config(ModelConfig(configPath).getConfigFile()), kernel(config["CPU-Info"]["Special-File-Dir-Path"].as()) { - arch = std::make_unique(kernel, config); + arch = std::make_unique(kernel, config); kernel.createProcess(process); } @@ -31,7 +31,7 @@ class AArch64ArchitectureTest : public testing::Test { std::array validInstrBytes = {0x01, 0x80, 0x8c, 0x65}; std::array invalidInstrBytes = {0x20, 0x00, 0x02, 0x8c}; - std::unique_ptr arch; + std::unique_ptr arch; kernel::Linux kernel; kernel::LinuxProcess process = kernel::LinuxProcess( span((char*)validInstrBytes.data(), validInstrBytes.size()), config); @@ -122,8 +122,8 @@ TEST_F(AArch64ArchitectureTest, handleException) { TEST_F(AArch64ArchitectureTest, getInitialState) { std::vector regs = { - {arch::aarch64::RegisterType::GENERAL, 31}, - {arch::aarch64::RegisterType::SYSTEM, + {RegisterType::GENERAL, 31}, + {RegisterType::SYSTEM, (uint16_t)arch->getSystemRegisterTag(ARM64_SYSREG_DCZID_EL0)}}; std::vector regVals = {{kernel.getInitialStackPointer(), 8}, {20, 8}}; @@ -157,18 +157,18 @@ TEST_F(AArch64ArchitectureTest, updateSystemTimerRegisters) { for (int i = 0; i < 30; i++) { vctCount += (i % vctModulo) == 0 ? 1 : 0; arch->updateSystemTimerRegisters(®File, i); - EXPECT_EQ(regFile - .get({arch::aarch64::RegisterType::SYSTEM, - (uint16_t)arch->getSystemRegisterTag( - ARM64_SYSREG_PMCCNTR_EL0)}) - .get(), - i); - EXPECT_EQ(regFile - .get({arch::aarch64::RegisterType::SYSTEM, - (uint16_t)arch->getSystemRegisterTag( - ARM64_SYSREG_CNTVCT_EL0)}) - .get(), - vctCount); + EXPECT_EQ( + regFile + .get({RegisterType::SYSTEM, (uint16_t)arch->getSystemRegisterTag( + ARM64_SYSREG_PMCCNTR_EL0)}) + .get(), + i); + EXPECT_EQ( + regFile + .get({RegisterType::SYSTEM, (uint16_t)arch->getSystemRegisterTag( + ARM64_SYSREG_CNTVCT_EL0)}) + .get(), + vctCount); } } @@ -211,10 +211,9 @@ TEST_F(AArch64ArchitectureTest, getExecutionInfo) { EXPECT_EQ(insn[0]->exceptionEncountered(), false); // Insn[0] = fdivr z1.s, p0/m, z1.s, z0.s - arch::aarch64::Instruction* aarch64Insn = - reinterpret_cast(insn[0].get()); + Instruction* aarch64Insn = reinterpret_cast(insn[0].get()); - arch::aarch64::ExecutionInfo info = arch->getExecutionInfo(*aarch64Insn); + ExecutionInfo info = arch->getExecutionInfo(*aarch64Insn); // Latencies and Port numbers from a64fx.yaml EXPECT_EQ(info.latency, 98); From e67d54ba95b8afa0f4caed092a4ad465d63995c4 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 12 Dec 2023 14:19:12 +0000 Subject: [PATCH 42/96] Added base class implementation and files for instruction class unit tests which are unable to be created right now. --- test/unit/CMakeLists.txt | 2 ++ test/unit/aarch64/InstructionTest.cc | 31 ++++++++++++++++++++++++++++ test/unit/riscv/InstructionTest.cc | 30 +++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 test/unit/aarch64/InstructionTest.cc create mode 100644 test/unit/riscv/InstructionTest.cc diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index defbaaac06..e4055b1d6e 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -1,7 +1,9 @@ set(TEST_SOURCES aarch64/ArchitectureTest.cc + aarch64/InstructionTest.cc aarch64/ShiftValueTest.cc riscv/ArchitectureTest.cc + riscv/InstructionTest.cc pipeline/A64FXPortAllocatorTest.cc pipeline/BalancedPortAllocatorTest.cc pipeline/DecodeUnitTest.cc diff --git a/test/unit/aarch64/InstructionTest.cc b/test/unit/aarch64/InstructionTest.cc new file mode 100644 index 0000000000..95c9546902 --- /dev/null +++ b/test/unit/aarch64/InstructionTest.cc @@ -0,0 +1,31 @@ +#include "../MockArchitecture.hh" +#include "gmock/gmock.h" +#include "simeng/ModelConfig.hh" +#include "simeng/arch/aarch64/Instruction.hh" +#include "simeng/version.hh" + +namespace simeng { +namespace arch { +namespace aarch64 { + +// TODO: Implement instruction unit tests once InstructionMetadata.hh has been +// moved to include/simeng + +// AArch64 Instruction Tests +class AArch64InstructionTest : public testing::Test { + public: + AArch64InstructionTest() {} + + protected: + const std::string configPath = SIMENG_SOURCE_DIR "/configs/a64fx.yaml"; + YAML::Node config; + + MockArchitecture arch; + // InstructionMetadata metadata; + MicroOpInfo uopInfo; + InstructionException exception; +}; + +} // namespace aarch64 +} // namespace arch +} // namespace simeng \ No newline at end of file diff --git a/test/unit/riscv/InstructionTest.cc b/test/unit/riscv/InstructionTest.cc new file mode 100644 index 0000000000..34a9117634 --- /dev/null +++ b/test/unit/riscv/InstructionTest.cc @@ -0,0 +1,30 @@ +#include "../MockArchitecture.hh" +#include "gmock/gmock.h" +#include "simeng/ModelConfig.hh" +#include "simeng/arch/riscv/Instruction.hh" +#include "simeng/version.hh" + +namespace simeng { +namespace arch { +namespace riscv { + +// TODO: Implement instruction unit tests once InstructionMetadata.hh has been +// moved to include/simeng + +// AArch64 Instruction Tests +class RiscVInstructionTest : public testing::Test { + public: + RiscVInstructionTest() {} + + protected: + const std::string configPath = SIMENG_SOURCE_DIR "/configs/DEMO_RISCV.yaml"; + YAML::Node config; + + MockArchitecture arch; + // InstructionMetadata metadata; + InstructionException exception; +}; + +} // namespace riscv +} // namespace arch +} // namespace simeng \ No newline at end of file From a9e4184d449e29d2e907ac266aed5481f8a063cb Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 13 Dec 2023 12:21:03 +0000 Subject: [PATCH 43/96] Updated ROB and EU getFlushSeqID to getFlushInsnID as the old name was not descriptive of the value returned. --- src/include/simeng/pipeline/ExecuteUnit.hh | 4 ++-- src/include/simeng/pipeline/ReorderBuffer.hh | 6 +++--- src/lib/models/outoforder/Core.cc | 12 ++++++------ src/lib/pipeline/ExecuteUnit.cc | 2 +- src/lib/pipeline/ReorderBuffer.cc | 8 ++++---- test/unit/pipeline/ExecuteUnitTest.cc | 2 +- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/include/simeng/pipeline/ExecuteUnit.hh b/src/include/simeng/pipeline/ExecuteUnit.hh index 8a480fac10..14d8b47e7c 100644 --- a/src/include/simeng/pipeline/ExecuteUnit.hh +++ b/src/include/simeng/pipeline/ExecuteUnit.hh @@ -48,9 +48,9 @@ class ExecuteUnit { * discovered misprediction. */ uint64_t getFlushAddress() const; - /** Retrieve the sequence ID associated with the most recently discovered + /** Retrieve the instruction ID associated with the most recently discovered * misprediction. */ - uint64_t getFlushSeqId() const; + uint64_t getFlushInsnId() const; /** Purge flushed instructions from the internal pipeline and clear any active * stall, if applicable. */ diff --git a/src/include/simeng/pipeline/ReorderBuffer.hh b/src/include/simeng/pipeline/ReorderBuffer.hh index 179d9bb689..a98471c2e8 100644 --- a/src/include/simeng/pipeline/ReorderBuffer.hh +++ b/src/include/simeng/pipeline/ReorderBuffer.hh @@ -59,7 +59,7 @@ class ReorderBuffer { unsigned int commit(unsigned int maxCommitSize); /** Flush all instructions with a sequence ID greater than `afterSeqId`. */ - void flush(uint64_t afterSeqId); + void flush(uint64_t afterInsnId); /** Retrieve the current size of the ROB. */ unsigned int size() const; @@ -75,9 +75,9 @@ class ReorderBuffer { * discovered memory order violation. */ uint64_t getFlushAddress() const; - /** Retrieve the sequence ID associated with the most recently discovered + /** Retrieve the instruction ID associated with the most recently discovered * memory order violation. */ - uint64_t getFlushSeqId() const; + uint64_t getFlushInsnId() const; /** Get the number of instructions the ROB has committed. */ uint64_t getInstructionsCommittedCount() const; diff --git a/src/lib/models/outoforder/Core.cc b/src/lib/models/outoforder/Core.cc index e7516a14a3..d1caaa82ea 100644 --- a/src/lib/models/outoforder/Core.cc +++ b/src/lib/models/outoforder/Core.cc @@ -171,11 +171,11 @@ void Core::flushIfNeeded() { // Check for flush bool euFlush = false; uint64_t targetAddress = 0; - uint64_t lowestSeqId = 0; + uint64_t lowestInsnId = 0; for (const auto& eu : executionUnits_) { - if (eu.shouldFlush() && (!euFlush || eu.getFlushSeqId() < lowestSeqId)) { + if (eu.shouldFlush() && (!euFlush || eu.getFlushInsnId() < lowestInsnId)) { euFlush = true; - lowestSeqId = eu.getFlushSeqId(); + lowestInsnId = eu.getFlushInsnId(); targetAddress = eu.getFlushAddress(); } } @@ -185,10 +185,10 @@ void Core::flushIfNeeded() { // Rename/Dispatch) if (reorderBuffer_.shouldFlush() && - (!euFlush || reorderBuffer_.getFlushSeqId() < lowestSeqId)) { + (!euFlush || reorderBuffer_.getFlushInsnId() < lowestInsnId)) { // If the reorder buffer found an older instruction to flush up to, do // that instead - lowestSeqId = reorderBuffer_.getFlushSeqId(); + lowestInsnId = reorderBuffer_.getFlushInsnId(); targetAddress = reorderBuffer_.getFlushAddress(); } @@ -204,7 +204,7 @@ void Core::flushIfNeeded() { renameToDispatchBuffer_.stall(false); // Flush everything younger than the bad instruction from the ROB - reorderBuffer_.flush(lowestSeqId); + reorderBuffer_.flush(lowestInsnId); decodeUnit_.purgeFlushed(); dispatchIssueUnit_.purgeFlushed(); loadStoreQueue_.purgeFlushed(); diff --git a/src/lib/pipeline/ExecuteUnit.cc b/src/lib/pipeline/ExecuteUnit.cc index 7d789b34bd..c87c2e1845 100644 --- a/src/lib/pipeline/ExecuteUnit.cc +++ b/src/lib/pipeline/ExecuteUnit.cc @@ -165,7 +165,7 @@ void ExecuteUnit::execute(std::shared_ptr& uop) { bool ExecuteUnit::shouldFlush() const { return shouldFlush_; } uint64_t ExecuteUnit::getFlushAddress() const { return pc_; } -uint64_t ExecuteUnit::getFlushSeqId() const { return flushAfter_; } +uint64_t ExecuteUnit::getFlushInsnId() const { return flushAfter_; } void ExecuteUnit::purgeFlushed() { if (pipeline_.size() == 0) { diff --git a/src/lib/pipeline/ReorderBuffer.cc b/src/lib/pipeline/ReorderBuffer.cc index 9ce147ce27..782da7364b 100644 --- a/src/lib/pipeline/ReorderBuffer.cc +++ b/src/lib/pipeline/ReorderBuffer.cc @@ -155,12 +155,12 @@ unsigned int ReorderBuffer::commit(unsigned int maxCommitSize) { return n; } -void ReorderBuffer::flush(uint64_t afterSeqId) { +void ReorderBuffer::flush(uint64_t afterInsnId) { // Iterate backwards from the tail of the queue to find and remove ops newer - // than `afterSeqId` + // than `afterInsnId` while (!buffer_.empty()) { auto& uop = buffer_.back(); - if (uop->getInstructionId() <= afterSeqId) { + if (uop->getInstructionId() <= afterInsnId) { break; } @@ -192,7 +192,7 @@ unsigned int ReorderBuffer::getFreeSpace() const { bool ReorderBuffer::shouldFlush() const { return shouldFlush_; } uint64_t ReorderBuffer::getFlushAddress() const { return pc_; } -uint64_t ReorderBuffer::getFlushSeqId() const { return flushAfter_; } +uint64_t ReorderBuffer::getFlushInsnId() const { return flushAfter_; } uint64_t ReorderBuffer::getInstructionsCommittedCount() const { return instructionsCommitted_; diff --git a/test/unit/pipeline/ExecuteUnitTest.cc b/test/unit/pipeline/ExecuteUnitTest.cc index 3fba569bb9..0f82593ff6 100644 --- a/test/unit/pipeline/ExecuteUnitTest.cc +++ b/test/unit/pipeline/ExecuteUnitTest.cc @@ -309,7 +309,7 @@ TEST_F(PipelineExecuteUnitTest, mispredictedBranch) { EXPECT_EQ(executeUnit.getBranchExecutedCount(), 1); EXPECT_EQ(executeUnit.getBranchMispredictedCount(), 1); EXPECT_EQ(executeUnit.getFlushAddress(), pc); - EXPECT_EQ(executeUnit.getFlushSeqId(), insnID); + EXPECT_EQ(executeUnit.getFlushInsnId(), insnID); } // Test that the flushing mechansim works correctly via purgeFlushed() From a01c2216596e840204bc69e81187938638d41fa0 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 13 Dec 2023 13:18:59 +0000 Subject: [PATCH 44/96] Updated ROB unit tests. --- test/unit/MockInstruction.hh | 6 + test/unit/pipeline/ReorderBufferTest.cc | 204 +++++++++++++++++++++++- 2 files changed, 208 insertions(+), 2 deletions(-) diff --git a/test/unit/MockInstruction.hh b/test/unit/MockInstruction.hh index e85ec33ead..883c753413 100644 --- a/test/unit/MockInstruction.hh +++ b/test/unit/MockInstruction.hh @@ -53,8 +53,14 @@ class MockInstruction : public Instruction { void setDataPending(uint8_t value) { dataPending_ = value; } void setLatency(uint16_t cycles) { latency_ = cycles; } + void setLSQLatency(uint16_t cycles) { lsqExecutionLatency_ = cycles; } + void setStallCycles(uint16_t cycles) { stallCycles_ = cycles; } + + void setIsMicroOp(bool isMicroOp) { isMicroOp_ = isMicroOp; } + + void setIsLastMicroOp(bool isLastOp) { isLastMicroOp_ = isLastOp; } }; } // namespace simeng diff --git a/test/unit/pipeline/ReorderBufferTest.cc b/test/unit/pipeline/ReorderBufferTest.cc index df217968e3..65d13d182c 100644 --- a/test/unit/pipeline/ReorderBufferTest.cc +++ b/test/unit/pipeline/ReorderBufferTest.cc @@ -31,12 +31,15 @@ class ReorderBufferTest : public testing::Test { [](auto registers, auto values) {}, [](auto uop) {}), uop(new MockInstruction), uop2(new MockInstruction), + uop3(new MockInstruction), uopPtr(uop), uopPtr2(uop2), + uopPtr3(uop3), reorderBuffer( maxROBSize, rat, lsq, [this](auto insn) { exceptionHandler.raiseException(insn); }, - [](auto branchAddress) {}, predictor, 0, 0) {} + [this](auto branchAddress) { loobBoundaryAddr = branchAddress; }, + predictor, 4, 2) {} protected: const uint8_t maxLSQLoads = 32; @@ -52,13 +55,17 @@ class ReorderBufferTest : public testing::Test { MockInstruction* uop; MockInstruction* uop2; + MockInstruction* uop3; std::shared_ptr uopPtr; - std::shared_ptr uopPtr2; + std::shared_ptr uopPtr2; + std::shared_ptr uopPtr3; MockMemoryInterface dataMemory; ReorderBuffer reorderBuffer; + + uint64_t loobBoundaryAddr = 0; }; // Tests that an instruction can have a slot reserved in the ROB and be @@ -100,6 +107,7 @@ TEST_F(ReorderBufferTest, Commit) { EXPECT_EQ(committed, 1); EXPECT_EQ(reorderBuffer.size(), 0); + EXPECT_EQ(reorderBuffer.getInstructionsCommittedCount(), 1); } // Tests that the reorder buffer won't commit an instruction if it's not ready @@ -110,6 +118,7 @@ TEST_F(ReorderBufferTest, CommitNotReady) { EXPECT_EQ(committed, 0); EXPECT_EQ(reorderBuffer.size(), 1); + EXPECT_EQ(reorderBuffer.getInstructionsCommittedCount(), 0); } // Tests that the reorder buffer won't commit a ready instruction if it's not at @@ -124,6 +133,7 @@ TEST_F(ReorderBufferTest, CommitHeadNotReady) { EXPECT_EQ(committed, 0); EXPECT_EQ(reorderBuffer.size(), 2); + EXPECT_EQ(reorderBuffer.getInstructionsCommittedCount(), 0); } // Tests that the reorder buffer can commit multiple ready instructions @@ -138,6 +148,7 @@ TEST_F(ReorderBufferTest, CommitMultiple) { EXPECT_EQ(committed, 2); EXPECT_EQ(reorderBuffer.size(), 0); + EXPECT_EQ(reorderBuffer.getInstructionsCommittedCount(), 2); } // Tests that the reorder buffer correctly informs the LSQ when committing a @@ -153,6 +164,7 @@ TEST_F(ReorderBufferTest, CommitLoad) { // Check that the load was removed from the LSQ EXPECT_EQ(lsq.getLoadQueueSpace(), maxLSQLoads); + EXPECT_EQ(reorderBuffer.getInstructionsCommittedCount(), 1); } // Tests that the reorder buffer correctly triggers a store upon commit @@ -190,6 +202,7 @@ TEST_F(ReorderBufferTest, CommitStore) { // Check that the store was committed and removed from the LSQ EXPECT_EQ(lsq.getStoreQueueSpace(), maxLSQStores); + EXPECT_EQ(reorderBuffer.getInstructionsCommittedCount(), 1); // Tick lsq to complete store lsq.tick(); @@ -221,6 +234,193 @@ TEST_F(ReorderBufferTest, Exception) { auto committed = reorderBuffer.commit(1); EXPECT_EQ(committed, 1); + EXPECT_EQ(reorderBuffer.getInstructionsCommittedCount(), 1); +} + +// Test the reorder buffer correctly sets a macro-op to commitReady when all of +// its associated micro-ops have been +TEST_F(ReorderBufferTest, commitMicroOps) { + // Reserve all microOps + uop->setIsMicroOp(true); + uop->setIsLastMicroOp(false); + uop2->setIsMicroOp(true); + uop2->setIsLastMicroOp(false); + uop3->setIsMicroOp(true); + uop3->setIsLastMicroOp(true); + reorderBuffer.reserve(uopPtr); + reorderBuffer.reserve(uopPtr2); + reorderBuffer.reserve(uopPtr3); + EXPECT_EQ(reorderBuffer.size(), 3); + + EXPECT_EQ(uopPtr->getInstructionId(), 0); + EXPECT_EQ(uopPtr2->getInstructionId(), 0); + EXPECT_EQ(uopPtr3->getInstructionId(), 0); + + // No micro-ops are waiting commit. Make sure they're not commit ready after + // call to `commitMicroOps` + reorderBuffer.commitMicroOps(0); + EXPECT_FALSE(uopPtr->canCommit()); + EXPECT_FALSE(uopPtr2->canCommit()); + EXPECT_FALSE(uopPtr3->canCommit()); + + // Set middle instruction as waitingCommit - ensure still not set commit ready + uop->setWaitingCommit(); + reorderBuffer.commitMicroOps(0); + EXPECT_FALSE(uopPtr->canCommit()); + EXPECT_FALSE(uopPtr2->canCommit()); + EXPECT_FALSE(uopPtr3->canCommit()); + + // Set last instruction as waitingCommit - ensure still not set commit ready + uop3->setWaitingCommit(); + reorderBuffer.commitMicroOps(0); + EXPECT_FALSE(uopPtr->canCommit()); + EXPECT_FALSE(uopPtr2->canCommit()); + EXPECT_FALSE(uopPtr3->canCommit()); + + // Set first instruction as waitingCommit - ensure still they are set commit + // ready now all micro-ops are done + uop2->setWaitingCommit(); + reorderBuffer.commitMicroOps(0); + EXPECT_TRUE(uopPtr->canCommit()); + EXPECT_TRUE(uopPtr2->canCommit()); + EXPECT_TRUE(uopPtr3->canCommit()); + + // Now call commit in ROB and make sure micro-ops are committed properly + unsigned int committed = reorderBuffer.commit(3); + EXPECT_EQ(committed, 3); + EXPECT_EQ(reorderBuffer.getInstructionsCommittedCount(), 1); + EXPECT_EQ(reorderBuffer.size(), 0); +} + +// Test that a detected violating load in the lsq leads to a flush +TEST_F(ReorderBufferTest, violatingLoad) { + const uint64_t strAddr = 16; + const uint64_t strSize = 4; + const uint64_t ldAddr = 18; + const uint64_t ldSize = 4; + + // Init Store + const MemoryAccessTarget strTarget = {strAddr, strSize}; + span strTargetSpan = {&strTarget, 1}; + ON_CALL(*uop, getGeneratedAddresses()).WillByDefault(Return(strTargetSpan)); + ON_CALL(*uop, isStoreAddress()).WillByDefault(Return(true)); + ON_CALL(*uop, isStoreData()).WillByDefault(Return(true)); + uopPtr->setSequenceId(0); + uopPtr->setInstructionId(0); + lsq.addStore(uopPtr); + reorderBuffer.reserve(uopPtr); + // Init load + const MemoryAccessTarget ldTarget = {ldAddr, ldSize}; + span ldTargetSpan = {&ldTarget, 1}; + ON_CALL(*uop2, getGeneratedAddresses()).WillByDefault(Return(ldTargetSpan)); + ON_CALL(*uop2, isLoad()).WillByDefault(Return(true)); + uopPtr2->setSequenceId(1); + uopPtr2->setInstructionId(1); + uopPtr2->setInstructionAddress(4096); + lsq.addLoad(uopPtr2); + reorderBuffer.reserve(uopPtr2); + + EXPECT_EQ(reorderBuffer.size(), 2); + + // Start load "Out of order" + EXPECT_CALL(*uop2, getGeneratedAddresses()).Times(1); + EXPECT_CALL(*uop, getGeneratedAddresses()).Times(1); + lsq.startLoad(uopPtr2); + + // Set store "ready to commit" so that violation gets detected + uopPtr->setCommitReady(); + // Supply Store's data + RegisterValue strData = RegisterValue(0xABCD, strSize); + span strDataSpan = {&strData, 1}; + ON_CALL(*uop, getData()).WillByDefault(Return(strDataSpan)); + EXPECT_CALL(*uop, getData()).Times(1); + lsq.supplyStoreData(uopPtr); + + EXPECT_CALL(*uop, isStoreAddress()).WillOnce(Return(true)); + EXPECT_CALL(*uop, getGeneratedAddresses()).Times(1); // in LSQ + EXPECT_CALL(dataMemory, requestWrite(strTarget, strData)); // in LSQ + EXPECT_CALL(*uop2, getGeneratedAddresses()).Times(1); // in LSQ + unsigned int committed = reorderBuffer.commit(4); + + EXPECT_EQ(committed, 1); + EXPECT_EQ(reorderBuffer.size(), 1); + EXPECT_TRUE(reorderBuffer.shouldFlush()); + EXPECT_EQ(reorderBuffer.getViolatingLoadsCount(), 1); + EXPECT_EQ(lsq.getViolatingLoad(), uopPtr2); + EXPECT_EQ(reorderBuffer.getFlushAddress(), 4096); + EXPECT_EQ(reorderBuffer.getFlushInsnId(), 0); +} + +// Test that a branch is treated as expected, will trigger the loop buffer when +// seen enough times (loop detection threshold set to 2) +TEST_F(ReorderBufferTest, branch) { + // Set up branch instruction + const uint64_t insnAddr = 4096; + const uint64_t branchAddr = 1024; + BranchPrediction pred = {true, branchAddr}; + ON_CALL(*uop, isBranch()).WillByDefault(Return(true)); + uopPtr->setSequenceId(0); + uopPtr->setInstructionId(0); + uopPtr->setInstructionAddress(insnAddr); + uopPtr->setBranchPrediction(pred); + uopPtr->setCommitReady(); + + // First pass through ROB -- seen count reset to 0 as new branch + reorderBuffer.reserve(uopPtr); + EXPECT_CALL(*uop, isBranch()).Times(1); + reorderBuffer.commit(1); + EXPECT_NE(loobBoundaryAddr, insnAddr); + + // Second pass through ROB -- seen count = 1 + reorderBuffer.reserve(uopPtr); + EXPECT_CALL(*uop, isBranch()).Times(1); + reorderBuffer.commit(1); + EXPECT_NE(loobBoundaryAddr, insnAddr); + + // Third pass through ROB -- seen count = 2 + reorderBuffer.reserve(uopPtr); + EXPECT_CALL(*uop, isBranch()).Times(1); + reorderBuffer.commit(1); + EXPECT_NE(loobBoundaryAddr, insnAddr); + + // Fourth pass through ROB -- seen count = 3; exceeds detection theshold, + // loobBoundaryAddr updated + reorderBuffer.reserve(uopPtr); + EXPECT_CALL(*uop, isBranch()).Times(1); + reorderBuffer.commit(1); + EXPECT_EQ(loobBoundaryAddr, insnAddr); + + // Update prediction & reset loobBoundaryAddr. Flush ROB to reset loopDetected + pred = {false, branchAddr + 64}; + uopPtr->setBranchPrediction(pred); + loobBoundaryAddr = 0; + reorderBuffer.flush(0); + + // Re-do loop detecition + // First pass through ROB -- seen count reset to 0 as new branch + reorderBuffer.reserve(uopPtr); + EXPECT_CALL(*uop, isBranch()).Times(1); + reorderBuffer.commit(1); + EXPECT_NE(loobBoundaryAddr, insnAddr); + + // Second pass through ROB -- seen count = 1 + reorderBuffer.reserve(uopPtr); + EXPECT_CALL(*uop, isBranch()).Times(1); + reorderBuffer.commit(1); + EXPECT_NE(loobBoundaryAddr, insnAddr); + + // Third pass through ROB -- seen count = 2 + reorderBuffer.reserve(uopPtr); + EXPECT_CALL(*uop, isBranch()).Times(1); + reorderBuffer.commit(1); + EXPECT_NE(loobBoundaryAddr, insnAddr); + + // Fourth pass through ROB -- seen count = 3; exceeds detection theshold, + // loobBoundaryAddr updated + reorderBuffer.reserve(uopPtr); + EXPECT_CALL(*uop, isBranch()).Times(1); + reorderBuffer.commit(1); + EXPECT_EQ(loobBoundaryAddr, insnAddr); } } // namespace pipeline From 1ecb65ec9236b5c390f61ac7db8c0324b0665fb2 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 13 Dec 2023 13:54:38 +0000 Subject: [PATCH 45/96] Created new MockCore class for unit test suite. --- test/unit/MockCore.hh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 test/unit/MockCore.hh diff --git a/test/unit/MockCore.hh b/test/unit/MockCore.hh new file mode 100644 index 0000000000..524f9f5d20 --- /dev/null +++ b/test/unit/MockCore.hh @@ -0,0 +1,20 @@ +#pragma once + +#include "gmock/gmock.h" +#include "simeng/Core.hh" + +namespace simeng { + +/** Mock implementation of the `Core` interface. */ +class MockCore : public Core { + public: + MOCK_METHOD0(tick, void()); + MOCK_CONST_METHOD0(hasHalted, bool()); + MOCK_CONST_METHOD0(getArchitecturalRegisterFileSet, + const ArchitecturalRegisterFileSet&()); + MOCK_CONST_METHOD0(getInstructionsRetiredCount, uint64_t()); + MOCK_CONST_METHOD0(getSystemTimer, uint64_t()); + MOCK_CONST_METHOD0(getStats, std::map()); +}; + +} // namespace simeng From c810d98a7eb92d837a8d67179bc908c7dcf46e64 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 14 Dec 2023 14:42:18 +0000 Subject: [PATCH 46/96] Created unit tests for AArch64 and RISC-V ExceptionHandlers. --- .../simeng/arch/aarch64/ExceptionHandler.hh | 10 + .../simeng/arch/riscv/ExceptionHandler.hh | 10 + test/unit/CMakeLists.txt | 2 + test/unit/aarch64/ExceptionHandlerTest.cc | 674 ++++++++++++++++++ test/unit/riscv/ExceptionHandlerTest.cc | 559 +++++++++++++++ 5 files changed, 1255 insertions(+) create mode 100644 test/unit/aarch64/ExceptionHandlerTest.cc create mode 100644 test/unit/riscv/ExceptionHandlerTest.cc diff --git a/src/include/simeng/arch/aarch64/ExceptionHandler.hh b/src/include/simeng/arch/aarch64/ExceptionHandler.hh index 3e59bc58eb..0f2a7c546c 100644 --- a/src/include/simeng/arch/aarch64/ExceptionHandler.hh +++ b/src/include/simeng/arch/aarch64/ExceptionHandler.hh @@ -96,6 +96,16 @@ class ExceptionHandler : public simeng::arch::ExceptionHandler { static constexpr Register R3 = {RegisterType::GENERAL, 3}; static constexpr Register R4 = {RegisterType::GENERAL, 4}; static constexpr Register R5 = {RegisterType::GENERAL, 5}; + + /** Let the following ExceptionHandlerTest derived classes be a friend of this + * class to allow proper testing of `readStringThen()`, `readBufferThen()` and + * `printException()` functions. */ + friend class AArch64ExceptionHandlerTest_readStringThen_Test; + friend class AArch64ExceptionHandlerTest_readStringThen_maxLen0_Test; + friend class AArch64ExceptionHandlerTest_readStringThen_maxLenReached_Test; + friend class AArch64ExceptionHandlerTest_readBufferThen_Test; + friend class AArch64ExceptionHandlerTest_readBufferThen_length0_Test; + friend class AArch64ExceptionHandlerTest_printException_Test; }; } // namespace aarch64 diff --git a/src/include/simeng/arch/riscv/ExceptionHandler.hh b/src/include/simeng/arch/riscv/ExceptionHandler.hh index 02d29c93bb..c422f0e8b6 100644 --- a/src/include/simeng/arch/riscv/ExceptionHandler.hh +++ b/src/include/simeng/arch/riscv/ExceptionHandler.hh @@ -96,6 +96,16 @@ class ExceptionHandler : public simeng::arch::ExceptionHandler { static constexpr Register R3 = {RegisterType::GENERAL, 13}; static constexpr Register R4 = {RegisterType::GENERAL, 14}; static constexpr Register R5 = {RegisterType::GENERAL, 15}; + + /** Let the following ExceptionHandlerTest derived classes be a friend of this + * class to allow proper testing of `readStringThen()`, `readBufferThen()` and + * `printException()` functions. */ + friend class RiscVExceptionHandlerTest_readStringThen_Test; + friend class RiscVExceptionHandlerTest_readStringThen_maxLen0_Test; + friend class RiscVExceptionHandlerTest_readStringThen_maxLenReached_Test; + friend class RiscVExceptionHandlerTest_readBufferThen_Test; + friend class RiscVExceptionHandlerTest_readBufferThen_length0_Test; + friend class RiscVExceptionHandlerTest_printException_Test; }; } // namespace riscv diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index e4055b1d6e..080a57232c 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -1,8 +1,10 @@ set(TEST_SOURCES aarch64/ArchitectureTest.cc + aarch64/ExceptionHandlerTest.cc aarch64/InstructionTest.cc aarch64/ShiftValueTest.cc riscv/ArchitectureTest.cc + riscv/ExceptionHandlerTest.cc riscv/InstructionTest.cc pipeline/A64FXPortAllocatorTest.cc pipeline/BalancedPortAllocatorTest.cc diff --git a/test/unit/aarch64/ExceptionHandlerTest.cc b/test/unit/aarch64/ExceptionHandlerTest.cc new file mode 100644 index 0000000000..f3e17020b3 --- /dev/null +++ b/test/unit/aarch64/ExceptionHandlerTest.cc @@ -0,0 +1,674 @@ +#include "../MockCore.hh" +#include "../MockInstruction.hh" +#include "../MockMemoryInterface.hh" +#include "gmock/gmock.h" +#include "simeng/ArchitecturalRegisterFileSet.hh" +#include "simeng/ModelConfig.hh" +#include "simeng/arch/aarch64/Architecture.hh" +#include "simeng/arch/aarch64/ExceptionHandler.hh" +#include "simeng/arch/aarch64/Instruction.hh" + +namespace simeng { +namespace arch { +namespace aarch64 { + +using ::testing::HasSubstr; +using ::testing::Return; +using ::testing::ReturnRef; + +class AArch64ExceptionHandlerTest : public ::testing::Test { + public: + AArch64ExceptionHandlerTest() + : config(simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/a64fx.yaml") + .getConfigFile()), + kernel(config["CPU-Info"]["Special-File-Dir-Path"].as()), + arch(kernel, config), + physRegFileSet(arch.getRegisterFileStructures()), + archRegFileSet(physRegFileSet) {} + + protected: + YAML::Node config; + + MockCore core; + MockMemoryInterface memory; + kernel::Linux kernel; + Architecture arch; + + RegisterFileSet physRegFileSet; + ArchitecturalRegisterFileSet archRegFileSet; + + // fdivr z1.s, p0/m, z1.s, z0.s --- Just need a valid instruction to hijack + const std::array validInstrBytes = {0x01, 0x80, 0x8c, 0x65}; + + /** Helper constants for AArch64 general-purpose registers. */ + static constexpr Register R0 = {RegisterType::GENERAL, 0}; + static constexpr Register R1 = {RegisterType::GENERAL, 1}; + static constexpr Register R2 = {RegisterType::GENERAL, 2}; + static constexpr Register R3 = {RegisterType::GENERAL, 3}; + static constexpr Register R4 = {RegisterType::GENERAL, 4}; + static constexpr Register R5 = {RegisterType::GENERAL, 5}; + static constexpr Register R8 = {RegisterType::GENERAL, 8}; +}; + +// The following exceptions are tested in /test/regression/aarch64/Exception.cc +// - InstructionException::StreamingModeUpdate, +// - InstructionException::ZAregisterStatusUpdate, +// - InstructionException::SMZAUpdate +// All system calls are tested in /test/regression/aarch64/Syscall.cc + +// Test that a syscall is processed sucessfully +TEST_F(AArch64ExceptionHandlerTest, testSyscall) { + // Create "syscall" instruction + uint64_t insnAddr = 0x4; + MacroOp uops; + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + InstructionException exception = InstructionException::SupervisorCall; + std::shared_ptr insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + insn->setInstructionAddress(insnAddr); + + // Setup register file for `uname` syscall (chosen as minimal functionality) + archRegFileSet.set(R8, RegisterValue(160, 8)); + + // Create ExceptionHandler + ExceptionHandler handler(insn, core, memory, kernel); + + // Tick exceptionHandler + ON_CALL(core, getArchitecturalRegisterFileSet()) + .WillByDefault(ReturnRef(archRegFileSet)); + EXPECT_CALL(core, getArchitecturalRegisterFileSet()).Times(1); + bool retVal = handler.tick(); + ExceptionResult result = handler.getResult(); + + EXPECT_TRUE(retVal); + EXPECT_FALSE(result.fatal); + EXPECT_EQ(result.instructionAddress, insnAddr + 4); + EXPECT_EQ(result.stateChange.type, ChangeType::REPLACEMENT); +} + +// Test that `readStringThen()` operates as expected +TEST_F(AArch64ExceptionHandlerTest, readStringThen) { + // Create new mock instruction and ExceptionHandler + std::shared_ptr uopPtr(new MockInstruction); + ExceptionHandler handler(uopPtr, core, memory, kernel); + + // Initialise variables + size_t retVal = 0; + char* buffer; + buffer = (char*)malloc(256); + for (int i = 0; i < 256; i++) { + buffer[i] = 'q'; + } + uint64_t addr = 1024; + int maxLen = kernel::Linux::LINUX_PATH_MAX; + + MemoryAccessTarget target1 = {addr, 1}; + MemoryReadResult res1 = {target1, RegisterValue(0xAB, 1), 1}; + span res1Span = span(&res1, 1); + + MemoryAccessTarget target2 = {addr + 1, 1}; + MemoryReadResult res2 = {target2, RegisterValue(static_cast('\0'), 1), + 1}; + span res2Span = span(&res2, 1); + + // On first call to readStringThen, expect return of false and retVal to still + // be 0, and buffer to be filled with `q` + MemoryAccessTarget tar = {addr, 1}; + EXPECT_CALL(memory, requestRead(tar, 0)).Times(1); + bool outcome = + handler.readStringThen(buffer, addr, maxLen, [&retVal](auto length) { + retVal = length; + return true; + }); + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 0); + for (int i = 0; i < 256; i++) { + EXPECT_EQ(buffer[i], 'q'); + } + + // ResumeHandling (called on tick()) should now be set to `readStringThen()` + // so call this for our second pass. + ON_CALL(memory, getCompletedReads()) + .WillByDefault(Return(span())); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + outcome = handler.tick(); + // No memory reads completed yet so again expect to return false and no change + // to `retval` or buffer + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 0); + for (int i = 0; i < 256; i++) { + EXPECT_EQ(buffer[i], 'q'); + } + + // Call tick() again, but mimic a memory read completing + tar = {addr + 1, 1}; + ON_CALL(memory, getCompletedReads()).WillByDefault(Return(res1Span)); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + EXPECT_CALL(memory, requestRead(tar, 0)).Times(1); + outcome = handler.tick(); + // Completed read but still not complete, so outcome should be false, retVal + // unchanged, but some data in the buffer + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 0); + for (int i = 0; i < 256; i++) { + if (i == 0) { + EXPECT_EQ(buffer[i], (char)0xAB); + } else { + EXPECT_EQ(buffer[i], 'q'); + } + } + + // Call tick() for a final time, getting the final read result + ON_CALL(memory, getCompletedReads()).WillByDefault(Return(res2Span)); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + outcome = handler.tick(); + // End of string '\0' found so expect `then()` to have been called, the + // outcome to be true, and the buffer again to have updated + EXPECT_TRUE(outcome); + EXPECT_EQ(retVal, 1); + for (int i = 0; i < 256; i++) { + if (i == 0) { + EXPECT_EQ(buffer[i], (char)0xAB); + } else if (i == 1) { + EXPECT_EQ(buffer[i], '\0'); + } else { + EXPECT_EQ(buffer[i], 'q'); + } + } +} + +// Test that in `readStringThen()` if max length is 0, then is called straight +// away +TEST_F(AArch64ExceptionHandlerTest, readStringThen_maxLen0) { + // Create new mock instruction and ExceptionHandler + std::shared_ptr uopPtr(new MockInstruction); + ExceptionHandler handler(uopPtr, core, memory, kernel); + size_t retVal = 100; + char* buffer; + buffer = (char*)malloc(256); + for (int i = 0; i < 256; i++) { + buffer[i] = 'q'; + } + uint64_t addr = 1024; + int maxLen = 0; + + bool outcome = + handler.readStringThen(buffer, addr, maxLen, [&retVal](auto length) { + retVal = length; + return true; + }); + EXPECT_TRUE(outcome); + EXPECT_EQ(retVal, -1); + for (int i = 0; i < 256; i++) { + EXPECT_EQ(buffer[i], 'q'); + } +} + +// Test that in `readStringThen()` if max length has been met, then() is called +// and no more string is fetched +TEST_F(AArch64ExceptionHandlerTest, readStringThen_maxLenReached) { + // Create new mock instruction and ExceptionHandler + std::shared_ptr uopPtr(new MockInstruction); + ExceptionHandler handler(uopPtr, core, memory, kernel); + + // Initialise variables + size_t retVal = 100; + char* buffer; + buffer = (char*)malloc(256); + for (int i = 0; i < 256; i++) { + buffer[i] = 'q'; + } + uint64_t addr = 1024; + int maxLen = 1; + + MemoryAccessTarget target1 = {addr, 1}; + MemoryReadResult res1 = {target1, RegisterValue(0xAB, 1), 1}; + span res1Span = span(&res1, 1); + + // On first call to readStringThen, expect return of false and retVal to still + // be 0, and buffer to be filled with `q` + MemoryAccessTarget tar = {addr, 1}; + EXPECT_CALL(memory, requestRead(tar, 0)).Times(1); + bool outcome = + handler.readStringThen(buffer, addr, maxLen, [&retVal](auto length) { + retVal = length; + return true; + }); + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 100); + for (int i = 0; i < 256; i++) { + EXPECT_EQ(buffer[i], 'q'); + } + + // ResumeHandling (called on tick()) should now be set to `readStringThen()` + // so call this for our second pass. + ON_CALL(memory, getCompletedReads()) + .WillByDefault(Return(span())); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + outcome = handler.tick(); + // No memory reads completed yet so again expect to return false and no change + // to `retval` or buffer + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 100); + for (int i = 0; i < 256; i++) { + EXPECT_EQ(buffer[i], 'q'); + } + + // Call tick() again, but mimic a memory read completing + ON_CALL(memory, getCompletedReads()).WillByDefault(Return(res1Span)); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + outcome = handler.tick(); + // Completed read and maxLength reached. Expect then() to have been called, + // the outcome to be true, and the buffer to have updated. RetVal should be + // maxLength + EXPECT_TRUE(outcome); + EXPECT_EQ(retVal, 1); + for (int i = 0; i < 256; i++) { + if (i == 0) { + EXPECT_EQ(buffer[i], (char)0xAB); + } else { + EXPECT_EQ(buffer[i], 'q'); + } + } +} + +// Test that `readBufferThen()` operates as expected +TEST_F(AArch64ExceptionHandlerTest, readBufferThen) { + // Create new mock instruction and ExceptionHandler + std::shared_ptr uopPtr(new MockInstruction); + uopPtr->setSequenceId(5); + ExceptionHandler handler(uopPtr, core, memory, kernel); + + // Initialise needed values for function + uint64_t retVal = 0; + uint64_t ptr = 0; + uint64_t length = 192; + + // Initialise data to "read" from MockMemory + std::vector dataVec(length, 'q'); + std::vector dataVec2(length, 'q'); + // Initialise the two required targets (128-bytes per read request in + // readBufferThen()) + MemoryAccessTarget tar1 = {ptr, 128}; + MemoryAccessTarget tar2 = {ptr + 128, static_cast(length - 128)}; + // Initialise "responses" from the MockMemory + MemoryReadResult res1 = {tar1, RegisterValue(dataVec.data() + ptr, 128), + uopPtr->getSequenceId()}; + MemoryReadResult res2 = { + tar2, RegisterValue(dataVec.data() + ptr + 128, length - 128), + uopPtr->getSequenceId()}; + + // Confirm that internal dataBuffer is empty + EXPECT_EQ(handler.dataBuffer.size(), 0); + + // Initial call to readBufferThen - expect resumeHandling to be updated to + // readBufferThen and a memory read request to have occurred + EXPECT_CALL(memory, requestRead(tar1, uopPtr->getSequenceId())).Times(1); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + bool outcome = handler.readBufferThen(ptr, length, [&retVal]() { + retVal = 10; + return true; + }); + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 0); + EXPECT_EQ(handler.dataBuffer.size(), 0); + + // Can now call tick() - on call, emulate no reads completed + ON_CALL(memory, getCompletedReads()) + .WillByDefault(Return(span())); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + outcome = handler.tick(); + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 0); + EXPECT_EQ(handler.dataBuffer.size(), 0); + + // Call tick() again, simulating completed read + new read requested as still + // data to fetch + ON_CALL(memory, getCompletedReads()) + .WillByDefault(Return(span(&res1, 1))); + // Make sure clearCompletedReads() alters functionality of getCompletedReads() + ON_CALL(memory, clearCompletedReads()) + .WillByDefault(::testing::InvokeWithoutArgs([&]() { + ON_CALL(memory, getCompletedReads()) + .WillByDefault(Return(span())); + })); + EXPECT_CALL(memory, getCompletedReads()).Times(2); + EXPECT_CALL(memory, clearCompletedReads()).Times(1); + EXPECT_CALL(memory, requestRead(tar2, uopPtr->getSequenceId())).Times(1); + outcome = handler.tick(); + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 0); + EXPECT_EQ(handler.dataBuffer.size(), 128); + for (int i = 0; i < handler.dataBuffer.size(); i++) { + EXPECT_EQ(handler.dataBuffer[i], 'q'); + } + + // One final call to tick() to get last bits of data from memory and call + // then() + ON_CALL(memory, getCompletedReads()) + .WillByDefault(Return(span(&res2, 1))); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + EXPECT_CALL(memory, clearCompletedReads()).Times(1); + outcome = handler.tick(); + EXPECT_TRUE(outcome); + EXPECT_EQ(retVal, 10); + EXPECT_EQ(handler.dataBuffer.size(), length); + for (int i = 0; i < length; i++) { + EXPECT_EQ(handler.dataBuffer[i], static_cast('q')); + } +} + +// Test that `readBufferThen()` calls then if length is 0 +TEST_F(AArch64ExceptionHandlerTest, readBufferThen_length0) { + // Create new mock instruction and ExceptionHandler + std::shared_ptr uopPtr(new MockInstruction); + ExceptionHandler handler(uopPtr, core, memory, kernel); + + const size_t expectedVal = 10; + uint64_t retVal = 0; + uint64_t ptr = 0; + uint64_t length = 0; + + bool outcome = handler.readBufferThen(ptr, length, [&retVal]() { + retVal = 10; + return true; + }); + EXPECT_TRUE(outcome); + EXPECT_EQ(retVal, expectedVal); +} + +// Test that all AArch64 exception types print as expected +TEST_F(AArch64ExceptionHandlerTest, printException) { + ON_CALL(core, getArchitecturalRegisterFileSet()) + .WillByDefault(ReturnRef(archRegFileSet)); + uint64_t insnAddr = 0x4; + MacroOp uops; + + // Create instruction for EncodingUnallocated + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + InstructionException exception = InstructionException::EncodingUnallocated; + std::shared_ptr insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_0(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + std::stringstream buffer; + std::streambuf* sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_0.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered illegal " + "instruction exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for ExecutionNotYetImplemented + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::ExecutionNotYetImplemented; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_1(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_1.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered execution " + "not-yet-implemented exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for MisalignedPC + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::MisalignedPC; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_2(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_2.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered misaligned " + "program counter exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for DataAbort + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::DataAbort; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_3(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_3.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT( + buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered data abort exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for SupervisorCall + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::SupervisorCall; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_4(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_4.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT( + buffer.str(), + HasSubstr( + "[SimEng:ExceptionHandler] Encountered supervisor call exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for HypervisorCall + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::HypervisorCall; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_5(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_5.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT( + buffer.str(), + HasSubstr( + "[SimEng:ExceptionHandler] Encountered hypervisor call exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for SecureMonitorCall + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::SecureMonitorCall; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_6(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_6.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " + "secure monitor call exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for NoAvailablePort + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::NoAvailablePort; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_7(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_7.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " + "unsupported execution port exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for UnmappedSysReg + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::UnmappedSysReg; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_8(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_8.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " + "unmapped system register exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for StreamingModeUpdate + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::StreamingModeUpdate; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_9(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_9.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " + "streaming mode update exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for ZAregisterStatusUpdate + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::ZAregisterStatusUpdate; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_10(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_10.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " + "ZA register status update exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for SMZAUpdate + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::SMZAUpdate; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_11(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_11.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered streaming mode " + "& ZA register status update exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for ZAdisabled + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::ZAdisabled; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_12(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_12.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered ZA register " + "access attempt when disabled exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for SMdisabled + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::SMdisabled; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_13(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_13.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered SME execution " + "attempt when streaming mode disabled exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for default case + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::None; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_14(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_14.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered unknown (id: " + "0) exception")); + buffer.clear(); + uops.clear(); +} + +} // namespace aarch64 +} // namespace arch +} // namespace simeng \ No newline at end of file diff --git a/test/unit/riscv/ExceptionHandlerTest.cc b/test/unit/riscv/ExceptionHandlerTest.cc new file mode 100644 index 0000000000..1f67b39324 --- /dev/null +++ b/test/unit/riscv/ExceptionHandlerTest.cc @@ -0,0 +1,559 @@ +#include "../MockCore.hh" +#include "../MockInstruction.hh" +#include "../MockMemoryInterface.hh" +#include "gmock/gmock.h" +#include "simeng/ArchitecturalRegisterFileSet.hh" +#include "simeng/ModelConfig.hh" +#include "simeng/arch/riscv/Architecture.hh" +#include "simeng/arch/riscv/ExceptionHandler.hh" +#include "simeng/arch/riscv/Instruction.hh" + +namespace simeng { +namespace arch { +namespace riscv { + +using ::testing::HasSubstr; +using ::testing::Return; +using ::testing::ReturnRef; + +class RiscVExceptionHandlerTest : public ::testing::Test { + public: + RiscVExceptionHandlerTest() + : config(simeng::ModelConfig(SIMENG_SOURCE_DIR "/configs/DEMO_RISCV.yaml") + .getConfigFile()), + kernel(config["CPU-Info"]["Special-File-Dir-Path"].as()), + arch(kernel, config), + physRegFileSet(arch.getRegisterFileStructures()), + archRegFileSet(physRegFileSet) {} + + protected: + YAML::Node config; + + MockCore core; + MockMemoryInterface memory; + kernel::Linux kernel; + Architecture arch; + + RegisterFileSet physRegFileSet; + ArchitecturalRegisterFileSet archRegFileSet; + + // addi sp, ra, 2000 --- Just need a valid instruction to hijack + std::array validInstrBytes = {0x13, 0x81, 0x00, 0x7d}; + + /** Helper constants for RISC-V general-purpose registers. */ + static constexpr Register R0 = {RegisterType::GENERAL, 10}; + static constexpr Register R1 = {RegisterType::GENERAL, 11}; + static constexpr Register R2 = {RegisterType::GENERAL, 12}; + static constexpr Register R3 = {RegisterType::GENERAL, 13}; + static constexpr Register R4 = {RegisterType::GENERAL, 14}; + static constexpr Register R5 = {RegisterType::GENERAL, 15}; + static constexpr Register R7 = {RegisterType::GENERAL, 17}; +}; + +// All system calls are tested in /test/regression/riscv/Syscall.cc + +// Test that a syscall is processed sucessfully +TEST_F(RiscVExceptionHandlerTest, testSyscall) { + // Create "syscall" instruction + uint64_t insnAddr = 0x4; + MacroOp uops; + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + InstructionException exception = InstructionException::SupervisorCall; + std::shared_ptr insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + insn->setInstructionAddress(insnAddr); + + // Setup register file for `uname` syscall (chosen as minimal functionality) + archRegFileSet.set(R7, RegisterValue(160, 8)); + + // Create ExceptionHandler + ExceptionHandler handler(insn, core, memory, kernel); + + // Tick exceptionHandler + ON_CALL(core, getArchitecturalRegisterFileSet()) + .WillByDefault(ReturnRef(archRegFileSet)); + EXPECT_CALL(core, getArchitecturalRegisterFileSet()).Times(1); + bool retVal = handler.tick(); + ExceptionResult result = handler.getResult(); + + EXPECT_TRUE(retVal); + EXPECT_FALSE(result.fatal); + EXPECT_EQ(result.instructionAddress, insnAddr + 4); + EXPECT_EQ(result.stateChange.type, ChangeType::REPLACEMENT); +} + +// Test that `readStringThen()` operates as expected +TEST_F(RiscVExceptionHandlerTest, readStringThen) { + // Create new mock instruction and ExceptionHandler + std::shared_ptr uopPtr(new MockInstruction); + ExceptionHandler handler(uopPtr, core, memory, kernel); + + // Initialise variables + size_t retVal = 0; + char* buffer; + buffer = (char*)malloc(256); + for (int i = 0; i < 256; i++) { + buffer[i] = 'q'; + } + uint64_t addr = 1024; + int maxLen = kernel::Linux::LINUX_PATH_MAX; + + MemoryAccessTarget target1 = {addr, 1}; + MemoryReadResult res1 = {target1, RegisterValue(0xAB, 1), 1}; + span res1Span = span(&res1, 1); + + MemoryAccessTarget target2 = {addr + 1, 1}; + MemoryReadResult res2 = {target2, RegisterValue(static_cast('\0'), 1), + 1}; + span res2Span = span(&res2, 1); + + // On first call to readStringThen, expect return of false and retVal to still + // be 0, and buffer to be filled with `q` + MemoryAccessTarget tar = {addr, 1}; + EXPECT_CALL(memory, requestRead(tar, 0)).Times(1); + bool outcome = + handler.readStringThen(buffer, addr, maxLen, [&retVal](auto length) { + retVal = length; + return true; + }); + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 0); + for (int i = 0; i < 256; i++) { + EXPECT_EQ(buffer[i], 'q'); + } + + // ResumeHandling (called on tick()) should now be set to `readStringThen()` + // so call this for our second pass. + ON_CALL(memory, getCompletedReads()) + .WillByDefault(Return(span())); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + outcome = handler.tick(); + // No memory reads completed yet so again expect to return false and no change + // to `retval` or buffer + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 0); + for (int i = 0; i < 256; i++) { + EXPECT_EQ(buffer[i], 'q'); + } + + // Call tick() again, but mimic a memory read completing + tar = {addr + 1, 1}; + ON_CALL(memory, getCompletedReads()).WillByDefault(Return(res1Span)); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + EXPECT_CALL(memory, requestRead(tar, 0)).Times(1); + outcome = handler.tick(); + // Completed read but still not complete, so outcome should be false, retVal + // unchanged, but some data in the buffer + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 0); + for (int i = 0; i < 256; i++) { + if (i == 0) { + EXPECT_EQ(buffer[i], (char)0xAB); + } else { + EXPECT_EQ(buffer[i], 'q'); + } + } + + // Call tick() for a final time, getting the final read result + ON_CALL(memory, getCompletedReads()).WillByDefault(Return(res2Span)); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + outcome = handler.tick(); + // End of string '\0' found so expect `then()` to have been called, the + // outcome to be true, and the buffer again to have updated + EXPECT_TRUE(outcome); + EXPECT_EQ(retVal, 1); + for (int i = 0; i < 256; i++) { + if (i == 0) { + EXPECT_EQ(buffer[i], (char)0xAB); + } else if (i == 1) { + EXPECT_EQ(buffer[i], '\0'); + } else { + EXPECT_EQ(buffer[i], 'q'); + } + } +} + +// Test that in `readStringThen()` if max length is 0, then is called straight +// away +TEST_F(RiscVExceptionHandlerTest, readStringThen_maxLen0) { + // Create new mock instruction and ExceptionHandler + std::shared_ptr uopPtr(new MockInstruction); + ExceptionHandler handler(uopPtr, core, memory, kernel); + size_t retVal = 100; + char* buffer; + buffer = (char*)malloc(256); + for (int i = 0; i < 256; i++) { + buffer[i] = 'q'; + } + uint64_t addr = 1024; + int maxLen = 0; + + bool outcome = + handler.readStringThen(buffer, addr, maxLen, [&retVal](auto length) { + retVal = length; + return true; + }); + EXPECT_TRUE(outcome); + EXPECT_EQ(retVal, -1); + for (int i = 0; i < 256; i++) { + EXPECT_EQ(buffer[i], 'q'); + } +} + +// Test that in `readStringThen()` if max length has been met, then() is called +// and no more string is fetched +TEST_F(RiscVExceptionHandlerTest, readStringThen_maxLenReached) { + // Create new mock instruction and ExceptionHandler + std::shared_ptr uopPtr(new MockInstruction); + ExceptionHandler handler(uopPtr, core, memory, kernel); + + // Initialise variables + size_t retVal = 100; + char* buffer; + buffer = (char*)malloc(256); + for (int i = 0; i < 256; i++) { + buffer[i] = 'q'; + } + uint64_t addr = 1024; + int maxLen = 1; + + MemoryAccessTarget target1 = {addr, 1}; + MemoryReadResult res1 = {target1, RegisterValue(0xAB, 1), 1}; + span res1Span = span(&res1, 1); + + // On first call to readStringThen, expect return of false and retVal to still + // be 0, and buffer to be filled with `q` + MemoryAccessTarget tar = {addr, 1}; + EXPECT_CALL(memory, requestRead(tar, 0)).Times(1); + bool outcome = + handler.readStringThen(buffer, addr, maxLen, [&retVal](auto length) { + retVal = length; + return true; + }); + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 100); + for (int i = 0; i < 256; i++) { + EXPECT_EQ(buffer[i], 'q'); + } + + // ResumeHandling (called on tick()) should now be set to `readStringThen()` + // so call this for our second pass. + ON_CALL(memory, getCompletedReads()) + .WillByDefault(Return(span())); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + outcome = handler.tick(); + // No memory reads completed yet so again expect to return false and no change + // to `retval` or buffer + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 100); + for (int i = 0; i < 256; i++) { + EXPECT_EQ(buffer[i], 'q'); + } + + // Call tick() again, but mimic a memory read completing + ON_CALL(memory, getCompletedReads()).WillByDefault(Return(res1Span)); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + outcome = handler.tick(); + // Completed read and maxLength reached. Expect then() to have been called, + // the outcome to be true, and the buffer to have updated. RetVal should be + // maxLength + EXPECT_TRUE(outcome); + EXPECT_EQ(retVal, 1); + for (int i = 0; i < 256; i++) { + if (i == 0) { + EXPECT_EQ(buffer[i], (char)0xAB); + } else { + EXPECT_EQ(buffer[i], 'q'); + } + } +} + +// Test that `readBufferThen()` operates as expected +TEST_F(RiscVExceptionHandlerTest, readBufferThen) { + // Create new mock instruction and ExceptionHandler + std::shared_ptr uopPtr(new MockInstruction); + uopPtr->setSequenceId(5); + ExceptionHandler handler(uopPtr, core, memory, kernel); + + // Initialise needed values for function + uint64_t retVal = 0; + uint64_t ptr = 0; + uint64_t length = 192; + + // Initialise data to "read" from MockMemory + std::vector dataVec(length, 'q'); + std::vector dataVec2(length, 'q'); + // Initialise the two required targets (128-bytes per read request in + // readBufferThen()) + MemoryAccessTarget tar1 = {ptr, 128}; + MemoryAccessTarget tar2 = {ptr + 128, static_cast(length - 128)}; + // Initialise "responses" from the MockMemory + MemoryReadResult res1 = {tar1, RegisterValue(dataVec.data() + ptr, 128), + uopPtr->getSequenceId()}; + MemoryReadResult res2 = { + tar2, RegisterValue(dataVec.data() + ptr + 128, length - 128), + uopPtr->getSequenceId()}; + + // Confirm that internal dataBuffer is empty + EXPECT_EQ(handler.dataBuffer.size(), 0); + + // Initial call to readBufferThen - expect resumeHandling to be updated to + // readBufferThen and a memory read request to have occurred + EXPECT_CALL(memory, requestRead(tar1, uopPtr->getSequenceId())).Times(1); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + bool outcome = handler.readBufferThen(ptr, length, [&retVal]() { + retVal = 10; + return true; + }); + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 0); + EXPECT_EQ(handler.dataBuffer.size(), 0); + + // Can now call tick() - on call, emulate no reads completed + ON_CALL(memory, getCompletedReads()) + .WillByDefault(Return(span())); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + outcome = handler.tick(); + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 0); + EXPECT_EQ(handler.dataBuffer.size(), 0); + + // Call tick() again, simulating completed read + new read requested as still + // data to fetch + ON_CALL(memory, getCompletedReads()) + .WillByDefault(Return(span(&res1, 1))); + // Make sure clearCompletedReads() alters functionality of getCompletedReads() + ON_CALL(memory, clearCompletedReads()) + .WillByDefault(::testing::InvokeWithoutArgs([&]() { + ON_CALL(memory, getCompletedReads()) + .WillByDefault(Return(span())); + })); + EXPECT_CALL(memory, getCompletedReads()).Times(2); + EXPECT_CALL(memory, clearCompletedReads()).Times(1); + EXPECT_CALL(memory, requestRead(tar2, uopPtr->getSequenceId())).Times(1); + outcome = handler.tick(); + EXPECT_FALSE(outcome); + EXPECT_EQ(retVal, 0); + EXPECT_EQ(handler.dataBuffer.size(), 128); + for (int i = 0; i < handler.dataBuffer.size(); i++) { + EXPECT_EQ(handler.dataBuffer[i], 'q'); + } + + // One final call to tick() to get last bits of data from memory and call + // then() + ON_CALL(memory, getCompletedReads()) + .WillByDefault(Return(span(&res2, 1))); + EXPECT_CALL(memory, getCompletedReads()).Times(1); + EXPECT_CALL(memory, clearCompletedReads()).Times(1); + outcome = handler.tick(); + EXPECT_TRUE(outcome); + EXPECT_EQ(retVal, 10); + EXPECT_EQ(handler.dataBuffer.size(), length); + for (int i = 0; i < length; i++) { + EXPECT_EQ(handler.dataBuffer[i], static_cast('q')); + } +} + +// Test that `readBufferThen()` calls then if length is 0 +TEST_F(RiscVExceptionHandlerTest, readBufferThen_length0) { + // Create new mock instruction and ExceptionHandler + std::shared_ptr uopPtr(new MockInstruction); + ExceptionHandler handler(uopPtr, core, memory, kernel); + + const size_t expectedVal = 10; + uint64_t retVal = 0; + uint64_t ptr = 0; + uint64_t length = 0; + + bool outcome = handler.readBufferThen(ptr, length, [&retVal]() { + retVal = 10; + return true; + }); + EXPECT_TRUE(outcome); + EXPECT_EQ(retVal, expectedVal); +} + +// Test that all RISC-V exception types print as expected +TEST_F(RiscVExceptionHandlerTest, printException) { + ON_CALL(core, getArchitecturalRegisterFileSet()) + .WillByDefault(ReturnRef(archRegFileSet)); + uint64_t insnAddr = 0x4; + MacroOp uops; + + // Create instruction for EncodingUnallocated + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + InstructionException exception = InstructionException::EncodingUnallocated; + std::shared_ptr insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_0(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + std::stringstream buffer; + std::streambuf* sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_0.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered illegal " + "instruction exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for ExecutionNotYetImplemented + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::ExecutionNotYetImplemented; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_1(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_1.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered execution " + "not-yet-implemented exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for MisalignedPC + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::MisalignedPC; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_2(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_2.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered misaligned " + "program counter exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for DataAbort + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::DataAbort; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_3(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_3.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT( + buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered data abort exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for SupervisorCall + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::SupervisorCall; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_4(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_4.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT( + buffer.str(), + HasSubstr( + "[SimEng:ExceptionHandler] Encountered supervisor call exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for HypervisorCall + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::HypervisorCall; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_5(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_5.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT( + buffer.str(), + HasSubstr( + "[SimEng:ExceptionHandler] Encountered hypervisor call exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for SecureMonitorCall + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::SecureMonitorCall; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_6(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_6.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " + "secure monitor call exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for NoAvailablePort + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::NoAvailablePort; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_7(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_7.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " + "unsupported execution port exception")); + buffer.clear(); + uops.clear(); + + // Create instruction for default case + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::None; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_14(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_14.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), + HasSubstr("[SimEng:ExceptionHandler] Encountered unknown (id: " + "0) exception")); + buffer.clear(); + uops.clear(); +} + +} // namespace riscv +} // namespace arch +} // namespace simeng \ No newline at end of file From 22f6c691e523e4c7398706d196015437c179a41f Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 14 Dec 2023 15:19:36 +0000 Subject: [PATCH 47/96] Updated use of getOperandRegisters to getSourceRegisters, and updated RISCV number of sysregs in arch test. --- test/unit/pipeline/DispatchIssueUnitTest.cc | 14 +++++++------- test/unit/pipeline/RenameUnitTest.cc | 20 ++++++++++---------- test/unit/riscv/ArchitectureTest.cc | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/test/unit/pipeline/DispatchIssueUnitTest.cc b/test/unit/pipeline/DispatchIssueUnitTest.cc index 590a26842c..587471c4bb 100644 --- a/test/unit/pipeline/DispatchIssueUnitTest.cc +++ b/test/unit/pipeline/DispatchIssueUnitTest.cc @@ -98,7 +98,7 @@ TEST_F(PipelineDispatchIssueUnitTest, singleInstr) { // All expected calls to instruction during tick() EXPECT_CALL(*uop, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); uop->setExceptionEncountered(false); - EXPECT_CALL(*uop, getOperandRegisters()) + EXPECT_CALL(*uop, getSourceRegisters()) .WillOnce(Return(span(srcRegs))); EXPECT_CALL(*uop, isOperandReady(0)).WillOnce(Return(false)); EXPECT_CALL(*uop, supplyOperand(0, RegisterValue(0, 8))); @@ -207,7 +207,7 @@ TEST_F(PipelineDispatchIssueUnitTest, singleInstr_rsFull) { // All expected calls to instruction during tick() EXPECT_CALL(*insns[i].get(), getSupportedPorts()) .WillOnce(ReturnRef(suppPorts)); - EXPECT_CALL(*insns[i].get(), getOperandRegisters()) + EXPECT_CALL(*insns[i].get(), getSourceRegisters()) .WillOnce(Return(span())); EXPECT_CALL(*insns[i].get(), getDestinationRegisters()) .WillOnce(Return(span())); @@ -274,7 +274,7 @@ TEST_F(PipelineDispatchIssueUnitTest, singleInstr_portStall) { // All expected calls to instruction during tick() EXPECT_CALL(*uop, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); uop->setExceptionEncountered(false); - EXPECT_CALL(*uop, getOperandRegisters()).WillOnce(Return(span())); + EXPECT_CALL(*uop, getSourceRegisters()).WillOnce(Return(span())); EXPECT_CALL(*uop, getDestinationRegisters()) .WillOnce(Return(span())); // Expected call to portAllocator during tick() @@ -341,7 +341,7 @@ TEST_F(PipelineDispatchIssueUnitTest, createDependancy_raw) { // All expected calls to instruction 1 during tick() EXPECT_CALL(*uop, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); uop->setExceptionEncountered(false); - EXPECT_CALL(*uop, getOperandRegisters()) + EXPECT_CALL(*uop, getSourceRegisters()) .WillOnce(Return(span(srcRegs_1))); EXPECT_CALL(*uop, isOperandReady(0)).WillOnce(Return(false)); EXPECT_CALL(*uop, supplyOperand(0, RegisterValue(0, 8))); @@ -361,7 +361,7 @@ TEST_F(PipelineDispatchIssueUnitTest, createDependancy_raw) { // All expected calls to instruction 2 during tick() EXPECT_CALL(*uop2, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); uop->setExceptionEncountered(false); - EXPECT_CALL(*uop2, getOperandRegisters()) + EXPECT_CALL(*uop2, getSourceRegisters()) .WillOnce(Return(span(srcRegs_2))); EXPECT_CALL(*uop2, isOperandReady(0)).WillOnce(Return(false)); EXPECT_CALL(*uop2, getDestinationRegisters()) @@ -435,7 +435,7 @@ TEST_F(PipelineDispatchIssueUnitTest, purgeFlushed) { // All expected calls to instruction 1 during tick() EXPECT_CALL(*uop, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); uop->setExceptionEncountered(false); - EXPECT_CALL(*uop, getOperandRegisters()) + EXPECT_CALL(*uop, getSourceRegisters()) .WillOnce(Return(span(srcRegs_1))); EXPECT_CALL(*uop, isOperandReady(0)).WillOnce(Return(false)); EXPECT_CALL(*uop, supplyOperand(0, RegisterValue(0, 8))); @@ -452,7 +452,7 @@ TEST_F(PipelineDispatchIssueUnitTest, purgeFlushed) { // All expected calls to instruction 2 during tick() EXPECT_CALL(*uop2, getSupportedPorts()).WillOnce(ReturnRef(suppPorts)); uop->setExceptionEncountered(false); - EXPECT_CALL(*uop2, getOperandRegisters()) + EXPECT_CALL(*uop2, getSourceRegisters()) .WillOnce(Return(span(srcRegs_2))); EXPECT_CALL(*uop2, isOperandReady(0)).WillOnce(Return(false)); EXPECT_CALL(*uop2, getDestinationRegisters()) diff --git a/test/unit/pipeline/RenameUnitTest.cc b/test/unit/pipeline/RenameUnitTest.cc index b5cc74f5f9..aca6800e85 100644 --- a/test/unit/pipeline/RenameUnitTest.cc +++ b/test/unit/pipeline/RenameUnitTest.cc @@ -92,7 +92,7 @@ TEST_F(RenameUnitTest, tick) { std::array srcRegs = {r0, r1}; ON_CALL(*uop, getDestinationRegisters()) .WillByDefault(Return(span(destRegs))); - ON_CALL(*uop, getOperandRegisters()) + ON_CALL(*uop, getSourceRegisters()) .WillByDefault(Return(span(srcRegs))); ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); ON_CALL(*uop, isLoad()).WillByDefault(Return(false)); @@ -102,7 +102,7 @@ TEST_F(RenameUnitTest, tick) { EXPECT_CALL(*uop, isLoad()).Times(1); EXPECT_CALL(*uop, isStoreAddress()).Times(1); EXPECT_CALL(*uop, getDestinationRegisters()).Times(1); - EXPECT_CALL(*uop, getOperandRegisters()).Times(1); + EXPECT_CALL(*uop, getSourceRegisters()).Times(1); EXPECT_CALL(*uop, isOperandReady(_)).Times(2); EXPECT_CALL(*uop, renameSource(_, _)).Times(2); EXPECT_CALL(*uop, renameDestination(0, _)).Times(1); @@ -225,7 +225,7 @@ TEST_F(RenameUnitTest, loadUop) { std::array srcRegs = {r0, r1}; ON_CALL(*uop, getDestinationRegisters()) .WillByDefault(Return(span(destRegs))); - ON_CALL(*uop, getOperandRegisters()) + ON_CALL(*uop, getSourceRegisters()) .WillByDefault(Return(span(srcRegs))); ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); ON_CALL(*uop, isLoad()).WillByDefault(Return(true)); @@ -235,7 +235,7 @@ TEST_F(RenameUnitTest, loadUop) { EXPECT_CALL(*uop, isLoad()).Times(1); EXPECT_CALL(*uop, isStoreAddress()).Times(1); EXPECT_CALL(*uop, getDestinationRegisters()).Times(1); - EXPECT_CALL(*uop, getOperandRegisters()).Times(1); + EXPECT_CALL(*uop, getSourceRegisters()).Times(1); EXPECT_CALL(*uop, isOperandReady(_)).Times(2); EXPECT_CALL(*uop, renameSource(_, _)).Times(2); EXPECT_CALL(*uop, renameDestination(0, _)).Times(1); @@ -274,7 +274,7 @@ TEST_F(RenameUnitTest, loadUopQueueFull) { std::array srcRegs = {r0, r1}; ON_CALL(*uop, getDestinationRegisters()) .WillByDefault(Return(span(destRegs))); - ON_CALL(*uop, getOperandRegisters()) + ON_CALL(*uop, getSourceRegisters()) .WillByDefault(Return(span(srcRegs))); ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); ON_CALL(*uop, isLoad()).WillByDefault(Return(true)); @@ -311,7 +311,7 @@ TEST_F(RenameUnitTest, storeUop) { std::array srcRegs = {r0, r1}; ON_CALL(*uop, getDestinationRegisters()) .WillByDefault(Return(span(destRegs))); - ON_CALL(*uop, getOperandRegisters()) + ON_CALL(*uop, getSourceRegisters()) .WillByDefault(Return(span(srcRegs))); ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); ON_CALL(*uop, isLoad()).WillByDefault(Return(false)); @@ -321,7 +321,7 @@ TEST_F(RenameUnitTest, storeUop) { EXPECT_CALL(*uop, isLoad()).Times(1); EXPECT_CALL(*uop, isStoreAddress()).Times(1); EXPECT_CALL(*uop, getDestinationRegisters()).Times(1); - EXPECT_CALL(*uop, getOperandRegisters()).Times(1); + EXPECT_CALL(*uop, getSourceRegisters()).Times(1); EXPECT_CALL(*uop, isOperandReady(_)).Times(2); EXPECT_CALL(*uop, renameSource(_, _)).Times(2); EXPECT_CALL(*uop, renameDestination(0, _)).Times(1); @@ -360,7 +360,7 @@ TEST_F(RenameUnitTest, storeUopQueueFull) { std::array srcRegs = {r0, r1}; ON_CALL(*uop, getDestinationRegisters()) .WillByDefault(Return(span(destRegs))); - ON_CALL(*uop, getOperandRegisters()) + ON_CALL(*uop, getSourceRegisters()) .WillByDefault(Return(span(srcRegs))); ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); ON_CALL(*uop, isLoad()).WillByDefault(Return(false)); @@ -403,7 +403,7 @@ TEST_F(RenameUnitTest, serializedDest) { std::array srcRegs = {r0, r1}; ON_CALL(*uop, getDestinationRegisters()) .WillByDefault(Return(span(destRegs))); - ON_CALL(*uop, getOperandRegisters()) + ON_CALL(*uop, getSourceRegisters()) .WillByDefault(Return(span(srcRegs))); ON_CALL(*uop, isOperandReady(_)).WillByDefault(Return(false)); ON_CALL(*uop, isLoad()).WillByDefault(Return(false)); @@ -434,7 +434,7 @@ TEST_F(RenameUnitTest, serializedDest) { EXPECT_CALL(*uop, isLoad()).Times(1); EXPECT_CALL(*uop, isStoreAddress()).Times(1); EXPECT_CALL(*uop, getDestinationRegisters()).Times(1); - EXPECT_CALL(*uop, getOperandRegisters()).Times(1); + EXPECT_CALL(*uop, getSourceRegisters()).Times(1); EXPECT_CALL(*uop, isOperandReady(_)).Times(2); EXPECT_CALL(*uop, renameSource(_, _)).Times(2); renameUnit.tick(); diff --git a/test/unit/riscv/ArchitectureTest.cc b/test/unit/riscv/ArchitectureTest.cc index 50c500023a..2ad847f6e9 100644 --- a/test/unit/riscv/ArchitectureTest.cc +++ b/test/unit/riscv/ArchitectureTest.cc @@ -85,7 +85,7 @@ TEST_F(RiscVArchitectureTest, getSystemRegisterTag) { TEST_F(RiscVArchitectureTest, getNumSystemRegisters) { uint16_t output = arch->getNumSystemRegisters(); - EXPECT_EQ(output, 0); + EXPECT_EQ(output, 6); } TEST_F(RiscVArchitectureTest, handleException) { From 34d43c0f1e8f0d6bf03088ba4d50dd9d3f54853c Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 14 Dec 2023 15:21:15 +0000 Subject: [PATCH 48/96] Removed un-used exception enum with no print out, and removed extra std::endl from risc-v aliasNYI exception printout. --- src/include/simeng/arch/aarch64/Instruction.hh | 1 - src/include/simeng/arch/riscv/Instruction.hh | 1 - src/lib/arch/riscv/ExceptionHandler.cc | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/include/simeng/arch/aarch64/Instruction.hh b/src/include/simeng/arch/aarch64/Instruction.hh index 5277f72571..9cf3e0d4a5 100644 --- a/src/include/simeng/arch/aarch64/Instruction.hh +++ b/src/include/simeng/arch/aarch64/Instruction.hh @@ -222,7 +222,6 @@ struct ExecutionInfo { enum class InstructionException { None = 0, EncodingUnallocated, - EncodingNotYetImplemented, ExecutionNotYetImplemented, AliasNotYetImplemented, MisalignedPC, diff --git a/src/include/simeng/arch/riscv/Instruction.hh b/src/include/simeng/arch/riscv/Instruction.hh index 2ba1c03d8c..16272d6872 100644 --- a/src/include/simeng/arch/riscv/Instruction.hh +++ b/src/include/simeng/arch/riscv/Instruction.hh @@ -42,7 +42,6 @@ struct executionInfo { enum class InstructionException { None = 0, EncodingUnallocated, - EncodingNotYetImplemented, ExecutionNotYetImplemented, AliasNotYetImplemented, MisalignedPC, diff --git a/src/lib/arch/riscv/ExceptionHandler.cc b/src/lib/arch/riscv/ExceptionHandler.cc index 665633c44c..cc519a27b0 100644 --- a/src/lib/arch/riscv/ExceptionHandler.cc +++ b/src/lib/arch/riscv/ExceptionHandler.cc @@ -863,7 +863,7 @@ void ExceptionHandler::printException(const Instruction& insn) const { std::cout << "execution not-yet-implemented"; break; case InstructionException::AliasNotYetImplemented: - std::cout << "alias not-yet-implemented" << std::endl; + std::cout << "alias not-yet-implemented"; break; case InstructionException::MisalignedPC: std::cout << "misaligned program counter"; From 5cef426740ac65b0523e6ba1cb3fa2057d064443 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 14 Dec 2023 15:21:57 +0000 Subject: [PATCH 49/96] Updated exceptionHandler.printException tests for aarch64 and risc-v to include new exceptions from rebase. --- test/unit/aarch64/ExceptionHandlerTest.cc | 100 ++++++++++++--------- test/unit/riscv/ExceptionHandlerTest.cc | 105 ++++++++++++++++------ 2 files changed, 138 insertions(+), 67 deletions(-) diff --git a/test/unit/aarch64/ExceptionHandlerTest.cc b/test/unit/aarch64/ExceptionHandlerTest.cc index f3e17020b3..e3713e3d24 100644 --- a/test/unit/aarch64/ExceptionHandlerTest.cc +++ b/test/unit/aarch64/ExceptionHandlerTest.cc @@ -402,7 +402,7 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered illegal " "instruction exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for ExecutionNotYetImplemented @@ -421,13 +421,13 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered execution " "not-yet-implemented exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); - // Create instruction for MisalignedPC + // Create instruction for AliasNotYetImplemented arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, uops); - exception = InstructionException::MisalignedPC; + exception = InstructionException::AliasNotYetImplemented; insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler @@ -437,10 +437,28 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer handler_2.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " + "alias not-yet-implemented exception")); + buffer.str(std::string()); + uops.clear(); + + // Create instruction for MisalignedPC + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::MisalignedPC; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_3(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_3.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered misaligned " "program counter exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for DataAbort @@ -450,16 +468,16 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_3(insn, core, memory, kernel); + ExceptionHandler handler_4(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_3.printException(*static_cast(insn.get())); + handler_4.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT( buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered data abort exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for SupervisorCall @@ -469,17 +487,17 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_4(insn, core, memory, kernel); + ExceptionHandler handler_5(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_4.printException(*static_cast(insn.get())); + handler_5.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT( buffer.str(), HasSubstr( "[SimEng:ExceptionHandler] Encountered supervisor call exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for HypervisorCall @@ -489,17 +507,17 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_5(insn, core, memory, kernel); + ExceptionHandler handler_6(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_5.printException(*static_cast(insn.get())); + handler_6.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT( buffer.str(), HasSubstr( "[SimEng:ExceptionHandler] Encountered hypervisor call exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for SecureMonitorCall @@ -509,15 +527,15 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_6(insn, core, memory, kernel); + ExceptionHandler handler_7(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_6.printException(*static_cast(insn.get())); + handler_7.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " "secure monitor call exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for NoAvailablePort @@ -527,15 +545,15 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_7(insn, core, memory, kernel); + ExceptionHandler handler_8(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_7.printException(*static_cast(insn.get())); + handler_8.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " "unsupported execution port exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for UnmappedSysReg @@ -545,15 +563,15 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_8(insn, core, memory, kernel); + ExceptionHandler handler_9(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_8.printException(*static_cast(insn.get())); + handler_9.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " "unmapped system register exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for StreamingModeUpdate @@ -563,15 +581,15 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_9(insn, core, memory, kernel); + ExceptionHandler handler_10(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_9.printException(*static_cast(insn.get())); + handler_10.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " "streaming mode update exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for ZAregisterStatusUpdate @@ -581,15 +599,15 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_10(insn, core, memory, kernel); + ExceptionHandler handler_11(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_10.printException(*static_cast(insn.get())); + handler_11.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " "ZA register status update exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for SMZAUpdate @@ -599,16 +617,16 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_11(insn, core, memory, kernel); + ExceptionHandler handler_12(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_11.printException(*static_cast(insn.get())); + handler_12.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered streaming mode " "& ZA register status update exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for ZAdisabled @@ -618,16 +636,16 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_12(insn, core, memory, kernel); + ExceptionHandler handler_13(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_12.printException(*static_cast(insn.get())); + handler_13.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered ZA register " "access attempt when disabled exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for SMdisabled @@ -637,16 +655,16 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_13(insn, core, memory, kernel); + ExceptionHandler handler_14(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_13.printException(*static_cast(insn.get())); + handler_14.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered SME execution " "attempt when streaming mode disabled exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for default case @@ -656,16 +674,16 @@ TEST_F(AArch64ExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_14(insn, core, memory, kernel); + ExceptionHandler handler_15(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_14.printException(*static_cast(insn.get())); + handler_15.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered unknown (id: " "0) exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); } diff --git a/test/unit/riscv/ExceptionHandlerTest.cc b/test/unit/riscv/ExceptionHandlerTest.cc index 1f67b39324..1578dc81cf 100644 --- a/test/unit/riscv/ExceptionHandlerTest.cc +++ b/test/unit/riscv/ExceptionHandlerTest.cc @@ -395,10 +395,9 @@ TEST_F(RiscVExceptionHandlerTest, printException) { std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer handler_0.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout - EXPECT_THAT(buffer.str(), - HasSubstr("[SimEng:ExceptionHandler] Encountered illegal " - "instruction exception")); - buffer.clear(); + EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " + "encoding unallocated exception")); + buffer.str(std::string()); uops.clear(); // Create instruction for ExecutionNotYetImplemented @@ -417,13 +416,13 @@ TEST_F(RiscVExceptionHandlerTest, printException) { EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered execution " "not-yet-implemented exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); - // Create instruction for MisalignedPC + // Create instruction for AliasNotYetImplemented arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, uops); - exception = InstructionException::MisalignedPC; + exception = InstructionException::AliasNotYetImplemented; insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler @@ -433,10 +432,28 @@ TEST_F(RiscVExceptionHandlerTest, printException) { std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer handler_2.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " + "alias not-yet-implemented exception")); + buffer.str(std::string()); + uops.clear(); + + // Create instruction for MisalignedPC + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::MisalignedPC; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_3(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_3.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered misaligned " "program counter exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for DataAbort @@ -446,16 +463,16 @@ TEST_F(RiscVExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_3(insn, core, memory, kernel); + ExceptionHandler handler_4(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_3.printException(*static_cast(insn.get())); + handler_4.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT( buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered data abort exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for SupervisorCall @@ -465,17 +482,17 @@ TEST_F(RiscVExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_4(insn, core, memory, kernel); + ExceptionHandler handler_5(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_4.printException(*static_cast(insn.get())); + handler_5.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT( buffer.str(), HasSubstr( "[SimEng:ExceptionHandler] Encountered supervisor call exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for HypervisorCall @@ -485,17 +502,17 @@ TEST_F(RiscVExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_5(insn, core, memory, kernel); + ExceptionHandler handler_6(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_5.printException(*static_cast(insn.get())); + handler_6.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT( buffer.str(), HasSubstr( "[SimEng:ExceptionHandler] Encountered hypervisor call exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for SecureMonitorCall @@ -505,15 +522,15 @@ TEST_F(RiscVExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_6(insn, core, memory, kernel); + ExceptionHandler handler_7(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_6.printException(*static_cast(insn.get())); + handler_7.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " "secure monitor call exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); // Create instruction for NoAvailablePort @@ -523,15 +540,51 @@ TEST_F(RiscVExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_7(insn, core, memory, kernel); + ExceptionHandler handler_8(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_7.printException(*static_cast(insn.get())); + handler_8.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " "unsupported execution port exception")); - buffer.clear(); + buffer.str(std::string()); + uops.clear(); + + // Create instruction for IllegalInstruction + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::IllegalInstruction; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_9(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_9.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " + "illegal instruction exception")); + buffer.str(std::string()); + uops.clear(); + + // Create instruction for PipelineFlush + arch.predecode(validInstrBytes.data(), validInstrBytes.size(), insnAddr, + uops); + exception = InstructionException::PipelineFlush; + insn = std::make_shared( + arch, static_cast(uops[0].get())->getMetadata(), exception); + // Create ExceptionHandler + ExceptionHandler handler_10(insn, core, memory, kernel); + // Capture std::cout and tick exceptionHandler + sbuf = std::cout.rdbuf(); // Save cout's buffer + std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer + handler_10.printException(*static_cast(insn.get())); + std::cout.rdbuf(sbuf); // Restore cout + EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered " + "unknown atomic operation exception")); + buffer.str(std::string()); uops.clear(); // Create instruction for default case @@ -541,16 +594,16 @@ TEST_F(RiscVExceptionHandlerTest, printException) { insn = std::make_shared( arch, static_cast(uops[0].get())->getMetadata(), exception); // Create ExceptionHandler - ExceptionHandler handler_14(insn, core, memory, kernel); + ExceptionHandler handler_11(insn, core, memory, kernel); // Capture std::cout and tick exceptionHandler sbuf = std::cout.rdbuf(); // Save cout's buffer std::cout.rdbuf(buffer.rdbuf()); // Redirect cout to buffer - handler_14.printException(*static_cast(insn.get())); + handler_11.printException(*static_cast(insn.get())); std::cout.rdbuf(sbuf); // Restore cout EXPECT_THAT(buffer.str(), HasSubstr("[SimEng:ExceptionHandler] Encountered unknown (id: " "0) exception")); - buffer.clear(); + buffer.str(std::string()); uops.clear(); } From 43d4e791d33f71d3ec40870ae774ab87bed64e1e Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 14 Dec 2023 15:46:08 +0000 Subject: [PATCH 50/96] Removed the use of filesystem header as this causes problems with some gcc versions. --- src/include/simeng/ModelConfig.hh | 1 - src/lib/ModelConfig.cc | 8 ++++---- test/unit/SpecialFileDirGenTest.cc | 17 +++++++++-------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/include/simeng/ModelConfig.hh b/src/include/simeng/ModelConfig.hh index 2ba7ff4278..54fa74411b 100644 --- a/src/include/simeng/ModelConfig.hh +++ b/src/include/simeng/ModelConfig.hh @@ -5,7 +5,6 @@ #include #include #include -#include #include #include #include diff --git a/src/lib/ModelConfig.cc b/src/lib/ModelConfig.cc index 658a1393ef..66622ff52b 100644 --- a/src/lib/ModelConfig.cc +++ b/src/lib/ModelConfig.cc @@ -604,10 +604,10 @@ void ModelConfig::validate() { } } // Ensure that if a Special-File-Dir-Path is provided, it exists - if (!(defaultSpecialFilePath == - configFile_[root][subFields[1]].as()) && - !std::filesystem::exists( - configFile_[root][subFields[1]].as())) { + if ((defaultSpecialFilePath != + configFile_[root][subFields[1]].as()) && + !std::ifstream(configFile_[root][subFields[1]].as()) + .good()) { invalid_ << "\t- Special-File-Dir-Path must exist. Please ensure the given " "path is absolute and correct."; } diff --git a/test/unit/SpecialFileDirGenTest.cc b/test/unit/SpecialFileDirGenTest.cc index 29530db30e..928e135637 100644 --- a/test/unit/SpecialFileDirGenTest.cc +++ b/test/unit/SpecialFileDirGenTest.cc @@ -1,5 +1,3 @@ -#include - #include "gmock/gmock.h" #include "simeng/SpecialFileDirGen.hh" #include "simeng/version.hh" @@ -90,8 +88,9 @@ class SpecialFileDirGenTest : public testing::Test { TEST_F(SpecialFileDirGenTest, genAndDelete) { // Make sure files currently do not exist for (int i = 0; i < allFiles_names_Lines.size(); i++) { - EXPECT_FALSE(std::filesystem::exists(TEST_SPEC_FILE_DIR + - std::get<0>(allFiles_names_Lines[i]))); + EXPECT_FALSE( + std::ifstream(TEST_SPEC_FILE_DIR + std::get<0>(allFiles_names_Lines[i])) + .good()); } // Generate files @@ -99,8 +98,9 @@ TEST_F(SpecialFileDirGenTest, genAndDelete) { // Validate files exist and are correct for (int i = 0; i < allFiles_names_Lines.size(); i++) { - EXPECT_TRUE(std::filesystem::exists(TEST_SPEC_FILE_DIR + - std::get<0>(allFiles_names_Lines[i]))); + EXPECT_TRUE( + std::ifstream(TEST_SPEC_FILE_DIR + std::get<0>(allFiles_names_Lines[i])) + .good()); std::ifstream file(TEST_SPEC_FILE_DIR + std::get<0>(allFiles_names_Lines[i])); const std::vector& knownLines = @@ -122,8 +122,9 @@ TEST_F(SpecialFileDirGenTest, genAndDelete) { // Make sure files don't exist for (int i = 0; i < allFiles_names_Lines.size(); i++) { - EXPECT_FALSE(std::filesystem::exists(TEST_SPEC_FILE_DIR + - std::get<0>(allFiles_names_Lines[i]))); + EXPECT_FALSE( + std::ifstream(TEST_SPEC_FILE_DIR + std::get<0>(allFiles_names_Lines[i])) + .good()); } } From 8861f51699176424acf867488e17f93941d89f7a Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 15 Dec 2023 07:30:46 +0000 Subject: [PATCH 51/96] Added fix for failing SP related unit tests. --- test/unit/OSTest.cc | 5 ++++- test/unit/ProcessTest.cc | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/test/unit/OSTest.cc b/test/unit/OSTest.cc index e074d5e0bf..909041137b 100644 --- a/test/unit/OSTest.cc +++ b/test/unit/OSTest.cc @@ -46,7 +46,10 @@ class OSTest : public testing::Test { // syscalls and are tested in the Regression suite. TEST_F(OSTest, processElf_stackPointer) { os.createProcess(proc_elf); - EXPECT_EQ(os.getInitialStackPointer(), 1079830624); + // cmdLine[0] length will change depending on the host system so final stack + // pointer needs to be calculated, and need to add +1 for the null char at end + // of a string + EXPECT_EQ(os.getInitialStackPointer(), 1079830551 + cmdLine[0].length() + 1); EXPECT_EQ(os.getInitialStackPointer(), proc_elf.getStackPointer()); } diff --git a/test/unit/ProcessTest.cc b/test/unit/ProcessTest.cc index a4be62bb69..95dd842886 100644 --- a/test/unit/ProcessTest.cc +++ b/test/unit/ProcessTest.cc @@ -93,7 +93,10 @@ TEST_F(ProcessTest, getEntryPoint) { TEST_F(ProcessTest, getStackPointer) { kernel::LinuxProcess proc = kernel::LinuxProcess(cmdLine, config); EXPECT_TRUE(proc.isValid()); - EXPECT_EQ(proc.getStackPointer(), 1079830624); + // cmdLine[0] length will change depending on the host system so final stack + // pointer needs to be calculated, and need to add +1 for the null char at end + // of a string + EXPECT_EQ(proc.getStackPointer(), 1079830551 + cmdLine[0].length() + 1); } } // namespace simeng From 16acf8a8474758bf908b22482b2f24f2289a0bd7 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 15 Dec 2023 07:31:57 +0000 Subject: [PATCH 52/96] Removed simeng-fileio-test.txt --- simeng-fileio-test.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 simeng-fileio-test.txt diff --git a/simeng-fileio-test.txt b/simeng-fileio-test.txt deleted file mode 100644 index 8ab686eafe..0000000000 --- a/simeng-fileio-test.txt +++ /dev/null @@ -1 +0,0 @@ -Hello, World! From 60c04b6586b973895e82f374f089ce1b8f785461 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 15 Dec 2023 08:42:05 +0000 Subject: [PATCH 53/96] Further attempt at a stackPointer test failure fix. --- test/unit/OSTest.cc | 16 +++++++++++++--- test/unit/ProcessTest.cc | 18 ++++++++++++++---- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/test/unit/OSTest.cc b/test/unit/OSTest.cc index 909041137b..671d99c0d0 100644 --- a/test/unit/OSTest.cc +++ b/test/unit/OSTest.cc @@ -47,9 +47,19 @@ class OSTest : public testing::Test { TEST_F(OSTest, processElf_stackPointer) { os.createProcess(proc_elf); // cmdLine[0] length will change depending on the host system so final stack - // pointer needs to be calculated, and need to add +1 for the null char at end - // of a string - EXPECT_EQ(os.getInitialStackPointer(), 1079830551 + cmdLine[0].length() + 1); + // pointer needs to be calculated manually + // cmdLineSize + 1 for null seperator + const uint64_t cmdLineSize = cmdLine[0].size() + 1; + // "OMP_NUM_THREADS=1" + 1 for null seperator + const uint64_t envStringsSize = 18; + // Size of initial stack frame (17 push_backs) * 8 + const uint64_t stackFrameSize = 17 * 8; + // cmd + Env needs +1 for null seperator + const uint64_t stackPointer = + proc_elf.getStackStart() - + kernel::alignToBoundary(cmdLineSize + envStringsSize + 1, 32) - + kernel::alignToBoundary(stackFrameSize, 32); + EXPECT_EQ(os.getInitialStackPointer(), stackPointer); EXPECT_EQ(os.getInitialStackPointer(), proc_elf.getStackPointer()); } diff --git a/test/unit/ProcessTest.cc b/test/unit/ProcessTest.cc index 95dd842886..e0f33d1711 100644 --- a/test/unit/ProcessTest.cc +++ b/test/unit/ProcessTest.cc @@ -56,7 +56,7 @@ TEST_F(ProcessTest, createProcess_hex) { TEST_F(ProcessTest, get_x_Start) { kernel::LinuxProcess proc = kernel::LinuxProcess(cmdLine, config); EXPECT_TRUE(proc.isValid()); - uint64_t heapStart = 5040480; + const uint64_t heapStart = 5040480; uint64_t heapSize = config["Process-Image"]["Heap-Size"].as(); uint64_t stackSize = config["Process-Image"]["Stack-Size"].as(); EXPECT_EQ(proc.getHeapStart(), heapStart); @@ -94,9 +94,19 @@ TEST_F(ProcessTest, getStackPointer) { kernel::LinuxProcess proc = kernel::LinuxProcess(cmdLine, config); EXPECT_TRUE(proc.isValid()); // cmdLine[0] length will change depending on the host system so final stack - // pointer needs to be calculated, and need to add +1 for the null char at end - // of a string - EXPECT_EQ(proc.getStackPointer(), 1079830551 + cmdLine[0].length() + 1); + // pointer needs to be calculated manually + // cmdLineSize + 1 for null seperator + const uint64_t cmdLineSize = cmdLine[0].size() + 1; + // "OMP_NUM_THREADS=1" + 1 for null seperator + const uint64_t envStringsSize = 18; + // Size of initial stack frame (17 push_backs) * 8 + const uint64_t stackFrameSize = 17 * 8; + // cmd + Env needs +1 for null seperator + const uint64_t stackPointer = + proc.getStackStart() - + kernel::alignToBoundary(cmdLineSize + envStringsSize + 1, 32) - + kernel::alignToBoundary(stackFrameSize, 32); + EXPECT_EQ(proc.getStackPointer(), stackPointer); } } // namespace simeng From af047dc83694dee30231cba294feb54b88eda362 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Mon, 18 Dec 2023 23:10:18 +0000 Subject: [PATCH 54/96] Integration test fixes after merge, and adding integration tests to test-all target. --- CMakeLists.txt | 2 +- test/integration/ConfigTest.cc | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cae649dddd..9bd70577f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -215,7 +215,7 @@ endif() # saves us from having to build all targets before running the tests add_custom_target(test-all COMMAND ${CMAKE_CTEST_COMMAND} - DEPENDS unittests regression-aarch64 regression-riscv + DEPENDS unittests regression-aarch64 regression-riscv integrationtests ) endif() diff --git a/test/integration/ConfigTest.cc b/test/integration/ConfigTest.cc index f121c0fb07..0ab1c9fcd7 100644 --- a/test/integration/ConfigTest.cc +++ b/test/integration/ConfigTest.cc @@ -3,6 +3,7 @@ #include "gtest/gtest.h" #include "simeng/config/SimInfo.hh" +#include "simeng/version.hh" namespace { @@ -66,7 +67,8 @@ TEST(ConfigTest, Default) { " 'Instruction-Groups':\n - NONE\n 'Instruction-Opcodes':\n " " - 6343\n 'Execution-Latency': 1\n 'Execution-Throughput': 1\n " " 'Instruction-Group-Nums':\n - 87\n'CPU-Info':\n " - "'Generate-Special-Dir': 0\n 'Core-Count': 1\n 'Socket-Count': 1\n " + "'Generate-Special-Dir': 0\n 'Special-File-Dir-Path': " SIMENG_BUILD_DIR + "/specialFiles/\n 'Core-Count': 1\n 'Socket-Count': 1\n " "SMT: 1\n BogoMIPS: 0\n Features: ''\n 'CPU-Implementer': 0x0\n " "'CPU-Architecture': 0\n 'CPU-Variant': 0x0\n 'CPU-Part': 0x0\n " "'CPU-Revision': 0\n 'Package-Count': 1\n"; @@ -119,7 +121,8 @@ TEST(ConfigTest, Default) { " 'Instruction-Groups':\n - NONE\n 'Instruction-Opcodes':\n " " - 450\n 'Execution-Latency': 1\n 'Execution-Throughput': 1\n " "'Instruction-Group-Nums':\n - 24\n'CPU-Info':\n " - "'Generate-Special-Dir': 0\n 'Core-Count': 1\n 'Socket-Count': 1\n " + "'Generate-Special-Dir': 0\n 'Special-File-Dir-Path': " SIMENG_BUILD_DIR + "/specialFiles/\n 'Core-Count': 1\n 'Socket-Count': 1\n " "SMT: 1\n BogoMIPS: 0\n Features: ''\n 'CPU-Implementer': 0x0\n " "'CPU-Architecture': 0\n 'CPU-Variant': 0x0\n 'CPU-Part': 0x0\n " "'CPU-Revision': 0\n 'Package-Count': 1\n"; From d2f221226911a4d06b0a9519c50dafbeb7e586fd Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 19 Dec 2023 00:07:27 +0000 Subject: [PATCH 55/96] Update specialFile directory config option functionality and tests. --- src/include/simeng/config/ModelConfig.hh | 4 ++ src/lib/SpecialFileDirGen.cc | 2 +- src/lib/config/ModelConfig.cc | 17 ++++++- .../aarch64/AArch64RegressionTest.hh | 5 -- test/regression/riscv/RISCVRegressionTest.hh | 5 -- test/unit/SpecialFileDirGenTest.cc | 51 +++++++------------ 6 files changed, 40 insertions(+), 44 deletions(-) diff --git a/src/include/simeng/config/ModelConfig.hh b/src/include/simeng/config/ModelConfig.hh index b16fae5585..67351199bb 100644 --- a/src/include/simeng/config/ModelConfig.hh +++ b/src/include/simeng/config/ModelConfig.hh @@ -15,6 +15,7 @@ #include "simeng/config/ExpectationNode.hh" #include "simeng/config/yaml/ryml.hh" +#include "simeng/version.hh" namespace simeng { namespace config { @@ -115,6 +116,9 @@ class ModelConfig { /** A string stream containing information about invalid values. */ std::ostringstream invalid_; + + // /** The default special file directory. */ + std::string defaultSpecialFilePath_ = SIMENG_BUILD_DIR "/specialFiles/"; }; // namespace ModelConfig } // namespace config diff --git a/src/lib/SpecialFileDirGen.cc b/src/lib/SpecialFileDirGen.cc index 97b7be59a1..0acf8984eb 100644 --- a/src/lib/SpecialFileDirGen.cc +++ b/src/lib/SpecialFileDirGen.cc @@ -30,7 +30,7 @@ void SpecialFileDirGen::RemoveExistingSFDir() { void SpecialFileDirGen::GenerateSFDir() { // Create root special files directory - system(("mkdir " + specialFilesDir_).c_str()); + system(("mkdir -p " + specialFilesDir_).c_str()); // Define frequently accessed root directories in special file tree const std::string proc_dir = specialFilesDir_ + "/proc/"; const std::string online_dir = specialFilesDir_ + "/sys/devices/system/cpu/"; diff --git a/src/lib/config/ModelConfig.cc b/src/lib/config/ModelConfig.cc index 573b5d0bf1..4e611920fb 100644 --- a/src/lib/config/ModelConfig.cc +++ b/src/lib/config/ModelConfig.cc @@ -655,7 +655,7 @@ void ModelConfig::setExpectations(bool isDefault) { expectations_["CPU-Info"].addChild( ExpectationNode::createExpectation( - SIMENG_BUILD_DIR "/specialFiles/", "Special-File-Dir-Path", true)); + defaultSpecialFilePath_, "Special-File-Dir-Path", true)); expectations_["CPU-Info"].addChild( ExpectationNode::createExpectation(1, "Core-Count", true)); @@ -890,6 +890,21 @@ void ModelConfig::postValidation() { // Record any unlinked port names for (const auto& prt : portnames) invalid_ << "\t- " << prt << " has no associated reservation station\n"; + + // Ensure that given special file directory exists IF: + // - it is not the default path + // - auto-generation is False + if (!configTree_["CPU-Info"]["Generate-Special-Dir"].as() && + (configTree_["CPU-Info"]["Special-File-Dir-Path"].as() != + defaultSpecialFilePath_) && + !std::ifstream( + configTree_["CPU-Info"]["Special-File-Dir-Path"].as()) + .good()) { + invalid_ + << "\t- Special File Directory '" + << configTree_["CPU-Info"]["Special-File-Dir-Path"].as() + << "' Does not exist\n"; + } } ryml::Tree ModelConfig::getConfig() { return configTree_; } diff --git a/test/regression/aarch64/AArch64RegressionTest.hh b/test/regression/aarch64/AArch64RegressionTest.hh index ed54515f47..a39ff4bf6b 100644 --- a/test/regression/aarch64/AArch64RegressionTest.hh +++ b/test/regression/aarch64/AArch64RegressionTest.hh @@ -32,11 +32,6 @@ static const char* AARCH64_ADDITIONAL_CONFIG = { '0': { Portname: 0, Instruction-Group-Support: [INT, FP, SVE, PREDICATE, LOAD, STORE, BRANCH, SME] }, }, - CPU-Info: - { - Special-File-Dir-Path: )YAML" SIMENG_SOURCE_DIR - R"YAML("/test/regression/aarch64/specialFiles/ - }, } )YAML"; diff --git a/test/regression/riscv/RISCVRegressionTest.hh b/test/regression/riscv/RISCVRegressionTest.hh index 31c3bc70f2..2dc7457dec 100644 --- a/test/regression/riscv/RISCVRegressionTest.hh +++ b/test/regression/riscv/RISCVRegressionTest.hh @@ -28,11 +28,6 @@ static const char* RISCV_ADDITIONAL_CONFIG = { '0': { Portname: 0, Instruction-Group-Support: [INT, FLOAT, LOAD, STORE, BRANCH] }, }, - CPU-Info: - { - Special-File-Dir-Path: )YAML" SIMENG_SOURCE_DIR - R"YAML("/test/regression/riscv/specialFiles/ - }, } )YAML"; diff --git a/test/unit/SpecialFileDirGenTest.cc b/test/unit/SpecialFileDirGenTest.cc index cc166f4b9b..3fe611d8d1 100644 --- a/test/unit/SpecialFileDirGenTest.cc +++ b/test/unit/SpecialFileDirGenTest.cc @@ -7,38 +7,6 @@ namespace simeng { #define TEST_SPEC_FILE_DIR SIMENG_SOURCE_DIR "/test/unit/specialFiles/" -#define SPEC_FILE_TEST_CONFIG \ - ("{Core: {ISA: AArch64, Simulation-Mode: inorderpipelined, " \ - "Clock-Frequency: 2.5, Timer-Frequency: 100, Micro-Operations: True, " \ - "Vector-Length: 512, Streaming-Vector-Length: 512}, Fetch: " \ - "{Fetch-Block-Size: 32, Loop-Buffer-Size: 64, Loop-Detection-Threshold: " \ - "4}, Process-Image: {Heap-Size: 10485760, Stack-Size: 1048576}, " \ - "Register-Set: {GeneralPurpose-Count: 154, FloatingPoint/SVE-Count: 90, " \ - "Predicate-Count: 17, Conditional-Count: 128, Matrix-Count: 2}, " \ - "Pipeline-Widths: {Commit: 4, FrontEnd: 4, LSQ-Completion: 2}, " \ - "Queue-Sizes: {ROB: 180, Load: 64, Store: 36}, Branch-Predictor: " \ - "{BTB-Tag-Bits: 11, Saturating-Count-Bits: 2, Global-History-Length: 10, " \ - "RAS-entries: 5, Fallback-Static-Predictor: 2}, L1-Data-Memory: " \ - "{Interface-Type: Flat}, L1-Instruction-Memory: {Interface-Type: Flat}, " \ - "LSQ-L1-Interface: {Access-Latency: 4, Exclusive: False, Load-Bandwidth: " \ - "32, Store-Bandwidth: 16, Permitted-Requests-Per-Cycle: 2, " \ - "Permitted-Loads-Per-Cycle: 2, Permitted-Stores-Per-Cycle: 1}, Ports: " \ - "{'0': {Portname: Port 0, Instruction-Group-Support: [1, 8, 14]}, '1': " \ - "{Portname: Port 1, Instruction-Group-Support: [0, 14]}, '2': {Portname: " \ - "Port 2, Instruction-Group-Support: [1, 8, 71]}, '3': {Portname: Port 4, " \ - "Instruction-Group-Support: [67]}, '4': {Portname: Port 5, " \ - "Instruction-Group-Support: [67]}, '5': {Portname: Port 3, " \ - "Instruction-Group-Support: [70]}}, Reservation-Stations: {'0': {Size: " \ - "60, Dispatch-Rate: 4, Ports: [0, 1, 2, 3, 4, 5]}}, Execution-Units: " \ - "{'0': {Pipelined: true}, '1': {Pipelined: true}, '2': {Pipelined: true}, " \ - "'3': {Pipelined:true}, '4': {Pipelined: true}, '5': {Pipelined: true}}, " \ - "CPU-Info: {Generate-Special-Dir: True, " \ - "Special-File-Dir-Path: " TEST_SPEC_FILE_DIR \ - ", Core-Count: 1, Socket-Count: 1, SMT: 1, BogoMIPS: 200.00, Features: fp " \ - "asimd evtstrm sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm fcma " \ - "dcpop sve, CPU-Implementer: 0x46, CPU-Architecture: 8, CPU-Variant: 0x1, " \ - "CPU-Part: 0x001, CPU-Revision: 0, Package-Count: 1}}") - class SpecialFileDirGenTest : public testing::Test { public: SpecialFileDirGenTest() {} @@ -135,4 +103,23 @@ TEST_F(SpecialFileDirGenTest, genAndDelete) { } } +// Test that a non-existant non-default special file directory causes the user +// to be notified when generation is set to False +TEST_F(SpecialFileDirGenTest, doesntExist) { + // Reset SimInfo Config + ASSERT_DEATH( + config::SimInfo::addToConfig( + "CPU-Info: {Generate-Special-Dir: False, " + "Special-File-Dir-Path: " SIMENG_BUILD_DIR "/thisDoesntExistDir/" + ", Core-Count: 1, Socket-Count: 1, SMT: 1, BogoMIPS: 200.00, " + "Features: " + "fp asimd evtstrm sha1 sha2 crc32 atomics fphp asimdhp cpuid " + "asimdrdm " + "fcma dcpop sve, CPU-Implementer: 0x46, CPU-Architecture: 8, " + "CPU-Variant: 0x1, CPU-Part: 0x001, CPU-Revision: 0, Package-Count: " + "1}}"), + "- Special File Directory '" SIMENG_BUILD_DIR + "/thisDoesntExistDir/' Does not exist"); +} + } // namespace simeng \ No newline at end of file From 788ae7f28d463a8b90ea0640d04f20d21f3f44af Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 19 Dec 2023 00:10:44 +0000 Subject: [PATCH 56/96] Added special file directory to SimEng simulation metadata print out. --- src/tools/simeng/main.cc | 5 +++++ sst/SimEngCoreWrapper.cc | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/tools/simeng/main.cc b/src/tools/simeng/main.cc index 9e6bd05eef..32d1a11629 100644 --- a/src/tools/simeng/main.cc +++ b/src/tools/simeng/main.cc @@ -99,6 +99,11 @@ int main(int argc, char** argv) { else std::cout << "False"; std::cout << std::endl; + std::cout << "[SimEng] Special File directory used: " + << simeng::config::SimInfo::getConfig()["CPU-Info"] + ["Special-File-Dir-Path"] + .as() + << std::endl; std::cout << "[SimEng] Number of Cores: " << simeng::config::SimInfo::getConfig()["CPU-Info"]["Core-Count"] .as() diff --git a/sst/SimEngCoreWrapper.cc b/sst/SimEngCoreWrapper.cc index 338af9e002..b33af204e4 100644 --- a/sst/SimEngCoreWrapper.cc +++ b/sst/SimEngCoreWrapper.cc @@ -354,6 +354,11 @@ void SimEngCoreWrapper::fabricateSimEngCore() { else std::cout << "False"; std::cout << std::endl; + std::cout << "[SimEng] Special File directory used: " + << simeng::config::SimInfo::getConfig()["CPU-Info"] + ["Special-File-Dir-Path"] + .as() + << std::endl; std::cout << "[SimEng] Number of Cores: " << simeng::config::SimInfo::getConfig()["CPU-Info"]["Core-Count"] .as() From 86d257cfc8aa5505279e1061fcc4ff9ee302029b Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 19 Dec 2023 15:00:21 +0000 Subject: [PATCH 57/96] Added additional SimInfo & modelConfig unit test to integration test. --- src/include/simeng/config/SimInfo.hh | 7 +---- test/integration/ConfigTest.cc | 45 ++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/src/include/simeng/config/SimInfo.hh b/src/include/simeng/config/SimInfo.hh index 7a247b843e..333014f168 100644 --- a/src/include/simeng/config/SimInfo.hh +++ b/src/include/simeng/config/SimInfo.hh @@ -51,7 +51,7 @@ class SimInfo { getInstance()->modelConfig_.reGenerateDefault(ISA::RV64, force); // Update config path to be the default string - getInstance()->setConfigPath(DEFAULT_STR); + getInstance()->configFilePath_ = DEFAULT_STR; // Replace the validated config with the new default config getInstance()->validatedConfig_ = getInstance()->modelConfig_.getConfig(); @@ -62,11 +62,6 @@ class SimInfo { /** A getter function to retrieve the config file path. */ static std::string getConfigPath() { return getInstance()->configFilePath_; } - /** A setter function to set the config file path. */ - static void setConfigPath(std::string path) { - getInstance()->configFilePath_ = path; - } - /** A getter function to retrieve the simulation mode of the current SimEng * instance. */ static SimulationMode getSimMode() { return getInstance()->mode_; } diff --git a/test/integration/ConfigTest.cc b/test/integration/ConfigTest.cc index 0ab1c9fcd7..e142735727 100644 --- a/test/integration/ConfigTest.cc +++ b/test/integration/ConfigTest.cc @@ -12,6 +12,7 @@ TEST(ConfigTest, Default) { // Test key default values exposed in SimInfo EXPECT_EQ(simeng::config::SimInfo::getConfigPath(), "Default"); EXPECT_EQ(simeng::config::SimInfo::getISA(), simeng::config::ISA::AArch64); + EXPECT_EQ(simeng::config::SimInfo::getISAString(), "AArch64"); EXPECT_EQ(simeng::config::SimInfo::getSimMode(), simeng::config::SimulationMode::Emulation); EXPECT_EQ(simeng::config::SimInfo::getSimModeStr(), "Emulation"); @@ -79,6 +80,7 @@ TEST(ConfigTest, Default) { // Test SimInfo exposed have correctly changed EXPECT_EQ(simeng::config::SimInfo::getISA(), simeng::config::ISA::RV64); + EXPECT_EQ(simeng::config::SimInfo::getISAString(), "rv64"); sysRegisterEnums = {simeng::arch::riscv::riscv_sysreg::RISCV_SYSREG_FFLAGS, simeng::arch::riscv::riscv_sysreg::RISCV_SYSREG_FRM, simeng::arch::riscv::riscv_sysreg::RISCV_SYSREG_FCSR, @@ -362,4 +364,47 @@ TEST(ConfigTest, multipleWildNodes) { "instance of key HEAD"); } +// Test that, using a file path, a config can be set from a yaml file +TEST(ConfigTest, configFromFile) { + std::string filePath = SIMENG_SOURCE_DIR "/configs/a64fx.yaml"; + simeng::config::SimInfo::setConfig(filePath); + EXPECT_EQ(simeng::config::SimInfo::getConfigPath(), filePath); + EXPECT_EQ(simeng::config::SimInfo::getISA(), simeng::config::ISA::AArch64); + EXPECT_EQ(simeng::config::SimInfo::getISAString(), "AArch64"); + EXPECT_EQ(simeng::config::SimInfo::getSimMode(), + simeng::config::SimulationMode::Outoforder); + EXPECT_EQ(simeng::config::SimInfo::getSimModeStr(), "Out-of-Order"); + std::vector sysRegisterEnums = { + arm64_sysreg::ARM64_SYSREG_DCZID_EL0, + arm64_sysreg::ARM64_SYSREG_FPCR, + arm64_sysreg::ARM64_SYSREG_FPSR, + arm64_sysreg::ARM64_SYSREG_TPIDR_EL0, + arm64_sysreg::ARM64_SYSREG_MIDR_EL1, + arm64_sysreg::ARM64_SYSREG_CNTVCT_EL0, + arm64_sysreg::ARM64_SYSREG_PMCCNTR_EL0, + arm64_sysreg::ARM64_SYSREG_SVCR}; + EXPECT_EQ(simeng::config::SimInfo::getSysRegVec(), sysRegisterEnums); + std::vector archRegStruct = { + {8, 32}, + {256, 32}, + {32, 17}, + {1, 1}, + {8, static_cast(sysRegisterEnums.size())}, + {256, 16}}; + EXPECT_EQ(simeng::config::SimInfo::getArchRegStruct(), archRegStruct); + std::vector physRegStruct = { + {8, 96}, + {256, 128}, + {32, 48}, + {1, 128}, + {8, static_cast(sysRegisterEnums.size())}, + {256, 16}}; + EXPECT_EQ(simeng::config::SimInfo::getPhysRegStruct(), physRegStruct); + std::vector physRegQuants = { + 96, 128, 48, 128, static_cast(sysRegisterEnums.size()), 16}; + EXPECT_EQ(simeng::config::SimInfo::getPhysRegQuantities(), physRegQuants); +} +// getPhysRegStruct() +// getPhysRegQuantities() + } // namespace From 7f8a7eb8e53bf3d086d43301953cf8a0749bccb7 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 19 Dec 2023 16:09:12 +0000 Subject: [PATCH 58/96] Added unit tests for aarch64 & riscv archInfo classes. --- configs/DEMO_RISCV.yaml | 2 +- test/unit/CMakeLists.txt | 2 + test/unit/aarch64/ArchInfoTest.cc | 74 +++++++++++++++++++++++++++++++ test/unit/riscv/ArchInfoTest.cc | 62 ++++++++++++++++++++++++++ 4 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 test/unit/aarch64/ArchInfoTest.cc create mode 100644 test/unit/riscv/ArchInfoTest.cc diff --git a/configs/DEMO_RISCV.yaml b/configs/DEMO_RISCV.yaml index 42e7418b55..5f3387ef1f 100644 --- a/configs/DEMO_RISCV.yaml +++ b/configs/DEMO_RISCV.yaml @@ -139,7 +139,7 @@ Latencies: CPU-Info: # Set Generate-Special-Dir to 'T' to generate the special files directory, or to 'F' to not. # (Not generating the special files directory may require the user to copy over files manually) - Generate-Special-Dir: true + Generate-Special-Dir: True # Core-Count MUST be 1 as multi-core is not supported at this time. (TX2 true value is 32) Core-Count: 1 # Socket-Count MUST be 1 as multi-socket simulations are not supported at this time. (TX2 true value is 2) diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 080a57232c..7cbde46f77 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -1,8 +1,10 @@ set(TEST_SOURCES + aarch64/ArchInfoTest.cc aarch64/ArchitectureTest.cc aarch64/ExceptionHandlerTest.cc aarch64/InstructionTest.cc aarch64/ShiftValueTest.cc + riscv/ArchInfoTest.cc riscv/ArchitectureTest.cc riscv/ExceptionHandlerTest.cc riscv/InstructionTest.cc diff --git a/test/unit/aarch64/ArchInfoTest.cc b/test/unit/aarch64/ArchInfoTest.cc new file mode 100644 index 0000000000..13978639e5 --- /dev/null +++ b/test/unit/aarch64/ArchInfoTest.cc @@ -0,0 +1,74 @@ +#include "gtest/gtest.h" +#include "simeng/arch/aarch64/ArchInfo.hh" +#include "simeng/config/SimInfo.hh" +#include "simeng/version.hh" + +namespace simeng { +namespace arch { +namespace aarch64 { + +class AArch64ArchInfoTest : public ::testing::Test { + public: + AArch64ArchInfoTest() { + simeng::config::SimInfo::setConfig(SIMENG_SOURCE_DIR + "/configs/a64fx_SME.yaml"); + } + + protected: + const std::vector sysRegisterEnums = { + arm64_sysreg::ARM64_SYSREG_DCZID_EL0, + arm64_sysreg::ARM64_SYSREG_FPCR, + arm64_sysreg::ARM64_SYSREG_FPSR, + arm64_sysreg::ARM64_SYSREG_TPIDR_EL0, + arm64_sysreg::ARM64_SYSREG_MIDR_EL1, + arm64_sysreg::ARM64_SYSREG_CNTVCT_EL0, + arm64_sysreg::ARM64_SYSREG_PMCCNTR_EL0, + arm64_sysreg::ARM64_SYSREG_SVCR}; + + const std::vector archRegStruct = { + {8, 32}, + {256, 32}, + {32, 17}, + {1, 1}, + {8, static_cast(sysRegisterEnums.size())}, + {256, 64}}; + + const std::vector physRegStruct = { + {8, 96}, + {256, 128}, + {32, 48}, + {1, 128}, + {8, static_cast(sysRegisterEnums.size())}, + {256, 128}}; + + const std::vector physRegQuants = { + 96, 128, 48, 128, static_cast(sysRegisterEnums.size()), 128}; +}; + +// Test for the getSysRegEnums() function +TEST_F(AArch64ArchInfoTest, getSysRegEnums) { + ArchInfo info = ArchInfo(config::SimInfo::getConfig()); + EXPECT_EQ(info.getSysRegEnums(), sysRegisterEnums); +} + +// Test for the getArchRegStruct() function +TEST_F(AArch64ArchInfoTest, getArchRegStruct) { + ArchInfo info = ArchInfo(config::SimInfo::getConfig()); + EXPECT_EQ(info.getArchRegStruct(), archRegStruct); +} + +// Test for the getPhysRegStruct() function +TEST_F(AArch64ArchInfoTest, getPhysRegStruct) { + ArchInfo info = ArchInfo(config::SimInfo::getConfig()); + EXPECT_EQ(info.getPhysRegStruct(), physRegStruct); +} + +// Test for the getPhysRegQuantities() function +TEST_F(AArch64ArchInfoTest, getPhysRegQuantities) { + ArchInfo info = ArchInfo(config::SimInfo::getConfig()); + EXPECT_EQ(info.getPhysRegQuantities(), physRegQuants); +} + +} // namespace aarch64 +} // namespace arch +} // namespace simeng \ No newline at end of file diff --git a/test/unit/riscv/ArchInfoTest.cc b/test/unit/riscv/ArchInfoTest.cc new file mode 100644 index 0000000000..a086394633 --- /dev/null +++ b/test/unit/riscv/ArchInfoTest.cc @@ -0,0 +1,62 @@ +#include "gtest/gtest.h" +#include "simeng/arch/riscv/ArchInfo.hh" +#include "simeng/config/SimInfo.hh" +#include "simeng/version.hh" + +namespace simeng { +namespace arch { +namespace riscv { + +class RiscVArchInfoTest : public ::testing::Test { + public: + RiscVArchInfoTest() { + simeng::config::SimInfo::setConfig(SIMENG_SOURCE_DIR + "/configs/DEMO_RISCV.yaml"); + } + + protected: + const std::vector sysRegisterEnums = { + simeng::arch::riscv::riscv_sysreg::RISCV_SYSREG_FFLAGS, + simeng::arch::riscv::riscv_sysreg::RISCV_SYSREG_FRM, + simeng::arch::riscv::riscv_sysreg::RISCV_SYSREG_FCSR, + simeng::arch::riscv::riscv_sysreg::RISCV_SYSREG_CYCLE, + simeng::arch::riscv::riscv_sysreg::RISCV_SYSREG_TIME, + simeng::arch::riscv::riscv_sysreg::RISCV_SYSREG_INSTRET}; + + const std::vector archRegStruct = { + {8, 32}, {8, 32}, {8, static_cast(sysRegisterEnums.size())}}; + + const std::vector physRegStruct = { + {8, 154}, {8, 90}, {8, static_cast(sysRegisterEnums.size())}}; + + const std::vector physRegQuants = { + 154, 90, static_cast(sysRegisterEnums.size())}; +}; + +// Test for the getSysRegEnums() function +TEST_F(RiscVArchInfoTest, getSysRegEnums) { + ArchInfo info = ArchInfo(config::SimInfo::getConfig()); + EXPECT_EQ(info.getSysRegEnums(), sysRegisterEnums); +} + +// Test for the getArchRegStruct() function +TEST_F(RiscVArchInfoTest, getArchRegStruct) { + ArchInfo info = ArchInfo(config::SimInfo::getConfig()); + EXPECT_EQ(info.getArchRegStruct(), archRegStruct); +} + +// Test for the getPhysRegStruct() function +TEST_F(RiscVArchInfoTest, getPhysRegStruct) { + ArchInfo info = ArchInfo(config::SimInfo::getConfig()); + EXPECT_EQ(info.getPhysRegStruct(), physRegStruct); +} + +// Test for the getPhysRegQuantities() function +TEST_F(RiscVArchInfoTest, getPhysRegQuantities) { + ArchInfo info = ArchInfo(config::SimInfo::getConfig()); + EXPECT_EQ(info.getPhysRegQuantities(), physRegQuants); +} + +} // namespace riscv +} // namespace arch +} // namespace simeng \ No newline at end of file From 7a0f9b2fb0a38b57aaacfd64afdd77ac2a81fb0e Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 21 Dec 2023 17:19:33 +0000 Subject: [PATCH 59/96] Added helper function for fcvtzu (integer) instructions & corrected execution logic. --- .../simeng/arch/aarch64/helpers/float.hh | 24 +++++ src/lib/arch/aarch64/Instruction_execute.cc | 20 ++--- test/regression/aarch64/instructions/float.cc | 87 +++++++++++++++---- 3 files changed, 101 insertions(+), 30 deletions(-) diff --git a/src/include/simeng/arch/aarch64/helpers/float.hh b/src/include/simeng/arch/aarch64/helpers/float.hh index 169f4d56a7..0d923b66c7 100644 --- a/src/include/simeng/arch/aarch64/helpers/float.hh +++ b/src/include/simeng/arch/aarch64/helpers/float.hh @@ -1,5 +1,7 @@ #pragma once +#include + #include "auxiliaryFunctions.hh" namespace simeng { @@ -150,6 +152,28 @@ class floatHelp { return {out, 256}; } + + /** Helper function for NEON instructions with the format fcvtzu rd, rn. + * D represents the destination register type (e.g. for Xd, D = uint64_t). + * N represents the source register type (e.g. for Sd, N = float). + * Returns single value of type D. */ + template + static D fcvtzu_integer(std::vector& operands) { + N input = operands[0].get(); + D result = static_cast(0); + + // Account for Infinity + // Check for nan and less than 0 + if (!std::isnan(input) && (input > static_cast(0))) { + if (std::isinf(input)) { + result = std::numeric_limits::max(); + } else { + result = static_cast(std::trunc(input)); + } + } + + return result; + } }; } // namespace aarch64 } // namespace arch diff --git a/src/lib/arch/aarch64/Instruction_execute.cc b/src/lib/arch/aarch64/Instruction_execute.cc index 03fe5a5410..6d46a94a1e 100644 --- a/src/lib/arch/aarch64/Instruction_execute.cc +++ b/src/lib/arch/aarch64/Instruction_execute.cc @@ -1664,32 +1664,24 @@ void Instruction::execute() { break; } case Opcode::AArch64_FCVTZUUWDr: { // fcvtzu wd, dn - // TODO: Handle NaNs, denorms, and saturation - results[0] = { - static_cast(std::trunc(operands[0].get())), 8}; + results[0] = {floatHelp::fcvtzu_integer(operands), 8}; break; } case Opcode::AArch64_FCVTZUUWSr: { // fcvtzu wd, sn - // TODO: Handle NaNs, denorms, and saturation - results[0] = { - static_cast(std::trunc(operands[0].get())), 8}; + results[0] = {floatHelp::fcvtzu_integer(operands), 8}; break; } case Opcode::AArch64_FCVTZUUXDr: { // fcvtzu xd, dn - // TODO: Handle NaNs, denorms, and saturation - results[0] = - static_cast(std::trunc(operands[0].get())); + results[0] = {floatHelp::fcvtzu_integer(operands), 8}; break; } case Opcode::AArch64_FCVTZUUXSr: { // fcvtzu xd, sn - // TODO: Handle NaNs, denorms, and saturation - results[0] = static_cast(std::trunc(operands[0].get())); + results[0] = {floatHelp::fcvtzu_integer(operands), 8}; break; } case Opcode::AArch64_FCVTZUv1i64: { // fcvtzu dd, dn - // TODO: Handle NaNs, denorms, and saturation - results[0] = { - static_cast(std::trunc(operands[0].get())), 256}; + results[0] = {floatHelp::fcvtzu_integer(operands), + 256}; break; } case Opcode::AArch64_FCVT_ZPmZ_DtoS: { // fcvt zd.s, pg/m, zn.d diff --git a/test/regression/aarch64/instructions/float.cc b/test/regression/aarch64/instructions/float.cc index 10d3150e1c..8362b80369 100644 --- a/test/regression/aarch64/instructions/float.cc +++ b/test/regression/aarch64/instructions/float.cc @@ -533,12 +533,16 @@ TEST_P(InstFloat, fcvt) { } TEST_P(InstFloat, fcvtzu) { - initialHeapData_.resize(32); + initialHeapData_.resize(64); double* dheap = reinterpret_cast(initialHeapData_.data()); dheap[0] = 1.0; dheap[1] = -42.76; dheap[2] = -0.125; dheap[3] = 321.5; + dheap[4] = std::nan(0); + dheap[5] = -std::nan(0); + dheap[6] = INFINITY; + dheap[7] = -INFINITY; // Double to uint32 RUN_AARCH64(R"( @@ -549,15 +553,25 @@ TEST_P(InstFloat, fcvtzu) { ldp d0, d1, [x0] ldp d2, d3, [x0, #16] + ldp d4, d5, [x0, #32] + ldp d6, d7, [x0, #48] fcvtzu w0, d0 fcvtzu w1, d1 fcvtzu w2, d2 fcvtzu w3, d3 + fcvtzu w4, d4 + fcvtzu w5, d5 + fcvtzu w6, d6 + fcvtzu w7, d7 )"); EXPECT_EQ((getGeneralRegister(0)), 1); - EXPECT_EQ((getGeneralRegister(1)), -42); + EXPECT_EQ((getGeneralRegister(1)), 0); EXPECT_EQ((getGeneralRegister(2)), 0); EXPECT_EQ((getGeneralRegister(3)), 321); + EXPECT_EQ((getGeneralRegister(4)), 0); + EXPECT_EQ((getGeneralRegister(5)), 0); + EXPECT_EQ((getGeneralRegister(6)), UINT32_MAX); + EXPECT_EQ((getGeneralRegister(7)), 0); // Double to uint64 RUN_AARCH64(R"( @@ -568,15 +582,25 @@ TEST_P(InstFloat, fcvtzu) { ldp d0, d1, [x0] ldp d2, d3, [x0, #16] + ldp d4, d5, [x0, #32] + ldp d6, d7, [x0, #48] fcvtzu x0, d0 fcvtzu x1, d1 fcvtzu x2, d2 fcvtzu x3, d3 + fcvtzu x4, d4 + fcvtzu x5, d5 + fcvtzu x6, d6 + fcvtzu x7, d7 )"); EXPECT_EQ((getGeneralRegister(0)), 1); - EXPECT_EQ((getGeneralRegister(1)), -42); + EXPECT_EQ((getGeneralRegister(1)), 0); EXPECT_EQ((getGeneralRegister(2)), 0); EXPECT_EQ((getGeneralRegister(3)), 321); + EXPECT_EQ((getGeneralRegister(4)), 0); + EXPECT_EQ((getGeneralRegister(5)), 0); + EXPECT_EQ((getGeneralRegister(6)), UINT64_MAX); + EXPECT_EQ((getGeneralRegister(7)), 0); // Double to implicit_cast(uint64) RUN_AARCH64(R"( @@ -587,25 +611,36 @@ TEST_P(InstFloat, fcvtzu) { ldp d0, d1, [x0] ldp d2, d3, [x0, #16] + ldp d4, d5, [x0, #32] + ldp d6, d7, [x0, #48] fcvtzu d10, d0 fcvtzu d11, d1 fcvtzu d12, d2 fcvtzu d13, d3 + fcvtzu d14, d4 + fcvtzu d15, d5 + fcvtzu d16, d6 + fcvtzu d17, d7 )"); // Values verified on A64FX via simple assembly test kernel - double a = 4.9406564584124654e-324; - double b = 0.0; - double c = 1.5859507231504014e-321; - CHECK_NEON(10, double, {a, 0.0}); - CHECK_NEON(11, double, {b, 0.0}); - CHECK_NEON(12, double, {b, 0.0}); - CHECK_NEON(13, double, {c, 0.0}); + CHECK_NEON(10, uint64_t, {1, 0}); + CHECK_NEON(11, uint64_t, {0, 0}); + CHECK_NEON(12, uint64_t, {0, 0}); + CHECK_NEON(13, uint64_t, {321, 0}); + CHECK_NEON(14, uint64_t, {0, 0}); + CHECK_NEON(15, uint64_t, {0, 0}); + CHECK_NEON(16, uint64_t, {UINT64_MAX, 0}); + CHECK_NEON(17, uint64_t, {0, 0}); float* fheap = reinterpret_cast(initialHeapData_.data()); - fheap[0] = 1.0; - fheap[1] = -42.76; - fheap[2] = -0.125; - fheap[3] = 321.5; + fheap[0] = 1.0f; + fheap[1] = -42.76f; + fheap[2] = -0.125f; + fheap[3] = 321.5f; + fheap[4] = std::nanf(0); + fheap[5] = -std::nanf(0); + fheap[6] = INFINITY; + fheap[7] = -INFINITY; // Float to uint32 RUN_AARCH64(R"( # Get heap address @@ -615,15 +650,25 @@ TEST_P(InstFloat, fcvtzu) { ldp s0, s1, [x0] ldp s2, s3, [x0, #8] + ldp s4, s5, [x0, #16] + ldp s6, s7, [x0, #24] fcvtzu w0, s0 fcvtzu w1, s1 fcvtzu w2, s2 fcvtzu w3, s3 + fcvtzu w4, s4 + fcvtzu w5, s5 + fcvtzu w6, s6 + fcvtzu w7, s7 )"); EXPECT_EQ((getGeneralRegister(0)), 1); - EXPECT_EQ((getGeneralRegister(1)), -42); + EXPECT_EQ((getGeneralRegister(1)), 0); EXPECT_EQ((getGeneralRegister(2)), 0); EXPECT_EQ((getGeneralRegister(3)), 321); + EXPECT_EQ((getGeneralRegister(4)), 0); + EXPECT_EQ((getGeneralRegister(5)), 0); + EXPECT_EQ((getGeneralRegister(6)), UINT32_MAX); + EXPECT_EQ((getGeneralRegister(7)), 0); // Float to uint64 RUN_AARCH64(R"( @@ -634,15 +679,25 @@ TEST_P(InstFloat, fcvtzu) { ldp s0, s1, [x0] ldp s2, s3, [x0, #8] + ldp s4, s5, [x0, #16] + ldp s6, s7, [x0, #24] fcvtzu x0, s0 fcvtzu x1, s1 fcvtzu x2, s2 fcvtzu x3, s3 + fcvtzu x4, s4 + fcvtzu x5, s5 + fcvtzu x6, s6 + fcvtzu x7, s7 )"); EXPECT_EQ((getGeneralRegister(0)), 1); - EXPECT_EQ((getGeneralRegister(1)), -42); + EXPECT_EQ((getGeneralRegister(1)), 0); EXPECT_EQ((getGeneralRegister(2)), 0); EXPECT_EQ((getGeneralRegister(3)), 321); + EXPECT_EQ((getGeneralRegister(4)), 0); + EXPECT_EQ((getGeneralRegister(5)), 0); + EXPECT_EQ((getGeneralRegister(6)), UINT64_MAX); + EXPECT_EQ((getGeneralRegister(7)), 0); } TEST_P(InstFloat, fdiv) { From 6ebe1f2e95b2445fbe96440622b97ea7ea277647 Mon Sep 17 00:00:00 2001 From: jj16791 Date: Fri, 22 Dec 2023 12:16:06 +0000 Subject: [PATCH 60/96] New test for register rewinding in ROB --- test/unit/pipeline/ReorderBufferTest.cc | 40 +++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/test/unit/pipeline/ReorderBufferTest.cc b/test/unit/pipeline/ReorderBufferTest.cc index 65d13d182c..9a48414fb5 100644 --- a/test/unit/pipeline/ReorderBufferTest.cc +++ b/test/unit/pipeline/ReorderBufferTest.cc @@ -1,11 +1,9 @@ #include "../MockBranchPredictor.hh" #include "../MockInstruction.hh" #include "../MockMemoryInterface.hh" -#include "gmock/gmock.h" #include "gtest/gtest.h" #include "simeng/Instruction.hh" #include "simeng/pipeline/LoadStoreQueue.hh" -#include "simeng/pipeline/RegisterAliasTable.hh" #include "simeng/pipeline/ReorderBuffer.hh" using ::testing::_; @@ -423,5 +421,43 @@ TEST_F(ReorderBufferTest, branch) { EXPECT_EQ(loobBoundaryAddr, insnAddr); } +// Tests that only those destination registers which have been renamed are +// rewound upon a ROB flush +TEST_F(ReorderBufferTest, registerRewind) { + uop->setInstructionId(0); + uop->setSequenceId(0); + uop2->setInstructionId(1); + uop2->setSequenceId(1); + + // Reserve entries in ROB + reorderBuffer.reserve(uopPtr); + reorderBuffer.reserve(uopPtr2); + + // Rename one of the destination registers + Register archReg = {0, 1, 0}; + Register renamedReg = rat.allocate({0, 1}); + EXPECT_EQ(renamedReg.tag, 32); + + // Set destination registers for to be flushed uop2 with the second register + // not being renamed + std::vector destinations = {renamedReg, {0, 2, 0}}; + const span destinationSpan = { + const_cast(destinations.data()), 2}; + EXPECT_CALL(*uop2, getDestinationRegisters()) + .Times(1) + .WillRepeatedly(Return(destinationSpan)); + + // Check that mappings in RAT are correct + EXPECT_EQ(rat.getMapping(archReg).tag, 32); + EXPECT_EQ(rat.getMapping(destinations[1]).tag, 2); + + // Flush ROB + reorderBuffer.flush(0); + + // Check rewind occured on only the first destination register + EXPECT_EQ(rat.getMapping(archReg).tag, 1); + EXPECT_EQ(rat.getMapping(destinations[1]).tag, 2); +} + } // namespace pipeline } // namespace simeng From 38ce784336c8febe4c9c1a51945efce38c503aed Mon Sep 17 00:00:00 2001 From: jj16791 Date: Mon, 8 Jan 2024 19:24:55 +0000 Subject: [PATCH 61/96] Corrected idleLoopBufferDueToNotTakenBoundary test to have a more meaningful equality at end of test --- test/unit/pipeline/FetchUnitTest.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/test/unit/pipeline/FetchUnitTest.cc b/test/unit/pipeline/FetchUnitTest.cc index df6396c5e6..f404029640 100644 --- a/test/unit/pipeline/FetchUnitTest.cc +++ b/test/unit/pipeline/FetchUnitTest.cc @@ -16,6 +16,8 @@ using ::testing::AnyOf; using ::testing::AtLeast; using ::testing::DoAll; using ::testing::Field; +using ::testing::Gt; +using ::testing::Lt; using ::testing::Ne; using ::testing::Return; using ::testing::SetArgReferee; @@ -294,7 +296,7 @@ TEST_F(PipelineFetchUnitTest, supplyFromLoopBuffer) { .WillByDefault(DoAll(SetArgReferee<3>(mOp), Return(4))); ON_CALL(*uop, isBranch()).WillByDefault(Return(false)); - // Set the expectation from the predcitor to be true so a loop body will + // Set the expectation from the predictor to be true so a loop body will // be detected ON_CALL(predictor, predict(_, _, _)) .WillByDefault(Return(BranchPrediction({true, 0x0}))); @@ -377,16 +379,16 @@ TEST_F(PipelineFetchUnitTest, idleLoopBufferDueToNotTakenBoundary) { // Set the instructions, within the loop body, to be returned from predecode MacroOp mOp2 = {uopPtr2}; - ON_CALL(isa, predecode(_, _, AnyOf(0xC, 0x1C), _)) + ON_CALL(isa, predecode(_, _, Gt(0x8), _)) .WillByDefault(DoAll(SetArgReferee<3>(mOp2), Return(4))); ON_CALL(*uop2, isBranch()).WillByDefault(Return(true)); MacroOp mOp = {uopPtr}; - ON_CALL(isa, predecode(_, _, AllOf(Ne(0xC), Ne(0x1C)), _)) + ON_CALL(isa, predecode(_, _, Lt(0xC), _)) .WillByDefault(DoAll(SetArgReferee<3>(mOp), Return(4))); ON_CALL(*uop, isBranch()).WillByDefault(Return(false)); - // Set the first expectation from the predcitor to be true so a loop body will + // Set the first expectation from the predictor to be true so a loop body will // be detected EXPECT_CALL(predictor, predict(_, _, _)) .WillOnce(Return(BranchPrediction({true, 0x0}))); @@ -423,13 +425,13 @@ TEST_F(PipelineFetchUnitTest, idleLoopBufferDueToNotTakenBoundary) { // memory output.fill({}); fetchUnit.tick(); - EXPECT_EQ(output.getTailSlots()[0], mOp); + EXPECT_EQ(output.getTailSlots()[0], mOp2); output.fill({}); fetchUnit.tick(); - EXPECT_EQ(output.getTailSlots()[0], mOp); + EXPECT_EQ(output.getTailSlots()[0], mOp2); output.fill({}); fetchUnit.tick(); - EXPECT_EQ(output.getTailSlots()[0], mOp); + EXPECT_EQ(output.getTailSlots()[0], mOp2); output.fill({}); fetchUnit.tick(); EXPECT_EQ(output.getTailSlots()[0], mOp2); From 08784f0a595d3bcec358f9089f3608ab932b43bf Mon Sep 17 00:00:00 2001 From: jj16791 Date: Mon, 8 Jan 2024 19:35:38 +0000 Subject: [PATCH 62/96] Move expectation to correct location in test flow --- test/unit/pipeline/LoadStoreQueueTest.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/pipeline/LoadStoreQueueTest.cc b/test/unit/pipeline/LoadStoreQueueTest.cc index 85a3481644..5ac8e36b04 100644 --- a/test/unit/pipeline/LoadStoreQueueTest.cc +++ b/test/unit/pipeline/LoadStoreQueueTest.cc @@ -258,9 +258,9 @@ TEST_P(LoadStoreQueueTest, PurgeFlushedLoad) { EXPECT_CALL(dataMemory, requestRead(_, _)).Times(0); EXPECT_CALL(dataMemory, getCompletedReads()) .WillRepeatedly(Return(completedReads)); - EXPECT_EQ(completionSlots[0].getTailSlots()[0], nullptr); queue.tick(); + EXPECT_EQ(completionSlots[0].getTailSlots()[0], nullptr); EXPECT_EQ(queue.getLoadQueueSpace(), initialLoadSpace); } From ac00f9b16ffb08702d5648756a6b91046353e4f7 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 10 Jan 2024 16:50:15 +0000 Subject: [PATCH 63/96] Changes for PR comments. --- .../simeng/arch/aarch64/helpers/float.hh | 6 +++- src/include/simeng/config/ModelConfig.hh | 2 +- src/lib/config/ModelConfig.cc | 2 +- test/regression/aarch64/instructions/float.cc | 34 +++++++++++++++++-- test/unit/SpecialFileDirGenTest.cc | 2 +- 5 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/include/simeng/arch/aarch64/helpers/float.hh b/src/include/simeng/arch/aarch64/helpers/float.hh index 0d923b66c7..d48f1a7704 100644 --- a/src/include/simeng/arch/aarch64/helpers/float.hh +++ b/src/include/simeng/arch/aarch64/helpers/float.hh @@ -162,10 +162,14 @@ class floatHelp { N input = operands[0].get(); D result = static_cast(0); - // Account for Infinity // Check for nan and less than 0 if (!std::isnan(input) && (input > static_cast(0))) { if (std::isinf(input)) { + // Account for Infinity + result = std::numeric_limits::max(); + } else if (input > std::numeric_limits::max()) { + // Account for the source value being larger than the + // destination register can support result = std::numeric_limits::max(); } else { result = static_cast(std::trunc(input)); diff --git a/src/include/simeng/config/ModelConfig.hh b/src/include/simeng/config/ModelConfig.hh index 67351199bb..8c18b7e0c9 100644 --- a/src/include/simeng/config/ModelConfig.hh +++ b/src/include/simeng/config/ModelConfig.hh @@ -117,7 +117,7 @@ class ModelConfig { /** A string stream containing information about invalid values. */ std::ostringstream invalid_; - // /** The default special file directory. */ + /** The default special file directory. */ std::string defaultSpecialFilePath_ = SIMENG_BUILD_DIR "/specialFiles/"; }; // namespace ModelConfig diff --git a/src/lib/config/ModelConfig.cc b/src/lib/config/ModelConfig.cc index 4e611920fb..c2faf94c12 100644 --- a/src/lib/config/ModelConfig.cc +++ b/src/lib/config/ModelConfig.cc @@ -903,7 +903,7 @@ void ModelConfig::postValidation() { invalid_ << "\t- Special File Directory '" << configTree_["CPU-Info"]["Special-File-Dir-Path"].as() - << "' Does not exist\n"; + << "' does not exist\n"; } } diff --git a/test/regression/aarch64/instructions/float.cc b/test/regression/aarch64/instructions/float.cc index 8362b80369..23c174407f 100644 --- a/test/regression/aarch64/instructions/float.cc +++ b/test/regression/aarch64/instructions/float.cc @@ -533,7 +533,7 @@ TEST_P(InstFloat, fcvt) { } TEST_P(InstFloat, fcvtzu) { - initialHeapData_.resize(64); + initialHeapData_.resize(80); double* dheap = reinterpret_cast(initialHeapData_.data()); dheap[0] = 1.0; dheap[1] = -42.76; @@ -543,6 +543,8 @@ TEST_P(InstFloat, fcvtzu) { dheap[5] = -std::nan(0); dheap[6] = INFINITY; dheap[7] = -INFINITY; + dheap[8] = 4294967296.0; // uint32_max + 1 + dheap[9] = 18446744073709551616.0; // uint64_max + 1 // Double to uint32 RUN_AARCH64(R"( @@ -555,6 +557,7 @@ TEST_P(InstFloat, fcvtzu) { ldp d2, d3, [x0, #16] ldp d4, d5, [x0, #32] ldp d6, d7, [x0, #48] + ldp d8, d9, [x0, #64] fcvtzu w0, d0 fcvtzu w1, d1 fcvtzu w2, d2 @@ -563,6 +566,8 @@ TEST_P(InstFloat, fcvtzu) { fcvtzu w5, d5 fcvtzu w6, d6 fcvtzu w7, d7 + fcvtzu w8, d8 + fcvtzu w9, d9 )"); EXPECT_EQ((getGeneralRegister(0)), 1); EXPECT_EQ((getGeneralRegister(1)), 0); @@ -572,6 +577,8 @@ TEST_P(InstFloat, fcvtzu) { EXPECT_EQ((getGeneralRegister(5)), 0); EXPECT_EQ((getGeneralRegister(6)), UINT32_MAX); EXPECT_EQ((getGeneralRegister(7)), 0); + EXPECT_EQ((getGeneralRegister(8)), UINT32_MAX); + EXPECT_EQ((getGeneralRegister(9)), UINT32_MAX); // Double to uint64 RUN_AARCH64(R"( @@ -584,6 +591,7 @@ TEST_P(InstFloat, fcvtzu) { ldp d2, d3, [x0, #16] ldp d4, d5, [x0, #32] ldp d6, d7, [x0, #48] + ldp d8, d9, [x0, #64] fcvtzu x0, d0 fcvtzu x1, d1 fcvtzu x2, d2 @@ -592,6 +600,8 @@ TEST_P(InstFloat, fcvtzu) { fcvtzu x5, d5 fcvtzu x6, d6 fcvtzu x7, d7 + fcvtzu x8, d8 + fcvtzu x9, d9 )"); EXPECT_EQ((getGeneralRegister(0)), 1); EXPECT_EQ((getGeneralRegister(1)), 0); @@ -601,8 +611,10 @@ TEST_P(InstFloat, fcvtzu) { EXPECT_EQ((getGeneralRegister(5)), 0); EXPECT_EQ((getGeneralRegister(6)), UINT64_MAX); EXPECT_EQ((getGeneralRegister(7)), 0); + EXPECT_EQ((getGeneralRegister(8)), 4294967296); + EXPECT_EQ((getGeneralRegister(9)), UINT64_MAX); - // Double to implicit_cast(uint64) + // Double to scalar uint64 RUN_AARCH64(R"( # Get heap address mov x0, 0 @@ -613,6 +625,7 @@ TEST_P(InstFloat, fcvtzu) { ldp d2, d3, [x0, #16] ldp d4, d5, [x0, #32] ldp d6, d7, [x0, #48] + ldp d8, d9, [x0, #64] fcvtzu d10, d0 fcvtzu d11, d1 fcvtzu d12, d2 @@ -621,6 +634,8 @@ TEST_P(InstFloat, fcvtzu) { fcvtzu d15, d5 fcvtzu d16, d6 fcvtzu d17, d7 + fcvtzu d18, d8 + fcvtzu d19, d9 )"); // Values verified on A64FX via simple assembly test kernel CHECK_NEON(10, uint64_t, {1, 0}); @@ -631,6 +646,8 @@ TEST_P(InstFloat, fcvtzu) { CHECK_NEON(15, uint64_t, {0, 0}); CHECK_NEON(16, uint64_t, {UINT64_MAX, 0}); CHECK_NEON(17, uint64_t, {0, 0}); + CHECK_NEON(18, uint64_t, {4294967296, 0}); + CHECK_NEON(19, uint64_t, {UINT64_MAX, 0}); float* fheap = reinterpret_cast(initialHeapData_.data()); fheap[0] = 1.0f; @@ -641,6 +658,9 @@ TEST_P(InstFloat, fcvtzu) { fheap[5] = -std::nanf(0); fheap[6] = INFINITY; fheap[7] = -INFINITY; + fheap[8] = 4294967296.0; // uint32_max + 1 + fheap[9] = 18446744073709551616.0; // uint64_max + 1 + // Float to uint32 RUN_AARCH64(R"( # Get heap address @@ -652,6 +672,7 @@ TEST_P(InstFloat, fcvtzu) { ldp s2, s3, [x0, #8] ldp s4, s5, [x0, #16] ldp s6, s7, [x0, #24] + ldp s8, s9, [x0, #32] fcvtzu w0, s0 fcvtzu w1, s1 fcvtzu w2, s2 @@ -660,6 +681,8 @@ TEST_P(InstFloat, fcvtzu) { fcvtzu w5, s5 fcvtzu w6, s6 fcvtzu w7, s7 + fcvtzu w8, s8 + fcvtzu w9, s9 )"); EXPECT_EQ((getGeneralRegister(0)), 1); EXPECT_EQ((getGeneralRegister(1)), 0); @@ -669,6 +692,8 @@ TEST_P(InstFloat, fcvtzu) { EXPECT_EQ((getGeneralRegister(5)), 0); EXPECT_EQ((getGeneralRegister(6)), UINT32_MAX); EXPECT_EQ((getGeneralRegister(7)), 0); + EXPECT_EQ((getGeneralRegister(8)), UINT32_MAX); + EXPECT_EQ((getGeneralRegister(9)), UINT32_MAX); // Float to uint64 RUN_AARCH64(R"( @@ -681,6 +706,7 @@ TEST_P(InstFloat, fcvtzu) { ldp s2, s3, [x0, #8] ldp s4, s5, [x0, #16] ldp s6, s7, [x0, #24] + ldp s8, s9, [x0, #32] fcvtzu x0, s0 fcvtzu x1, s1 fcvtzu x2, s2 @@ -689,6 +715,8 @@ TEST_P(InstFloat, fcvtzu) { fcvtzu x5, s5 fcvtzu x6, s6 fcvtzu x7, s7 + fcvtzu x8, s8 + fcvtzu x9, s9 )"); EXPECT_EQ((getGeneralRegister(0)), 1); EXPECT_EQ((getGeneralRegister(1)), 0); @@ -698,6 +726,8 @@ TEST_P(InstFloat, fcvtzu) { EXPECT_EQ((getGeneralRegister(5)), 0); EXPECT_EQ((getGeneralRegister(6)), UINT64_MAX); EXPECT_EQ((getGeneralRegister(7)), 0); + EXPECT_EQ((getGeneralRegister(8)), 4294967296); + EXPECT_EQ((getGeneralRegister(9)), UINT64_MAX); } TEST_P(InstFloat, fdiv) { diff --git a/test/unit/SpecialFileDirGenTest.cc b/test/unit/SpecialFileDirGenTest.cc index 3fe611d8d1..dd41854a68 100644 --- a/test/unit/SpecialFileDirGenTest.cc +++ b/test/unit/SpecialFileDirGenTest.cc @@ -119,7 +119,7 @@ TEST_F(SpecialFileDirGenTest, doesntExist) { "CPU-Variant: 0x1, CPU-Part: 0x001, CPU-Revision: 0, Package-Count: " "1}}"), "- Special File Directory '" SIMENG_BUILD_DIR - "/thisDoesntExistDir/' Does not exist"); + "/thisDoesntExistDir/' does not exist"); } } // namespace simeng \ No newline at end of file From 7f03087d347aebd6e9ee31ad520947a85276cf3c Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 10 Jan 2024 18:10:24 +0000 Subject: [PATCH 64/96] More PR comment changes. --- .../aarch64/AArch64RegressionTest.hh | 4 +-- test/regression/riscv/RISCVRegressionTest.hh | 3 +- test/unit/OSTest.cc | 10 ++++--- test/unit/ProcessTest.cc | 2 +- test/unit/aarch64/ArchitectureTest.cc | 27 +++++++++++------- test/unit/pipeline/DispatchIssueUnitTest.cc | 12 ++++---- test/unit/pipeline/RenameUnitTest.cc | 7 +++-- test/unit/pipeline/ReorderBufferTest.cc | 28 +++++++++---------- test/unit/riscv/ArchitectureTest.cc | 14 ++++++++-- 9 files changed, 62 insertions(+), 45 deletions(-) diff --git a/test/regression/aarch64/AArch64RegressionTest.hh b/test/regression/aarch64/AArch64RegressionTest.hh index a39ff4bf6b..c4085353ce 100644 --- a/test/regression/aarch64/AArch64RegressionTest.hh +++ b/test/regression/aarch64/AArch64RegressionTest.hh @@ -3,10 +3,8 @@ #include "RegressionTest.hh" #include "simeng/arch/aarch64/Architecture.hh" #include "simeng/arch/aarch64/Instruction.hh" -#include "simeng/version.hh" -static const char* AARCH64_ADDITIONAL_CONFIG = - R"YAML( +static const char* AARCH64_ADDITIONAL_CONFIG = R"YAML( { Core: { diff --git a/test/regression/riscv/RISCVRegressionTest.hh b/test/regression/riscv/RISCVRegressionTest.hh index 2dc7457dec..b2556876eb 100644 --- a/test/regression/riscv/RISCVRegressionTest.hh +++ b/test/regression/riscv/RISCVRegressionTest.hh @@ -4,8 +4,7 @@ #include "simeng/arch/riscv/Architecture.hh" #include "simeng/arch/riscv/Instruction.hh" -static const char* RISCV_ADDITIONAL_CONFIG = - R"YAML( +static const char* RISCV_ADDITIONAL_CONFIG = R"YAML( { Core: { diff --git a/test/unit/OSTest.cc b/test/unit/OSTest.cc index 95d533c61c..cba574fe72 100644 --- a/test/unit/OSTest.cc +++ b/test/unit/OSTest.cc @@ -24,8 +24,8 @@ class OSTest : public testing::Test { simeng::kernel::LinuxProcess proc_elf; simeng::kernel::LinuxProcess proc_hex; - // Program used when no executable is provided; counts down from - // 1024*1024, with an independent `orr` at the start of each branch. + // A simple program used to test the functionality of creating a process with + // a stream of hex instructions. uint32_t demoHex[7] = { 0x320C03E0, // orr w0, wzr, #1048576 0x320003E1, // orr w0, wzr, #1 @@ -38,7 +38,7 @@ class OSTest : public testing::Test { }; }; -// These test verifies the functionality of both the `createProcess()` and +// These tests verify the functionality of both the `createProcess()` and // `getInitialStackPointer()` functions. All other functions for this class are // syscalls and are tested in the Regression suite. TEST_F(OSTest, processElf_stackPointer) { @@ -49,7 +49,9 @@ TEST_F(OSTest, processElf_stackPointer) { const uint64_t cmdLineSize = cmdLine[0].size() + 1; // "OMP_NUM_THREADS=1" + 1 for null seperator const uint64_t envStringsSize = 18; - // Size of initial stack frame (17 push_backs) * 8 + // Size of initial stack frame as per LinuxProcess.cc:createStack() + // - (17 push_backs) * 8 + // https://www.win.tue.nl/~aeb/linux/hh/stack-layout.html const uint64_t stackFrameSize = 17 * 8; // cmd + Env needs +1 for null seperator const uint64_t stackPointer = diff --git a/test/unit/ProcessTest.cc b/test/unit/ProcessTest.cc index 0b54833db4..1e5323ce90 100644 --- a/test/unit/ProcessTest.cc +++ b/test/unit/ProcessTest.cc @@ -83,7 +83,7 @@ TEST_F(ProcessTest, getProcessImage) { TEST_F(ProcessTest, getProcessImageSize) { kernel::LinuxProcess proc = kernel::LinuxProcess(cmdLine); EXPECT_TRUE(proc.isValid()); - EXPECT_GT(proc.getProcessImageSize(), 0); + EXPECT_EQ(proc.getProcessImageSize(), 1079830880); } TEST_F(ProcessTest, getEntryPoint) { diff --git a/test/unit/aarch64/ArchitectureTest.cc b/test/unit/aarch64/ArchitectureTest.cc index 14575837e1..b5af93ac35 100644 --- a/test/unit/aarch64/ArchitectureTest.cc +++ b/test/unit/aarch64/ArchitectureTest.cc @@ -41,17 +41,22 @@ TEST_F(AArch64ArchitectureTest, predecode) { MacroOp output; uint8_t result = arch->predecode(validInstrBytes.data(), validInstrBytes.size(), 0x7, output); + Instruction* aarch64Insn = reinterpret_cast(output[0].get()); EXPECT_EQ(result, 1); - EXPECT_EQ(output[0]->getInstructionAddress(), 0x7); - EXPECT_EQ(output[0]->exceptionEncountered(), true); + EXPECT_EQ(aarch64Insn->getInstructionAddress(), 0x7); + EXPECT_EQ(aarch64Insn->exceptionEncountered(), true); + EXPECT_EQ(aarch64Insn->getException(), InstructionException::MisalignedPC); // Test that an invalid instruction returns instruction with an exception output = MacroOp(); result = arch->predecode(invalidInstrBytes.data(), invalidInstrBytes.size(), 0x8, output); + aarch64Insn = reinterpret_cast(output[0].get()); EXPECT_EQ(result, 4); - EXPECT_EQ(output[0]->getInstructionAddress(), 0x8); - EXPECT_EQ(output[0]->exceptionEncountered(), true); + EXPECT_EQ(aarch64Insn->getInstructionAddress(), 0x8); + EXPECT_EQ(aarch64Insn->exceptionEncountered(), true); + EXPECT_EQ(aarch64Insn->getException(), + InstructionException::EncodingUnallocated); // Test that an instruction can be properly decoded output = MacroOp(); @@ -77,9 +82,12 @@ TEST_F(AArch64ArchitectureTest, handleException) { MacroOp insn; uint8_t bytes = arch->predecode(invalidInstrBytes.data(), invalidInstrBytes.size(), 0x4, insn); + Instruction* aarch64Insn = reinterpret_cast(insn[0].get()); EXPECT_EQ(bytes, 4); - EXPECT_EQ(insn[0]->getInstructionAddress(), 0x4); - EXPECT_EQ(insn[0]->exceptionEncountered(), true); + EXPECT_EQ(aarch64Insn->getInstructionAddress(), 0x4); + EXPECT_EQ(aarch64Insn->exceptionEncountered(), true); + EXPECT_EQ(aarch64Insn->getException(), + InstructionException::EncodingUnallocated); // Get Core std::string executablePath = ""; @@ -158,12 +166,11 @@ TEST_F(AArch64ArchitectureTest, getExecutionInfo) { MacroOp insn; uint64_t bytes = arch->predecode(validInstrBytes.data(), validInstrBytes.size(), 0x4, insn); - EXPECT_EQ(bytes, 4); - EXPECT_EQ(insn[0]->getInstructionAddress(), 0x4); - EXPECT_EQ(insn[0]->exceptionEncountered(), false); - // Insn[0] = fdivr z1.s, p0/m, z1.s, z0.s Instruction* aarch64Insn = reinterpret_cast(insn[0].get()); + EXPECT_EQ(bytes, 4); + EXPECT_EQ(aarch64Insn->getInstructionAddress(), 0x4); + EXPECT_EQ(aarch64Insn->exceptionEncountered(), false); ExecutionInfo info = arch->getExecutionInfo(*aarch64Insn); diff --git a/test/unit/pipeline/DispatchIssueUnitTest.cc b/test/unit/pipeline/DispatchIssueUnitTest.cc index 7c2596a4e9..91d26c3ad1 100644 --- a/test/unit/pipeline/DispatchIssueUnitTest.cc +++ b/test/unit/pipeline/DispatchIssueUnitTest.cc @@ -155,7 +155,7 @@ TEST_F(PipelineDispatchIssueUnitTest, singleInstr) { } // Single instruction with exception -TEST_F(PipelineDispatchIssueUnitTest, singleInstr_excpetion) { +TEST_F(PipelineDispatchIssueUnitTest, singleInstr_exception) { // Setup supported port instruction can use const std::vector suppPorts = {EAGA}; @@ -327,9 +327,9 @@ TEST_F(PipelineDispatchIssueUnitTest, singleInstr_portStall) { } // Try dispatch two instructions with RAW hazard after renaming, second should -// not be issued as it is dependant on first. Use forwardOpernad() to resolve -// dependancy. -TEST_F(PipelineDispatchIssueUnitTest, createDependancy_raw) { +// not be issued as it is dependant on first. Use forwardOperand() to resolve +// dependency. +TEST_F(PipelineDispatchIssueUnitTest, createdependency_raw) { // Set-up source & destination registers and ports for the instructions std::array srcRegs_1 = {}; std::array destRegs_1 = {r0}; @@ -421,10 +421,10 @@ TEST_F(PipelineDispatchIssueUnitTest, createDependancy_raw) { } // Ensure correct instructions are flushed from reservation stations and the -// dependancy matrix +// dependency matrix TEST_F(PipelineDispatchIssueUnitTest, purgeFlushed) { // Set-up source & destination registers and ports for the instructions; - // creating a dependancy + // creating a dependency std::array srcRegs_1 = {}; std::array destRegs_1 = {r0}; std::array srcRegs_2 = {r0}; diff --git a/test/unit/pipeline/RenameUnitTest.cc b/test/unit/pipeline/RenameUnitTest.cc index aca6800e85..23a1e3dd71 100644 --- a/test/unit/pipeline/RenameUnitTest.cc +++ b/test/unit/pipeline/RenameUnitTest.cc @@ -32,7 +32,7 @@ class RenameUnitTest : public testing::Test { uop3Ptr(uop3) {} protected: - // 3rd register type has same arch & physical counts meaning reneaming is not + // 3rd register type has same arch & physical counts meaning renaming is not // permitted. const std::vector archRegFileStruct = { {8, 10}, {24, 15}, {256, 31}}; @@ -69,6 +69,7 @@ class RenameUnitTest : public testing::Test { std::shared_ptr uop3Ptr; }; +// Test the correct functionality when input buffer and unit is empty TEST_F(RenameUnitTest, emptyTick) { EXPECT_EQ(input.getHeadSlots()[0], nullptr); EXPECT_EQ(output.getTailSlots()[0], nullptr); @@ -132,7 +133,7 @@ TEST_F(RenameUnitTest, outputStall) { EXPECT_TRUE(input.isStalled()); } -// Test that an instruction excpetion is properly dealt with +// Test that an instruction exception is properly dealt with TEST_F(RenameUnitTest, uopException) { input.getHeadSlots()[0] = uopPtr; uop->setExceptionEncountered(true); @@ -421,7 +422,7 @@ TEST_F(RenameUnitTest, serializedDest) { EXPECT_EQ(output.getTailSlots()[0], nullptr); // Empty item in ROB - EXPECT_GT(rob.size(), 0); + EXPECT_EQ(rob.size(), 1); uop2Ptr->setCommitReady(); EXPECT_CALL(*uop2, getDestinationRegisters()).Times(1); EXPECT_CALL(*uop2, isLoad()).WillOnce(Return(false)); diff --git a/test/unit/pipeline/ReorderBufferTest.cc b/test/unit/pipeline/ReorderBufferTest.cc index 9a48414fb5..89039439e9 100644 --- a/test/unit/pipeline/ReorderBufferTest.cc +++ b/test/unit/pipeline/ReorderBufferTest.cc @@ -36,7 +36,7 @@ class ReorderBufferTest : public testing::Test { reorderBuffer( maxROBSize, rat, lsq, [this](auto insn) { exceptionHandler.raiseException(insn); }, - [this](auto branchAddress) { loobBoundaryAddr = branchAddress; }, + [this](auto branchAddress) { loopBoundaryAddr = branchAddress; }, predictor, 4, 2) {} protected: @@ -63,7 +63,7 @@ class ReorderBufferTest : public testing::Test { ReorderBuffer reorderBuffer; - uint64_t loobBoundaryAddr = 0; + uint64_t loopBoundaryAddr = 0; }; // Tests that an instruction can have a slot reserved in the ROB and be @@ -367,31 +367,31 @@ TEST_F(ReorderBufferTest, branch) { reorderBuffer.reserve(uopPtr); EXPECT_CALL(*uop, isBranch()).Times(1); reorderBuffer.commit(1); - EXPECT_NE(loobBoundaryAddr, insnAddr); + EXPECT_NE(loopBoundaryAddr, insnAddr); // Second pass through ROB -- seen count = 1 reorderBuffer.reserve(uopPtr); EXPECT_CALL(*uop, isBranch()).Times(1); reorderBuffer.commit(1); - EXPECT_NE(loobBoundaryAddr, insnAddr); + EXPECT_NE(loopBoundaryAddr, insnAddr); // Third pass through ROB -- seen count = 2 reorderBuffer.reserve(uopPtr); EXPECT_CALL(*uop, isBranch()).Times(1); reorderBuffer.commit(1); - EXPECT_NE(loobBoundaryAddr, insnAddr); + EXPECT_NE(loopBoundaryAddr, insnAddr); // Fourth pass through ROB -- seen count = 3; exceeds detection theshold, - // loobBoundaryAddr updated + // loopBoundaryAddr updated reorderBuffer.reserve(uopPtr); EXPECT_CALL(*uop, isBranch()).Times(1); reorderBuffer.commit(1); - EXPECT_EQ(loobBoundaryAddr, insnAddr); + EXPECT_EQ(loopBoundaryAddr, insnAddr); - // Update prediction & reset loobBoundaryAddr. Flush ROB to reset loopDetected + // Update prediction & reset loopBoundaryAddr. Flush ROB to reset loopDetected pred = {false, branchAddr + 64}; uopPtr->setBranchPrediction(pred); - loobBoundaryAddr = 0; + loopBoundaryAddr = 0; reorderBuffer.flush(0); // Re-do loop detecition @@ -399,26 +399,26 @@ TEST_F(ReorderBufferTest, branch) { reorderBuffer.reserve(uopPtr); EXPECT_CALL(*uop, isBranch()).Times(1); reorderBuffer.commit(1); - EXPECT_NE(loobBoundaryAddr, insnAddr); + EXPECT_NE(loopBoundaryAddr, insnAddr); // Second pass through ROB -- seen count = 1 reorderBuffer.reserve(uopPtr); EXPECT_CALL(*uop, isBranch()).Times(1); reorderBuffer.commit(1); - EXPECT_NE(loobBoundaryAddr, insnAddr); + EXPECT_NE(loopBoundaryAddr, insnAddr); // Third pass through ROB -- seen count = 2 reorderBuffer.reserve(uopPtr); EXPECT_CALL(*uop, isBranch()).Times(1); reorderBuffer.commit(1); - EXPECT_NE(loobBoundaryAddr, insnAddr); + EXPECT_NE(loopBoundaryAddr, insnAddr); // Fourth pass through ROB -- seen count = 3; exceeds detection theshold, - // loobBoundaryAddr updated + // loopBoundaryAddr updated reorderBuffer.reserve(uopPtr); EXPECT_CALL(*uop, isBranch()).Times(1); reorderBuffer.commit(1); - EXPECT_EQ(loobBoundaryAddr, insnAddr); + EXPECT_EQ(loopBoundaryAddr, insnAddr); } // Tests that only those destination registers which have been renamed are diff --git a/test/unit/riscv/ArchitectureTest.cc b/test/unit/riscv/ArchitectureTest.cc index 55b26c51e8..9b12652b82 100644 --- a/test/unit/riscv/ArchitectureTest.cc +++ b/test/unit/riscv/ArchitectureTest.cc @@ -68,7 +68,8 @@ TEST_F(RiscVArchitectureTest, getSystemRegisterTag) { EXPECT_EQ(output, -1); // Test for correct behaviour - // TODO: Implement once system registers have been added + output = arch->getSystemRegisterTag(RISCV_SYSREG_FFLAGS); + EXPECT_EQ(output, 0); } TEST_F(RiscVArchitectureTest, handleException) { @@ -112,7 +113,16 @@ TEST_F(RiscVArchitectureTest, getMaxInstructionSize) { } TEST_F(RiscVArchitectureTest, updateSystemTimerRegisters) { - // TODO: add tests once function has non-blank implementation. + // TODO: fix implementation + // RegisterFileSet regFile = config::SimInfo::getArchRegStruct(); + // Register cycleSystemReg = { + // RegisterType::SYSTEM, + // static_cast(arch->getSystemRegisterTag(RISCV_SYSREG_CYCLE))}; + + // uint64_t ticks = 30; + // EXPECT_EQ(regFile.get(cycleSystemReg), 0); + // arch->updateSystemTimerRegisters(®File, ticks); + // EXPECT_EQ(regFile.get(cycleSystemReg), ticks); } } // namespace riscv From 25d7d5cf6113fef61d150f733d45182427274767 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 11 Jan 2024 09:51:41 +0000 Subject: [PATCH 65/96] Fixed compile time warning in emulation core --- src/lib/models/emulation/Core.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lib/models/emulation/Core.cc b/src/lib/models/emulation/Core.cc index a37b8e038a..bfd0c6c6f6 100644 --- a/src/lib/models/emulation/Core.cc +++ b/src/lib/models/emulation/Core.cc @@ -171,8 +171,6 @@ void Core::execute(std::shared_ptr& uop) { } if (uop->isStoreData()) { - auto results = uop->getResults(); - auto destinations = uop->getDestinationRegisters(); auto data = uop->getData(); for (size_t i = 0; i < previousAddresses_.size(); i++) { dataMemory_.requestWrite(previousAddresses_[i], data[i]); From 67a87142aa7589882cc2b5ef1b908ac37a43c3ab Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 11 Jan 2024 09:54:07 +0000 Subject: [PATCH 66/96] Updated riscv arch test for updateSystemTimerRegisters. --- test/unit/riscv/ArchitectureTest.cc | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/test/unit/riscv/ArchitectureTest.cc b/test/unit/riscv/ArchitectureTest.cc index 9b12652b82..b92c5280a0 100644 --- a/test/unit/riscv/ArchitectureTest.cc +++ b/test/unit/riscv/ArchitectureTest.cc @@ -113,16 +113,15 @@ TEST_F(RiscVArchitectureTest, getMaxInstructionSize) { } TEST_F(RiscVArchitectureTest, updateSystemTimerRegisters) { - // TODO: fix implementation - // RegisterFileSet regFile = config::SimInfo::getArchRegStruct(); - // Register cycleSystemReg = { - // RegisterType::SYSTEM, - // static_cast(arch->getSystemRegisterTag(RISCV_SYSREG_CYCLE))}; - - // uint64_t ticks = 30; - // EXPECT_EQ(regFile.get(cycleSystemReg), 0); - // arch->updateSystemTimerRegisters(®File, ticks); - // EXPECT_EQ(regFile.get(cycleSystemReg), ticks); + RegisterFileSet regFile = config::SimInfo::getArchRegStruct(); + Register cycleSystemReg = { + RegisterType::SYSTEM, + static_cast(arch->getSystemRegisterTag(RISCV_SYSREG_CYCLE))}; + + uint64_t ticks = 30; + EXPECT_EQ(regFile.get(cycleSystemReg), RegisterValue(0, 8)); + arch->updateSystemTimerRegisters(®File, ticks); + EXPECT_EQ(regFile.get(cycleSystemReg), RegisterValue(ticks, 8)); } } // namespace riscv From a20689f1144137312957a5c03601a8d3884b194b Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 11 Jan 2024 14:17:50 +0000 Subject: [PATCH 67/96] Usage of ConfigInit changed. --- test/unit/ConfigInit.hh | 12 +----- test/unit/OSTest.cc | 1 - test/unit/ProcessTest.cc | 4 +- test/unit/SpecialFileDirGenTest.cc | 25 ++++++++--- test/unit/aarch64/ArchitectureTest.cc | 48 ++++++++++++++++++++- test/unit/aarch64/ExceptionHandlerTest.cc | 2 +- test/unit/aarch64/InstructionTest.cc | 2 - test/unit/pipeline/DispatchIssueUnitTest.cc | 30 ++++++++++++- test/unit/riscv/ArchitectureTest.cc | 34 ++++++++++++++- test/unit/riscv/ExceptionHandlerTest.cc | 2 +- test/unit/riscv/InstructionTest.cc | 2 - 11 files changed, 134 insertions(+), 28 deletions(-) diff --git a/test/unit/ConfigInit.hh b/test/unit/ConfigInit.hh index 192e117d09..32b3c6ef6a 100644 --- a/test/unit/ConfigInit.hh +++ b/test/unit/ConfigInit.hh @@ -9,17 +9,9 @@ namespace simeng { // initialisation of a test class class ConfigInit { public: - ConfigInit(config::ISA isa) { - if (isa == config::ISA::AArch64) { - config::SimInfo::setConfig(SIMENG_SOURCE_DIR "/configs/a64fx.yaml"); - } else if (isa == config::ISA::RV64) { - config::SimInfo::setConfig(SIMENG_SOURCE_DIR "/configs/DEMO_RISCV.yaml"); - } - } - - ConfigInit(std::string configAdditions) { + ConfigInit(config::ISA isa, std::string configAdditions) { + config::SimInfo::generateDefault(isa, true); config::SimInfo::addToConfig(configAdditions); - config::SimInfo::reBuild(); } }; diff --git a/test/unit/OSTest.cc b/test/unit/OSTest.cc index cba574fe72..ce13c1acaa 100644 --- a/test/unit/OSTest.cc +++ b/test/unit/OSTest.cc @@ -16,7 +16,6 @@ class OSTest : public testing::Test { sizeof(demoHex))) {} protected: - ConfigInit configInit = ConfigInit(config::ISA::AArch64); const std::vector cmdLine = { SIMENG_SOURCE_DIR "/test/unit/data/stream-aarch64.elf"}; diff --git a/test/unit/ProcessTest.cc b/test/unit/ProcessTest.cc index 1e5323ce90..26858164e5 100644 --- a/test/unit/ProcessTest.cc +++ b/test/unit/ProcessTest.cc @@ -10,7 +10,9 @@ class ProcessTest : public testing::Test { ProcessTest() {} protected: - ConfigInit configInit = ConfigInit(config::ISA::AArch64); + ConfigInit configInit = ConfigInit( + config::ISA::AArch64, + R"YAML({Process-Image: {Heap-Size: 1073741824, Stack-Size: 1048576}})YAML"); const std::vector cmdLine = { SIMENG_SOURCE_DIR "/test/unit/data/stream-aarch64.elf"}; diff --git a/test/unit/SpecialFileDirGenTest.cc b/test/unit/SpecialFileDirGenTest.cc index dd41854a68..745750b90f 100644 --- a/test/unit/SpecialFileDirGenTest.cc +++ b/test/unit/SpecialFileDirGenTest.cc @@ -12,13 +12,24 @@ class SpecialFileDirGenTest : public testing::Test { SpecialFileDirGenTest() {} protected: - ConfigInit configInit = ConfigInit( - "CPU-Info: {Generate-Special-Dir: True, " - "Special-File-Dir-Path: " TEST_SPEC_FILE_DIR - ", Core-Count: 1, Socket-Count: 1, SMT: 1, BogoMIPS: 200.00, Features: " - "fp asimd evtstrm sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm " - "fcma dcpop sve, CPU-Implementer: 0x46, CPU-Architecture: 8, " - "CPU-Variant: 0x1, CPU-Part: 0x001, CPU-Revision: 0, Package-Count: 1}}"); + ConfigInit configInit = ConfigInit(config::ISA::AArch64, + R"YAML({ + CPU-Info: { + Generate-Special-Dir: True, + Special-File-Dir-Path: )YAML" TEST_SPEC_FILE_DIR R"YAML(, + Core-Count: 1, + Socket-Count: 1, + SMT: 1, + BogoMIPS: 200.00, + Features: fp asimd evtstrm sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm fcma dcpop sve, + CPU-Implementer: 0x46, + CPU-Architecture: 8, + CPU-Variant: 0x1, + CPU-Part: 0x001, + CPU-Revision: 0, + Package-Count: 1 + } + })YAML"); SpecialFileDirGen specFile; diff --git a/test/unit/aarch64/ArchitectureTest.cc b/test/unit/aarch64/ArchitectureTest.cc index b5af93ac35..90a33c82a2 100644 --- a/test/unit/aarch64/ArchitectureTest.cc +++ b/test/unit/aarch64/ArchitectureTest.cc @@ -24,7 +24,53 @@ class AArch64ArchitectureTest : public testing::Test { } protected: - ConfigInit configInit = ConfigInit(config::ISA::AArch64); + ConfigInit configInit = ConfigInit(config::ISA::AArch64, R"YAML({ + Core: { + Simulation-Mode: outoforder, + Vector-Length: 512, + Streaming-Vector-Length: 128 + }, + Ports: { + '0': {Portname: FLA, Instruction-Group-Support: [FP, SVE]}, + '1': {Portname: PR, Instruction-Group-Support: [PREDICATE]}, + '2': {Portname: EXA, Instruction-Group-Support: [INT_SIMPLE, INT_MUL, STORE_DATA]}, + '3': {Portname: FLB, Instruction-Group-Support: [FP_SIMPLE, FP_MUL, SVE_SIMPLE, SVE_MUL]}, + '4': {Portname: EXB, Instruction-Group-Support: [INT_SIMPLE, INT_DIV_OR_SQRT]}, + '5': {Portname: EAGA, Instruction-Group-Support: [LOAD, STORE_ADDRESS, INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CMP]}, + '6': {Portname: EAGB, Instruction-Group-Support: [LOAD, STORE_ADDRESS, INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CMP]}, + '7': {Portname: BR, Instruction-Group-Support: [BRANCH]} + }, + Reservation-Stations: { + '0': {Size: 20, Dispatch-Rate: 2, Ports: [FLA, PR, EXA]}, + '1': {Size: 20, Dispatch-Rate: 2, Ports: [FLB, EXB]}, + '2': {Size: 10, Dispatch-Rate: 1, Ports: [EAGA]}, + '3': {Size: 10, Dispatch-Rate: 1, Ports: [EAGB]}, + '4': {Size: 19, Dispatch-Rate: 1, Ports: [BR]}, + }, + Execution-Units: { + '0': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '1': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '2': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '3': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '4': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '5': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '6': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '7': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]} + }, + Latencies: { + '0': {Instruction-Groups: [INT], Execution-Latency: 2, Execution-Throughput: 2}, + '1': {Instruction-Groups: [INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CVT], Execution-Latency: 1, Execution-Throughput: 1}, + '2': {Instruction-Groups: [INT_MUL], Execution-Latency: 5, Execution-Throughput: 1}, + '3': {Instruction-Groups: [INT_DIV_OR_SQRT], Execution-Latency: 41, Execution-Throughput: 41}, + '4': {Instruction-Groups: [SCALAR_SIMPLE, VECTOR_SIMPLE_LOGICAL, SVE_SIMPLE_LOGICAL, VECTOR_SIMPLE_CMP, SVE_SIMPLE_CMP], Execution-Latency: 4, Execution-Throughput: 1}, + '5': {Instruction-Groups: [FP_DIV_OR_SQRT], Execution-Latency: 29, Execution-Throughput: 29}, + '6': {Instruction-Groups: [VECTOR_SIMPLE, SVE_SIMPLE, SCALAR_SIMPLE_CVT, FP_MUL, SVE_MUL], Execution-Latency: 9, Execution-Throughput: 1}, + '7': {Instruction-Groups: [SVE_DIV_OR_SQRT], Execution-Latency: 98, Execution-Throughput: 98}, + '8': {Instruction-Groups: [PREDICATE], Execution-Latency: 3, Execution-Throughput: 1}, + '9': {Instruction-Groups: [LOAD_SCALAR, LOAD_VECTOR, STORE_ADDRESS_SCALAR, STORE_ADDRESS_VECTOR], Execution-Latency: 3, Execution-Throughput: 1}, + '10': {Instruction-Groups: [LOAD_SVE, STORE_ADDRESS_SVE], Execution-Latency: 6, Execution-Throughput: 1} + } + })YAML"); // fdivr z1.s, p0/m, z1.s, z0.s std::array validInstrBytes = {0x01, 0x80, 0x8c, 0x65}; diff --git a/test/unit/aarch64/ExceptionHandlerTest.cc b/test/unit/aarch64/ExceptionHandlerTest.cc index 8568e4d403..e3fa9ed0aa 100644 --- a/test/unit/aarch64/ExceptionHandlerTest.cc +++ b/test/unit/aarch64/ExceptionHandlerTest.cc @@ -26,7 +26,7 @@ class AArch64ExceptionHandlerTest : public ::testing::Test { archRegFileSet(physRegFileSet) {} protected: - ConfigInit configInit = ConfigInit(config::ISA::AArch64); + ConfigInit configInit = ConfigInit(config::ISA::AArch64, ""); MockCore core; MockMemoryInterface memory; diff --git a/test/unit/aarch64/InstructionTest.cc b/test/unit/aarch64/InstructionTest.cc index 972be0a666..327b442a33 100644 --- a/test/unit/aarch64/InstructionTest.cc +++ b/test/unit/aarch64/InstructionTest.cc @@ -17,8 +17,6 @@ class AArch64InstructionTest : public testing::Test { AArch64InstructionTest() {} protected: - ConfigInit configInit = ConfigInit(config::ISA::AArch64); - MockArchitecture arch; // InstructionMetadata metadata; MicroOpInfo uopInfo; diff --git a/test/unit/pipeline/DispatchIssueUnitTest.cc b/test/unit/pipeline/DispatchIssueUnitTest.cc index 91d26c3ad1..3ebd785189 100644 --- a/test/unit/pipeline/DispatchIssueUnitTest.cc +++ b/test/unit/pipeline/DispatchIssueUnitTest.cc @@ -26,7 +26,35 @@ class PipelineDispatchIssueUnitTest : public testing::Test { uop2Ptr(uop2) {} protected: - ConfigInit configInit = ConfigInit(config::ISA::AArch64); + ConfigInit configInit = ConfigInit(config::ISA::AArch64, R"YAML({ + Ports: { + '0': {Portname: FLA, Instruction-Group-Support: [FP, SVE]}, + '1': {Portname: PR, Instruction-Group-Support: [PREDICATE]}, + '2': {Portname: EXA, Instruction-Group-Support: [INT_SIMPLE, INT_MUL, STORE_DATA]}, + '3': {Portname: FLB, Instruction-Group-Support: [FP_SIMPLE, FP_MUL, SVE_SIMPLE, SVE_MUL]}, + '4': {Portname: EXB, Instruction-Group-Support: [INT_SIMPLE, INT_DIV_OR_SQRT]}, + '5': {Portname: EAGA, Instruction-Group-Support: [LOAD, STORE_ADDRESS, INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CMP]}, + '6': {Portname: EAGB, Instruction-Group-Support: [LOAD, STORE_ADDRESS, INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CMP]}, + '7': {Portname: BR, Instruction-Group-Support: [BRANCH]} + }, + Reservation-Stations: { + '0': {Size: 20, Dispatch-Rate: 2, Ports: [FLA, PR, EXA]}, + '1': {Size: 20, Dispatch-Rate: 2, Ports: [FLB, EXB]}, + '2': {Size: 10, Dispatch-Rate: 1, Ports: [EAGA]}, + '3': {Size: 10, Dispatch-Rate: 1, Ports: [EAGB]}, + '4': {Size: 19, Dispatch-Rate: 1, Ports: [BR]} + }, + Execution-Units: { + '0': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '1': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '2': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '3': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '4': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '5': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '6': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, + '7': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]} + } + })YAML"); // Using AArch64 as basis: {GP, FP/SVE, PRED, COND, SYS, SME} const std::vector physRegQuants = {96, 128, 48, 128, 64, 64}; diff --git a/test/unit/riscv/ArchitectureTest.cc b/test/unit/riscv/ArchitectureTest.cc index b92c5280a0..7a86f8a50d 100644 --- a/test/unit/riscv/ArchitectureTest.cc +++ b/test/unit/riscv/ArchitectureTest.cc @@ -24,7 +24,39 @@ class RiscVArchitectureTest : public testing::Test { } protected: - ConfigInit configInit = ConfigInit(config::ISA::RV64); + ConfigInit configInit = ConfigInit(config::ISA::RV64, R"YAML({ + Core: { + Simulation-Mode: outoforder + }, + Ports: { + '0': {Portname: Port 0, Instruction-Group-Support: [INT_SIMPLE, INT_MUL, FLOAT]}, + '1': {Portname: Port 1, Instruction-Group-Support: [INT, FLOAT]}, + '2': {Portname: Port 2, Instruction-Group-Support: [INT_SIMPLE, INT_MUL, BRANCH]}, + '3': {Portname: Port 4, Instruction-Group-Support: [LOAD]}, + '4': {Portname: Port 5, Instruction-Group-Support: [LOAD]}, + '5': {Portname: Port 3, Instruction-Group-Support: [STORE]} + }, + Reservation-Stations: { + '0': {Size: 60, Dispatch-Rate: 4, Ports: [Port 0, Port 1, Port 2, Port 4, Port 5, Port 3]} + }, + Execution-Units: { + '0': {Pipelined: True}, + '1': {Pipelined: True}, + '2': {Pipelined: True}, + '3': {Pipelined: True}, + '4': {Pipelined: True}, + '5': {Pipelined: True} + }, + Latencies: { + '0': {Instruction-Groups: [INT_SIMPLE_ARTH, INT_SIMPLE_LOGICAL], Execution-Latency: 1, Execution-Throughput: 1}, + '1': {Instruction-Groups: [INT_MUL], Execution-Latency: 5, Execution-Throughput: 1}, + '2': {Instruction-Groups: [INT_DIV_OR_SQRT], Execution-Latency: 39, Execution-Throughput: 39}, + '3': {Instruction-Groups: [FLOAT_SIMPLE_CMP], Execution-Latency: 5, Execution-Throughput: 1}, + '4': {Instruction-Groups: [FLOAT_MUL], Execution-Latency: 6, Execution-Throughput: 1}, + '5': {Instruction-Groups: [FLOAT_SIMPLE_CVT], Execution-Latency: 7, Execution-Throughput: 1}, + '6': {Instruction-Groups: [FLOAT_DIV_OR_SQRT], Execution-Latency: 16, Execution-Throughput: 16} + } + })YAML"); // addi sp, ra, 2000 std::array validInstrBytes = {0x13, 0x81, 0x00, 0x7d}; diff --git a/test/unit/riscv/ExceptionHandlerTest.cc b/test/unit/riscv/ExceptionHandlerTest.cc index ebea167a57..cd2de52587 100644 --- a/test/unit/riscv/ExceptionHandlerTest.cc +++ b/test/unit/riscv/ExceptionHandlerTest.cc @@ -26,7 +26,7 @@ class RiscVExceptionHandlerTest : public ::testing::Test { archRegFileSet(physRegFileSet) {} protected: - ConfigInit configInit = ConfigInit(config::ISA::RV64); + ConfigInit configInit = ConfigInit(config::ISA::RV64, ""); MockCore core; MockMemoryInterface memory; diff --git a/test/unit/riscv/InstructionTest.cc b/test/unit/riscv/InstructionTest.cc index 28c3b24985..8718c072d0 100644 --- a/test/unit/riscv/InstructionTest.cc +++ b/test/unit/riscv/InstructionTest.cc @@ -17,8 +17,6 @@ class RiscVInstructionTest : public testing::Test { RiscVInstructionTest() {} protected: - ConfigInit configInit = ConfigInit(config::ISA::RV64); - MockArchitecture arch; // InstructionMetadata metadata; InstructionException exception; From 826708dd988e489e44a808ddfe4aebe167e97a79 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 11 Jan 2024 14:34:08 +0000 Subject: [PATCH 68/96] Fixed MSL implementation. --- src/include/simeng/arch/aarch64/Instruction.hh | 2 +- test/unit/aarch64/ShiftValueTest.cc | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/include/simeng/arch/aarch64/Instruction.hh b/src/include/simeng/arch/aarch64/Instruction.hh index 9cf3e0d4a5..ed5ae8c1e0 100644 --- a/src/include/simeng/arch/aarch64/Instruction.hh +++ b/src/include/simeng/arch/aarch64/Instruction.hh @@ -34,7 +34,7 @@ std::enable_if_t && std::is_unsigned_v, T> shiftValue( } case ARM64_SFT_MSL: { // pad in with ones instead of zeros - const T mask = (1 << amount) - 1; + const T mask = (static_cast(1) << static_cast(amount)) - 1; return (value << amount) | mask; } case ARM64_SFT_INVALID: diff --git a/test/unit/aarch64/ShiftValueTest.cc b/test/unit/aarch64/ShiftValueTest.cc index a4f09320bb..0402bbcdfc 100644 --- a/test/unit/aarch64/ShiftValueTest.cc +++ b/test/unit/aarch64/ShiftValueTest.cc @@ -18,11 +18,11 @@ TEST(ShiftValueTest, MSL) { // 64-bit const uint64_t c = 0x00000000FFFFFFFF; EXPECT_EQ(simeng::arch::aarch64::shiftValue(c, ARM64_SFT_MSL, 32), - 0xFFFFFFFF00000000); + 0xFFFFFFFFFFFFFFFF); const uint64_t d = 0xFFFFFFFF00000000; EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_MSL, 63), - 0x000000007FFFFFFF); + 0x7FFFFFFFFFFFFFFF); EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_MSL, 0), d); } From bfa0233f2b10b99351985f56103233e2615d6068 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 11 Jan 2024 15:10:26 +0000 Subject: [PATCH 69/96] OSTest fix. --- test/unit/OSTest.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/unit/OSTest.cc b/test/unit/OSTest.cc index ce13c1acaa..1b2f7803eb 100644 --- a/test/unit/OSTest.cc +++ b/test/unit/OSTest.cc @@ -16,6 +16,10 @@ class OSTest : public testing::Test { sizeof(demoHex))) {} protected: + ConfigInit configInit = ConfigInit( + config::ISA::AArch64, + R"YAML({Process-Image: {Heap-Size: 1073741824, Stack-Size: 1048576}})YAML"); + const std::vector cmdLine = { SIMENG_SOURCE_DIR "/test/unit/data/stream-aarch64.elf"}; From c6df17ce510971b9d38a98bebcc4ca141b2948fb Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 11 Jan 2024 17:48:54 +0000 Subject: [PATCH 70/96] Removed un-necessary classes from aarch64 helper functions. --- .../simeng/arch/aarch64/helpers/arithmetic.hh | 354 +- .../aarch64/helpers/auxiliaryFunctions.hh | 566 ++- .../simeng/arch/aarch64/helpers/bitmanip.hh | 129 +- .../simeng/arch/aarch64/helpers/comparison.hh | 31 +- .../arch/aarch64/helpers/conditional.hh | 189 +- .../simeng/arch/aarch64/helpers/divide.hh | 25 +- .../simeng/arch/aarch64/helpers/float.hh | 320 +- .../simeng/arch/aarch64/helpers/load.hh | 7 +- .../simeng/arch/aarch64/helpers/logical.hh | 179 +- .../simeng/arch/aarch64/helpers/multiply.hh | 89 +- .../simeng/arch/aarch64/helpers/neon.hh | 1879 +++++----- .../simeng/arch/aarch64/helpers/store.hh | 7 +- .../simeng/arch/aarch64/helpers/sve.hh | 3290 ++++++++--------- src/lib/arch/aarch64/Instruction_execute.cc | 1593 ++++---- 14 files changed, 4232 insertions(+), 4426 deletions(-) diff --git a/src/include/simeng/arch/aarch64/helpers/arithmetic.hh b/src/include/simeng/arch/aarch64/helpers/arithmetic.hh index 13485c16fa..cdf8a19ed7 100644 --- a/src/include/simeng/arch/aarch64/helpers/arithmetic.hh +++ b/src/include/simeng/arch/aarch64/helpers/arithmetic.hh @@ -5,204 +5,190 @@ namespace simeng { namespace arch { namespace aarch64 { -class arithmeticHelp { - public: - /** Helper function for instructions with the format `add rd, rn, rm`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type T. */ - template - static T add_3ops(std::vector& operands) { - const T n = operands[0].get(); - const T m = operands[1].get(); - return (n + m); - } - /** Helper function for instructions with the format `adc rd, rn, rm`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns tuple of [resulting value, nzcv]. */ - template - static std::tuple addCarry_3ops( - std::vector& operands) { - const uint8_t carry = operands[0].get() & 0b0010; - const T n = operands[1].get(); - const T m = operands[2].get(); - return AuxFunc::addWithCarry(n, m, carry); - } +/** Helper function for instructions with the format `add rd, rn, rm`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type T. */ +template +T add_3ops(std::vector& operands) { + const T n = operands[0].get(); + const T m = operands[1].get(); + return (n + m); +} - /** Helper function for instructions with the format `add rd, rn, rm{, extend - * {#amount}}`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns tuple of [resulting value, nzcv]. */ - template - static std::tuple addExtend_3ops( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - bool calcNZCV) { - const T n = operands[0].get(); - const T m = - AuxFunc::extendValue(operands[1].get(), metadata.operands[2].ext, - metadata.operands[2].shift.value); - if (calcNZCV) return AuxFunc::addWithCarry(n, m, 0); - return {(n + m), 0}; - } +/** Helper function for instructions with the format `adc rd, rn, rm`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns tuple of [resulting value, nzcv]. */ +template +std::tuple addCarry_3ops(std::vector& operands) { + const uint8_t carry = operands[0].get() & 0b0010; + const T n = operands[1].get(); + const T m = operands[2].get(); + return addWithCarry(n, m, carry); +} - /** Helper function for instructions with the format `add rd, rn, rm{, shift - * #amount}`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns tuple of [resulting value, nzcv]. */ - template - static std::tuple addShift_3ops( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - bool calcNZCV) { - const T n = operands[0].get(); - const T m = - shiftValue(operands[1].get(), metadata.operands[2].shift.type, - metadata.operands[2].shift.value); - if (calcNZCV) return AuxFunc::addWithCarry(n, m, 0); - return {(n + m), 0}; - } +/** Helper function for instructions with the format `add rd, rn, rm{, extend + * {#amount}}`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns tuple of [resulting value, nzcv]. */ +template +std::tuple addExtend_3ops( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, bool calcNZCV) { + const T n = operands[0].get(); + const T m = extendValue(operands[1].get(), metadata.operands[2].ext, + metadata.operands[2].shift.value); + if (calcNZCV) return addWithCarry(n, m, 0); + return {(n + m), 0}; +} - /** Helper function for instructions with the format `add rd, rn, #imm{, shift - * #amount}`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns tuple of [resulting value, nzcv]. */ - template - static std::tuple addShift_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - bool calcNZCV) { - const T n = operands[0].get(); - const T m = shiftValue(static_cast(metadata.operands[2].imm), - metadata.operands[2].shift.type, - metadata.operands[2].shift.value); - if (calcNZCV) return AuxFunc::addWithCarry(n, m, 0); - return {(n + m), 0}; - } +/** Helper function for instructions with the format `add rd, rn, rm{, shift + * #amount}`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns tuple of [resulting value, nzcv]. */ +template +std::tuple addShift_3ops( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, bool calcNZCV) { + const T n = operands[0].get(); + const T m = shiftValue(operands[1].get(), metadata.operands[2].shift.type, + metadata.operands[2].shift.value); + if (calcNZCV) return addWithCarry(n, m, 0); + return {(n + m), 0}; +} + +/** Helper function for instructions with the format `add rd, rn, #imm{, shift + * #amount}`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns tuple of [resulting value, nzcv]. */ +template +std::tuple addShift_imm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, bool calcNZCV) { + const T n = operands[0].get(); + const T m = shiftValue(static_cast(metadata.operands[2].imm), + metadata.operands[2].shift.type, + metadata.operands[2].shift.value); + if (calcNZCV) return addWithCarry(n, m, 0); + return {(n + m), 0}; +} - /** Helper function for instructions with the format `clz rd, rn`. - * T represents the type of operands (e.g. for xn, T = int64_t). - * Returns single value of type T. */ - template - static T clz_reg(std::vector& operands) { - T x = operands[0].get(); - uint8_t i; - for (i = 0; i < (sizeof(T) * 8); i++) { - // Left-shift x until it's negative or we run out of bits - if (x < 0) { - break; - } - x <<= 1; +/** Helper function for instructions with the format `clz rd, rn`. + * T represents the type of operands (e.g. for xn, T = int64_t). + * Returns single value of type T. */ +template +T clz_reg(std::vector& operands) { + T x = operands[0].get(); + uint8_t i; + for (i = 0; i < (sizeof(T) * 8); i++) { + // Left-shift x until it's negative or we run out of bits + if (x < 0) { + break; } - return i; + x <<= 1; } + return i; +} - /** Helper function for instructions with the format `movk d, #imm`. - * T represents the type of operands (e.g. for xd, T = uint64_t). - * Returns single value of type T. */ - template - static T movkShift_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - // Clear 16-bit region offset by `shift` and replace with immediate - uint8_t shift = metadata.operands[1].shift.value; - T mask = ~(static_cast(0xFFFF) << shift); - T value = - (operands[0].get() & mask) | (metadata.operands[1].imm << shift); - return value; - } +/** Helper function for instructions with the format `movk d, #imm`. + * T represents the type of operands (e.g. for xd, T = uint64_t). + * Returns single value of type T. */ +template +T movkShift_imm(std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + // Clear 16-bit region offset by `shift` and replace with immediate + uint8_t shift = metadata.operands[1].shift.value; + T mask = ~(static_cast(0xFFFF) << shift); + T value = (operands[0].get() & mask) | (metadata.operands[1].imm << shift); + return value; +} - /** Helper function for instructions with the format `mov d, #imm{, - * lsl #shift}`. - * T represents the type of operands (e.g. for xd, T = uint64_t). - * Returns single value og type uint64_t. */ - template - static uint64_t movnShift_imm( - const simeng::arch::aarch64::InstructionMetadata& metadata, - std::function func) { - uint8_t shift = metadata.operands[1].shift.value; - T value = func(static_cast(metadata.operands[1].imm) << shift); - return static_cast(value); - } +/** Helper function for instructions with the format `mov d, #imm{, + * lsl #shift}`. + * T represents the type of operands (e.g. for xd, T = uint64_t). + * Returns single value og type uint64_t. */ +template +uint64_t movnShift_imm( + const simeng::arch::aarch64::InstructionMetadata& metadata, + std::function func) { + uint8_t shift = metadata.operands[1].shift.value; + T value = func(static_cast(metadata.operands[1].imm) << shift); + return static_cast(value); +} - /** Helper function for instructions with the format `msubl xd, wn, wm, xa`. - * D represents the type of the destination register (either int64_t or - * uint64_t). - * N represents the type of the first source register (either - * int32_t or uint32_t). - * Returns single value of type D. */ - template - static D msubl_4ops(std::vector& operands) { - const N n = operands[0].get(); - const N m = operands[1].get(); - const D a = operands[2].get(); - return (a - (n * m)); - } +/** Helper function for instructions with the format `msubl xd, wn, wm, xa`. + * D represents the type of the destination register (either int64_t or + * uint64_t). + * N represents the type of the first source register (either + * int32_t or uint32_t). + * Returns single value of type D. */ +template +D msubl_4ops(std::vector& operands) { + const N n = operands[0].get(); + const N m = operands[1].get(); + const D a = operands[2].get(); + return (a - (n * m)); +} - /** Helper function for instructions with the format `sbc rd, rn, rm`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type T. */ - template - static T sbc(std::vector& operands) { - auto nzcv = operands[0].get(); - const T x = operands[1].get(); - const T y = operands[2].get(); - T result; - std::tie(result, std::ignore) = - AuxFunc::addWithCarry(x, ~y, (nzcv >> 1) & 1); - return result; - } +/** Helper function for instructions with the format `sbc rd, rn, rm`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type T. */ +template +T sbc(std::vector& operands) { + auto nzcv = operands[0].get(); + const T x = operands[1].get(); + const T y = operands[2].get(); + T result; + std::tie(result, std::ignore) = addWithCarry(x, ~y, (nzcv >> 1) & 1); + return result; +} - /** Helper function for instructions with the format `sub{s} rd, rn, rm{, - * extend #amount}`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns tuple of [resulting value, nzcv]. */ - template - static std::tuple subExtend_3ops( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - bool calcNZCV) { - const T n = operands[0].get(); - const T m = static_cast( - AuxFunc::extendValue(operands[1].get(), metadata.operands[2].ext, - metadata.operands[2].shift.value)); - if (calcNZCV) return AuxFunc::addWithCarry(n, ~m, true); - return {(n - m), 0}; - } +/** Helper function for instructions with the format `sub{s} rd, rn, rm{, + * extend #amount}`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns tuple of [resulting value, nzcv]. */ +template +std::tuple subExtend_3ops( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, bool calcNZCV) { + const T n = operands[0].get(); + const T m = + static_cast(extendValue(operands[1].get(), metadata.operands[2].ext, + metadata.operands[2].shift.value)); + if (calcNZCV) return addWithCarry(n, ~m, true); + return {(n - m), 0}; +} - /** Helper function for instructions with the format `sub{s} rd, rn, #imm`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type T. */ - template - static std::tuple subShift_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - bool calcNZCV) { - const T n = operands[0].get(); - const T m = shiftValue(static_cast(metadata.operands[2].imm), - metadata.operands[2].shift.type, - metadata.operands[2].shift.value); - if (calcNZCV) return AuxFunc::addWithCarry(n, ~m, true); - return {(n - m), 0}; - } +/** Helper function for instructions with the format `sub{s} rd, rn, #imm`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type T. */ +template +std::tuple subShift_imm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, bool calcNZCV) { + const T n = operands[0].get(); + const T m = shiftValue(static_cast(metadata.operands[2].imm), + metadata.operands[2].shift.type, + metadata.operands[2].shift.value); + if (calcNZCV) return addWithCarry(n, ~m, true); + return {(n - m), 0}; +} + +/** Helper function for instructions with the format `sub{s} rd, rn, rm{, + * shift #amount}`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns tuple of [resulting value, nzcv]. */ +template +std::tuple subShift_3ops( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, bool calcNZCV) { + const T n = operands[0].get(); + const T m = shiftValue(operands[1].get(), metadata.operands[2].shift.type, + metadata.operands[2].shift.value); + if (calcNZCV) return addWithCarry(n, ~m, true); + return {(n - m), 0}; +} - /** Helper function for instructions with the format `sub{s} rd, rn, rm{, - * shift #amount}`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns tuple of [resulting value, nzcv]. */ - template - static std::tuple subShift_3ops( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - bool calcNZCV) { - const T n = operands[0].get(); - const T m = - shiftValue(operands[1].get(), metadata.operands[2].shift.type, - metadata.operands[2].shift.value); - if (calcNZCV) return AuxFunc::addWithCarry(n, ~m, true); - return {(n - m), 0}; - } -}; } // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh b/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh index 036df3f061..b5f930db9f 100644 --- a/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh +++ b/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh @@ -11,315 +11,313 @@ namespace simeng { namespace arch { namespace aarch64 { -class AuxFunc { - public: - /** Performs a type agnostic add with carry. */ - template - static std::tuple addWithCarry(T x, T y, bool carryIn) { - T result = x + y + carryIn; - - bool n = (result >> (sizeof(T) * 8 - 1)); - bool z = (result == 0); - - // Trying to calculate whether `result` overflows (`x + y + carryIn > max`). - bool c; - if (carryIn && x + 1 == 0) { - // Implies `x` is max; with a carry set, it will definitely overflow - c = true; - } else { - // We know x + carryIn <= max, so can safely subtract and compare against - // y max > x + y + c == max - x > y + c - c = ((std::numeric_limits::max() - x - carryIn) < y); - } - - // Calculate whether signed result overflows - bool v = false; - typedef std::make_signed_t ST; - auto sx = static_cast(x); - auto sy = static_cast(y); - if (sx >= 0) { - // Check if (x + y + c) > MAX - // y > (MAX - x - c) - v = sy > (std::numeric_limits::max() - sx - carryIn); - } else { - // Check if (x + y + c) < MIN - // y < (MIN - x - c) - v = sy < (std::numeric_limits::min() - sx - carryIn); - } - return {result, nzcv(n, z, c, v)}; +/** Returns a correctly formatted nzcv value. */ +uint8_t nzcv(bool n, bool z, bool c, bool v) { + return (n << 3) | (z << 2) | (c << 1) | v; +} + +/** Performs a type agnostic add with carry. */ +template +std::tuple addWithCarry(T x, T y, bool carryIn) { + T result = x + y + carryIn; + + bool n = (result >> (sizeof(T) * 8 - 1)); + bool z = (result == 0); + + // Trying to calculate whether `result` overflows (`x + y + carryIn > max`). + bool c; + if (carryIn && x + 1 == 0) { + // Implies `x` is max; with a carry set, it will definitely overflow + c = true; + } else { + // We know x + carryIn <= max, so can safely subtract and compare against + // y max > x + y + c == max - x > y + c + c = ((std::numeric_limits::max() - x - carryIn) < y); } - /** Manipulate the bitfield `value` according to the logic of the (U|S)BFM - * Armv9.2-a instructions. */ - template - static std::enable_if_t && std::is_unsigned_v, T> - bitfieldManipulate(T value, T dest, uint8_t rotateBy, uint8_t sourceBits, - bool signExtend = false) { - size_t bits = sizeof(T) * 8; - - T source; - T destMask; - uint8_t highestBit = sourceBits; - if (sourceBits >= rotateBy) { - // Mask of values [rotateBy:source+1] - destMask = (static_cast(-1) << (sourceBits - rotateBy + 1)); - source = value >> rotateBy; - highestBit -= rotateBy; - } else { - T upper = (static_cast(-1) << (bits - rotateBy)); - T lower = (static_cast(-1) >> (rotateBy - sourceBits - 1)); - destMask = upper ^ lower; - source = value << (bits - rotateBy); - highestBit += (bits - rotateBy); - } + // Calculate whether signed result overflows + bool v = false; + typedef std::make_signed_t ST; + auto sx = static_cast(x); + auto sy = static_cast(y); + if (sx >= 0) { + // Check if (x + y + c) > MAX + // y > (MAX - x - c) + v = sy > (std::numeric_limits::max() - sx - carryIn); + } else { + // Check if (x + y + c) < MIN + // y < (MIN - x - c) + v = sy < (std::numeric_limits::min() - sx - carryIn); + } - T result = (dest & destMask) | (source & ~destMask); + return {result, nzcv(n, z, c, v)}; +} + +/** Manipulate the bitfield `value` according to the logic of the (U|S)BFM + * Armv9.2-a instructions. */ +template +std::enable_if_t && std::is_unsigned_v, T> +bitfieldManipulate(T value, T dest, uint8_t rotateBy, uint8_t sourceBits, + bool signExtend = false) { + size_t bits = sizeof(T) * 8; + + T source; + T destMask; + uint8_t highestBit = sourceBits; + if (sourceBits >= rotateBy) { + // Mask of values [rotateBy:source+1] + destMask = (static_cast(-1) << (sourceBits - rotateBy + 1)); + source = value >> rotateBy; + highestBit -= rotateBy; + } else { + T upper = (static_cast(-1) << (bits - rotateBy)); + T lower = (static_cast(-1) >> (rotateBy - sourceBits - 1)); + destMask = upper ^ lower; + source = value << (bits - rotateBy); + highestBit += (bits - rotateBy); + } - if (!signExtend) { - return result; - } + T result = (dest & destMask) | (source & ~destMask); - if (highestBit > bits) { - // Nothing to do; implicitly sign-extended - return result; - } + if (!signExtend) { + return result; + } - // Let the compiler do sign-extension for us. - uint8_t shiftAmount = bits - highestBit - 1; - // Shift the bitfield up, and cast to a signed type, so the highest bit is - // now the sign bit - auto shifted = static_cast>(result << shiftAmount); - // Shift the bitfield back to where it was; as it's a signed type, the - // compiler will sign-extend the highest bit - return shifted >> shiftAmount; + if (highestBit > bits) { + // Nothing to do; implicitly sign-extended + return result; } - /** Function to check if NZCV conditions hold. */ - static bool conditionHolds(uint8_t cond, uint8_t nzcv) { - if (cond == 0b1111) { - return true; - } + // Let the compiler do sign-extension for us. + uint8_t shiftAmount = bits - highestBit - 1; + // Shift the bitfield up, and cast to a signed type, so the highest bit is + // now the sign bit + auto shifted = static_cast>(result << shiftAmount); + // Shift the bitfield back to where it was; as it's a signed type, the + // compiler will sign-extend the highest bit + return shifted >> shiftAmount; +} + +/** Function to check if NZCV conditions hold. */ +bool conditionHolds(uint8_t cond, uint8_t nzcv) { + if (cond == 0b1111) { + return true; + } - bool inverse = cond & 1; - uint8_t upper = cond >> 1; - bool n = (nzcv >> 3) & 1; - bool z = (nzcv >> 2) & 1; - bool c = (nzcv >> 1) & 1; - bool v = nzcv & 1; - bool result; - switch (upper) { - case 0b000: - result = z; - break; // EQ/NE - case 0b001: - result = c; - break; // CS/CC - case 0b010: - result = n; - break; // MI/PL - case 0b011: - result = v; - break; // VS/VC - case 0b100: - result = (c && !z); - break; // HI/LS - case 0b101: - result = (n == v); - break; // GE/LT - case 0b110: - result = (n == v && !z); - break; // GT/LE - default: // 0b111, AL - result = true; - } + bool inverse = cond & 1; + uint8_t upper = cond >> 1; + bool n = (nzcv >> 3) & 1; + bool z = (nzcv >> 2) & 1; + bool c = (nzcv >> 1) & 1; + bool v = nzcv & 1; + bool result; + switch (upper) { + case 0b000: + result = z; + break; // EQ/NE + case 0b001: + result = c; + break; // CS/CC + case 0b010: + result = n; + break; // MI/PL + case 0b011: + result = v; + break; // VS/VC + case 0b100: + result = (c && !z); + break; // HI/LS + case 0b101: + result = (n == v); + break; // GE/LT + case 0b110: + result = (n == v && !z); + break; // GT/LE + default: // 0b111, AL + result = true; + } - return (inverse ? !result : result); + return (inverse ? !result : result); +} + +// Rounding function that rounds a double to nearest integer (64-bit). In +// event of a tie (i.e. 7.5) it will be rounded to the nearest even number. +template +OUT roundToNearestTiesToEven(IN input) { + IN half = static_cast(0.5); + if (std::fabs(input - std::trunc(input)) == half) { + OUT truncd = static_cast(std::trunc(input)); + // if value is negative, then may need to -1 from truncd, else may need to + // +1. + OUT addand = (truncd > 0) ? 1 : -1; + return ((truncd % 2 == 0) ? truncd : (truncd + addand)); + } + // Otherwise round to nearest + return static_cast(std::round(input)); +} + +/** Extend `value` according to `extendType`, and left-shift the result by + * `shift`. Replicated from Instruction.cc */ +uint64_t extendValue(uint64_t value, uint8_t extendType, uint8_t shift) { + if (extendType == ARM64_EXT_INVALID && shift == 0) { + // Special case: an invalid shift type with a shift amount of 0 implies an + // identity operation + return value; } - // Rounding function that rounds a double to nearest integer (64-bit). In - // event of a tie (i.e. 7.5) it will be rounded to the nearest even number. - template - static OUT roundToNearestTiesToEven(IN input) { - IN half = static_cast(0.5); - if (std::fabs(input - std::trunc(input)) == half) { - OUT truncd = static_cast(std::trunc(input)); - // if value is negative, then may need to -1 from truncd, else may need to - // +1. - OUT addand = (truncd > 0) ? 1 : -1; - return ((truncd % 2 == 0) ? truncd : (truncd + addand)); - } - // Otherwise round to nearest - return static_cast(std::round(input)); + uint64_t extended; + switch (extendType) { + case ARM64_EXT_UXTB: + extended = static_cast(value); + break; + case ARM64_EXT_UXTH: + extended = static_cast(value); + break; + case ARM64_EXT_UXTW: + extended = static_cast(value); + break; + case ARM64_EXT_UXTX: + extended = value; + break; + case ARM64_EXT_SXTB: + extended = static_cast(value); + break; + case ARM64_EXT_SXTH: + extended = static_cast(value); + break; + case ARM64_EXT_SXTW: + extended = static_cast(value); + break; + case ARM64_EXT_SXTX: + extended = value; + break; + default: + assert(false && "Invalid extension type"); + return 0; } - /** Extend `value` according to `extendType`, and left-shift the result by - * `shift`. Replicated from Instruction.cc */ - static uint64_t extendValue(uint64_t value, uint8_t extendType, - uint8_t shift) { - if (extendType == ARM64_EXT_INVALID && shift == 0) { - // Special case: an invalid shift type with a shift amount of 0 implies an - // identity operation - return value; - } + return extended << shift; +} - uint64_t extended; - switch (extendType) { - case ARM64_EXT_UXTB: - extended = static_cast(value); - break; - case ARM64_EXT_UXTH: - extended = static_cast(value); - break; - case ARM64_EXT_UXTW: - extended = static_cast(value); - break; - case ARM64_EXT_UXTX: - extended = value; - break; - case ARM64_EXT_SXTB: - extended = static_cast(value); - break; - case ARM64_EXT_SXTH: - extended = static_cast(value); - break; - case ARM64_EXT_SXTW: - extended = static_cast(value); - break; - case ARM64_EXT_SXTX: - extended = value; - break; - default: - assert(false && "Invalid extension type"); - return 0; +// Rounding function that rounds a float to nearest integer (32-bit). In event +// of a tie (i.e. 7.5) it will be rounded to the nearest even number. +int32_t floatRoundToNearestTiesToEven(float input) { + if (std::fabs(input - std::trunc(input)) == 0.5f) { + if (static_cast(input - 0.5f) % 2 == 0) { + return static_cast(input - 0.5f); + } else { + return static_cast(input + 0.5f); } - - return extended << shift; } - - // Rounding function that rounds a float to nearest integer (32-bit). In event - // of a tie (i.e. 7.5) it will be rounded to the nearest even number. - static int32_t floatRoundToNearestTiesToEven(float input) { - if (std::fabs(input - std::trunc(input)) == 0.5f) { - if (static_cast(input - 0.5f) % 2 == 0) { - return static_cast(input - 0.5f); - } else { - return static_cast(input + 0.5f); - } + // Otherwise round to nearest + return static_cast(std::round(input)); +} + +/** Calculate the corresponding NZCV values from select SVE instructions that + * set the First(N), None(Z), !Last(C) condition flags based on the predicate + * result, and the V flag to 0. */ +uint8_t getNZCVfromPred(std::array predResult, uint64_t VL_bits, + int byteCount) { + uint8_t N = (predResult[0] & 1); + uint8_t Z = 1; + // (int)(VL_bits - 1)/512 derives which block of 64-bits within the + // predicate register we're working in. 1ull << (VL_bits / 8) - byteCount) + // derives a 1 in the last position of the current predicate. Both + // dictated by vector length. + uint8_t C = !(predResult[(int)((VL_bits - 1) / 512)] & + 1ull << (((VL_bits / 8) - byteCount) % 64)); + for (int i = 0; i < (int)((VL_bits - 1) / 512) + 1; i++) { + if (predResult[i]) { + Z = 0; + break; } - // Otherwise round to nearest - return static_cast(std::round(input)); } - - /** Calculate the corresponding NZCV values from select SVE instructions that - * set the First(N), None(Z), !Last(C) condition flags based on the predicate - * result, and the V flag to 0. */ - static uint8_t getNZCVfromPred(std::array predResult, - uint64_t VL_bits, int byteCount) { - uint8_t N = (predResult[0] & 1); - uint8_t Z = 1; - // (int)(VL_bits - 1)/512 derives which block of 64-bits within the - // predicate register we're working in. 1ull << (VL_bits / 8) - byteCount) - // derives a 1 in the last position of the current predicate. Both - // dictated by vector length. - uint8_t C = !(predResult[(int)((VL_bits - 1) / 512)] & - 1ull << (((VL_bits / 8) - byteCount) % 64)); - for (int i = 0; i < (int)((VL_bits - 1) / 512) + 1; i++) { - if (predResult[i]) { - Z = 0; - break; - } + return nzcv(N, Z, C, 0); +} + +/** Multiply `a` and `b`, and return the high 64 bits of the result. + * https://stackoverflow.com/a/28904636 */ +uint64_t mulhi(uint64_t a, uint64_t b) { + uint64_t a_lo = (uint32_t)a; + uint64_t a_hi = a >> 32; + uint64_t b_lo = (uint32_t)b; + uint64_t b_hi = b >> 32; + + uint64_t a_x_b_hi = a_hi * b_hi; + uint64_t a_x_b_mid = a_hi * b_lo; + uint64_t b_x_a_mid = b_hi * a_lo; + uint64_t a_x_b_lo = a_lo * b_lo; + + uint64_t carry_bit = ((uint64_t)(uint32_t)a_x_b_mid + + (uint64_t)(uint32_t)b_x_a_mid + (a_x_b_lo >> 32)) >> + 32; + + uint64_t multhi = + a_x_b_hi + (a_x_b_mid >> 32) + (b_x_a_mid >> 32) + carry_bit; + + return multhi; +} + +/** Decode the instruction pattern from OperandStr. */ +uint16_t sveGetPattern(const std::string operandStr, const uint8_t esize, + const uint16_t VL_) { + const uint16_t elements = VL_ / esize; + const std::vector patterns = { + "pow2", "vl1", "vl2", "vl3", "vl4", "vl5", "vl6", "vl7", "vl8", + "vl16", "vl32", "vl64", "vl128", "vl256", "mul3", "mul4", "all"}; + + // If no pattern present in operandStr then same behaviour as ALL + std::string pattern = "all"; + for (uint8_t i = 0; i < patterns.size(); i++) { + if (operandStr.find(patterns[i]) != std::string::npos) { + pattern = patterns[i]; + // Don't break when pattern found as vl1 will be found in vl128 etc } - return nzcv(N, Z, C, 0); - } - - /** Multiply `a` and `b`, and return the high 64 bits of the result. - * https://stackoverflow.com/a/28904636 */ - static uint64_t mulhi(uint64_t a, uint64_t b) { - uint64_t a_lo = (uint32_t)a; - uint64_t a_hi = a >> 32; - uint64_t b_lo = (uint32_t)b; - uint64_t b_hi = b >> 32; - - uint64_t a_x_b_hi = a_hi * b_hi; - uint64_t a_x_b_mid = a_hi * b_lo; - uint64_t b_x_a_mid = b_hi * a_lo; - uint64_t a_x_b_lo = a_lo * b_lo; - - uint64_t carry_bit = ((uint64_t)(uint32_t)a_x_b_mid + - (uint64_t)(uint32_t)b_x_a_mid + (a_x_b_lo >> 32)) >> - 32; - - uint64_t multhi = - a_x_b_hi + (a_x_b_mid >> 32) + (b_x_a_mid >> 32) + carry_bit; - - return multhi; - } - - /** Returns a correctly formatted nzcv value. */ - static uint8_t nzcv(bool n, bool z, bool c, bool v) { - return (n << 3) | (z << 2) | (c << 1) | v; } - /** Decode the instruction pattern from OperandStr. */ - static uint16_t sveGetPattern(const std::string operandStr, - const uint8_t esize, const uint16_t VL_) { - const uint16_t elements = VL_ / esize; - const std::vector patterns = { - "pow2", "vl1", "vl2", "vl3", "vl4", "vl5", "vl6", "vl7", "vl8", - "vl16", "vl32", "vl64", "vl128", "vl256", "mul3", "mul4", "all"}; - - // If no pattern present in operandStr then same behaviour as ALL - std::string pattern = "all"; - for (uint8_t i = 0; i < patterns.size(); i++) { - if (operandStr.find(patterns[i]) != std::string::npos) { - pattern = patterns[i]; - // Don't break when pattern found as vl1 will be found in vl128 etc - } + if (pattern == "all") + return elements; + else if (pattern == "pow2") { + int n = 1; + while (elements >= std::pow(2, n)) { + n = n + 1; } + return std::pow(2, n - 1); + } else if (pattern == "vl1") + return (elements >= 1) ? 1 : 0; + else if (pattern == "vl2") + return (elements >= 2) ? 2 : 0; + else if (pattern == "vl3") + return (elements >= 3) ? 3 : 0; + else if (pattern == "vl4") + return (elements >= 4) ? 4 : 0; + else if (pattern == "vl5") + return (elements >= 5) ? 5 : 0; + else if (pattern == "vl6") + return (elements >= 6) ? 6 : 0; + else if (pattern == "vl7") + return (elements >= 7) ? 7 : 0; + else if (pattern == "vl8") + return (elements >= 8) ? 8 : 0; + else if (pattern == "vl16") + return (elements >= 16) ? 16 : 0; + else if (pattern == "vl32") + return (elements >= 32) ? 32 : 0; + else if (pattern == "vl64") + return (elements >= 64) ? 64 : 0; + else if (pattern == "vl128") + return (elements >= 128) ? 128 : 0; + else if (pattern == "vl256") + return (elements >= 256) ? 256 : 0; + else if (pattern == "mul4") + return elements - (elements % 4); + else if (pattern == "mul3") + return elements - (elements % 3); + + return 0; +} - if (pattern == "all") - return elements; - else if (pattern == "pow2") { - int n = 1; - while (elements >= std::pow(2, n)) { - n = n + 1; - } - return std::pow(2, n - 1); - } else if (pattern == "vl1") - return (elements >= 1) ? 1 : 0; - else if (pattern == "vl2") - return (elements >= 2) ? 2 : 0; - else if (pattern == "vl3") - return (elements >= 3) ? 3 : 0; - else if (pattern == "vl4") - return (elements >= 4) ? 4 : 0; - else if (pattern == "vl5") - return (elements >= 5) ? 5 : 0; - else if (pattern == "vl6") - return (elements >= 6) ? 6 : 0; - else if (pattern == "vl7") - return (elements >= 7) ? 7 : 0; - else if (pattern == "vl8") - return (elements >= 8) ? 8 : 0; - else if (pattern == "vl16") - return (elements >= 16) ? 16 : 0; - else if (pattern == "vl32") - return (elements >= 32) ? 32 : 0; - else if (pattern == "vl64") - return (elements >= 64) ? 64 : 0; - else if (pattern == "vl128") - return (elements >= 128) ? 128 : 0; - else if (pattern == "vl256") - return (elements >= 256) ? 256 : 0; - else if (pattern == "mul4") - return elements - (elements % 4); - else if (pattern == "mul3") - return elements - (elements % 3); - - return 0; - } -}; } // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/bitmanip.hh b/src/include/simeng/arch/aarch64/helpers/bitmanip.hh index 1316e5ab1f..07adc9c73c 100644 --- a/src/include/simeng/arch/aarch64/helpers/bitmanip.hh +++ b/src/include/simeng/arch/aarch64/helpers/bitmanip.hh @@ -5,79 +5,76 @@ namespace simeng { namespace arch { namespace aarch64 { -class bitmanipHelp { - public: - /** Helper function for instructions with the format `bfm rd, rn, #immr, - * #imms`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type T. */ - template - static T bfm_2imms(std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - bool signExtend, bool zeroDestReg) { - uint8_t r = metadata.operands[2].imm; - uint8_t s = metadata.operands[3].imm; - T dest, source; - if (!zeroDestReg) { - dest = operands[0].get(); - source = operands[1].get(); - } else { - dest = 0; - source = operands[0].get(); - } - return AuxFunc::bitfieldManipulate(source, dest, r, s, signExtend); - } - /** Helper function for instructions with the format `extr rd, rn, rm, #lsb`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type T. */ - template - static T extrLSB_registers( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - T n = operands[0].get(); - T m = operands[1].get(); - int64_t lsb = metadata.operands[3].imm; - if (lsb == 0) return m; - return (m >> lsb) | (n << ((sizeof(T) * 8) - lsb)); +/** Helper function for instructions with the format `bfm rd, rn, #immr, + * #imms`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type T. */ +template +T bfm_2imms(std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + bool signExtend, bool zeroDestReg) { + uint8_t r = metadata.operands[2].imm; + uint8_t s = metadata.operands[3].imm; + T dest, source; + if (!zeroDestReg) { + dest = operands[0].get(); + source = operands[1].get(); + } else { + dest = 0; + source = operands[0].get(); } + return bitfieldManipulate(source, dest, r, s, signExtend); +} - /** Helper function for instructions with the format `rbit rd, rn`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type uint64_t. */ - template - static uint64_t rbit( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - int width = sizeof(T) * 8; +/** Helper function for instructions with the format `extr rd, rn, rm, #lsb`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type T. */ +template +T extrLSB_registers( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + T n = operands[0].get(); + T m = operands[1].get(); + int64_t lsb = metadata.operands[3].imm; + if (lsb == 0) return m; + return (m >> lsb) | (n << ((sizeof(T) * 8) - lsb)); +} - static uint8_t reversedNibble[16] = { - 0b0000, 0b1000, 0b0100, 0b1100, 0b0010, 0b1010, 0b0110, 0b1110, - 0b0001, 0b1001, 0b0101, 0b1101, 0b0011, 0b1011, 0b0111, 0b1111}; +/** Helper function for instructions with the format `rbit rd, rn`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type uint64_t. */ +template +uint64_t rbit(std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + int width = sizeof(T) * 8; - uint64_t n = operands[0].get(); - uint64_t result = 0; - for (int i = 0; i < width; i += 4) { - result <<= 4; - result |= reversedNibble[n & 0b1111]; - n >>= 4; - } - return result; - } + uint8_t reversedNibble[16] = {0b0000, 0b1000, 0b0100, 0b1100, 0b0010, 0b1010, + 0b0110, 0b1110, 0b0001, 0b1001, 0b0101, 0b1101, + 0b0011, 0b1011, 0b0111, 0b1111}; - /** Helper function for instructions with the format `rev rd, rn`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns array of uint8_t with number of elements = bytes in T. */ - template - static std::array rev( - std::vector& operands) { - auto bytes = operands[0].getAsVector(); - std::array reversed; - // Copy `bytes` backwards onto `reversed` - std::copy(bytes, bytes + sizeof(T), std::rbegin(reversed)); - return reversed; + uint64_t n = operands[0].get(); + uint64_t result = 0; + for (int i = 0; i < width; i += 4) { + result <<= 4; + result |= reversedNibble[n & 0b1111]; + n >>= 4; } -}; + return result; +} + +/** Helper function for instructions with the format `rev rd, rn`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns array of uint8_t with number of elements = bytes in T. */ +template +std::array rev(std::vector& operands) { + auto bytes = operands[0].getAsVector(); + std::array reversed; + // Copy `bytes` backwards onto `reversed` + std::copy(bytes, bytes + sizeof(T), std::rbegin(reversed)); + return reversed; +} + } // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/comparison.hh b/src/include/simeng/arch/aarch64/helpers/comparison.hh index 04ea68ee1a..d2965ab027 100644 --- a/src/include/simeng/arch/aarch64/helpers/comparison.hh +++ b/src/include/simeng/arch/aarch64/helpers/comparison.hh @@ -5,23 +5,20 @@ namespace simeng { namespace arch { namespace aarch64 { -class comparisonHelp { - public: - /** Helper function for instructions with the format `orr rd, rn, rm {shift - * #amount}`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type T. */ - template - static T orrShift_3ops( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - const T n = operands[0].get(); - const T m = - shiftValue(operands[1].get(), metadata.operands[2].shift.type, - metadata.operands[2].shift.value); - return (n | m); - } -}; + +/** Helper function for instructions with the format `orr rd, rn, rm {shift + * #amount}`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type T. */ +template +T orrShift_3ops(std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + const T n = operands[0].get(); + const T m = shiftValue(operands[1].get(), metadata.operands[2].shift.type, + metadata.operands[2].shift.value); + return (n | m); +} + } // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/conditional.hh b/src/include/simeng/arch/aarch64/helpers/conditional.hh index 4cdfce4061..e45a12f025 100644 --- a/src/include/simeng/arch/aarch64/helpers/conditional.hh +++ b/src/include/simeng/arch/aarch64/helpers/conditional.hh @@ -5,114 +5,109 @@ namespace simeng { namespace arch { namespace aarch64 { -class conditionalHelp { - public: - /** Helper function for instructions with the format `ccmn rn, #imm #nzcv, - * cc`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type uint8_t. */ - template - static uint8_t ccmn_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - if (AuxFunc::conditionHolds(metadata.cc, operands[0].get())) { - uint8_t nzcv; - std::tie(std::ignore, nzcv) = AuxFunc::addWithCarry( - operands[1].get(), static_cast(metadata.operands[1].imm), 0); - return nzcv; - } - return static_cast(metadata.operands[2].imm); + +/** Helper function for instructions with the format `ccmn rn, #imm #nzcv, + * cc`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type uint8_t. */ +template +uint8_t ccmn_imm(std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + if (conditionHolds(metadata.cc, operands[0].get())) { + uint8_t nzcv; + std::tie(std::ignore, nzcv) = addWithCarry( + operands[1].get(), static_cast(metadata.operands[1].imm), 0); + return nzcv; } + return static_cast(metadata.operands[2].imm); +} - /** Helper function for instructions with the format `ccmp rn, #imm #nzcv, - * cc`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type uint8_t. */ - template - static uint8_t ccmp_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - if (AuxFunc::conditionHolds(metadata.cc, operands[0].get())) { - uint8_t nzcv; - std::tie(std::ignore, nzcv) = AuxFunc::addWithCarry( - operands[1].get(), ~static_cast(metadata.operands[1].imm), 1); - return nzcv; - } - return static_cast(metadata.operands[2].imm); +/** Helper function for instructions with the format `ccmp rn, #imm #nzcv, + * cc`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type uint8_t. */ +template +uint8_t ccmp_imm(std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + if (conditionHolds(metadata.cc, operands[0].get())) { + uint8_t nzcv; + std::tie(std::ignore, nzcv) = addWithCarry( + operands[1].get(), ~static_cast(metadata.operands[1].imm), 1); + return nzcv; } + return static_cast(metadata.operands[2].imm); +} - /** Helper function for instructions with the format `ccmp rn, rm, #nzcv, - * cc`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type uint8_t. */ - template - static uint8_t ccmp_reg( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - if (AuxFunc::conditionHolds(metadata.cc, operands[0].get())) { - uint8_t nzcv; - std::tie(std::ignore, nzcv) = - AuxFunc::addWithCarry(operands[1].get(), ~operands[2].get(), 1); - return nzcv; - } - return static_cast(metadata.operands[2].imm); +/** Helper function for instructions with the format `ccmp rn, rm, #nzcv, + * cc`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type uint8_t. */ +template +uint8_t ccmp_reg(std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + if (conditionHolds(metadata.cc, operands[0].get())) { + uint8_t nzcv; + std::tie(std::ignore, nzcv) = + addWithCarry(operands[1].get(), ~operands[2].get(), 1); + return nzcv; } + return static_cast(metadata.operands[2].imm); +} - /** Helper function for instructions with the format `cb rn, #imm`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns tuple of type [bool branch taken, uint64_t address]. */ - template - static std::tuple condBranch_cmpToZero( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - uint64_t instructionAddress, std::function func) { - bool branchTaken; - uint64_t branchAddress; - if (func(operands[0].get())) { - branchTaken = true; - branchAddress = instructionAddress + metadata.operands[1].imm; - } else { - branchTaken = false; - branchAddress = instructionAddress + 4; - } - return {branchTaken, branchAddress}; +/** Helper function for instructions with the format `cb rn, #imm`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns tuple of type [bool branch taken, uint64_t address]. */ +template +std::tuple condBranch_cmpToZero( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + uint64_t instructionAddress, std::function func) { + bool branchTaken; + uint64_t branchAddress; + if (func(operands[0].get())) { + branchTaken = true; + branchAddress = instructionAddress + metadata.operands[1].imm; + } else { + branchTaken = false; + branchAddress = instructionAddress + 4; } + return {branchTaken, branchAddress}; +} - /** Helper function for instructions with the format `cs - * rd, rn, rm, cc`. - * T represents the type of operands (e.g. for xd, T = uint64_t). - * Returns single value of type T. */ - template - static T cs_4ops(std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - std::function func) { - if (AuxFunc::conditionHolds(metadata.cc, operands[0].get())) { - return operands[1].get(); - } - return func(operands[2].get()); +/** Helper function for instructions with the format `cs + * rd, rn, rm, cc`. + * T represents the type of operands (e.g. for xd, T = uint64_t). + * Returns single value of type T. */ +template +T cs_4ops(std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + std::function func) { + if (conditionHolds(metadata.cc, operands[0].get())) { + return operands[1].get(); } + return func(operands[2].get()); +} - /** Helper function for instructions with the format `tb rn, #imm, - * label`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns tuple of type [bool branch taken, uint64_t address]. */ - template - static std::tuple tbnz_tbz( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - uint64_t instructionAddress, bool isNZ) { - bool branchTaken; - uint64_t branchAddress = instructionAddress; - if (operands[0].get() & - (static_cast(1) << metadata.operands[1].imm)) { - branchTaken = isNZ; - } else { - branchTaken = !isNZ; - } - branchAddress += branchTaken ? metadata.operands[2].imm : 4; - return {branchTaken, branchAddress}; +/** Helper function for instructions with the format `tb rn, #imm, + * label`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns tuple of type [bool branch taken, uint64_t address]. */ +template +std::tuple tbnz_tbz( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + uint64_t instructionAddress, bool isNZ) { + bool branchTaken; + uint64_t branchAddress = instructionAddress; + if (operands[0].get() & (static_cast(1) << metadata.operands[1].imm)) { + branchTaken = isNZ; + } else { + branchTaken = !isNZ; } -}; + branchAddress += branchTaken ? metadata.operands[2].imm : 4; + return {branchTaken, branchAddress}; +} + } // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/divide.hh b/src/include/simeng/arch/aarch64/helpers/divide.hh index f4e226a0b6..b67d08de6f 100644 --- a/src/include/simeng/arch/aarch64/helpers/divide.hh +++ b/src/include/simeng/arch/aarch64/helpers/divide.hh @@ -5,19 +5,18 @@ namespace simeng { namespace arch { namespace aarch64 { -class divideHelp { - public: - /** Helper function for instructions with the format `div rd, rn, rm`. - * T represents the type of operands (e.g. for xd, T = uint64_t). - * Returns single value of type T. */ - template - static T div_3ops(std::vector& operands) { - const T n = operands[0].get(); - const T m = operands[1].get(); - if (m == 0) return 0; - return (n / m); - } -}; + +/** Helper function for instructions with the format `div rd, rn, rm`. + * T represents the type of operands (e.g. for xd, T = uint64_t). + * Returns single value of type T. */ +template +T div_3ops(std::vector& operands) { + const T n = operands[0].get(); + const T m = operands[1].get(); + if (m == 0) return 0; + return (n / m); +} + } // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/float.hh b/src/include/simeng/arch/aarch64/helpers/float.hh index d48f1a7704..59c0912c6a 100644 --- a/src/include/simeng/arch/aarch64/helpers/float.hh +++ b/src/include/simeng/arch/aarch64/helpers/float.hh @@ -7,178 +7,176 @@ namespace simeng { namespace arch { namespace aarch64 { -class floatHelp { - public: - /** Helper function for instructions with the format `fabd rd, rn, rm`. - * T represents the type of operands (e.g. for sd T = float). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue fabd_3ops(std::vector& operands) { - const T n = operands[0].get(); - const T m = operands[1].get(); - return {std::fabs(n - m), 256}; - } - - /** Helper function for instructions with the format `fabs rd, rn`. - * T represents the type of operands (e.g. for sd T = float). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue fabs_2ops(std::vector& operands) { - const T n = operands[0].get(); - return {std::fabs(n), 256}; - } - - /** Helper function for instructions with the format `fccmp rn, rm, #nzcv, - * cc`. - * T represents the type of operands (e.g. for sn T = float). - * Returns single value of type uint8_t. */ - template - static uint8_t fccmp( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - if (AuxFunc::conditionHolds(metadata.cc, operands[0].get())) { - T a = operands[1].get(); - T b = operands[2].get(); - if (std::isnan(a) || std::isnan(b)) { - // TODO: Raise exception if NaNs are signalling or fcmpe - return AuxFunc::nzcv(false, false, true, true); - } else if (a == b) { - return AuxFunc::nzcv(false, true, true, false); - } else if (a < b) { - return AuxFunc::nzcv(true, false, false, false); - } else { - return AuxFunc::nzcv(false, false, true, false); - } - } - return static_cast(metadata.operands[2].imm); - } - /** Helper function for instructions with the format `fcmp rn, `. - * T represents the type of operands (e.g. for sn T = float). - * Returns single value of type uint8_t. */ - template - static uint8_t fcmp(std::vector& operands, bool useImm) { - T a = operands[0].get(); - // Dont need to fetch imm as will always be 0.0 - T b = useImm ? 0 : operands[1].get(); +/** Helper function for instructions with the format `fabd rd, rn, rm`. + * T represents the type of operands (e.g. for sd T = float). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue fabd_3ops(std::vector& operands) { + const T n = operands[0].get(); + const T m = operands[1].get(); + return {std::fabs(n - m), 256}; +} + +/** Helper function for instructions with the format `fabs rd, rn`. + * T represents the type of operands (e.g. for sd T = float). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue fabs_2ops(std::vector& operands) { + const T n = operands[0].get(); + return {std::fabs(n), 256}; +} + +/** Helper function for instructions with the format `fccmp rn, rm, #nzcv, + * cc`. + * T represents the type of operands (e.g. for sn T = float). + * Returns single value of type uint8_t. */ +template +uint8_t fccmp(std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + if (conditionHolds(metadata.cc, operands[0].get())) { + T a = operands[1].get(); + T b = operands[2].get(); if (std::isnan(a) || std::isnan(b)) { // TODO: Raise exception if NaNs are signalling or fcmpe - return AuxFunc::nzcv(false, false, true, true); + return nzcv(false, false, true, true); } else if (a == b) { - return AuxFunc::nzcv(false, true, true, false); + return nzcv(false, true, true, false); } else if (a < b) { - return AuxFunc::nzcv(true, false, false, false); + return nzcv(true, false, false, false); + } else { + return nzcv(false, false, true, false); } - return AuxFunc::nzcv(false, false, true, false); } - - /** Helper function for instructions with the format `fmaxnm rd, rn, rm`. - * T represents the type of operands (e.g. for sd T = float). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue fmaxnm_3ops(std::vector& operands) { - const T n = operands[0].get(); - const T m = operands[1].get(); - return {std::fmax(n, m), 256}; + return static_cast(metadata.operands[2].imm); +} + +/** Helper function for instructions with the format `fcmp rn, `. + * T represents the type of operands (e.g. for sn T = float). + * Returns single value of type uint8_t. */ +template +uint8_t fcmp(std::vector& operands, bool useImm) { + T a = operands[0].get(); + // Dont need to fetch imm as will always be 0.0 + T b = useImm ? 0 : operands[1].get(); + if (std::isnan(a) || std::isnan(b)) { + // TODO: Raise exception if NaNs are signalling or fcmpe + return nzcv(false, false, true, true); + } else if (a == b) { + return nzcv(false, true, true, false); + } else if (a < b) { + return nzcv(true, false, false, false); } - - /** Helper function for instructions with the format `fmaxnm rd, rn, rm`. - * T represents the type of operands (e.g. for sd T = float). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue fminnm_3ops(std::vector& operands) { - const T n = operands[0].get(); - const T m = operands[1].get(); - return {std::fmin(n, m), 256}; - } - - /** Helper function for NEON instructions with the format `fnmsub rd, rn, rm, - * ra`. - * T represents the type of operands (e.g. for sd T = float). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue fnmsub_4ops(std::vector& operands) { - T n = operands[0].get(); - T m = operands[1].get(); - T a = operands[2].get(); - return {std::fma(n, m, -a), 256}; - } - - /** Helper function for NEON instructions with the format `fnmadd rd, rn, rm, - * ra`. - * T represents the type of operands (e.g. for sd T = float). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue fnmadd_4ops(std::vector& operands) { - T n = operands[0].get(); - T m = operands[1].get(); - T a = operands[2].get(); - return {std::fma(-n, m, -a), 256}; - } - - /** Helper function for NEON instructions with the format `frintp rd, rn`. - * T represents the type of operands (e.g. for dd T = double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue frintpScalar_2ops(std::vector& operands) { - T n = operands[0].get(); - - // Merge always = false due to assumption that FPCR.nep bit = 0 - // (In SimEng the value of this register is not manually set) - T out = 0; - // Input of Infinity or 0 gives output of the same sign - if (n == 0.0 || n == -0.0 || n == INFINITY || n == -INFINITY) - out = n; - else - out = std::ceil(n); - - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `scvtf rd, - * n`, #fbits. - * D represents the destination vector register type (e.g. for dd, D = - * double). - * N represents the source vector register type (e.g. for wn, N = int32_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue scvtf_FixedPoint( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - N n = operands[0].get(); - const uint8_t fbits = metadata.operands[2].imm; - - D out = static_cast(n) / std::pow(2, fbits); - - return {out, 256}; + return nzcv(false, false, true, false); +} + +/** Helper function for instructions with the format `fmaxnm rd, rn, rm`. + * T represents the type of operands (e.g. for sd T = float). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue fmaxnm_3ops(std::vector& operands) { + const T n = operands[0].get(); + const T m = operands[1].get(); + return {std::fmax(n, m), 256}; +} + +/** Helper function for instructions with the format `fmaxnm rd, rn, rm`. + * T represents the type of operands (e.g. for sd T = float). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue fminnm_3ops(std::vector& operands) { + const T n = operands[0].get(); + const T m = operands[1].get(); + return {std::fmin(n, m), 256}; +} + +/** Helper function for NEON instructions with the format `fnmsub rd, rn, rm, + * ra`. + * T represents the type of operands (e.g. for sd T = float). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue fnmsub_4ops(std::vector& operands) { + T n = operands[0].get(); + T m = operands[1].get(); + T a = operands[2].get(); + return {std::fma(n, m, -a), 256}; +} + +/** Helper function for NEON instructions with the format `fnmadd rd, rn, rm, + * ra`. + * T represents the type of operands (e.g. for sd T = float). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue fnmadd_4ops(std::vector& operands) { + T n = operands[0].get(); + T m = operands[1].get(); + T a = operands[2].get(); + return {std::fma(-n, m, -a), 256}; +} + +/** Helper function for NEON instructions with the format `frintp rd, rn`. + * T represents the type of operands (e.g. for dd T = double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue frintpScalar_2ops(std::vector& operands) { + T n = operands[0].get(); + + // Merge always = false due to assumption that FPCR.nep bit = 0 + // (In SimEng the value of this register is not manually set) + T out = 0; + // Input of Infinity or 0 gives output of the same sign + if (n == 0.0 || n == -0.0 || n == INFINITY || n == -INFINITY) + out = n; + else + out = std::ceil(n); + + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `scvtf rd, + * n`, #fbits. + * D represents the destination vector register type (e.g. for dd, D = + * double). + * N represents the source vector register type (e.g. for wn, N = int32_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue scvtf_FixedPoint( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + N n = operands[0].get(); + const uint8_t fbits = metadata.operands[2].imm; + + D out = static_cast(n) / std::pow(2, fbits); + + return {out, 256}; +} + +/** Helper function for NEON instructions with the format fcvtzu rd, rn. + * D represents the destination register type (e.g. for Xd, D = uint64_t). + * N represents the source register type (e.g. for Sd, N = float). + * Returns single value of type D. */ +template +D fcvtzu_integer(std::vector& operands) { + N input = operands[0].get(); + D result = static_cast(0); + + // Check for nan and less than 0 + if (!std::isnan(input) && (input > static_cast(0))) { + if (std::isinf(input)) { + // Account for Infinity + result = std::numeric_limits::max(); + } else if (input > std::numeric_limits::max()) { + // Account for the source value being larger than the + // destination register can support + result = std::numeric_limits::max(); + } else { + result = static_cast(std::trunc(input)); + } } - /** Helper function for NEON instructions with the format fcvtzu rd, rn. - * D represents the destination register type (e.g. for Xd, D = uint64_t). - * N represents the source register type (e.g. for Sd, N = float). - * Returns single value of type D. */ - template - static D fcvtzu_integer(std::vector& operands) { - N input = operands[0].get(); - D result = static_cast(0); - - // Check for nan and less than 0 - if (!std::isnan(input) && (input > static_cast(0))) { - if (std::isinf(input)) { - // Account for Infinity - result = std::numeric_limits::max(); - } else if (input > std::numeric_limits::max()) { - // Account for the source value being larger than the - // destination register can support - result = std::numeric_limits::max(); - } else { - result = static_cast(std::trunc(input)); - } - } + return result; +} - return result; - } -}; } // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/load.hh b/src/include/simeng/arch/aarch64/helpers/load.hh index 08f68d726a..aac46622bf 100644 --- a/src/include/simeng/arch/aarch64/helpers/load.hh +++ b/src/include/simeng/arch/aarch64/helpers/load.hh @@ -4,11 +4,6 @@ namespace simeng { namespace arch { -namespace aarch64 { -class loadHelp { - public: - static void tempFunc() { return; } -}; -} // namespace aarch64 +namespace aarch64 {} // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/logical.hh b/src/include/simeng/arch/aarch64/helpers/logical.hh index 154bf2e59a..d81c449522 100644 --- a/src/include/simeng/arch/aarch64/helpers/logical.hh +++ b/src/include/simeng/arch/aarch64/helpers/logical.hh @@ -5,105 +5,100 @@ namespace simeng { namespace arch { namespace aarch64 { -class logicalHelp { - public: - /** Helper function for instructions with the format `asrv rd, rn, rm`. - * T represents the type of operands (e.g. for xn, T = int64_t). - * Returns single value of type T. */ - template - static T asrv_3gpr(std::vector& operands) { - const T n = operands[0].get(); - const T m = operands[1].get::type>(); - return n >> (m % (sizeof(T) * 8)); - } - /** Helper function for instructions with the format `bic rd, rn, rm{, shift - * #amount}`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns tuple of [resulting value, nzcv]. */ - template - static std::tuple bicShift_3ops( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - bool calcNZCV) { - const T x = operands[0].get(); - const T y = - ~shiftValue(operands[1].get(), metadata.operands[2].shift.type, - metadata.operands[2].shift.value); - T result = x & y; - bool n = sizeof(T) == 8 ? (static_cast(result) < 0) - : (static_cast(result) < 0); - bool z = (result == 0); - uint8_t nzcv = calcNZCV ? AuxFunc::nzcv(n, z, false, false) : 0; - return {result, nzcv}; - } +/** Helper function for instructions with the format `asrv rd, rn, rm`. + * T represents the type of operands (e.g. for xn, T = int64_t). + * Returns single value of type T. */ +template +T asrv_3gpr(std::vector& operands) { + const T n = operands[0].get(); + const T m = operands[1].get::type>(); + return n >> (m % (sizeof(T) * 8)); +} - /** Helper function for instructions with the format ` rd, rn, - * #imm`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns tuple of [resulting value, nzcv]. */ - template - static std::tuple logicOp_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, bool calcNZCV, - std::function func) { - const T n = operands[0].get(); - const T m = static_cast(metadata.operands[2].imm); - T result = func(n, m); - uint8_t nzcv = calcNZCV ? AuxFunc::nzcv(result >> ((sizeof(T) * 8) - 1), - result == 0, false, false) - : 0; - return {result, nzcv}; - } +/** Helper function for instructions with the format `bic rd, rn, rm{, shift + * #amount}`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns tuple of [resulting value, nzcv]. */ +template +std::tuple bicShift_3ops( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, bool calcNZCV) { + const T x = operands[0].get(); + const T y = ~shiftValue(operands[1].get(), metadata.operands[2].shift.type, + metadata.operands[2].shift.value); + T result = x & y; + bool n = sizeof(T) == 8 ? (static_cast(result) < 0) + : (static_cast(result) < 0); + bool z = (result == 0); + uint8_t nzcv_ = calcNZCV ? nzcv(n, z, false, false) : 0; + return {result, nzcv_}; +} - /** Helper function for instructions with the format ` rd, rn, - * rm{, shift #amount}`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns tuple of [resulting value, nzcv]. */ - template - static std::tuple logicOpShift_3ops( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, bool calcNZCV, - std::function func) { - const T n = operands[0].get(); - const T m = - shiftValue(operands[1].get(), metadata.operands[2].shift.type, - metadata.operands[2].shift.value); - T result = func(n, m); - uint8_t nzcv = calcNZCV ? AuxFunc::nzcv(result >> ((sizeof(T) * 8) - 1), - result == 0, false, false) - : 0; - return {result, nzcv}; - } +/** Helper function for instructions with the format ` rd, rn, + * #imm`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns tuple of [resulting value, nzcv]. */ +template +std::tuple logicOp_imm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, bool calcNZCV, + std::function func) { + const T n = operands[0].get(); + const T m = static_cast(metadata.operands[2].imm); + T result = func(n, m); + uint8_t nzcv_ = calcNZCV ? nzcv(result >> ((sizeof(T) * 8) - 1), result == 0, + false, false) + : 0; + return {result, nzcv_}; +} - /** Helper function for instructions with the format `lsv rd, rn, rm`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type uint64_t. */ - template - static uint64_t logicalShiftLR_3ops(std::vector& operands, - bool isLSL) { - const T n = operands[0].get(); - const T m = operands[1].get() & ((sizeof(T) * 8) - 1); - uint64_t result = static_cast(isLSL ? n << m : n >> m); - return result; - } +/** Helper function for instructions with the format ` rd, rn, + * rm{, shift #amount}`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns tuple of [resulting value, nzcv]. */ +template +std::tuple logicOpShift_3ops( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, bool calcNZCV, + std::function func) { + const T n = operands[0].get(); + const T m = shiftValue(operands[1].get(), metadata.operands[2].shift.type, + metadata.operands[2].shift.value); + T result = func(n, m); + uint8_t nzcv_ = calcNZCV ? nzcv(result >> ((sizeof(T) * 8) - 1), result == 0, + false, false) + : 0; + return {result, nzcv_}; +} - /** Helper function for instructions with the format `rorv rd, rn, rm`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type T. */ - template - static T rorv_3ops(std::vector& operands) { - const T n = operands[0].get(); - const T m = operands[1].get(); +/** Helper function for instructions with the format `lsv rd, rn, rm`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type uint64_t. */ +template +uint64_t logicalShiftLR_3ops(std::vector& operands, bool isLSL) { + const T n = operands[0].get(); + const T m = operands[1].get() & ((sizeof(T) * 8) - 1); + uint64_t result = static_cast(isLSL ? n << m : n >> m); + return result; +} - const uint16_t data_size = sizeof(T) * 8; - T remainder = m % data_size; +/** Helper function for instructions with the format `rorv rd, rn, rm`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type T. */ +template +T rorv_3ops(std::vector& operands) { + const T n = operands[0].get(); + const T m = operands[1].get(); + + const uint16_t data_size = sizeof(T) * 8; + T remainder = m % data_size; + + // Check if any rotation done at all + if (remainder == 0) return n; + return (n >> remainder) + (n << (data_size - remainder)); +} - // Check if any rotation done at all - if (remainder == 0) return n; - return (n >> remainder) + (n << (data_size - remainder)); - } -}; } // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/multiply.hh b/src/include/simeng/arch/aarch64/helpers/multiply.hh index d5466bac04..72193ed966 100644 --- a/src/include/simeng/arch/aarch64/helpers/multiply.hh +++ b/src/include/simeng/arch/aarch64/helpers/multiply.hh @@ -5,54 +5,53 @@ namespace simeng { namespace arch { namespace aarch64 { -class multiplyHelp { - public: - /** Helper function for instructions with the format `madd rd, rn, rm, ra`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type T. */ - template - static T madd_4ops(std::vector& operands) { - const T n = operands[0].get(); - const T m = operands[1].get(); - const T a = operands[2].get(); - return (a + (n * m)); - } - /** Helper function for instructions with the format `maddl xd, wn, wm, xa`. - * D represents the type of the destination register (either int64_t or - * uint64_t). - * N represents the type of the first source register (either - * int32_t or uint32_t). - * Returns single value of type D. */ - template - static D maddl_4ops(std::vector& operands) { - const D n = static_cast(operands[0].get()); - const D m = static_cast(operands[1].get()); - const D a = operands[2].get(); - return (a + (n * m)); - } +/** Helper function for instructions with the format `madd rd, rn, rm, ra`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type T. */ +template +T madd_4ops(std::vector& operands) { + const T n = operands[0].get(); + const T m = operands[1].get(); + const T a = operands[2].get(); + return (a + (n * m)); +} - /** Helper function for instructions with the format `mul rd, rn, rm`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type T. */ - template - static T mul_3ops(std::vector& operands) { - const T n = operands[0].get(); - const T m = operands[1].get(); - return (n * m); - } +/** Helper function for instructions with the format `maddl xd, wn, wm, xa`. + * D represents the type of the destination register (either int64_t or + * uint64_t). + * N represents the type of the first source register (either + * int32_t or uint32_t). + * Returns single value of type D. */ +template +D maddl_4ops(std::vector& operands) { + const D n = static_cast(operands[0].get()); + const D m = static_cast(operands[1].get()); + const D a = operands[2].get(); + return (a + (n * m)); +} + +/** Helper function for instructions with the format `mul rd, rn, rm`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type T. */ +template +T mul_3ops(std::vector& operands) { + const T n = operands[0].get(); + const T m = operands[1].get(); + return (n * m); +} + +/** Helper function for instructions with the format `msub rd, rn, rm, ra`. + * T represents the type of operands (e.g. for xn, T = uint64_t). + * Returns single value of type T. */ +template +T msub_4ops(std::vector& operands) { + const T n = operands[0].get(); + const T m = operands[1].get(); + const T a = operands[2].get(); + return (a - (n * m)); +} - /** Helper function for instructions with the format `msub rd, rn, rm, ra`. - * T represents the type of operands (e.g. for xn, T = uint64_t). - * Returns single value of type T. */ - template - static T msub_4ops(std::vector& operands) { - const T n = operands[0].get(); - const T m = operands[1].get(); - const T a = operands[2].get(); - return (a - (n * m)); - } -}; } // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/neon.hh b/src/include/simeng/arch/aarch64/helpers/neon.hh index c9382ff954..c4978fbc09 100644 --- a/src/include/simeng/arch/aarch64/helpers/neon.hh +++ b/src/include/simeng/arch/aarch64/helpers/neon.hh @@ -5,956 +5,945 @@ namespace simeng { namespace arch { namespace aarch64 { -class neonHelp { - public: - /** Helper function for NEON instructions with the format `add vd, vn, vm`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted Register Value. */ - template - static RegisterValue vecAdd_3ops(std::vector& operands) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = static_cast(n[i] + m[i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `addp vd, vn, vm`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted Register Value. */ - template - static RegisterValue vecAddp_3ops(std::vector& operands) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - T out[16 / sizeof(T)] = {0}; - uint8_t offset = I / 2; - for (int i = 0; i < I; i++) { - if (i < offset) { - out[i] = static_cast(n[i * 2] + n[(i * 2) + 1]); - } else { - out[i] = - static_cast(m[(i - offset) * 2] + m[((i - offset) * 2) + 1]); - } - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `bic vd, vn, vm`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted Register Value. */ - template - static RegisterValue vecBic_3ops(std::vector& operands) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = n[i] & ~m[i]; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `bic vd, #imm{, lsl - * #shift}`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted Register Value. */ - template - static RegisterValue vecBicShift_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - const T* d = operands[0].getAsVector(); - T imm = ~shiftValue(static_cast(metadata.operands[1].imm), - metadata.operands[1].shift.type, - metadata.operands[1].shift.value); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = d[i] & imm; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `bi vd, vn, - * vm`. - * I represents the number of elements in the output array to be updated - * (e.g. for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecBitwiseInsert(std::vector& operands, - bool isBif) { - const uint64_t* d = operands[0].getAsVector(); - const uint64_t* n = operands[1].getAsVector(); - const uint64_t* m = operands[2].getAsVector(); - uint64_t out[2] = {0}; - for (int i = 0; i < (I / 8); i++) { - out[i] = isBif ? (d[i] & m[i]) | (n[i] & ~m[i]) - : (d[i] & ~m[i]) | (n[i] & m[i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `bsl vd, vn, - * vm`. - * I represents the number of elements in the output array to be updated - * (e.g. for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecBsl(std::vector& operands) { - const uint64_t* d = operands[0].getAsVector(); - const uint64_t* n = operands[1].getAsVector(); - const uint64_t* m = operands[2].getAsVector(); - uint64_t out[2] = {0}; - for (int i = 0; i < (I / 8); i++) { - out[i] = (d[i] & n[i]) | (~d[i] & m[i]); - } - return {out, 256}; - } - - /** Helper function for instructions with the format `cm vd, vn, `. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecCompare(std::vector& operands, - bool cmpToZero, - std::function func) { - const T* n = operands[0].getAsVector(); - const T* m; - if (!cmpToZero) m = operands[1].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = func(n[i], cmpToZero ? static_cast(0) : m[i]) - ? static_cast(-1) - : 0; - } - return {out, 256}; - } - - /** Helper function for instructions with the format `cnt vd, vn`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecCountPerByte(std::vector& operands) { - const uint8_t* n = operands[0].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - for (int j = 0; j < (sizeof(T) * 8); j++) { - // Move queried bit to LSB and extract via an AND operator - out[i] += ((n[i] >> j) & 1); - } - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `dup , - * `. - * T represents the type of operands (e.g. for vd.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecDup_gprOrIndex( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, bool useGpr) { - int index = useGpr ? 0 : metadata.operands[1].vector_index; - T element = - useGpr ? operands[0].get() : operands[0].getAsVector()[index]; - T out[16 / sizeof(T)] = {0}; - std::fill_n(std::begin(out), I, element); - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `ext vd, - * vn, vm, #index`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecExtVecs_index( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - const uint64_t index = static_cast(metadata.operands[3].imm); - T out[16 / sizeof(T)] = {0}; - - for (int i = index; i < I; i++) { - out[i - index] = n[i]; - } - for (int i = 0; i < index; i++) { - out[I - index + i] = m[i]; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `fabd vd.T, vn.T, - * vm.T`. - * T represents the type of operands (e.g. for vn.2d, T = double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFabd(std::vector& operands) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = std::fabs(n[i] - m[i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `fabs vd, vn`. - * T represents the type of operands (e.g. for vn.2d, T = double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFabs_2ops(std::vector& operands) { - const T* n = operands[0].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = std::fabs(n[i]); - } - return {out, 256}; - } - - /** Helper function for instructions with the format `fcm vd, vn, `. - * T represents operand type (e.g. vd.2d is double). - * C represents comparison type (e.g. for T=float, comparison type is - * uint32_t). - * I represents the number of elements in the output array to be - * updated (e.g. for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFCompare(std::vector& operands, - bool cmpToZero, - std::function func) { - const T* n = operands[0].getAsVector(); - const T* m; - if (!cmpToZero) m = operands[1].getAsVector(); - C out[16 / sizeof(C)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = func(n[i], cmpToZero ? static_cast(0) : m[i]) - ? static_cast(-1) - : 0; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `fcvtl{2} vd, vn`. - * D represents the dest. vector register type (e.g. vd.2d would be double). - * N represents the source vector register type (e.g. vd.4s would be float). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFcvtl(std::vector& operands, - bool isFcvtl2) { - const N* n = operands[0].getAsVector(); - D out[16 / sizeof(D)] = {0}; - for (int i = (isFcvtl2 ? I : 0); i < (isFcvtl2 ? (I * 2) : I); i++) { - out[isFcvtl2 ? (i - I) : i] = static_cast(n[i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `fcvtn{2} vd, vn`. - * D represents the dest. vector register type (e.g. vd.2s would be float). - * N represents the source vector register type (e.g. vd.2d would be double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFcvtn(std::vector& operands, - bool isFcvtn2) { - const N* n = operands[0].getAsVector(); - D out[16 / sizeof(D)] = {0}; - for (int i = (isFcvtn2 ? (I / 2) : 0); i < I; i++) { - out[i] = static_cast(n[isFcvtn2 ? (i - (I / 2)) : i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `fcvtzs vd, vn`. - * D represents the dest. vector register type (e.g. vd.2s would be float). - * N represents the source vector register type (e.g. vd.2d would be double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFcvtzs(std::vector& operands) { - const N* n = operands[0].getAsVector(); - D out[16 / sizeof(D)] = {0}; - // TODO: Handle NaNs, denorms, and saturation - for (int i = 0; i < I; i++) { - out[i] = static_cast(std::trunc(n[i])); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `fmla vd, - * vn, vm`. - * T represents the type of operands (e.g. for vn.2d, T = double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFmla_3vecs(std::vector& operands) { - const T* d = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - const T* m = operands[2].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = d[i] + n[i] * m[i]; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `fmla vd, - * vn, vm[index]`. - * T represents the type of operands (e.g. for vn.2d, T = double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFmlaIndexed_3vecs( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - const T* d = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - int index = metadata.operands[2].vector_index; - const T m = operands[2].getAsVector()[index]; - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = d[i] + n[i] * m; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `fmls vd, - * vn, vm`. - * T represents the type of operands (e.g. for vn.2d, T = double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFmls_3vecs(std::vector& operands) { - const T* d = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - const T* m = operands[2].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = d[i] - (n[i] * m[i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `fmls vd, - * vn, vm[index]`. - * T represents the type of operands (e.g. for vn.2d, T = double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFmlsIndexed_3vecs( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - const T* d = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - int index = metadata.operands[2].vector_index; - const T m = operands[2].getAsVector()[index]; - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = d[i] - n[i] * m; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `fmul rd, - * rn, vm[index]`. - * T represents the type of operands (e.g. for vn.2d, T = double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFmulIndexed_vecs( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - int index = metadata.operands[2].vector_index; - const T* n = operands[0].getAsVector(); - const T m = operands[1].getAsVector()[index]; - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = n[i] * m; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `fneg vd, vn`. - * T represents the type of operands (e.g. for vn.2d, T = double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFneg_2ops(std::vector& operands) { - const T* n = operands[0].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = -n[i]; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `fsqrt vd, vn`. - * T represents the type of operands (e.g. for vn.2d, T = double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFsqrt_2ops(std::vector& operands) { - const T* n = operands[0].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = ::sqrt(n[i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `frsqrte vd, vn`. - * T represents the type of operands (e.g. for vn.2d, T = double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFrsqrte_2ops(std::vector& operands) { - const T* n = operands[0].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = 1.0f / sqrtf(n[i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `frsqrts vd, vn, - * vm`. - * T represents the type of operands (e.g. for vn.2d, T = double). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecFrsqrts_3ops(std::vector& operands) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = (3.0f - n[i] * m[i]) / 2.0f; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `ins vd[index], - * vn[index]`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecIns_2Index( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - const T* d = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = d[i]; - } - out[metadata.operands[0].vector_index] = - n[metadata.operands[1].vector_index]; - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `ins vd[index], - * rn`. - * T represents the vector register type (e.g. vd.16b would be uint8_t). - * R represents the type of the GPR (e.g. wn would be uint32_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecInsIndex_gpr( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - const T* d = operands[0].getAsVector(); - const T n = operands[1].get(); - T out[16 / sizeof(T)] = {0}; - - for (int i = 0; i < I; i++) { + +/** Helper function for NEON instructions with the format `add vd, vn, vm`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted Register Value. */ +template +RegisterValue vecAdd_3ops(std::vector& operands) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = static_cast(n[i] + m[i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `addp vd, vn, vm`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted Register Value. */ +template +RegisterValue vecAddp_3ops(std::vector& operands) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + T out[16 / sizeof(T)] = {0}; + uint8_t offset = I / 2; + for (int i = 0; i < I; i++) { + if (i < offset) { + out[i] = static_cast(n[i * 2] + n[(i * 2) + 1]); + } else { + out[i] = static_cast(m[(i - offset) * 2] + m[((i - offset) * 2) + 1]); + } + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `bic vd, vn, vm`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted Register Value. */ +template +RegisterValue vecBic_3ops(std::vector& operands) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = n[i] & ~m[i]; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `bic vd, #imm{, lsl + * #shift}`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted Register Value. */ +template +RegisterValue vecBicShift_imm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + const T* d = operands[0].getAsVector(); + T imm = ~shiftValue(static_cast(metadata.operands[1].imm), + metadata.operands[1].shift.type, + metadata.operands[1].shift.value); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = d[i] & imm; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `bi vd, vn, + * vm`. + * I represents the number of elements in the output array to be updated + * (e.g. for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecBitwiseInsert(std::vector& operands, + bool isBif) { + const uint64_t* d = operands[0].getAsVector(); + const uint64_t* n = operands[1].getAsVector(); + const uint64_t* m = operands[2].getAsVector(); + uint64_t out[2] = {0}; + for (int i = 0; i < (I / 8); i++) { + out[i] = + isBif ? (d[i] & m[i]) | (n[i] & ~m[i]) : (d[i] & ~m[i]) | (n[i] & m[i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `bsl vd, vn, + * vm`. + * I represents the number of elements in the output array to be updated + * (e.g. for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecBsl(std::vector& operands) { + const uint64_t* d = operands[0].getAsVector(); + const uint64_t* n = operands[1].getAsVector(); + const uint64_t* m = operands[2].getAsVector(); + uint64_t out[2] = {0}; + for (int i = 0; i < (I / 8); i++) { + out[i] = (d[i] & n[i]) | (~d[i] & m[i]); + } + return {out, 256}; +} + +/** Helper function for instructions with the format `cm vd, vn, `. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecCompare(std::vector& operands, bool cmpToZero, + std::function func) { + const T* n = operands[0].getAsVector(); + const T* m; + if (!cmpToZero) m = operands[1].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = func(n[i], cmpToZero ? static_cast(0) : m[i]) + ? static_cast(-1) + : 0; + } + return {out, 256}; +} + +/** Helper function for instructions with the format `cnt vd, vn`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecCountPerByte(std::vector& operands) { + const uint8_t* n = operands[0].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + for (int j = 0; j < (sizeof(T) * 8); j++) { + // Move queried bit to LSB and extract via an AND operator + out[i] += ((n[i] >> j) & 1); + } + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `dup , + * `. + * T represents the type of operands (e.g. for vd.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecDup_gprOrIndex( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, bool useGpr) { + int index = useGpr ? 0 : metadata.operands[1].vector_index; + T element = + useGpr ? operands[0].get() : operands[0].getAsVector()[index]; + T out[16 / sizeof(T)] = {0}; + std::fill_n(std::begin(out), I, element); + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `ext vd, + * vn, vm, #index`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecExtVecs_index( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + const uint64_t index = static_cast(metadata.operands[3].imm); + T out[16 / sizeof(T)] = {0}; + + for (int i = index; i < I; i++) { + out[i - index] = n[i]; + } + for (int i = 0; i < index; i++) { + out[I - index + i] = m[i]; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `fabd vd.T, vn.T, + * vm.T`. + * T represents the type of operands (e.g. for vn.2d, T = double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFabd(std::vector& operands) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = std::fabs(n[i] - m[i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `fabs vd, vn`. + * T represents the type of operands (e.g. for vn.2d, T = double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFabs_2ops(std::vector& operands) { + const T* n = operands[0].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = std::fabs(n[i]); + } + return {out, 256}; +} + +/** Helper function for instructions with the format `fcm vd, vn, `. + * T represents operand type (e.g. vd.2d is double). + * C represents comparison type (e.g. for T=float, comparison type is + * uint32_t). + * I represents the number of elements in the output array to be + * updated (e.g. for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFCompare(std::vector& operands, bool cmpToZero, + std::function func) { + const T* n = operands[0].getAsVector(); + const T* m; + if (!cmpToZero) m = operands[1].getAsVector(); + C out[16 / sizeof(C)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = func(n[i], cmpToZero ? static_cast(0) : m[i]) + ? static_cast(-1) + : 0; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `fcvtl{2} vd, vn`. + * D represents the dest. vector register type (e.g. vd.2d would be double). + * N represents the source vector register type (e.g. vd.4s would be float). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFcvtl(std::vector& operands, bool isFcvtl2) { + const N* n = operands[0].getAsVector(); + D out[16 / sizeof(D)] = {0}; + for (int i = (isFcvtl2 ? I : 0); i < (isFcvtl2 ? (I * 2) : I); i++) { + out[isFcvtl2 ? (i - I) : i] = static_cast(n[i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `fcvtn{2} vd, vn`. + * D represents the dest. vector register type (e.g. vd.2s would be float). + * N represents the source vector register type (e.g. vd.2d would be double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFcvtn(std::vector& operands, bool isFcvtn2) { + const N* n = operands[0].getAsVector(); + D out[16 / sizeof(D)] = {0}; + for (int i = (isFcvtn2 ? (I / 2) : 0); i < I; i++) { + out[i] = static_cast(n[isFcvtn2 ? (i - (I / 2)) : i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `fcvtzs vd, vn`. + * D represents the dest. vector register type (e.g. vd.2s would be float). + * N represents the source vector register type (e.g. vd.2d would be double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFcvtzs(std::vector& operands) { + const N* n = operands[0].getAsVector(); + D out[16 / sizeof(D)] = {0}; + // TODO: Handle NaNs, denorms, and saturation + for (int i = 0; i < I; i++) { + out[i] = static_cast(std::trunc(n[i])); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `fmla vd, + * vn, vm`. + * T represents the type of operands (e.g. for vn.2d, T = double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFmla_3vecs(std::vector& operands) { + const T* d = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + const T* m = operands[2].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = d[i] + n[i] * m[i]; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `fmla vd, + * vn, vm[index]`. + * T represents the type of operands (e.g. for vn.2d, T = double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFmlaIndexed_3vecs( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + const T* d = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + int index = metadata.operands[2].vector_index; + const T m = operands[2].getAsVector()[index]; + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = d[i] + n[i] * m; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `fmls vd, + * vn, vm`. + * T represents the type of operands (e.g. for vn.2d, T = double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFmls_3vecs(std::vector& operands) { + const T* d = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + const T* m = operands[2].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = d[i] - (n[i] * m[i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `fmls vd, + * vn, vm[index]`. + * T represents the type of operands (e.g. for vn.2d, T = double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFmlsIndexed_3vecs( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + const T* d = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + int index = metadata.operands[2].vector_index; + const T m = operands[2].getAsVector()[index]; + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = d[i] - n[i] * m; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `fmul rd, + * rn, vm[index]`. + * T represents the type of operands (e.g. for vn.2d, T = double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFmulIndexed_vecs( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + int index = metadata.operands[2].vector_index; + const T* n = operands[0].getAsVector(); + const T m = operands[1].getAsVector()[index]; + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = n[i] * m; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `fneg vd, vn`. + * T represents the type of operands (e.g. for vn.2d, T = double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFneg_2ops(std::vector& operands) { + const T* n = operands[0].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = -n[i]; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `fsqrt vd, vn`. + * T represents the type of operands (e.g. for vn.2d, T = double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFsqrt_2ops(std::vector& operands) { + const T* n = operands[0].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = ::sqrt(n[i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `frsqrte vd, vn`. + * T represents the type of operands (e.g. for vn.2d, T = double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFrsqrte_2ops(std::vector& operands) { + const T* n = operands[0].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = 1.0f / sqrtf(n[i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `frsqrts vd, vn, + * vm`. + * T represents the type of operands (e.g. for vn.2d, T = double). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecFrsqrts_3ops(std::vector& operands) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = (3.0f - n[i] * m[i]) / 2.0f; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `ins vd[index], + * vn[index]`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecIns_2Index( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + const T* d = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = d[i]; + } + out[metadata.operands[0].vector_index] = n[metadata.operands[1].vector_index]; + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `ins vd[index], + * rn`. + * T represents the vector register type (e.g. vd.16b would be uint8_t). + * R represents the type of the GPR (e.g. wn would be uint32_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecInsIndex_gpr( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + const T* d = operands[0].getAsVector(); + const T n = operands[1].get(); + T out[16 / sizeof(T)] = {0}; + + for (int i = 0; i < I; i++) { + out[i] = d[i]; + } + out[metadata.operands[0].vector_index] = n; + return {out, 256}; +} + +/** Helper function for NEON instructions with the format ` vd, + * vn`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecLogicOp_2vecs(std::vector& operands, + std::function func) { + const T* n = operands[0].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = func(n[i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format ` vd, + * vn, vm`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecLogicOp_3vecs(std::vector& operands, + std::function func) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = func(n[i], m[i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `umaxp vd, vn, vm`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecUMaxP(std::vector& operands) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + T out[I]; + for (int i = 0; i < I; i++) { + out[i] = std::max(n[i], m[i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `uminp vd, vn, vm`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecUMinP(std::vector& operands) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + T out[I]; + for (int i = 0; i < I; i++) { + out[i] = std::min(n[i], m[i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `maxnmp rd, vn`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecMaxnmp_2ops(std::vector& operands) { + const T* n = operands[0].getAsVector(); + bool isFP = std::is_floating_point::value; + + T out = n[0]; + for (int i = 1; i < I; i++) { + out = isFP ? std::fmax(n[i], out) : std::max(n[i], out); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `sminv sd, vn`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecMinv_2ops(std::vector& operands) { + const T* n = operands[0].getAsVector(); + bool isFP = std::is_floating_point::value; + + T out = n[0]; + for (int i = 1; i < I; i++) { + out = isFP ? std::fmin(n[i], out) : std::min(n[i], out); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `movi vd, #imm`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecMovi_imm( + const simeng::arch::aarch64::InstructionMetadata& metadata) { + bool isFP = std::is_floating_point::value; + const T imm = + isFP ? metadata.operands[1].fp : static_cast(metadata.operands[1].imm); + T out[16 / sizeof(T)] = {0}; + std::fill_n(std::begin(out), I, imm); + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `movi vd, #imm{, lsl + * #shift}`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecMoviShift_imm( + const simeng::arch::aarch64::InstructionMetadata& metadata, bool negate) { + const T bits = shiftValue(static_cast(metadata.operands[1].imm), + metadata.operands[1].shift.type, + metadata.operands[1].shift.value); + T out[16 / sizeof(T)] = {0}; + std::fill_n(std::begin(out), I, negate ? ~bits : bits); + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `scvtf vd, + * vn`. + * D represents the destination vector register type (e.g. for vd.2d, D = + * double). + * N represents the source vector register type (e.g. for vn.2s N = int32_t). + * I represents the number of elements in the output array to be + * updated (e.g. for vd.8b I = 8). + * Returns correctly formated RegisterValue. */ +template +RegisterValue vecScvtf_2vecs(std::vector& operands, + std::function func) { + const N* n = operands[0].getAsVector(); + D out[16 / sizeof(D)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = static_cast(n[i]); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `shl vd, vn, #imm`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecShlShift_vecImm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + const T* n = operands[0].getAsVector(); + int64_t shift = metadata.operands[2].imm; + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = static_cast(n[i] << shift); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `shll{2} vd, vn, + * #imm`. + * D represents the destination register type (e.g. for vd.2d D = int64_t). + * N represents the source register type (e.g. for vd.4s D = int32_t). + * I represents the number of elements in the output array to be + * updated (e.g. for vd.8h the I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecShllShift_vecImm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, bool isShll2) { + const N* n = operands[0].getAsVector(); + uint64_t shift = metadata.operands[2].imm; + D out[16 / sizeof(D)] = {0}; + int index = isShll2 ? I : 0; + for (int i = 0; i < I; i++) { + out[i] = n[index] << shift; + index++; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `shrn vd, vn, #imm`. + * Ta represents the type of source operand (e.g. for vn.2d, Ta = uint64_t). + * Tb represents the type of destination operand (e.g. for vd.2s, Tb = + * uint32_t). + * I represents the number of elements in the output array to be + * updated (e.g. for vd.8b I = 8). + * Returns correctly formatted RegisterValue. + */ +template +RegisterValue vecShrnShift_imm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + bool shrn2 = false) { + const Ta* n = operands[0].getAsVector(); + + uint64_t shift = metadata.operands[2].imm; + + Tb out[16 / sizeof(Tb)] = {0}; + int index = shrn2 ? I : 0; + for (int i = 0; i < I; i++) { + out[index + i] = static_cast(std::trunc(n[i] >> shift)); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `sshr vd, vn, #imm`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecSshrShift_imm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + const T* n = operands[1].getAsVector(); + uint64_t shift = metadata.operands[2].imm; + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I; i++) { + out[i] = static_cast(std::trunc(n[i] >> shift)); + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `addp rd, vn`. + * T represents the type of operands (e.g. for vn.2d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecSumElems_2ops(std::vector& operands) { + const T* n = operands[0].getAsVector(); + T out = 0; + for (int i = 0; i < I; i++) { + out += n[i]; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `xtn{2} vd, vn`. + * D represents the type of the dest. register (e.g. for vd.s, D = uint32_t). + * N represents the type of the source register (e.g. for vn.d, N = uint64_t). + * I represents the number of elements in the output vector to be + * updated (i.e. for vd.4s I = 4). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecXtn(std::vector& operands, bool isXtn2) { + const D* d; + if (isXtn2) d = operands[0].getAsVector(); + const N* n = operands[isXtn2 ? 1 : 0].getAsVector(); + + D out[16 / sizeof(D)] = {0}; + int index = 0; + + for (int i = 0; i < I; i++) { + if (isXtn2 & (i < (I / 2))) { out[i] = d[i]; - } - out[metadata.operands[0].vector_index] = n; - return {out, 256}; - } - - /** Helper function for NEON instructions with the format ` vd, - * vn`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecLogicOp_2vecs(std::vector& operands, - std::function func) { - const T* n = operands[0].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = func(n[i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format ` vd, - * vn, vm`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecLogicOp_3vecs(std::vector& operands, - std::function func) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = func(n[i], m[i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `umaxp vd, vn, vm`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecUMaxP(std::vector& operands) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - T out[I]; - for (int i = 0; i < I; i++) { - out[i] = std::max(n[i], m[i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `uminp vd, vn, vm`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecUMinP(std::vector& operands) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - T out[I]; - for (int i = 0; i < I; i++) { - out[i] = std::min(n[i], m[i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `maxnmp rd, vn`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecMaxnmp_2ops(std::vector& operands) { - const T* n = operands[0].getAsVector(); - bool isFP = std::is_floating_point::value; - - T out = n[0]; - for (int i = 1; i < I; i++) { - out = isFP ? std::fmax(n[i], out) : std::max(n[i], out); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `sminv sd, vn`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecMinv_2ops(std::vector& operands) { - const T* n = operands[0].getAsVector(); - bool isFP = std::is_floating_point::value; - - T out = n[0]; - for (int i = 1; i < I; i++) { - out = isFP ? std::fmin(n[i], out) : std::min(n[i], out); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `movi vd, #imm`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecMovi_imm( - const simeng::arch::aarch64::InstructionMetadata& metadata) { - bool isFP = std::is_floating_point::value; - const T imm = isFP ? metadata.operands[1].fp - : static_cast(metadata.operands[1].imm); - T out[16 / sizeof(T)] = {0}; - std::fill_n(std::begin(out), I, imm); - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `movi vd, #imm{, lsl - * #shift}`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecMoviShift_imm( - const simeng::arch::aarch64::InstructionMetadata& metadata, bool negate) { - const T bits = shiftValue(static_cast(metadata.operands[1].imm), - metadata.operands[1].shift.type, - metadata.operands[1].shift.value); - T out[16 / sizeof(T)] = {0}; - std::fill_n(std::begin(out), I, negate ? ~bits : bits); - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `scvtf vd, - * vn`. - * D represents the destination vector register type (e.g. for vd.2d, D = - * double). - * N represents the source vector register type (e.g. for vn.2s N = int32_t). - * I represents the number of elements in the output array to be - * updated (e.g. for vd.8b I = 8). - * Returns correctly formated RegisterValue. */ - template - static RegisterValue vecScvtf_2vecs(std::vector& operands, - std::function func) { - const N* n = operands[0].getAsVector(); - D out[16 / sizeof(D)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = static_cast(n[i]); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `shl vd, vn, #imm`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecShlShift_vecImm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - const T* n = operands[0].getAsVector(); - int64_t shift = metadata.operands[2].imm; - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = static_cast(n[i] << shift); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `shll{2} vd, vn, - * #imm`. - * D represents the destination register type (e.g. for vd.2d D = int64_t). - * N represents the source register type (e.g. for vd.4s D = int32_t). - * I represents the number of elements in the output array to be - * updated (e.g. for vd.8h the I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecShllShift_vecImm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - bool isShll2) { - const N* n = operands[0].getAsVector(); - uint64_t shift = metadata.operands[2].imm; - D out[16 / sizeof(D)] = {0}; - int index = isShll2 ? I : 0; - for (int i = 0; i < I; i++) { - out[i] = n[index] << shift; + } else { + out[i] = static_cast(n[index]); index++; } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `shrn vd, vn, #imm`. - * Ta represents the type of source operand (e.g. for vn.2d, Ta = uint64_t). - * Tb represents the type of destination operand (e.g. for vd.2s, Tb = - * uint32_t). - * I represents the number of elements in the output array to be - * updated (e.g. for vd.8b I = 8). - * Returns correctly formatted RegisterValue. - */ - template - static RegisterValue vecShrnShift_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - bool shrn2 = false) { - const Ta* n = operands[0].getAsVector(); - - uint64_t shift = metadata.operands[2].imm; - - Tb out[16 / sizeof(Tb)] = {0}; - int index = shrn2 ? I : 0; - for (int i = 0; i < I; i++) { - out[index + i] = static_cast(std::trunc(n[i] >> shift)); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `sshr vd, vn, #imm`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecSshrShift_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - const T* n = operands[1].getAsVector(); - uint64_t shift = metadata.operands[2].imm; - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I; i++) { - out[i] = static_cast(std::trunc(n[i] >> shift)); - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `addp rd, vn`. - * T represents the type of operands (e.g. for vn.2d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecSumElems_2ops(std::vector& operands) { - const T* n = operands[0].getAsVector(); - T out = 0; - for (int i = 0; i < I; i++) { - out += n[i]; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `xtn{2} vd, vn`. - * D represents the type of the dest. register (e.g. for vd.s, D = uint32_t). - * N represents the type of the source register (e.g. for vn.d, N = uint64_t). - * I represents the number of elements in the output vector to be - * updated (i.e. for vd.4s I = 4). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecXtn(std::vector& operands, - bool isXtn2) { - const D* d; - if (isXtn2) d = operands[0].getAsVector(); - const N* n = operands[isXtn2 ? 1 : 0].getAsVector(); - - D out[16 / sizeof(D)] = {0}; - int index = 0; - - for (int i = 0; i < I; i++) { - if (isXtn2 & (i < (I / 2))) { - out[i] = d[i]; - } else { - out[i] = static_cast(n[index]); - index++; - } - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `tbl Vd.Ta, {Vn.16b, - * ... Vn+3.16b}, Vm.Ta`. - * I represents the number of elements in the output vector to be updated - * (i.e. for vd.8b I = 8, vd.16b I = 16). Only 8 or 16 is valid for TBL - * instructions. - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecTbl( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata) { - // Vd and Vm are only valid in format 8b or 16b - assert(I == 8 || I == 16); - - // Vm contains the indices to fetch from table - const int8_t* Vm = - operands[metadata.operandCount - 2] - .getAsVector(); // final operand is vecMovi_imm - - // All operands except the first and last are the vector registers to - // construct the table from - const uint8_t n_table_regs = metadata.operandCount - 2; - - // Create table from vectors. All table operands must be of 16b format. - int tableSize = 16 * n_table_regs; - uint8_t table[tableSize]; - for (int i = 0; i < n_table_regs; i++) { - const int8_t* currentVector = operands[i].getAsVector(); - for (int j = 0; j < 16; j++) { - table[16 * i + j] = currentVector[j]; - } - } - - int8_t out[16 / sizeof(int8_t)] = {0}; - for (int i = 0; i < I; i++) { - unsigned int index = Vm[i]; - - // If an index is out of range for the table, the result for that lookup - // is 0 - if (index >= tableSize) { - out[i] = 0; - continue; - } - - out[i] = table[index]; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `rev<16,32,64> Vd.T, - * Vn.T`. - * T represents the type of elements to be reversed (e.g. for Vn.d, T = - * uint64_t). - * V represents the variant: 16-bit, 32-bit, 64-bit. (e.g. for 64-bit each - * doubleword of the vector will be reversed). - * I represents the number of elements in the output array to be updated (e.g. - * for vd.8b I = 8). - * It is only valid for T to be a same or smaller width than V. - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue vecRev(std::vector& operands) { - const T* source = operands[0].getAsVector(); - int element_size = (sizeof(T) * 8); - int datasize = I * element_size; - int container_size = V; - int n_containers = datasize / container_size; - int elements_per_container = container_size / element_size; - - int element = 0; - int rev_element; - T out[16 / sizeof(T)] = {0}; - for (int c = 0; c < n_containers; c++) { - rev_element = element + elements_per_container - 1; - for (int e = 0; e < elements_per_container; e++) { - out[rev_element] = source[element]; - element++; - rev_element--; - } - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `trn1 Vd.T, Vn.T, - * Vm.T`. - * T represents the type of operands (e.g. for vn.d, T = uint64_t). - * I represents the number of operands (e.g. for vn.8b, I = 8). - * Returns formatted Register Value. */ - template - static RegisterValue vecTrn1(std::vector& operands) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I / 2; i++) { - out[2 * i] = n[2 * i]; - out[(2 * i) + 1] = m[2 * i]; - } - - return {out, 256}; } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `tbl Vd.Ta, {Vn.16b, + * ... Vn+3.16b}, Vm.Ta`. + * I represents the number of elements in the output vector to be updated + * (i.e. for vd.8b I = 8, vd.16b I = 16). Only 8 or 16 is valid for TBL + * instructions. + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecTbl( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata) { + // Vd and Vm are only valid in format 8b or 16b + assert(I == 8 || I == 16); + + // Vm contains the indices to fetch from table + const int8_t* Vm = + operands[metadata.operandCount - 2] + .getAsVector(); // final operand is vecMovi_imm + + // All operands except the first and last are the vector registers to + // construct the table from + const uint8_t n_table_regs = metadata.operandCount - 2; + + // Create table from vectors. All table operands must be of 16b format. + int tableSize = 16 * n_table_regs; + uint8_t table[tableSize]; + for (int i = 0; i < n_table_regs; i++) { + const int8_t* currentVector = operands[i].getAsVector(); + for (int j = 0; j < 16; j++) { + table[16 * i + j] = currentVector[j]; + } + } + + int8_t out[16 / sizeof(int8_t)] = {0}; + for (int i = 0; i < I; i++) { + unsigned int index = Vm[i]; + + // If an index is out of range for the table, the result for that lookup + // is 0 + if (index >= tableSize) { + out[i] = 0; + continue; + } + + out[i] = table[index]; + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `rev<16,32,64> Vd.T, + * Vn.T`. + * T represents the type of elements to be reversed (e.g. for Vn.d, T = + * uint64_t). + * V represents the variant: 16-bit, 32-bit, 64-bit. (e.g. for 64-bit each + * doubleword of the vector will be reversed). + * I represents the number of elements in the output array to be updated (e.g. + * for vd.8b I = 8). + * It is only valid for T to be a same or smaller width than V. + * Returns correctly formatted RegisterValue. */ +template +RegisterValue vecRev(std::vector& operands) { + const T* source = operands[0].getAsVector(); + int element_size = (sizeof(T) * 8); + int datasize = I * element_size; + int container_size = V; + int n_containers = datasize / container_size; + int elements_per_container = container_size / element_size; + + int element = 0; + int rev_element; + T out[16 / sizeof(T)] = {0}; + for (int c = 0; c < n_containers; c++) { + rev_element = element + elements_per_container - 1; + for (int e = 0; e < elements_per_container; e++) { + out[rev_element] = source[element]; + element++; + rev_element--; + } + } + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `trn1 Vd.T, Vn.T, + * Vm.T`. + * T represents the type of operands (e.g. for vn.d, T = uint64_t). + * I represents the number of operands (e.g. for vn.8b, I = 8). + * Returns formatted Register Value. */ +template +RegisterValue vecTrn1(std::vector& operands) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I / 2; i++) { + out[2 * i] = n[2 * i]; + out[(2 * i) + 1] = m[2 * i]; + } + + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `trn2 Vd.T, Vn.T, + * Vm.T`. + * T represents the type of operands (e.g. for Vn.d, T = uint64_t). + * I represents the number of operands (e.g. for Vn.8b, I = 8). + * Returns formatted Register Value. */ +template +RegisterValue vecTrn2(std::vector& operands) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I / 2; i++) { + out[2 * i] = n[(2 * i) + 1]; + out[(2 * i) + 1] = m[(2 * i) + 1]; + } + + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `uzp<1,2> Vd.T, + * Vn.T, Vm.T`. + * T represents the type of operands (e.g. for Vn.d, T = uint64_t). + * I represents the number of operands (e.g. for Vn.8b, I = 8). + * Returns formatted Register Value. */ +template +RegisterValue vecUzp(std::vector& operands, bool isUzp1) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + T out[16 / sizeof(T)] = {0}; + for (int i = 0; i < I / 2; i++) { + int index = isUzp1 ? (2 * i) : (2 * i) + 1; + out[i] = n[index]; + out[(I / 2) + i] = m[index]; + } + + return {out, 256}; +} + +/** Helper function for NEON instructions with the format `zip<1,2> vd.T, + * vn.T, vm.T`. + * T represents the type of operands (e.g. for vn.d, T = uint64_t). + * I represents the number of elements in the output array to be updated (e.g. + * for vn.8b, I = 8). + * Returns formatted Register Value. */ +template +RegisterValue vecZip(std::vector& operands, bool isZip2) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + T out[16 / sizeof(T)] = {0}; + int index = isZip2 ? (I / 2) : 0; + for (int i = 0; i < I / 2; i++) { + out[2 * i] = n[index]; + out[(2 * i) + 1] = m[index]; + index++; + } + + return {out, 256}; +} - /** Helper function for NEON instructions with the format `trn2 Vd.T, Vn.T, - * Vm.T`. - * T represents the type of operands (e.g. for Vn.d, T = uint64_t). - * I represents the number of operands (e.g. for Vn.8b, I = 8). - * Returns formatted Register Value. */ - template - static RegisterValue vecTrn2(std::vector& operands) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I / 2; i++) { - out[2 * i] = n[(2 * i) + 1]; - out[(2 * i) + 1] = m[(2 * i) + 1]; - } - - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `uzp<1,2> Vd.T, - * Vn.T, Vm.T`. - * T represents the type of operands (e.g. for Vn.d, T = uint64_t). - * I represents the number of operands (e.g. for Vn.8b, I = 8). - * Returns formatted Register Value. */ - template - static RegisterValue vecUzp(std::vector& operands, - bool isUzp1) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - T out[16 / sizeof(T)] = {0}; - for (int i = 0; i < I / 2; i++) { - int index = isUzp1 ? (2 * i) : (2 * i) + 1; - out[i] = n[index]; - out[(I / 2) + i] = m[index]; - } - - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `zip<1,2> vd.T, - * vn.T, vm.T`. - * T represents the type of operands (e.g. for vn.d, T = uint64_t). - * I represents the number of elements in the output array to be updated (e.g. - * for vn.8b, I = 8). - * Returns formatted Register Value. */ - template - static RegisterValue vecZip(std::vector& operands, - bool isZip2) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - T out[16 / sizeof(T)] = {0}; - int index = isZip2 ? (I / 2) : 0; - for (int i = 0; i < I / 2; i++) { - out[2 * i] = n[index]; - out[(2 * i) + 1] = m[index]; - index++; - } - - return {out, 256}; - } -}; } // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/store.hh b/src/include/simeng/arch/aarch64/helpers/store.hh index 18d3d6f915..aac46622bf 100644 --- a/src/include/simeng/arch/aarch64/helpers/store.hh +++ b/src/include/simeng/arch/aarch64/helpers/store.hh @@ -4,11 +4,6 @@ namespace simeng { namespace arch { -namespace aarch64 { -class storeHelp { - public: - static void tempFunc() { return; } -}; -} // namespace aarch64 +namespace aarch64 {} // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/sve.hh b/src/include/simeng/arch/aarch64/helpers/sve.hh index 0e9a800f9f..0725165772 100644 --- a/src/include/simeng/arch/aarch64/helpers/sve.hh +++ b/src/include/simeng/arch/aarch64/helpers/sve.hh @@ -8,1713 +8,1703 @@ namespace simeng { namespace arch { namespace aarch64 { -class sveHelp { - public: - /** Helper function for SVE instructions with the format `add zd, zn, zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveAdd_3ops(std::vector& operands, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - out[i] = n[i] + m[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `add zd, zn, #imm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveAdd_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - const T imm = static_cast(metadata.operands[2].imm); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - out[i] = n[i] + imm; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `add zdn, pg/m, zdn, - * const`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveAddPredicated_const( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - bool isFP = std::is_floating_point::value; - const uint64_t* p = operands[0].getAsVector(); - const T* d = operands[1].getAsVector(); - const auto con = isFP ? metadata.operands[3].fp : metadata.operands[3].imm; - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out[i] = d[i] + con; - else - out[i] = d[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `add zdn, pg/m, zdn, - * zm`. - * T represents the type of operands (e.g. for zdn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveAddPredicated_vecs( - std::vector& operands, const uint16_t VL_bits) { - const uint64_t* p = operands[0].getAsVector(); - const T* d = operands[1].getAsVector(); - const T* m = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out[i] = d[i] + m[i]; - else - out[i] = d[i]; - } - return {out, 256}; - } - - /** Helper function for NEON instructions with the format `addv dd, pg, zn`. - * T represents the type of operands (e.g. for zn.s, T = uint32_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveAddvPredicated(std::vector& operands, - const uint16_t VL_bits) { - const uint64_t* p = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - uint64_t out = 0; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out += static_cast(n[i]); - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `adr zd, [zn, zm{, - * lsl #<1,2,3>}]`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveAdr_packedOffsets( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - const int mbytes = 1 << metadata.operands[2].shift.value; - for (int i = 0; i < partition_num; i++) { - out[i] = n[i] + (m[i] * mbytes); - } - return {out, 256}; - } - - /** Helper function for instructions with the format `cmp pd, pg/z, zn, `. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns tuple of type [pred result (array of 4 uint64_t), nzcv]. */ - template - static std::tuple, uint8_t> sveCmpPredicated_toPred( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits, bool cmpToImm, std::function func) { - const uint64_t* p = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - const T* m; - T imm; - if (cmpToImm) - imm = static_cast(metadata.operands[3].imm); - else - m = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - std::array out = {0, 0, 0, 0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - if (cmpToImm) - out[i / (64 / sizeof(T))] |= (func(n[i], imm)) ? (shifted_active) : 0; - else - out[i / (64 / sizeof(T))] |= - (func(n[i], m[i])) ? (shifted_active) : 0; - } - } - // Byte count = sizeof(T) as destination predicate is predicate of T bytes. - return {out, AuxFunc::getNZCVfromPred(out, VL_bits, sizeof(T))}; - } - - /** Helper function for SVE instructions with the format `cnt rd{, - * pattern{, #imm}}`. - * T represents the type of operation (e.g. for CNTD, T = uint64_t). - * Returns single value of type uint64_t. */ - template - static uint64_t sveCnt_gpr( - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const uint8_t imm = static_cast(metadata.operands[1].imm); - - const uint16_t elems = - AuxFunc::sveGetPattern(metadata.operandStr, (sizeof(T) * 8), VL_bits); - return (uint64_t)(elems * imm); - } - - /** Helper function for SVE instructions with the format `cntp xd, pg, pn`. - * T represents the type of operands (e.g. for pn.d, T = uint64_t). - * Returns single value of type uint64_t. */ - template - static uint64_t sveCntp(std::vector& operands, +/** Helper function for SVE instructions with the format `add zd, zn, zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveAdd_3ops(std::vector& operands, const uint16_t VL_bits) { - const uint64_t* pg = operands[0].getAsVector(); - const uint64_t* pn = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - uint64_t count = 0; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (pg[i / (64 / sizeof(T))] & shifted_active) { - count += (pn[i / (64 / sizeof(T))] & shifted_active) ? 1 : 0; - } - } - return count; - } - - /** Helper function for SVE instructions with the format `fcm pd, - * pg/z, zn, zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns an array of 4 uint64_t elements. */ - template - static std::array sveComparePredicated_vecsToPred( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits, bool cmpToZero, std::function func) { - const uint64_t* p = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - const T* m; - if (!cmpToZero) m = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - std::array out = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - out[i / (64 / sizeof(T))] |= - (func(n[i], cmpToZero ? 0.0 : m[i])) ? shifted_active : 0; - } - } - return out; + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + out[i] = n[i] + m[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `add zd, zn, #imm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveAdd_imm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const T* n = operands[0].getAsVector(); + const T imm = static_cast(metadata.operands[2].imm); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + out[i] = n[i] + imm; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `add zdn, pg/m, zdn, + * const`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveAddPredicated_const( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + bool isFP = std::is_floating_point::value; + const uint64_t* p = operands[0].getAsVector(); + const T* d = operands[1].getAsVector(); + const auto con = isFP ? metadata.operands[3].fp : metadata.operands[3].imm; + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out[i] = d[i] + con; + else + out[i] = d[i]; } + return {out, 256}; +} - /** Helper function for SVE instructions with the format `cpy zd, pg/z, #imm{, - * shift}`. - * T represents the type of operands (e.g. for zd.d, T = int64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveCpy_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const uint64_t* p = operands[0].getAsVector(); - const int16_t imm = metadata.operands[2].imm; - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - out[i] = imm; - } else { - out[i] = 0; - } - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `dec xdn{, - * pattern{, MUL #imm}}`. - * T represents the type of operation (e.g. for DECD, T = uint64_t). - * Returns single value of type uint64_t. */ - template - static int64_t sveDec_scalar( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const int64_t n = operands[0].get(); - const uint8_t imm = static_cast(metadata.operands[1].imm); - const uint16_t elems = - AuxFunc::sveGetPattern(metadata.operandStr, sizeof(T) * 8, VL_bits); - return (n - static_cast(elems * imm)); - } - - /** Helper function for SVE instructions with the format `dup zd, <#imm{, - * shift}, n>`. - * T represents the type of operands (e.g. for zd.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveDup_immOrScalar( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits, bool useImm) { - bool isFP = std::is_floating_point::value; - T imm; - if (useImm) - imm = isFP ? metadata.operands[1].fp - : static_cast(metadata.operands[1].imm); +/** Helper function for SVE instructions with the format `add zdn, pg/m, zdn, + * zm`. + * T represents the type of operands (e.g. for zdn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveAddPredicated_vecs(std::vector& operands, + const uint16_t VL_bits) { + const uint64_t* p = operands[0].getAsVector(); + const T* d = operands[1].getAsVector(); + const T* m = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out[i] = d[i] + m[i]; else - imm = operands[0].get(); - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - out[i] = imm; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `dup zd, zn[#imm]`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveDup_vecIndexed( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const uint16_t index = - static_cast(metadata.operands[1].vector_index); - const T* n = operands[0].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - if (index < (VL_bits / (sizeof(T) * 8))) { - const T element = n[index]; - for (int i = 0; i < partition_num; i++) { - out[i] = element; - } - } - return {out, 256}; + out[i] = d[i]; } + return {out, 256}; +} - /** Helper function for SVE instructions with the format `fabs zd, - * pg/z, zn`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFabsPredicated(std::vector& operands, - const uint16_t VL_bits) { - const T* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* n = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - +/** Helper function for NEON instructions with the format `addv dd, pg, zn`. + * T represents the type of operands (e.g. for zn.s, T = uint32_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveAddvPredicated(std::vector& operands, + const uint16_t VL_bits) { + const uint64_t* p = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + uint64_t out = 0; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out += static_cast(n[i]); + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `adr zd, [zn, zm{, + * lsl #<1,2,3>}]`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveAdr_packedOffsets( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + const int mbytes = 1 << metadata.operands[2].shift.value; + for (int i = 0; i < partition_num; i++) { + out[i] = n[i] + (m[i] * mbytes); + } + return {out, 256}; +} + +/** Helper function for instructions with the format `cmp pd, pg/z, zn, `. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns tuple of type [pred result (array of 4 uint64_t), nzcv]. */ +template +std::tuple, uint8_t> sveCmpPredicated_toPred( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits, bool cmpToImm, std::function func) { + const uint64_t* p = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + const T* m; + T imm; + if (cmpToImm) + imm = static_cast(metadata.operands[3].imm); + else + m = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + std::array out = {0, 0, 0, 0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + if (cmpToImm) + out[i / (64 / sizeof(T))] |= (func(n[i], imm)) ? (shifted_active) : 0; + else + out[i / (64 / sizeof(T))] |= (func(n[i], m[i])) ? (shifted_active) : 0; + } + } + // Byte count = sizeof(T) as destination predicate is predicate of T bytes. + return {out, getNZCVfromPred(out, VL_bits, sizeof(T))}; +} + +/** Helper function for SVE instructions with the format `cnt rd{, + * pattern{, #imm}}`. + * T represents the type of operation (e.g. for CNTD, T = uint64_t). + * Returns single value of type uint64_t. */ +template +uint64_t sveCnt_gpr(const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const uint8_t imm = static_cast(metadata.operands[1].imm); + + const uint16_t elems = + sveGetPattern(metadata.operandStr, (sizeof(T) * 8), VL_bits); + return (uint64_t)(elems * imm); +} + +/** Helper function for SVE instructions with the format `cntp xd, pg, pn`. + * T represents the type of operands (e.g. for pn.d, T = uint64_t). + * Returns single value of type uint64_t. */ +template +uint64_t sveCntp(std::vector& operands, const uint16_t VL_bits) { + const uint64_t* pg = operands[0].getAsVector(); + const uint64_t* pn = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + uint64_t count = 0; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (pg[i / (64 / sizeof(T))] & shifted_active) { + count += (pn[i / (64 / sizeof(T))] & shifted_active) ? 1 : 0; + } + } + return count; +} + +/** Helper function for SVE instructions with the format `fcm pd, + * pg/z, zn, zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns an array of 4 uint64_t elements. */ +template +std::array sveComparePredicated_vecsToPred( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits, bool cmpToZero, std::function func) { + const uint64_t* p = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + const T* m; + if (!cmpToZero) m = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + std::array out = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + out[i / (64 / sizeof(T))] |= + (func(n[i], cmpToZero ? 0.0 : m[i])) ? shifted_active : 0; + } + } + return out; +} + +/** Helper function for SVE instructions with the format `cpy zd, pg/z, #imm{, + * shift}`. + * T represents the type of operands (e.g. for zd.d, T = int64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveCpy_imm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const uint64_t* p = operands[0].getAsVector(); + const int16_t imm = metadata.operands[2].imm; + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + out[i] = imm; + } else { + out[i] = 0; + } + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `dec xdn{, + * pattern{, MUL #imm}}`. + * T represents the type of operation (e.g. for DECD, T = uint64_t). + * Returns single value of type uint64_t. */ +template +int64_t sveDec_scalar( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const int64_t n = operands[0].get(); + const uint8_t imm = static_cast(metadata.operands[1].imm); + const uint16_t elems = + sveGetPattern(metadata.operandStr, sizeof(T) * 8, VL_bits); + return (n - static_cast(elems * imm)); +} + +/** Helper function for SVE instructions with the format `dup zd, <#imm{, + * shift}, n>`. + * T represents the type of operands (e.g. for zd.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveDup_immOrScalar( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits, bool useImm) { + bool isFP = std::is_floating_point::value; + T imm; + if (useImm) + imm = isFP ? metadata.operands[1].fp + : static_cast(metadata.operands[1].imm); + else + imm = operands[0].get(); + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + out[i] = imm; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `dup zd, zn[#imm]`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveDup_vecIndexed( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const uint16_t index = + static_cast(metadata.operands[1].vector_index); + const T* n = operands[0].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + if (index < (VL_bits / (sizeof(T) * 8))) { + const T element = n[index]; for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - out[i] = ::fabs(n[i]); - } else { - out[i] = d[i]; - } + out[i] = element; } - return {out, 256}; } + return {out, 256}; +} - /** Helper function for SVE instructions with the format `fadda rd, - * pg, rn, zm`. - * T represents the type of operands (e.g. for zm.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFaddaPredicated(std::vector& operands, - const uint16_t VL_bits) { - const uint64_t* p = operands[0].getAsVector(); - const T n = operands[1].get(); - const T* m = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - out[0] = n; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - out[0] += m[i]; +/** Helper function for SVE instructions with the format `fabs zd, + * pg/z, zn`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFabsPredicated(std::vector& operands, + const uint16_t VL_bits) { + const T* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* n = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + out[i] = ::fabs(n[i]); + } else { + out[i] = d[i]; + } + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `fadda rd, + * pg, rn, zm`. + * T represents the type of operands (e.g. for zm.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFaddaPredicated(std::vector& operands, + const uint16_t VL_bits) { + const uint64_t* p = operands[0].getAsVector(); + const T n = operands[1].get(); + const T* m = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + out[0] = n; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + out[0] += m[i]; + } + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `fcadd zdn, pg/m, + * zdn, zm, #imm`. + * T represents the type of operands (e.g. for zm.d, T = double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFcaddPredicated( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const uint64_t* p = operands[0].getAsVector(); + const T* dn = operands[1].getAsVector(); + const T* m = operands[2].getAsVector(); + const uint32_t imm = metadata.operands[4].imm; + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < (partition_num / 2); i++) { + T acc_r = dn[2 * i]; + T acc_i = dn[2 * i + 1]; + T elt2_r = m[2 * i]; + T elt2_i = m[2 * i + 1]; + + uint64_t shifted_active1 = 1ull + << (((2 * i) % (64 / sizeof(T))) * sizeof(T)); + uint64_t shifted_active2 = + 1ull << (((2 * i + 1) % (64 / sizeof(T))) * sizeof(T)); + if (p[(2 * i) / (64 / sizeof(T))] & shifted_active1) { + if (imm == 90) { + elt2_i = 0.0 - elt2_i; } + acc_r = acc_r + elt2_i; } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `fcadd zdn, pg/m, - * zdn, zm, #imm`. - * T represents the type of operands (e.g. for zm.d, T = double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFcaddPredicated( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const uint64_t* p = operands[0].getAsVector(); - const T* dn = operands[1].getAsVector(); - const T* m = operands[2].getAsVector(); - const uint32_t imm = metadata.operands[4].imm; - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < (partition_num / 2); i++) { - T acc_r = dn[2 * i]; - T acc_i = dn[2 * i + 1]; - T elt2_r = m[2 * i]; - T elt2_i = m[2 * i + 1]; - - uint64_t shifted_active1 = 1ull - << (((2 * i) % (64 / sizeof(T))) * sizeof(T)); - uint64_t shifted_active2 = - 1ull << (((2 * i + 1) % (64 / sizeof(T))) * sizeof(T)); - if (p[(2 * i) / (64 / sizeof(T))] & shifted_active1) { - if (imm == 90) { - elt2_i = 0.0 - elt2_i; - } - acc_r = acc_r + elt2_i; + if (p[(2 * i + 1) / (64 / sizeof(T))] & shifted_active2) { + if (imm == 270) { + elt2_r = 0.0 - elt2_r; } - if (p[(2 * i + 1) / (64 / sizeof(T))] & shifted_active2) { - if (imm == 270) { - elt2_r = 0.0 - elt2_r; - } - acc_i = acc_i + elt2_r; + acc_i = acc_i + elt2_r; + } + out[2 * i] = acc_r; + out[2 * i + 1] = acc_i; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `fcmla zda, pg/m, + * zn, zm, #imm`. + * T represents the type of operands (e.g. for zm.d, T = double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFcmlaPredicated( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const T* da = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* n = operands[2].getAsVector(); + const T* m = operands[3].getAsVector(); + const uint32_t imm = metadata.operands[4].imm; + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + int sel_a = (imm == 0 || imm == 180) ? 0 : 1; + int sel_b = (imm == 0 || imm == 180) ? 1 : 0; + bool neg_i = (imm == 180 || imm == 270) ? true : false; + bool neg_r = (imm == 90 || imm == 180) ? true : false; + for (int i = 0; i < (partition_num / 2); i++) { + T addend_r = da[2 * i]; + T addend_i = da[2 * i + 1]; + T elt1_a = n[2 * i + sel_a]; + T elt2_a = m[2 * i + sel_a]; + T elt2_b = m[2 * i + sel_b]; + uint64_t shifted_active1 = 1ull + << (((2 * i) % (64 / sizeof(T))) * sizeof(T)); + uint64_t shifted_active2 = + 1ull << (((2 * i + 1) % (64 / sizeof(T))) * sizeof(T)); + if (p[(2 * i) / (64 / sizeof(T))] & shifted_active1) { + if (neg_r) { + elt2_a = 0.0 - elt2_a; } - out[2 * i] = acc_r; - out[2 * i + 1] = acc_i; + addend_r = addend_r + (elt1_a * elt2_a); } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `fcmla zda, pg/m, - * zn, zm, #imm`. - * T represents the type of operands (e.g. for zm.d, T = double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFcmlaPredicated( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const T* da = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* n = operands[2].getAsVector(); - const T* m = operands[3].getAsVector(); - const uint32_t imm = metadata.operands[4].imm; - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - int sel_a = (imm == 0 || imm == 180) ? 0 : 1; - int sel_b = (imm == 0 || imm == 180) ? 1 : 0; - bool neg_i = (imm == 180 || imm == 270) ? true : false; - bool neg_r = (imm == 90 || imm == 180) ? true : false; - for (int i = 0; i < (partition_num / 2); i++) { - T addend_r = da[2 * i]; - T addend_i = da[2 * i + 1]; - T elt1_a = n[2 * i + sel_a]; - T elt2_a = m[2 * i + sel_a]; - T elt2_b = m[2 * i + sel_b]; - uint64_t shifted_active1 = 1ull - << (((2 * i) % (64 / sizeof(T))) * sizeof(T)); - uint64_t shifted_active2 = - 1ull << (((2 * i + 1) % (64 / sizeof(T))) * sizeof(T)); - if (p[(2 * i) / (64 / sizeof(T))] & shifted_active1) { - if (neg_r) { - elt2_a = 0.0 - elt2_a; - } - addend_r = addend_r + (elt1_a * elt2_a); - } - if (p[(2 * i + 1) / (64 / sizeof(T))] & shifted_active2) { - if (neg_i) { - elt2_b = 0.0 - elt2_b; - } - addend_i = addend_i + (elt1_a * elt2_b); + if (p[(2 * i + 1) / (64 / sizeof(T))] & shifted_active2) { + if (neg_i) { + elt2_b = 0.0 - elt2_b; } - out[2 * i] = addend_r; - out[2 * i + 1] = addend_i; + addend_i = addend_i + (elt1_a * elt2_b); + } + out[2 * i] = addend_r; + out[2 * i + 1] = addend_i; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `fcpy zd, pg/m, + * #const`. + * T represents the type of operands (e.g. for zd.d, T = double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFcpy_imm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const T* dn = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T imm = metadata.operands[2].fp; + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + out[i] = imm; + } else { + out[i] = dn[i]; } - return {out, 256}; } + return {out, 256}; +} - /** Helper function for SVE instructions with the format `fcpy zd, pg/m, - * #const`. - * T represents the type of operands (e.g. for zd.d, T = double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFcpy_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const T* dn = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T imm = metadata.operands[2].fp; - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - out[i] = imm; - } else { - out[i] = dn[i]; - } - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `fcvt zd, - * pg/m, zn`. - * D represents the destination vector register type (e.g. zd.s would be - * int32_t). - * N represents the source vector register type (e.g. zn.d would be double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFcvtPredicated(std::vector& operands, - const uint16_t VL_bits) { - const D* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const N* n = operands[2].getAsVector(); - - // Stores size of largest type out of D and N - int lts = std::max(sizeof(D), sizeof(N)); - bool sourceLarger = (sizeof(D) < sizeof(N)) ? true : false; - bool sameDandN = (sizeof(D) == sizeof(N)) ? true : false; - - const uint16_t partition_num = VL_bits / (lts * 8); - D out[256 / sizeof(D)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / lts)) * lts); - int indexOut = (sourceLarger) ? (2 * i) : i; - int indexN = (!sameDandN) && (!sourceLarger) ? (2 * i) : i; - - if (p[i / (64 / lts)] & shifted_active) { - if (n[indexN] > std::numeric_limits::max()) - out[indexOut] = std::numeric_limits::max(); - else if (n[indexN] < std::numeric_limits::lowest()) - out[indexOut] = std::numeric_limits::lowest(); - else - out[indexOut] = static_cast(n[indexN]); - } else { - out[indexOut] = d[indexOut]; - } - if (sourceLarger) out[indexOut + 1] = d[indexOut + 1]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `fcvtzs zd, - * pg/m, zn`. - * D represents the destination vector register type (e.g. zd.s would be - * int32_t). - * N represents the source vector register type (e.g. zn.d would be double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFcvtzsPredicated(std::vector& operands, - const uint16_t VL_bits) { - const D* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const N* n = operands[2].getAsVector(); - - // Stores size of largest type out of D and N - int lts = std::max(sizeof(D), sizeof(N)); - bool sameType = (sizeof(D) == sizeof(N)) ? true : false; - bool sourceLarger = (sizeof(D) < sizeof(N)) ? true : false; - - const uint16_t partition_num = VL_bits / (lts * 8); - D out[256 / sizeof(D)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / lts)) * lts); - int indexOut = (sourceLarger) ? (2 * i) : i; - int indexN = ((!sourceLarger) & (!sameType)) ? (2 * i) : i; - - if (p[i / (64 / lts)] & shifted_active) { - if (n[indexN] > std::numeric_limits::max()) - out[indexOut] = std::numeric_limits::max(); - else if (n[indexN] < std::numeric_limits::lowest()) - out[indexOut] = std::numeric_limits::lowest(); - else - out[indexOut] = static_cast(std::trunc(n[indexN])); - // Can be set to 0xFFFFFFFF as will only occur when D=int32_t. - if (sourceLarger) out[indexOut + 1] = (n[indexN] < 0) ? 0xFFFFFFFFu : 0; - } else { - out[indexOut] = d[indexOut]; - if (sourceLarger) out[indexOut + 1] = d[indexOut + 1]; - } - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `fmad zd, pg/m, zn, - * zm`. - * T represents the type of operands (e.g. for zn.d, T = double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFmadPredicated_vecs( - std::vector& operands, const uint16_t VL_bits) { - const T* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* n = operands[2].getAsVector(); - const T* m = operands[3].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out[i] = m[i] + (d[i] * n[i]); +/** Helper function for SVE instructions with the format `fcvt zd, + * pg/m, zn`. + * D represents the destination vector register type (e.g. zd.s would be + * int32_t). + * N represents the source vector register type (e.g. zn.d would be double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFcvtPredicated(std::vector& operands, + const uint16_t VL_bits) { + const D* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const N* n = operands[2].getAsVector(); + + // Stores size of largest type out of D and N + int lts = std::max(sizeof(D), sizeof(N)); + bool sourceLarger = (sizeof(D) < sizeof(N)) ? true : false; + bool sameDandN = (sizeof(D) == sizeof(N)) ? true : false; + + const uint16_t partition_num = VL_bits / (lts * 8); + D out[256 / sizeof(D)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / lts)) * lts); + int indexOut = (sourceLarger) ? (2 * i) : i; + int indexN = (!sameDandN) && (!sourceLarger) ? (2 * i) : i; + + if (p[i / (64 / lts)] & shifted_active) { + if (n[indexN] > std::numeric_limits::max()) + out[indexOut] = std::numeric_limits::max(); + else if (n[indexN] < std::numeric_limits::lowest()) + out[indexOut] = std::numeric_limits::lowest(); else - out[i] = d[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `fmls zd, pg/m, zn, - * zm`. - * T represents the type of operands (e.g. for zn.d, T = double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFmlsPredicated_vecs( - std::vector& operands, const uint16_t VL_bits) { - const T* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* n = operands[2].getAsVector(); - const T* m = operands[3].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out[i] = d[i] + (-n[i] * m[i]); + out[indexOut] = static_cast(n[indexN]); + } else { + out[indexOut] = d[indexOut]; + } + if (sourceLarger) out[indexOut + 1] = d[indexOut + 1]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `fcvtzs zd, + * pg/m, zn`. + * D represents the destination vector register type (e.g. zd.s would be + * int32_t). + * N represents the source vector register type (e.g. zn.d would be double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFcvtzsPredicated(std::vector& operands, + const uint16_t VL_bits) { + const D* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const N* n = operands[2].getAsVector(); + + // Stores size of largest type out of D and N + int lts = std::max(sizeof(D), sizeof(N)); + bool sameType = (sizeof(D) == sizeof(N)) ? true : false; + bool sourceLarger = (sizeof(D) < sizeof(N)) ? true : false; + + const uint16_t partition_num = VL_bits / (lts * 8); + D out[256 / sizeof(D)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / lts)) * lts); + int indexOut = (sourceLarger) ? (2 * i) : i; + int indexN = ((!sourceLarger) & (!sameType)) ? (2 * i) : i; + + if (p[i / (64 / lts)] & shifted_active) { + if (n[indexN] > std::numeric_limits::max()) + out[indexOut] = std::numeric_limits::max(); + else if (n[indexN] < std::numeric_limits::lowest()) + out[indexOut] = std::numeric_limits::lowest(); else - out[i] = d[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `fmsb zd, pg/m, zn, - * zm`. - * T represents the type of operands (e.g. for zn.d, T = double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFmsbPredicated_vecs( - std::vector& operands, const uint16_t VL_bits) { - const T* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* n = operands[2].getAsVector(); - const T* m = operands[3].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out[i] = m[i] + (-d[i] * n[i]); - else - out[i] = d[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `fmul zd, zn, zm`. - * T represents the type of operands (e.g. for zn.d, T = double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFmul_3ops(std::vector& operands, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - out[i] = n[i] * m[i]; + out[indexOut] = static_cast(std::trunc(n[indexN])); + // Can be set to 0xFFFFFFFF as will only occur when D=int32_t. + if (sourceLarger) out[indexOut + 1] = (n[indexN] < 0) ? 0xFFFFFFFFu : 0; + } else { + out[indexOut] = d[indexOut]; + if (sourceLarger) out[indexOut + 1] = d[indexOut + 1]; } - return {out, 256}; } + return {out, 256}; +} - /** Helper function for SVE instructions with the format `fneg zd, pg/m, zn`. - * T represents the type of operands (e.g. for zn.d, T = double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFnegPredicated(std::vector& operands, - const uint16_t VL_bits) { - const T* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* n = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out[i] = -n[i]; - else - out[i] = d[i]; - } - return {out, 256}; +/** Helper function for SVE instructions with the format `fmad zd, pg/m, zn, + * zm`. + * T represents the type of operands (e.g. for zn.d, T = double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFmadPredicated_vecs(std::vector& operands, + const uint16_t VL_bits) { + const T* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* n = operands[2].getAsVector(); + const T* m = operands[3].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out[i] = m[i] + (d[i] * n[i]); + else + out[i] = d[i]; } + return {out, 256}; +} - /** Helper function for SVE instructions with the format `fnmls zd, pg/m, zn, - * zm`. - * T represents the type of operands (e.g. for zn.d, T = double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFnmlsPredicated(std::vector& operands, - const uint16_t VL_bits) { - const T* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* n = operands[2].getAsVector(); - const T* m = operands[3].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out[i] = -d[i] + (n[i] * m[i]); - else - out[i] = d[i]; - } - return {out, 256}; +/** Helper function for SVE instructions with the format `fmls zd, pg/m, zn, + * zm`. + * T represents the type of operands (e.g. for zn.d, T = double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFmlsPredicated_vecs(std::vector& operands, + const uint16_t VL_bits) { + const T* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* n = operands[2].getAsVector(); + const T* m = operands[3].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out[i] = d[i] + (-n[i] * m[i]); + else + out[i] = d[i]; } + return {out, 256}; +} - /** Helper function for SVE instructions with the format `fnmsb zdn, pg/m, zm, - * za`. - * T represents the type of operands (e.g. for zdn.d, T = double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFnmsbPredicated(std::vector& operands, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* m = operands[2].getAsVector(); - const T* a = operands[3].getAsVector(); +/** Helper function for SVE instructions with the format `fmsb zd, pg/m, zn, + * zm`. + * T represents the type of operands (e.g. for zn.d, T = double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFmsbPredicated_vecs(std::vector& operands, + const uint16_t VL_bits) { + const T* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* n = operands[2].getAsVector(); + const T* m = operands[3].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out[i] = m[i] + (-d[i] * n[i]); + else + out[i] = d[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `fmul zd, zn, zm`. + * T represents the type of operands (e.g. for zn.d, T = double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFmul_3ops(std::vector& operands, + const uint16_t VL_bits) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + out[i] = n[i] * m[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `fneg zd, pg/m, zn`. + * T represents the type of operands (e.g. for zn.d, T = double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFnegPredicated(std::vector& operands, + const uint16_t VL_bits) { + const T* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* n = operands[2].getAsVector(); - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out[i] = -a[i] + n[i] * m[i]; - else - out[i] = n[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `frintn zd, pg/m, - * zn`. - * D represents the destination vector register type (e.g. zd.s would be - * int32_t). - * N represents the source vector register type (e.g. zn.d would be - * double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFrintnPredicated(std::vector& operands, - const uint16_t VL_bits) { - const D* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const N* n = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(N) * 8); - D out[256 / sizeof(D)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(N))) * sizeof(N)); - if (p[i / (64 / sizeof(N))] & shifted_active) { - out[i] = AuxFunc::roundToNearestTiesToEven(n[i]); - } else { - out[i] = d[i]; + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out[i] = -n[i]; + else + out[i] = d[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `fnmls zd, pg/m, zn, + * zm`. + * T represents the type of operands (e.g. for zn.d, T = double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFnmlsPredicated(std::vector& operands, + const uint16_t VL_bits) { + const T* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* n = operands[2].getAsVector(); + const T* m = operands[3].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out[i] = -d[i] + (n[i] * m[i]); + else + out[i] = d[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `fnmsb zdn, pg/m, zm, + * za`. + * T represents the type of operands (e.g. for zdn.d, T = double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFnmsbPredicated(std::vector& operands, + const uint16_t VL_bits) { + const T* n = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* m = operands[2].getAsVector(); + const T* a = operands[3].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out[i] = -a[i] + n[i] * m[i]; + else + out[i] = n[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `frintn zd, pg/m, + * zn`. + * D represents the destination vector register type (e.g. zd.s would be + * int32_t). + * N represents the source vector register type (e.g. zn.d would be + * double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFrintnPredicated(std::vector& operands, + const uint16_t VL_bits) { + const D* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const N* n = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(N) * 8); + D out[256 / sizeof(D)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(N))) * sizeof(N)); + if (p[i / (64 / sizeof(N))] & shifted_active) { + out[i] = roundToNearestTiesToEven(n[i]); + } else { + out[i] = d[i]; + } + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `fsqrt zd, + * pg/m, zn`. + * T represents the type of operands (e.g. for zn.d, T = double). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveFsqrtPredicated_2vecs(std::vector& operands, + const uint16_t VL_bits) { + const T* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* n = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out[i] = ::sqrt(n[i]); + else + out[i] = d[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `inc + * xdn{, pattern{, MUL #imm}}`. + * T represents the type of operation (e.g. for INCB, T = int8_t). + * Returns single value of type int64_t. */ +template +int64_t sveInc_gprImm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const int64_t n = operands[0].get(); + const uint8_t imm = static_cast(metadata.operands[1].imm); + const uint16_t elems = + sveGetPattern(metadata.operandStr, sizeof(T) * 8, VL_bits); + int64_t out = n + (elems * imm); + return out; +} + +/** Helper function for SVE instructions with the format `inc + * zdn{, pattern{, #imm}}`. + * T represents the type of operands (e.g. for zdn.d, T = int64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveInc_imm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const T* n = operands[0].getAsVector(); + const uint8_t imm = static_cast(metadata.operands[1].imm); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + typename std::make_signed::type out[256 / sizeof(T)] = {0}; + const uint16_t elems = + sveGetPattern(metadata.operandStr, sizeof(T) * 8, VL_bits); + + for (int i = 0; i < partition_num; i++) { + out[i] = n[i] + (elems * imm); + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `incp xdn, pm`. + * T represents the type of operands (e.g. for pm.d, T = uint64_t). + * Returns single value of type uint64_t. */ +template +uint64_t sveIncp_gpr(std::vector& operands, + const uint16_t VL_bits) { + const uint64_t dn = operands[0].get(); + const uint64_t* p = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + uint64_t count = 0; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + count++; + } + } + return dn + count; +} + +/** Helper function for SVE instructions with the format `index zd, <#imm, + * rn>, <#imm, rm>`. + * D represents the vector register type (e.g. zd.b would be int8_t). + * N represents the GPR type (e.g. for xn, xm, D = int64). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveIndex( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits, bool op1isImm, bool op2isImm) { + const int op2Index = op1isImm ? 0 : 1; + const auto n = op1isImm ? static_cast(metadata.operands[1].imm) + : static_cast(operands[0].get()); + const auto m = op2isImm ? static_cast(metadata.operands[2].imm) + : static_cast(operands[op2Index].get()); + + const uint16_t partition_num = VL_bits / (sizeof(D) * 8); + D out[256 / sizeof(D)] = {0}; + + for (int i = 0; i < partition_num; i++) { + out[i] = static_cast(n + (i * m)); + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format ` + * pd, pg/z, pn, pm`. + * T represents the type of operands (e.g. for pn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +std::array sveLogicOp_preds( + std::vector& operands, const uint16_t VL_bits, + std::function func) { + const uint64_t* p = operands[0].getAsVector(); + const uint64_t* n = operands[1].getAsVector(); + const uint64_t* m = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + std::array out = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + out[i / (64 / sizeof(T))] |= + (func(n[i / (64 / sizeof(T))], m[i / (64 / sizeof(T))]) & + shifted_active); + } + } + return out; +} + +/** Helper function for SVE instructions with the format ` + * zd, pg/m, zn, zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveLogicOpPredicated_3vecs(std::vector& operands, + const uint16_t VL_bits, + std::function func) { + const uint64_t* p = operands[0].getAsVector(); + const T* dn = operands[1].getAsVector(); + const T* m = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out[i] = func(dn[i], m[i]); + else + out[i] = dn[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format ` + * zd, zn, zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveLogicOpUnPredicated_3vecs(std::vector& operands, + const uint16_t VL_bits, + std::function func) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + out[i] = func(n[i], m[i]); + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `lsl sz, zn, #imm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveLsl_imm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const T* n = operands[0].getAsVector(); + const T imm = static_cast(metadata.operands[2].imm); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + typename std::make_signed::type out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + out[i] = (n[i] << imm); + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `max zdn, zdn, + * #imm`. + * T represents the type of operands (e.g. for zdn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveMax_vecImm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const T* n = operands[0].getAsVector(); + T imm = static_cast(metadata.operands[2].imm); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + out[i] = std::max(n[i], imm); + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `max zdn, zdn, + * #imm`. + * T represents the type of operands (e.g. for zdn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveMaxPredicated_vecs(std::vector& operands, + const uint16_t VL_bits) { + const T* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* n = operands[2].getAsVector(); + const T* m = operands[3].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + out[i] = std::max(n[i], m[i]); + } else + out[i] = d[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `fmla zd, pg/m, zn, + * zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveMlaPredicated_vecs(std::vector& operands, + const uint16_t VL_bits) { + const T* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* n = operands[2].getAsVector(); + const T* m = operands[3].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out[i] = d[i] + (n[i] * m[i]); + else + out[i] = d[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `fmla zda, zn, + * zm[index]`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveMlaIndexed_vecs( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const T* d = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + const T* m = operands[2].getAsVector(); + const size_t index = static_cast(metadata.operands[2].vector_index); + + const uint16_t elemsPer128 = 128 / (sizeof(T) * 8); + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (size_t i = 0; i < partition_num; i += elemsPer128) { + const T zm_elem = m[i + index]; + for (size_t j = 0; j < elemsPer128; j++) { + out[i + j] = d[i + j] + (n[i + j] * zm_elem); + } + } + + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `movprfx zd, + * pg/z, zn`. + * T represents the type of operands (e.g. for zd.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveMovprfxPredicated_destToZero( + std::vector& operands, const uint16_t VL_bits) { + // TODO: Adopt hint logic of the MOVPRFX instruction + const uint64_t* p = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + out[i] = n[i]; + } else { + out[i] = 0; + } + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `movprfx zd, + * pg/m, zn`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveMovprfxPredicated_destUnchanged( + std::vector& operands, const uint16_t VL_bits) { + // TODO: Adopt hint logic of the MOVPRFX instruction + const T* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* n = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + out[i] = n[i]; + } else { + out[i] = d[i]; + } + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `mul zdn, pg/m, zdn, + * `. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveMulPredicated( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits, bool useImm) { + bool isFP = std::is_floating_point::value; + const uint64_t* p = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + const T* m; + T imm; + if (useImm) + imm = isFP ? metadata.operands[3].fp : metadata.operands[3].imm; + else + m = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + out[i] = n[i] * (useImm ? imm : m[i]); + } else + out[i] = n[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `mulh zdn, pg/m, zdn, + * zm`. + * T represents the type of operands (e.g. for zn.s, T = int32_t). + * TT represents the type twice the length of T (e.g. for T = int8_t, TT = + * int16_T). + * Returns correctly formatted RegisterValue. */ +// TODO : Support for int64_t mulh operations. +template +RegisterValue sveMulhPredicated(std::vector& operands, + const uint16_t VL_bits) { + const uint64_t* p = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + const T* m = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + bool isNeg = false; + T a = n[i]; + T b = m[i]; + if (a < 0) { + isNeg = !isNeg; + a = 0 - a; } - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `fsqrt zd, - * pg/m, zn`. - * T represents the type of operands (e.g. for zn.d, T = double). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveFsqrtPredicated_2vecs( - std::vector& operands, const uint16_t VL_bits) { - const T* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* n = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out[i] = ::sqrt(n[i]); - else - out[i] = d[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `inc - * xdn{, pattern{, MUL #imm}}`. - * T represents the type of operation (e.g. for INCB, T = int8_t). - * Returns single value of type int64_t. */ - template - static int64_t sveInc_gprImm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const int64_t n = operands[0].get(); - const uint8_t imm = static_cast(metadata.operands[1].imm); - const uint16_t elems = - AuxFunc::sveGetPattern(metadata.operandStr, sizeof(T) * 8, VL_bits); - int64_t out = n + (elems * imm); - return out; - } - - /** Helper function for SVE instructions with the format `inc - * zdn{, pattern{, #imm}}`. - * T represents the type of operands (e.g. for zdn.d, T = int64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveInc_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - const uint8_t imm = static_cast(metadata.operands[1].imm); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - typename std::make_signed::type out[256 / sizeof(T)] = {0}; - const uint16_t elems = - AuxFunc::sveGetPattern(metadata.operandStr, sizeof(T) * 8, VL_bits); - - for (int i = 0; i < partition_num; i++) { - out[i] = n[i] + (elems * imm); - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `incp xdn, pm`. - * T represents the type of operands (e.g. for pm.d, T = uint64_t). - * Returns single value of type uint64_t. */ - template - static uint64_t sveIncp_gpr(std::vector& operands, - const uint16_t VL_bits) { - const uint64_t dn = operands[0].get(); - const uint64_t* p = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - uint64_t count = 0; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - count++; + if (b < 0) { + isNeg = !isNeg; + b = 0 - b; } - } - return dn + count; - } - - /** Helper function for SVE instructions with the format `index zd, <#imm, - * rn>, <#imm, rm>`. - * D represents the vector register type (e.g. zd.b would be int8_t). - * N represents the GPR type (e.g. for xn, xm, D = int64). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveIndex( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits, bool op1isImm, bool op2isImm) { - const int op2Index = op1isImm ? 0 : 1; - const auto n = op1isImm ? static_cast(metadata.operands[1].imm) - : static_cast(operands[0].get()); - const auto m = op2isImm ? static_cast(metadata.operands[2].imm) - : static_cast(operands[op2Index].get()); - - const uint16_t partition_num = VL_bits / (sizeof(D) * 8); - D out[256 / sizeof(D)] = {0}; - - for (int i = 0; i < partition_num; i++) { - out[i] = static_cast(n + (i * m)); - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format ` - * pd, pg/z, pn, pm`. - * T represents the type of operands (e.g. for pn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static std::array sveLogicOp_preds( - std::vector& operands, const uint16_t VL_bits, - std::function func) { - const uint64_t* p = operands[0].getAsVector(); - const uint64_t* n = operands[1].getAsVector(); - const uint64_t* m = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - std::array out = {0}; - - for (int i = 0; i < partition_num; i++) { + TT tmp = (static_cast(a) * static_cast(b)); + if (isNeg) tmp = 0 - tmp; + + out[i] = static_cast(tmp >> (sizeof(T) * 8)); + } else + out[i] = n[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `orr zd, zn, + * zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveOrr_3vecs(std::vector& operands, + const uint16_t VL_bits) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + out[i] = n[i] | m[i]; + } + return {out, 256}; +} + +/** Helper function for SVE2 instructions with the format `psel pd, pn, + * pm.t[wa, #imm]`. + * T represents the type of operands (e.g. for pm.d, T = + * uint64_t). Returns an array of 4 uint64_t elements. */ +template +std::array svePsel( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const uint64_t* pn = operands[0].getAsVector(); + const uint64_t* pm = operands[1].getAsVector(); + const uint32_t wa = operands[2].get(); + const uint32_t imm = metadata.operands[2].sme_index.disp; + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + + uint32_t index = (wa + imm) % partition_num; + uint64_t shifted_active = 1ull << ((index % (64 / sizeof(T))) * sizeof(T)); + + std::array out = {0, 0, 0, 0}; + if (pm[index / (64 / sizeof(T))] & shifted_active) { + out = {pn[0], pn[1], pn[2], pn[3]}; + } + + return out; +} + +/** Helper function for SVE instructions with the format `ptrue pd{, + * pattern}. + * T represents the type of operands (e.g. for pd.d, T = uint64_t). + * Returns an array of 4 uint64_t elements. */ +template +std::array svePtrue( + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + std::array out = {0, 0, 0, 0}; + + // Get pattern + const uint16_t count = + sveGetPattern(metadata.operandStr, sizeof(T) * 8, VL_bits); + // Exit early if count == 0 + if (count == 0) return out; + + for (int i = 0; i < partition_num; i++) { + if (i < count) { uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - out[i / (64 / sizeof(T))] |= - (func(n[i / (64 / sizeof(T))], m[i / (64 / sizeof(T))]) & - shifted_active); - } + out[i / (64 / sizeof(T))] |= shifted_active; } - return out; - } - - /** Helper function for SVE instructions with the format ` - * zd, pg/m, zn, zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveLogicOpPredicated_3vecs( - std::vector& operands, const uint16_t VL_bits, - std::function func) { - const uint64_t* p = operands[0].getAsVector(); - const T* dn = operands[1].getAsVector(); - const T* m = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out[i] = func(dn[i], m[i]); - else - out[i] = dn[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format ` - * zd, zn, zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveLogicOpUnPredicated_3vecs( - std::vector& operands, const uint16_t VL_bits, - std::function func) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - out[i] = func(n[i], m[i]); - } - return {out, 256}; } + return out; +} - /** Helper function for SVE instructions with the format `lsl sz, zn, #imm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveLsl_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - const T imm = static_cast(metadata.operands[2].imm); +/** Helper function for SVE instructions with the format `punpk pd.h, + * pn.b`. + * If `isHI` = false, then PUNPKLO is performed. + * Returns an array of 4 uint64_t elements. */ +std::array svePunpk(std::vector& operands, + const uint16_t VL_bits, bool isHi) { + const uint64_t* n = operands[0].getAsVector(); - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - typename std::make_signed::type out[256 / sizeof(T)] = {0}; + const uint16_t partition_num = VL_bits / 8; + std::array out = {0, 0, 0, 0}; + uint16_t index = isHi ? (partition_num / 2) : 0; - for (int i = 0; i < partition_num; i++) { - out[i] = (n[i] << imm); - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `max zdn, zdn, - * #imm`. - * T represents the type of operands (e.g. for zdn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveMax_vecImm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - T imm = static_cast(metadata.operands[2].imm); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - out[i] = std::max(n[i], imm); - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `max zdn, zdn, - * #imm`. - * T represents the type of operands (e.g. for zdn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveMaxPredicated_vecs( - std::vector& operands, const uint16_t VL_bits) { - const T* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* n = operands[2].getAsVector(); - const T* m = operands[3].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - out[i] = std::max(n[i], m[i]); - } else - out[i] = d[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `fmla zd, pg/m, zn, - * zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveMlaPredicated_vecs( - std::vector& operands, const uint16_t VL_bits) { - const T* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* n = operands[2].getAsVector(); - const T* m = operands[3].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out[i] = d[i] + (n[i] * m[i]); - else - out[i] = d[i]; + for (int i = 0; i < partition_num / 2; i++) { + if (n[index / 64] & 1ull << index % 64) { + out[i / 32] |= 1ull << ((i * 2) % 64); } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `fmla zda, zn, - * zm[index]`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveMlaIndexed_vecs( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const T* d = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - const T* m = operands[2].getAsVector(); - const size_t index = static_cast(metadata.operands[2].vector_index); - - const uint16_t elemsPer128 = 128 / (sizeof(T) * 8); - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (size_t i = 0; i < partition_num; i += elemsPer128) { - const T zm_elem = m[i + index]; - for (size_t j = 0; j < elemsPer128; j++) { - out[i + j] = d[i + j] + (n[i + j] * zm_elem); - } - } - - return {out, 256}; + index++; } + return out; +} - /** Helper function for SVE instructions with the format `movprfx zd, - * pg/z, zn`. - * T represents the type of operands (e.g. for zd.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveMovprfxPredicated_destToZero( - std::vector& operands, const uint16_t VL_bits) { - // TODO: Adopt hint logic of the MOVPRFX instruction - const uint64_t* p = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); +/** Helper function for SVE instructions with the format `rev pd, pn`. + * T represents the type of operands (e.g. for pd.d, T = uint64_t). + * Returns an array of 4 uint64_t elements. */ +template +std::array sveRev_predicates(std::vector& operands, + const uint16_t VL_bits) { + const uint64_t* n = operands[0].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + std::array out = {0, 0, 0, 0}; + uint16_t index = partition_num - 1; + + for (int i = 0; i < partition_num; i++) { + uint64_t rev_shifted_active = 1ull + << ((index % (64 / sizeof(T))) * sizeof(T)); + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + out[index / (64 / (sizeof(T)))] |= + ((n[i / (64 / (sizeof(T)))] & shifted_active) == shifted_active) + ? rev_shifted_active + : 0; + index--; + } + return out; +} + +/** Helper function for SVE instructions with the format `rev zd, zn`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveRev_vecs(std::vector& operands, + const uint16_t VL_bits) { + const T* n = operands[0].getAsVector(); - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + uint16_t index = partition_num - 1; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - out[i] = n[i]; - } else { - out[i] = 0; - } - } - return {out, 256}; + for (int i = 0; i < partition_num; i++) { + out[i] = n[index]; + index--; } + return {out, 256}; +} - /** Helper function for SVE instructions with the format `movprfx zd, - * pg/m, zn`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveMovprfxPredicated_destUnchanged( - std::vector& operands, const uint16_t VL_bits) { - // TODO: Adopt hint logic of the MOVPRFX instruction - const T* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* n = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - out[i] = n[i]; - } else { - out[i] = d[i]; - } - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `mul zdn, pg/m, zdn, - * `. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveMulPredicated( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits, bool useImm) { - bool isFP = std::is_floating_point::value; - const uint64_t* p = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - const T* m; - T imm; - if (useImm) - imm = isFP ? metadata.operands[3].fp : metadata.operands[3].imm; +/** Helper function for SVE instructions with the format `sel zd, pg, zn, + * zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveSel_zpzz(std::vector& operands, + const uint16_t VL_bits) { + const uint64_t* p = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + const T* m = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) + out[i] = n[i]; else - m = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - out[i] = n[i] * (useImm ? imm : m[i]); - } else - out[i] = n[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `mulh zdn, pg/m, zdn, - * zm`. - * T represents the type of operands (e.g. for zn.s, T = int32_t). - * TT represents the type twice the length of T (e.g. for T = int8_t, TT = - * int16_T). - * Returns correctly formatted RegisterValue. */ - // TODO : Support for int64_t mulh operations. - template - static RegisterValue sveMulhPredicated(std::vector& operands, - const uint16_t VL_bits) { - const uint64_t* p = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - const T* m = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - bool isNeg = false; - T a = n[i]; - T b = m[i]; - if (a < 0) { - isNeg = !isNeg; - a = 0 - a; - } - if (b < 0) { - isNeg = !isNeg; - b = 0 - b; - } - TT tmp = (static_cast(a) * static_cast(b)); - if (isNeg) tmp = 0 - tmp; - - out[i] = static_cast(tmp >> (sizeof(T) * 8)); - } else - out[i] = n[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `orr zd, zn, - * zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveOrr_3vecs(std::vector& operands, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - out[i] = n[i] | m[i]; - } - return {out, 256}; - } - - /** Helper function for SVE2 instructions with the format `psel pd, pn, - * pm.t[wa, #imm]`. - * T represents the type of operands (e.g. for pm.d, T = - * uint64_t). Returns an array of 4 uint64_t elements. */ - template - static std::array svePsel( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const uint64_t* pn = operands[0].getAsVector(); - const uint64_t* pm = operands[1].getAsVector(); - const uint32_t wa = operands[2].get(); - const uint32_t imm = metadata.operands[2].sme_index.disp; - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - - uint32_t index = (wa + imm) % partition_num; + out[i] = m[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `sminv rd, pg, zn`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveSminv(std::vector& operands, + const uint16_t VL_bits) { + const uint64_t* p = operands[0].getAsVector(); + const T* n = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out = std::numeric_limits::max(); + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) out = std::min(out, n[i]); + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `Sub zd, zn, + * zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveSub_3vecs(std::vector& operands, + const uint16_t VL_bits) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + out[i] = n[i] - m[i]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `Sub zdn, pg/m, zdn, + * zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveSubrPredicated_3vecs(std::vector& operands, + const uint16_t VL_bits) { + const uint64_t* p = operands[0].getAsVector(); + const T* dn = operands[1].getAsVector(); + const T* m = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + out[i] = m[i] - dn[i]; + } else { + out[i] = dn[i]; + } + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `Sub zdn, pg/m, zdn, + * #imm`. + * T represents the type of operands (e.g. for zdn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveSubPredicated_imm( + std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + bool isFP = std::is_floating_point::value; + const uint64_t* p = operands[0].getAsVector(); + const T* dn = operands[1].getAsVector(); + const auto imm = isFP ? metadata.operands[3].fp : metadata.operands[3].imm; + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + out[i] = dn[i] - imm; + } else { + out[i] = dn[i]; + } + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `sxt zd, pg, + * zn`. + * T represents the type of vector registers (e.g. for zd.d, T = int64_t). + * C represents the type of the cast required - is linked to instruction + * variant used (i.e. sxtw requires int32_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveSxtPredicated(std::vector& operands, + const uint16_t VL_bits) { + const T* d = operands[0].getAsVector(); + const uint64_t* p = operands[1].getAsVector(); + const T* n = operands[2].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + for (int i = 0; i < partition_num; i++) { + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + // Cast to C to get 'least significant sub-element' + // Then cast back to T to sign-extend this 'sub-element' + out[i] = static_cast(static_cast(n[i])); + } else { + out[i] = d[i]; + } + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `trn1 zd, zn, zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveTrn1_3vecs(std::vector& operands, + const uint16_t VL_bits) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < (partition_num / 2); i++) { + out[2 * i] = n[(2 * i)]; + out[(2 * i) + 1] = m[(2 * i)]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `trn2 zd, zn, zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveTrn2_3vecs(std::vector& operands, + const uint16_t VL_bits) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < (partition_num / 2); i++) { + out[2 * i] = n[(2 * i) + 1]; + out[(2 * i) + 1] = m[(2 * i) + 1]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `unpk>hi,lo> zd, + * zn`. + * D represents the type of the destination register (e.g. int32_t for + * zd.s). + * N represents the type of the source register (e.g. int8_t for zn.b). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveUnpk_vecs(std::vector& operands, + const uint16_t VL_bits, bool isHi) { + const N* n = operands[0].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(D) * 8); + D out[256 / sizeof(D)] = {0}; + + for (int i = 0; i < partition_num; i++) { + int index = isHi ? (partition_num + i) : i; + out[i] = static_cast(n[index]); + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `uqdec + * d{, pattern{, MUL #imm}}`. + * D represents the type of dest. register(e.g. uint32_t for wd). + * N represents the type of the operation (e.g. for UQDECH, N = 16u). + * Returns single value of type uint64_t. */ +template +uint64_t sveUqdec(std::vector& operands, + const simeng::arch::aarch64::InstructionMetadata& metadata, + const uint16_t VL_bits) { + const D d = operands[0].get(); + const uint8_t imm = metadata.operands[1].imm; + const uint16_t count = sveGetPattern(metadata.operandStr, N, VL_bits); + + // The range of possible values does not fit in the range of any integral + // type, so a double is used as an intermediate value. The end result must + // be saturated to fit in uint64_t. + auto intermediate = double(d) - (imm * count); + if (intermediate < 0) { + return (uint64_t)0; + } + return (uint64_t)(d - (imm * count)); +} + +/** Helper function for SVE instructions with the format `uzp<1,2> zd, zn, + * zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveUzp_vecs(std::vector& operands, + const uint16_t VL_bits, bool isUzp1) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + for (int i = 0; i < partition_num / 2; i++) { + // UZP1 concatenates even elements. UZP2 concatenates odd. + int index = isUzp1 ? (2 * i) : (2 * i) + 1; + out[i] = n[index]; + } + for (int i = 0; i < partition_num / 2; i++) { + int index = isUzp1 ? (2 * i) : (2 * i) + 1; + out[partition_num / 2 + i] = m[index]; + } + return {out, 256}; +} + +/** Helper function for SVE instructions with the format `whilelo pd, + * n, m`. + * T represents the type of operands n and m (e.g. for wn, T = uint32_t). + * P represents the type of operand p (e.g. for pd.b, P = uint8_t). + * Returns tuple of type [pred results (array of 4 uint64_t), nzcv]. */ +template +std::tuple, uint8_t> sveWhilelo( + std::vector& operands, const uint16_t VL_bits, + bool calcNZCV) { + const T n = operands[0].get(); + const T m = operands[1].get(); + + const uint16_t partition_num = VL_bits / (sizeof(P) * 8); + std::array out = {0, 0, 0, 0}; + uint16_t index = 0; + + for (int i = 0; i < partition_num; i++) { + // Determine whether lane should be active and shift to align with + // element in predicate register. + uint64_t shifted_active = + (n + i) < m ? 1ull << ((i % (64 / (sizeof(P))) * (sizeof(P)))) : 0; + out[index / (64 / (sizeof(P)))] = + out[index / (64 / (sizeof(P)))] | shifted_active; + index++; + } + // Byte count = sizeof(P) as destination predicate is predicate of P + // bytes. + uint8_t nzcv = calcNZCV ? getNZCVfromPred(out, VL_bits, sizeof(P)) : 0; + return {out, nzcv}; +} + +/** Helper function for SVE instructions with the format `zip<1,2> pd, pn, + * pm`. + * T represents the type of operands (e.g. for pn.d, T = uint64_t). + * Returns an array of 4 uint64_t elements. */ +template +std::array sveZip_preds(std::vector& operands, + const uint16_t VL_bits, bool isZip2) { + const uint64_t* n = operands[0].getAsVector(); + const uint64_t* m = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + std::array out = {0, 0, 0, 0}; + + bool interleave = false; + int index = isZip2 ? (partition_num / 2) : 0; + for (int i = 0; i < partition_num; i++) { uint64_t shifted_active = 1ull << ((index % (64 / sizeof(T))) * sizeof(T)); - - std::array out = {0, 0, 0, 0}; - if (pm[index / (64 / sizeof(T))] & shifted_active) { - out = {pn[0], pn[1], pn[2], pn[3]}; - } - - return out; - } - - /** Helper function for SVE instructions with the format `ptrue pd{, - * pattern}. - * T represents the type of operands (e.g. for pd.d, T = uint64_t). - * Returns an array of 4 uint64_t elements. */ - template - static std::array svePtrue( - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - std::array out = {0, 0, 0, 0}; - - // Get pattern - const uint16_t count = - AuxFunc::sveGetPattern(metadata.operandStr, sizeof(T) * 8, VL_bits); - // Exit early if count == 0 - if (count == 0) return out; - - for (int i = 0; i < partition_num; i++) { - if (i < count) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - out[i / (64 / sizeof(T))] |= shifted_active; - } - } - return out; - } - - /** Helper function for SVE instructions with the format `punpk pd.h, - * pn.b`. - * If `isHI` = false, then PUNPKLO is performed. - * Returns an array of 4 uint64_t elements. */ - static std::array svePunpk(std::vector& operands, - const uint16_t VL_bits, bool isHi) { - const uint64_t* n = operands[0].getAsVector(); - - const uint16_t partition_num = VL_bits / 8; - std::array out = {0, 0, 0, 0}; - uint16_t index = isHi ? (partition_num / 2) : 0; - - for (int i = 0; i < partition_num / 2; i++) { - if (n[index / 64] & 1ull << index % 64) { - out[i / 32] |= 1ull << ((i * 2) % 64); - } + if (interleave) { + out[i / (64 / sizeof(T))] |= + ((m[index / (64 / sizeof(T))] & shifted_active) == shifted_active) + ? static_cast(1ull + << ((i % (64 / sizeof(T))) * sizeof(T))) + : 0; index++; - } - return out; - } - - /** Helper function for SVE instructions with the format `rev pd, pn`. - * T represents the type of operands (e.g. for pd.d, T = uint64_t). - * Returns an array of 4 uint64_t elements. */ - template - static std::array sveRev_predicates( - std::vector& operands, const uint16_t VL_bits) { - const uint64_t* n = operands[0].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - std::array out = {0, 0, 0, 0}; - uint16_t index = partition_num - 1; - - for (int i = 0; i < partition_num; i++) { - uint64_t rev_shifted_active = 1ull - << ((index % (64 / sizeof(T))) * sizeof(T)); - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - out[index / (64 / (sizeof(T)))] |= - ((n[i / (64 / (sizeof(T)))] & shifted_active) == shifted_active) - ? rev_shifted_active + } else { + out[i / (64 / sizeof(T))] |= + ((n[index / (64 / sizeof(T))] & shifted_active) == shifted_active) + ? static_cast(1ull + << ((i % (64 / sizeof(T))) * sizeof(T))) : 0; - index--; - } - return out; - } - - /** Helper function for SVE instructions with the format `rev zd, zn`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveRev_vecs(std::vector& operands, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - uint16_t index = partition_num - 1; - - for (int i = 0; i < partition_num; i++) { - out[i] = n[index]; - index--; } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `sel zd, pg, zn, - * zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveSel_zpzz(std::vector& operands, - const uint16_t VL_bits) { - const uint64_t* p = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - const T* m = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) - out[i] = n[i]; - else - out[i] = m[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `sminv rd, pg, zn`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveSminv(std::vector& operands, - const uint16_t VL_bits) { - const uint64_t* p = operands[0].getAsVector(); - const T* n = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out = std::numeric_limits::max(); - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) out = std::min(out, n[i]); - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `Sub zd, zn, - * zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveSub_3vecs(std::vector& operands, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - out[i] = n[i] - m[i]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `Sub zdn, pg/m, zdn, - * zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveSubrPredicated_3vecs( - std::vector& operands, const uint16_t VL_bits) { - const uint64_t* p = operands[0].getAsVector(); - const T* dn = operands[1].getAsVector(); - const T* m = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - out[i] = m[i] - dn[i]; - } else { - out[i] = dn[i]; - } - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `Sub zdn, pg/m, zdn, - * #imm`. - * T represents the type of operands (e.g. for zdn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveSubPredicated_imm( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - bool isFP = std::is_floating_point::value; - const uint64_t* p = operands[0].getAsVector(); - const T* dn = operands[1].getAsVector(); - const auto imm = isFP ? metadata.operands[3].fp : metadata.operands[3].imm; - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - out[i] = dn[i] - imm; - } else { - out[i] = dn[i]; - } - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `sxt zd, pg, - * zn`. - * T represents the type of vector registers (e.g. for zd.d, T = int64_t). - * C represents the type of the cast required - is linked to instruction - * variant used (i.e. sxtw requires int32_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveSxtPredicated(std::vector& operands, - const uint16_t VL_bits) { - const T* d = operands[0].getAsVector(); - const uint64_t* p = operands[1].getAsVector(); - const T* n = operands[2].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); - if (p[i / (64 / sizeof(T))] & shifted_active) { - // Cast to C to get 'least significant sub-element' - // Then cast back to T to sign-extend this 'sub-element' - out[i] = static_cast(static_cast(n[i])); - } else { - out[i] = d[i]; - } - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `trn1 zd, zn, zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveTrn1_3vecs(std::vector& operands, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < (partition_num / 2); i++) { - out[2 * i] = n[(2 * i)]; - out[(2 * i) + 1] = m[(2 * i)]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `trn2 zd, zn, zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveTrn2_3vecs(std::vector& operands, - const uint16_t VL_bits) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < (partition_num / 2); i++) { - out[2 * i] = n[(2 * i) + 1]; - out[(2 * i) + 1] = m[(2 * i) + 1]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `unpk>hi,lo> zd, - * zn`. - * D represents the type of the destination register (e.g. int32_t for - * zd.s). - * N represents the type of the source register (e.g. int8_t for zn.b). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveUnpk_vecs(std::vector& operands, - const uint16_t VL_bits, bool isHi) { - const N* n = operands[0].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(D) * 8); - D out[256 / sizeof(D)] = {0}; - - for (int i = 0; i < partition_num; i++) { - int index = isHi ? (partition_num + i) : i; - out[i] = static_cast(n[index]); - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `uqdec - * d{, pattern{, MUL #imm}}`. - * D represents the type of dest. register(e.g. uint32_t for wd). - * N represents the type of the operation (e.g. for UQDECH, N = 16u). - * Returns single value of type uint64_t. */ - template - static uint64_t sveUqdec( - std::vector& operands, - const simeng::arch::aarch64::InstructionMetadata& metadata, - const uint16_t VL_bits) { - const D d = operands[0].get(); - const uint8_t imm = metadata.operands[1].imm; - const uint16_t count = - AuxFunc::sveGetPattern(metadata.operandStr, N, VL_bits); - - // The range of possible values does not fit in the range of any integral - // type, so a double is used as an intermediate value. The end result must - // be saturated to fit in uint64_t. - auto intermediate = double(d) - (imm * count); - if (intermediate < 0) { - return (uint64_t)0; - } - return (uint64_t)(d - (imm * count)); - } - - /** Helper function for SVE instructions with the format `uzp<1,2> zd, zn, - * zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveUzp_vecs(std::vector& operands, - const uint16_t VL_bits, bool isUzp1) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - for (int i = 0; i < partition_num / 2; i++) { - // UZP1 concatenates even elements. UZP2 concatenates odd. - int index = isUzp1 ? (2 * i) : (2 * i) + 1; - out[i] = n[index]; - } - for (int i = 0; i < partition_num / 2; i++) { - int index = isUzp1 ? (2 * i) : (2 * i) + 1; - out[partition_num / 2 + i] = m[index]; - } - return {out, 256}; - } - - /** Helper function for SVE instructions with the format `whilelo pd, - * n, m`. - * T represents the type of operands n and m (e.g. for wn, T = uint32_t). - * P represents the type of operand p (e.g. for pd.b, P = uint8_t). - * Returns tuple of type [pred results (array of 4 uint64_t), nzcv]. */ - template - static std::tuple, uint8_t> sveWhilelo( - std::vector& operands, const uint16_t VL_bits, - bool calcNZCV) { - const T n = operands[0].get(); - const T m = operands[1].get(); - - const uint16_t partition_num = VL_bits / (sizeof(P) * 8); - std::array out = {0, 0, 0, 0}; - uint16_t index = 0; - - for (int i = 0; i < partition_num; i++) { - // Determine whether lane should be active and shift to align with - // element in predicate register. - uint64_t shifted_active = - (n + i) < m ? 1ull << ((i % (64 / (sizeof(P))) * (sizeof(P)))) : 0; - out[index / (64 / (sizeof(P)))] = - out[index / (64 / (sizeof(P)))] | shifted_active; + interleave = !interleave; + } + return out; +} + +/** Helper function for SVE instructions with the format `zip<1,2> zd, zn, + * zm`. + * T represents the type of operands (e.g. for zn.d, T = uint64_t). + * Returns correctly formatted RegisterValue. */ +template +RegisterValue sveZip_vecs(std::vector& operands, + const uint16_t VL_bits, bool isZip2) { + const T* n = operands[0].getAsVector(); + const T* m = operands[1].getAsVector(); + + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; + + bool interleave = false; + int index = isZip2 ? (partition_num / 2) : 0; + for (int i = 0; i < partition_num; i++) { + if (interleave) { + out[i] = m[index]; index++; + } else { + out[i] = n[index]; } - // Byte count = sizeof(P) as destination predicate is predicate of P - // bytes. - uint8_t nzcv = - calcNZCV ? AuxFunc::getNZCVfromPred(out, VL_bits, sizeof(P)) : 0; - return {out, nzcv}; - } - - /** Helper function for SVE instructions with the format `zip<1,2> pd, pn, - * pm`. - * T represents the type of operands (e.g. for pn.d, T = uint64_t). - * Returns an array of 4 uint64_t elements. */ - template - static std::array sveZip_preds( - std::vector& operands, const uint16_t VL_bits, - bool isZip2) { - const uint64_t* n = operands[0].getAsVector(); - const uint64_t* m = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - std::array out = {0, 0, 0, 0}; - - bool interleave = false; - int index = isZip2 ? (partition_num / 2) : 0; - for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull - << ((index % (64 / sizeof(T))) * sizeof(T)); - if (interleave) { - out[i / (64 / sizeof(T))] |= - ((m[index / (64 / sizeof(T))] & shifted_active) == shifted_active) - ? static_cast(1ull - << ((i % (64 / sizeof(T))) * sizeof(T))) - : 0; - index++; - } else { - out[i / (64 / sizeof(T))] |= - ((n[index / (64 / sizeof(T))] & shifted_active) == shifted_active) - ? static_cast(1ull - << ((i % (64 / sizeof(T))) * sizeof(T))) - : 0; - } - interleave = !interleave; - } - return out; - } - - /** Helper function for SVE instructions with the format `zip<1,2> zd, zn, - * zm`. - * T represents the type of operands (e.g. for zn.d, T = uint64_t). - * Returns correctly formatted RegisterValue. */ - template - static RegisterValue sveZip_vecs(std::vector& operands, - const uint16_t VL_bits, bool isZip2) { - const T* n = operands[0].getAsVector(); - const T* m = operands[1].getAsVector(); - - const uint16_t partition_num = VL_bits / (sizeof(T) * 8); - T out[256 / sizeof(T)] = {0}; - - bool interleave = false; - int index = isZip2 ? (partition_num / 2) : 0; - for (int i = 0; i < partition_num; i++) { - if (interleave) { - out[i] = m[index]; - index++; - } else { - out[i] = n[index]; - } - interleave = !interleave; - } - return {out, 256}; - } - - /** Helper function for SVE instructions store instructions to merge - * consecutive active elements into blocks to be written. - * T represents the size of the vector elements (e.g. for zn.d, T = uint64_t). - * C represents the size of the memory elements (e.g. for st1w, C = uint32_t). - * Return a vector of RegisterValues. */ - template - static std::vector sve_merge_store_data(const T* d, - const uint64_t* p, - uint16_t vl_bits) { - std::vector outputData; - - uint16_t numVecElems = (vl_bits / (8 * sizeof(T))); - // Determine how many predicate elements are present per uint64_t. - uint16_t predsPer64 = (64 / sizeof(T)); - - // Determine size of array based on the size of the memory access (This is - // the C specifier in sve instructions) - std::array mData; - uint16_t mdSize = 0; - - for (uint16_t x = 0; x < numVecElems; x++) { - // Determine mask to get predication for active element. - uint64_t shiftedActive = 1ull << ((x % predsPer64) * sizeof(T)); - if (p[x / predsPer64] & shiftedActive) { - mData[mdSize] = static_cast(d[x]); - mdSize++; - } else if (mdSize) { - outputData.push_back( - RegisterValue((char*)mData.data(), mdSize * sizeof(C))); - mdSize = 0; - } - } - if (mdSize) { + interleave = !interleave; + } + return {out, 256}; +} + +/** Helper function for SVE instructions store instructions to merge + * consecutive active elements into blocks to be written. + * T represents the size of the vector elements (e.g. for zn.d, T = uint64_t). + * C represents the size of the memory elements (e.g. for st1w, C = uint32_t). + * Return a vector of RegisterValues. */ +template +std::vector sve_merge_store_data(const T* d, const uint64_t* p, + uint16_t vl_bits) { + std::vector outputData; + + uint16_t numVecElems = (vl_bits / (8 * sizeof(T))); + // Determine how many predicate elements are present per uint64_t. + uint16_t predsPer64 = (64 / sizeof(T)); + + // Determine size of array based on the size of the memory access (This is + // the C specifier in sve instructions) + std::array mData; + uint16_t mdSize = 0; + + for (uint16_t x = 0; x < numVecElems; x++) { + // Determine mask to get predication for active element. + uint64_t shiftedActive = 1ull << ((x % predsPer64) * sizeof(T)); + if (p[x / predsPer64] & shiftedActive) { + mData[mdSize] = static_cast(d[x]); + mdSize++; + } else if (mdSize) { outputData.push_back( RegisterValue((char*)mData.data(), mdSize * sizeof(C))); + mdSize = 0; } - return outputData; } -}; + if (mdSize) { + outputData.push_back( + RegisterValue((char*)mData.data(), mdSize * sizeof(C))); + } + return outputData; +} + } // namespace aarch64 } // namespace arch } // namespace simeng diff --git a/src/lib/arch/aarch64/Instruction_execute.cc b/src/lib/arch/aarch64/Instruction_execute.cc index 6d46a94a1e..1a2069a4bf 100644 --- a/src/lib/arch/aarch64/Instruction_execute.cc +++ b/src/lib/arch/aarch64/Instruction_execute.cc @@ -106,7 +106,7 @@ void Instruction::execute() { } else { switch (metadata.opcode) { case Opcode::AArch64_ADCXr: { // adc xd, xn, xm - auto [result, nzcv] = arithmeticHelp::addCarry_3ops(operands); + auto [result, nzcv] = addCarry_3ops(operands); results[0] = result; break; } @@ -119,56 +119,52 @@ void Instruction::execute() { break; } case Opcode::AArch64_ADDPv16i8: { // addp vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecAddp_3ops(operands); + results[0] = vecAddp_3ops(operands); break; } case Opcode::AArch64_ADDPv2i64: { // addp vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecAddp_3ops(operands); + results[0] = vecAddp_3ops(operands); break; } case Opcode::AArch64_ADDPv2i64p: { // addp dd, vn.2d - results[0] = neonHelp::vecSumElems_2ops(operands); + results[0] = vecSumElems_2ops(operands); break; } case Opcode::AArch64_ADDPv4i32: { // addp vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecAddp_3ops(operands); + results[0] = vecAddp_3ops(operands); break; } case Opcode::AArch64_ADDPv8i16: { // addp vd.8h, vn.8h, vm.8h - results[0] = neonHelp::vecAddp_3ops(operands); + results[0] = vecAddp_3ops(operands); break; } case Opcode::AArch64_ADDSWri: { // adds wd, wn, #imm{, shift} - auto [result, nzcv] = - arithmeticHelp::addShift_imm(operands, metadata, true); + auto [result, nzcv] = addShift_imm(operands, metadata, true); results[0] = nzcv; results[1] = {result, 8}; break; } case Opcode::AArch64_ADDSWrs: { // adds wd, wn, wm{, shift} - auto [result, nzcv] = - arithmeticHelp::addShift_3ops(operands, metadata, true); + auto [result, nzcv] = addShift_3ops(operands, metadata, true); results[0] = nzcv; results[1] = {result, 8}; break; } case Opcode::AArch64_ADDSWrx: { // adds wd, wn, wm{, extend {#amount}} auto [result, nzcv] = - arithmeticHelp::addExtend_3ops(operands, metadata, true); + addExtend_3ops(operands, metadata, true); results[0] = nzcv; results[1] = {result, 8}; break; } case Opcode::AArch64_ADDSXri: { // adds xd, xn, #imm{, shift} - auto [result, nzcv] = - arithmeticHelp::addShift_imm(operands, metadata, true); + auto [result, nzcv] = addShift_imm(operands, metadata, true); results[0] = nzcv; results[1] = result; break; } case Opcode::AArch64_ADDSXrs: { // adds xd, xn, xm{, shift} - auto [result, nzcv] = - arithmeticHelp::addShift_3ops(operands, metadata, true); + auto [result, nzcv] = addShift_3ops(operands, metadata, true); results[0] = nzcv; results[1] = result; break; @@ -176,7 +172,7 @@ void Instruction::execute() { case Opcode::AArch64_ADDSXrx: // adds xd, xn, wm{, extend {#amount}} case Opcode::AArch64_ADDSXrx64: { // adds xd, xn, xm{, extend {#amount}} auto [result, nzcv] = - arithmeticHelp::addExtend_3ops(operands, metadata, true); + addExtend_3ops(operands, metadata, true); results[0] = nzcv; results[1] = RegisterValue(result, 8); break; @@ -190,135 +186,130 @@ void Instruction::execute() { break; } case Opcode::AArch64_ADDVv4i16v: { // addv hd, vn.4h - results[0] = neonHelp::vecSumElems_2ops(operands); + results[0] = vecSumElems_2ops(operands); break; } case Opcode::AArch64_ADDVv4i32v: { // addv sd, vn.4s - results[0] = neonHelp::vecSumElems_2ops(operands); + results[0] = vecSumElems_2ops(operands); break; } case Opcode::AArch64_ADDVv8i8v: { // addv bd, vn.8b - results[0] = neonHelp::vecSumElems_2ops(operands); + results[0] = vecSumElems_2ops(operands); break; } case Opcode::AArch64_ADDWri: { // add wd, wn, #imm{, shift} - auto [result, nzcv] = - arithmeticHelp::addShift_imm(operands, metadata, false); + auto [result, nzcv] = addShift_imm(operands, metadata, false); results[0] = {result, 8}; break; } case Opcode::AArch64_ADDWrs: { // add wd, wn, wm{, shift #amount} auto [result, nzcv] = - arithmeticHelp::addShift_3ops(operands, metadata, false); + addShift_3ops(operands, metadata, false); results[0] = {result, 8}; break; } case Opcode::AArch64_ADDWrx: { // add wd, wn, wm{, extend #amount} auto [result, nzcv] = - arithmeticHelp::addExtend_3ops(operands, metadata, false); + addExtend_3ops(operands, metadata, false); results[0] = {result, 8}; break; } case Opcode::AArch64_ADDXri: { // add xd, xn, #imm{, shift} - auto [result, nzcv] = - arithmeticHelp::addShift_imm(operands, metadata, false); + auto [result, nzcv] = addShift_imm(operands, metadata, false); results[0] = result; break; } case Opcode::AArch64_ADDXrs: { // add xd, xn, xm, {shift #amount} auto [result, nzcv] = - arithmeticHelp::addShift_3ops(operands, metadata, false); + addShift_3ops(operands, metadata, false); results[0] = result; break; } case Opcode::AArch64_ADDXrx: // add xd, xn, wm{, extend {#amount}} case Opcode::AArch64_ADDXrx64: { // add xd, xn, xm{, extend {#amount}} auto [result, nzcv] = - arithmeticHelp::addExtend_3ops(operands, metadata, false); + addExtend_3ops(operands, metadata, false); results[0] = result; break; } case Opcode::AArch64_ADD_ZI_B: { // add zdn.b, zdn.b, imm{, shift} - results[0] = sveHelp::sveAdd_imm(operands, metadata, VL_bits); + results[0] = sveAdd_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_ADD_ZI_D: { // add zdn.d, zdn.d, imm{, shift} - results[0] = sveHelp::sveAdd_imm(operands, metadata, VL_bits); + results[0] = sveAdd_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_ADD_ZI_H: { // add zdn.h zdn.h, imm{, shift} - results[0] = sveHelp::sveAdd_imm(operands, metadata, VL_bits); + results[0] = sveAdd_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_ADD_ZI_S: { // add zdn.s, zdn.s, imm{, shift} - results[0] = sveHelp::sveAdd_imm(operands, metadata, VL_bits); + results[0] = sveAdd_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_ADD_ZPmZ_B: { // add zdn.b, pg/m, zdn.b, zm.b - results[0] = sveHelp::sveAddPredicated_vecs(operands, VL_bits); + results[0] = sveAddPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_ADD_ZPmZ_D: { // add zdn.d, pg/m, zdn.d, zm.d - results[0] = - sveHelp::sveAddPredicated_vecs(operands, VL_bits); + results[0] = sveAddPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_ADD_ZPmZ_H: { // add zdn.h, pg/m, zdn.h, zm.h - results[0] = - sveHelp::sveAddPredicated_vecs(operands, VL_bits); + results[0] = sveAddPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_ADD_ZPmZ_S: { // add zdn.s, pg/m, zdn.s, zm.s - results[0] = - sveHelp::sveAddPredicated_vecs(operands, VL_bits); + results[0] = sveAddPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_ADD_ZZZ_B: { // add zd.b, zn.b, zm.b - results[0] = sveHelp::sveAdd_3ops(operands, VL_bits); + results[0] = sveAdd_3ops(operands, VL_bits); break; } case Opcode::AArch64_ADD_ZZZ_D: { // add zd.d, zn.d, zm.d - results[0] = sveHelp::sveAdd_3ops(operands, VL_bits); + results[0] = sveAdd_3ops(operands, VL_bits); break; } case Opcode::AArch64_ADD_ZZZ_H: { // add zd.h, zn.h, zm.h - results[0] = sveHelp::sveAdd_3ops(operands, VL_bits); + results[0] = sveAdd_3ops(operands, VL_bits); break; } case Opcode::AArch64_ADD_ZZZ_S: { // add zd.s, zn.s, zm.s - results[0] = sveHelp::sveAdd_3ops(operands, VL_bits); + results[0] = sveAdd_3ops(operands, VL_bits); break; } case Opcode::AArch64_ADDv16i8: { // add vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecAdd_3ops(operands); + results[0] = vecAdd_3ops(operands); break; } case Opcode::AArch64_ADDv1i64: { // add dd, dn, dm - results[0] = neonHelp::vecAdd_3ops(operands); + results[0] = vecAdd_3ops(operands); break; } case Opcode::AArch64_ADDv2i32: { // add vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecAdd_3ops(operands); + results[0] = vecAdd_3ops(operands); break; } case Opcode::AArch64_ADDv2i64: { // add vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecAdd_3ops(operands); + results[0] = vecAdd_3ops(operands); break; } case Opcode::AArch64_ADDv4i16: { // add vd.4h, vn.4h, vm.4h - results[0] = neonHelp::vecAdd_3ops(operands); + results[0] = vecAdd_3ops(operands); break; } case Opcode::AArch64_ADDv4i32: { // add vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecAdd_3ops(operands); + results[0] = vecAdd_3ops(operands); break; } case Opcode::AArch64_ADDv8i16: { // add vd.8h, vn.8h, vm.8h - results[0] = neonHelp::vecAdd_3ops(operands); + results[0] = vecAdd_3ops(operands); break; } case Opcode::AArch64_ADDv8i8: { // add vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecAdd_3ops(operands); + results[0] = vecAdd_3ops(operands); break; } case Opcode::AArch64_ADR: { // adr xd, #imm @@ -336,20 +327,20 @@ void Instruction::execute() { case Opcode::AArch64_ADR_LSL_ZZZ_D_1: // adr zd.d, [zn.d, zm.d, lsl #1] case Opcode::AArch64_ADR_LSL_ZZZ_D_2: // adr zd.d, [zn.d, zm.d, lsl #2] case Opcode::AArch64_ADR_LSL_ZZZ_D_3: { // adr zd.d, [zn.d, zm.d, lsl #3] - results[0] = sveHelp::sveAdr_packedOffsets(operands, metadata, - VL_bits); + results[0] = + sveAdr_packedOffsets(operands, metadata, VL_bits); break; } case Opcode::AArch64_ADR_LSL_ZZZ_S_0: // adr zd.s, [zn.s, zm.s] case Opcode::AArch64_ADR_LSL_ZZZ_S_1: // adr zd.s, [zn.s, zm.s, lsl #1] case Opcode::AArch64_ADR_LSL_ZZZ_S_2: // adr zd.s, [zn.s, zm.s, lsl #2] case Opcode::AArch64_ADR_LSL_ZZZ_S_3: { // adr zd.s, [zn.s, zm.s, lsl #3] - results[0] = sveHelp::sveAdr_packedOffsets(operands, metadata, - VL_bits); + results[0] = + sveAdr_packedOffsets(operands, metadata, VL_bits); break; } case Opcode::AArch64_ANDSWri: { // ands wd, wn, #imm - auto [result, nzcv] = logicalHelp::logicOp_imm( + auto [result, nzcv] = logicOp_imm( operands, metadata, true, [](uint32_t x, uint32_t y) -> uint32_t { return x & y; }); results[0] = nzcv; @@ -357,7 +348,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_ANDSWrs: { // ands wd, wn, wm{, shift #amount} - auto [result, nzcv] = logicalHelp::logicOpShift_3ops( + auto [result, nzcv] = logicOpShift_3ops( operands, metadata, true, [](uint32_t x, uint32_t y) -> uint32_t { return x & y; }); results[0] = nzcv; @@ -365,7 +356,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_ANDSXri: { // ands xd, xn, #imm - auto [result, nzcv] = logicalHelp::logicOp_imm( + auto [result, nzcv] = logicOp_imm( operands, metadata, true, [](uint64_t x, uint64_t y) -> uint64_t { return x & y; }); results[0] = nzcv; @@ -373,7 +364,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_ANDSXrs: { // ands xd, xn, xm{, shift #amount} - auto [result, nzcv] = logicalHelp::logicOpShift_3ops( + auto [result, nzcv] = logicOpShift_3ops( operands, metadata, true, [](uint64_t x, uint64_t y) -> uint64_t { return x & y; }); results[0] = nzcv; @@ -381,35 +372,35 @@ void Instruction::execute() { break; } case Opcode::AArch64_ANDWri: { // and wd, wn, #imm - auto [result, nzcv] = logicalHelp::logicOp_imm( + auto [result, nzcv] = logicOp_imm( operands, metadata, false, [](uint32_t x, uint32_t y) -> uint32_t { return x & y; }); results[0] = {result, 8}; break; } case Opcode::AArch64_ANDWrs: { // and wd, wn, wm{, shift #amount} - auto [result, nzcv] = logicalHelp::logicOpShift_3ops( + auto [result, nzcv] = logicOpShift_3ops( operands, metadata, false, [](uint32_t x, uint32_t y) -> uint32_t { return x & y; }); results[0] = {result, 8}; break; } case Opcode::AArch64_ANDXri: { // and xd, xn, #imm - auto [result, nzcv] = logicalHelp::logicOp_imm( + auto [result, nzcv] = logicOp_imm( operands, metadata, false, [](uint64_t x, uint64_t y) -> uint64_t { return x & y; }); results[0] = result; break; } case Opcode::AArch64_ANDXrs: { // and xd, xn, xm{, shift #amount} - auto [result, nzcv] = logicalHelp::logicOpShift_3ops( + auto [result, nzcv] = logicOpShift_3ops( operands, metadata, false, [](uint64_t x, uint64_t y) -> uint64_t { return x & y; }); results[0] = result; break; } case Opcode::AArch64_AND_PPzPP: { // and pd.b, pg/z, pn.b, pm.b - results[0] = sveHelp::sveLogicOp_preds( + results[0] = sveLogicOp_preds( operands, VL_bits, [](uint64_t x, uint64_t y) -> uint64_t { return x & y; }); break; @@ -427,45 +418,45 @@ void Instruction::execute() { break; } case Opcode::AArch64_AND_ZPmZ_B: { // and zdn.b, pg/m, zdn.b, zm.b - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](uint8_t x, uint8_t y) -> uint8_t { return x & y; }); break; } case Opcode::AArch64_AND_ZPmZ_D: { // and zdn.d, pg/m, zdn.d, zm.d - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](uint64_t x, uint64_t y) -> uint64_t { return x & y; }); break; } case Opcode::AArch64_AND_ZPmZ_H: { // and zdn.h, pg/m, zdn.h, zm.h - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](uint16_t x, uint16_t y) -> uint16_t { return x & y; }); break; } case Opcode::AArch64_AND_ZPmZ_S: { // and zdn.s, pg/m, zdn.s, zm.s - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](uint32_t x, uint32_t y) -> uint32_t { return x & y; }); break; } case Opcode::AArch64_ANDv16i8: { // and vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint8_t x, uint8_t y) -> uint8_t { return x & y; }); break; } case Opcode::AArch64_ANDv8i8: { // and vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint8_t x, uint8_t y) -> uint8_t { return x & y; }); break; } case Opcode::AArch64_ASRVWr: { // asrv wd, wn, wm - results[0] = {logicalHelp::asrv_3gpr(operands), 8}; + results[0] = {asrv_3gpr(operands), 8}; break; } case Opcode::AArch64_ASRVXr: { // asrv xd, xn, xm - results[0] = logicalHelp::asrv_3gpr(operands); + results[0] = asrv_3gpr(operands); break; } case Opcode::AArch64_B: { // b label @@ -474,68 +465,63 @@ void Instruction::execute() { break; } case Opcode::AArch64_BFMWri: { // bfm wd, wn, #immr, #imms - results[0] = { - bitmanipHelp::bfm_2imms(operands, metadata, false, false), - 8}; + results[0] = {bfm_2imms(operands, metadata, false, false), 8}; break; } case Opcode::AArch64_BFMXri: { // bfm xd, xn, #immr, #imms - results[0] = - bitmanipHelp::bfm_2imms(operands, metadata, false, false); + results[0] = bfm_2imms(operands, metadata, false, false); break; } case Opcode::AArch64_BICSWrs: { // bics wd, wn, wm{, shift #amount} - auto [result, nzcv] = - logicalHelp::bicShift_3ops(operands, metadata, true); + auto [result, nzcv] = bicShift_3ops(operands, metadata, true); results[0] = nzcv; results[1] = {result, 8}; break; } case Opcode::AArch64_BICSXrs: { // bics xd, xn, xm{, shift #amount} - auto [result, nzcv] = - logicalHelp::bicShift_3ops(operands, metadata, true); + auto [result, nzcv] = bicShift_3ops(operands, metadata, true); results[0] = nzcv; results[1] = result; break; } case Opcode::AArch64_BICWrs: { // bic wd, wn, wm{, shift #amount} auto [result, nzcv] = - logicalHelp::bicShift_3ops(operands, metadata, false); + bicShift_3ops(operands, metadata, false); results[0] = {result, 8}; break; } case Opcode::AArch64_BICXrs: { // bic xd, xn, xm{, shift #amount} auto [result, nzcv] = - logicalHelp::bicShift_3ops(operands, metadata, false); + bicShift_3ops(operands, metadata, false); results[0] = result; break; } case Opcode::AArch64_BICv16i8: { // bic vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecBic_3ops(operands); + results[0] = vecBic_3ops(operands); break; } case Opcode::AArch64_BICv4i32: { // bic vd.4s, #imm{, lsl #shift} - results[0] = neonHelp::vecBicShift_imm(operands, metadata); + results[0] = vecBicShift_imm(operands, metadata); break; } case Opcode::AArch64_BICv8i16: { // bic vd.8h, #imm{, lsl #shift} - results[0] = neonHelp::vecBicShift_imm(operands, metadata); + results[0] = vecBicShift_imm(operands, metadata); break; } case Opcode::AArch64_BICv8i8: { // bic vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecBic_3ops(operands); + results[0] = vecBic_3ops(operands); break; } case Opcode::AArch64_BIFv16i8: { // bif vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecBitwiseInsert<16>(operands, true); + results[0] = vecBitwiseInsert<16>(operands, true); break; } case Opcode::AArch64_BITv16i8: { // bit vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecBitwiseInsert<16>(operands, false); + results[0] = vecBitwiseInsert<16>(operands, false); break; } case Opcode::AArch64_BITv8i8: { // bit vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecBitwiseInsert<8>(operands, false); + results[0] = vecBitwiseInsert<8>(operands, false); break; } case Opcode::AArch64_BL: { // bl #imm @@ -560,11 +546,11 @@ void Instruction::execute() { break; } case Opcode::AArch64_BSLv16i8: { // bsl vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecBsl<16>(operands); + results[0] = vecBsl<16>(operands); break; } case Opcode::AArch64_Bcc: { // b.cond label - if (AuxFunc::conditionHolds(metadata.cc, operands[0].get())) { + if (conditionHolds(metadata.cc, operands[0].get())) { branchTaken_ = true; branchAddress_ = instructionAddress_ + metadata.operands[0].imm; } else { @@ -590,7 +576,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CBNZW: { // cbnz wn, #imm - auto [taken, addr] = conditionalHelp::condBranch_cmpToZero( + auto [taken, addr] = condBranch_cmpToZero( operands, metadata, instructionAddress_, [](uint32_t x) -> bool { return x != 0; }); branchTaken_ = taken; @@ -598,7 +584,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CBNZX: { // cbnz xn, #imm - auto [taken, addr] = conditionalHelp::condBranch_cmpToZero( + auto [taken, addr] = condBranch_cmpToZero( operands, metadata, instructionAddress_, [](uint64_t x) -> bool { return x != 0; }); branchTaken_ = taken; @@ -606,7 +592,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CBZW: { // cbz wn, #imm - auto [taken, addr] = conditionalHelp::condBranch_cmpToZero( + auto [taken, addr] = condBranch_cmpToZero( operands, metadata, instructionAddress_, [](uint32_t x) -> bool { return x == 0; }); branchTaken_ = taken; @@ -614,7 +600,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CBZX: { // cbz xn, #imm - auto [taken, addr] = conditionalHelp::condBranch_cmpToZero( + auto [taken, addr] = condBranch_cmpToZero( operands, metadata, instructionAddress_, [](uint64_t x) -> bool { return x == 0; }); branchTaken_ = taken; @@ -622,77 +608,77 @@ void Instruction::execute() { break; } case Opcode::AArch64_CCMNWi: { // ccmn wn, #imm, #nzcv, cc - results[0] = conditionalHelp::ccmn_imm(operands, metadata); + results[0] = ccmn_imm(operands, metadata); break; } case Opcode::AArch64_CCMNXi: { // ccmn xn, #imm, #nzcv, cc - results[0] = conditionalHelp::ccmn_imm(operands, metadata); + results[0] = ccmn_imm(operands, metadata); break; } case Opcode::AArch64_CCMPWi: { // ccmp wn, #imm, #nzcv, cc - results[0] = conditionalHelp::ccmp_imm(operands, metadata); + results[0] = ccmp_imm(operands, metadata); break; } case Opcode::AArch64_CCMPWr: { // ccmp wn, wm, #nzcv, cc - results[0] = conditionalHelp::ccmp_reg(operands, metadata); + results[0] = ccmp_reg(operands, metadata); break; } case Opcode::AArch64_CCMPXi: { // ccmp xn, #imm, #nzcv, cc - results[0] = conditionalHelp::ccmp_imm(operands, metadata); + results[0] = ccmp_imm(operands, metadata); break; } case Opcode::AArch64_CCMPXr: { // ccmp xn, xm, #nzcv, cc - results[0] = conditionalHelp::ccmp_reg(operands, metadata); + results[0] = ccmp_reg(operands, metadata); break; } case Opcode::AArch64_CLZXr: { // clz xd, xn - results[0] = arithmeticHelp::clz_reg(operands); + results[0] = clz_reg(operands); break; } case Opcode::AArch64_CMEQv16i8: { // cmeq vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecCompare( + results[0] = vecCompare( operands, false, [](uint8_t x, uint8_t y) -> bool { return (x == y); }); break; } case Opcode::AArch64_CMEQv16i8rz: { // cmeq vd.16b, vn.16b, #0 - results[0] = neonHelp::vecCompare( + results[0] = vecCompare( operands, true, [](uint8_t x, uint8_t y) -> bool { return (x == y); }); break; } case Opcode::AArch64_CMEQv4i32: { // cmeq vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecCompare( + results[0] = vecCompare( operands, false, [](uint32_t x, uint32_t y) -> bool { return (x == y); }); break; } case Opcode::AArch64_CMEQv8i8: { // cmeq vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecCompare( + results[0] = vecCompare( operands, false, [](int8_t x, int8_t y) -> bool { return (x == y); }); break; } case Opcode::AArch64_CMEQv8i8rz: { // cmeq vd.8b, vn.8b, #0 - results[0] = neonHelp::vecCompare( + results[0] = vecCompare( operands, true, [](int8_t x, int8_t y) -> bool { return (x == y); }); break; } case Opcode::AArch64_CMHIv4i32: { // cmhi vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecCompare( + results[0] = vecCompare( operands, false, [](uint32_t x, uint32_t y) -> bool { return (x > y); }); break; } case Opcode::AArch64_CMHSv16i8: { // cmhs vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecCompare( + results[0] = vecCompare( operands, false, [](int8_t x, int8_t y) -> bool { return (x >= y); }); break; } case Opcode::AArch64_CMPEQ_PPzZI_B: { // cmpeq pd.b, pg/z, zn.b, #imm - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, true, [](uint8_t x, uint8_t y) -> bool { return x == y; }); results[0] = nzcv; @@ -700,7 +686,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPEQ_PPzZI_D: { // cmpeq pd.d, pg/z, zn.d, #imm - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, true, [](uint64_t x, uint64_t y) -> bool { return x == y; }); results[0] = nzcv; @@ -708,7 +694,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPEQ_PPzZI_H: { // cmpeq pd.h, pg/z, zn.h, #imm - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, true, [](uint16_t x, uint16_t y) -> bool { return x == y; }); results[0] = nzcv; @@ -716,7 +702,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPEQ_PPzZI_S: { // cmpeq pd.s, pg/z, zn.s, #imm - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, true, [](uint32_t x, uint32_t y) -> bool { return x == y; }); results[0] = nzcv; @@ -724,7 +710,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPEQ_PPzZZ_B: { // cmpeq pd.b, pg/z, zn.b, zm.b - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](uint8_t x, uint8_t y) -> bool { return x == y; }); results[0] = nzcv; @@ -732,7 +718,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPEQ_PPzZZ_D: { // cmpeq pd.d, pg/z, zn.d, zm.d - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](uint64_t x, uint64_t y) -> bool { return x == y; }); results[0] = nzcv; @@ -740,7 +726,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPEQ_PPzZZ_H: { // cmpeq pd.h, pg/z, zn.h, zm.h - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](uint16_t x, uint16_t y) -> bool { return x == y; }); results[0] = nzcv; @@ -748,7 +734,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPEQ_PPzZZ_S: { // cmpeq pd.s, pg/z, zn.s, zm.s - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](uint32_t x, uint32_t y) -> bool { return x == y; }); results[0] = nzcv; @@ -756,7 +742,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPGT_PPzZZ_B: { // cmpgt pd.b, pg/z, zn.b, zm.b - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](int8_t x, int8_t y) -> bool { return x > y; }); results[0] = nzcv; @@ -764,7 +750,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPGT_PPzZZ_D: { // cmpgt pd.d, pg/z, zn.d, zm.d - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](int64_t x, int64_t y) -> bool { return x > y; }); results[0] = nzcv; @@ -772,7 +758,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPGT_PPzZZ_H: { // cmpgt pd.h, pg/z, zn.h, zm.h - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](int16_t x, int16_t y) -> bool { return x > y; }); results[0] = nzcv; @@ -780,7 +766,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPGT_PPzZZ_S: { // cmpgt pd.s, pg/z, zn.s, zm.s - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](int32_t x, int32_t y) -> bool { return x > y; }); results[0] = nzcv; @@ -788,7 +774,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPHI_PPzZZ_B: { // cmphi pd.b, pg/z, zn.b, zm.b - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](uint8_t x, uint8_t y) -> bool { return x > y; }); results[0] = nzcv; @@ -796,7 +782,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPHI_PPzZZ_D: { // cmphi pd.d, pg/z, zn.d, zm.d - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](uint64_t x, uint64_t y) -> bool { return x > y; }); results[0] = nzcv; @@ -804,7 +790,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPHI_PPzZZ_H: { // cmphi pd.h, pg/z, zn.h, zm.h - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](uint16_t x, uint16_t y) -> bool { return x > y; }); results[0] = nzcv; @@ -812,7 +798,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPHI_PPzZZ_S: { // cmphi pd.s, pg/z, zn.s, zm.s - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](uint32_t x, uint32_t y) -> bool { return x > y; }); results[0] = nzcv; @@ -820,7 +806,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPNE_PPzZI_B: { // cmpne pd.b, pg/z. zn.b, #imm - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, true, [](int8_t x, int8_t y) -> bool { return x != y; }); results[0] = nzcv; @@ -828,7 +814,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPNE_PPzZI_D: { // cmpne pd.d, pg/z. zn.d, #imm - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, true, [](int64_t x, int64_t y) -> bool { return x != y; }); results[0] = nzcv; @@ -836,7 +822,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPNE_PPzZI_H: { // cmpne pd.h, pg/z. zn.h, #imm - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, true, [](int16_t x, int16_t y) -> bool { return x != y; }); results[0] = nzcv; @@ -844,7 +830,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPNE_PPzZI_S: { // cmpne pd.s, pg/z. zn.s, #imm - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, true, [](int32_t x, int32_t y) -> bool { return x != y; }); results[0] = nzcv; @@ -852,7 +838,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPNE_PPzZZ_B: { // cmpne pd.b, pg/z, zn.b, zm.b - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](int8_t x, int8_t y) -> bool { return x != y; }); results[0] = nzcv; @@ -860,7 +846,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPNE_PPzZZ_D: { // cmpne pd.d, pg/z, zn.d, zm.d - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](int64_t x, int64_t y) -> bool { return x != y; }); results[0] = nzcv; @@ -868,7 +854,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPNE_PPzZZ_H: { // cmpne pd.h, pg/z, zn.h, zm.h - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](int16_t x, int16_t y) -> bool { return x != y; }); results[0] = nzcv; @@ -876,7 +862,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_CMPNE_PPzZZ_S: { // cmpne pd.s, pg/z, zn.s, zm.s - auto [output, nzcv] = sveHelp::sveCmpPredicated_toPred( + auto [output, nzcv] = sveCmpPredicated_toPred( operands, metadata, VL_bits, false, [](int32_t x, int32_t y) -> bool { return x != y; }); results[0] = nzcv; @@ -884,123 +870,118 @@ void Instruction::execute() { break; } case Opcode::AArch64_CNTB_XPiI: { // cntb xd{, pattern{, #imm}} - results[0] = sveHelp::sveCnt_gpr(metadata, VL_bits); + results[0] = sveCnt_gpr(metadata, VL_bits); break; } case Opcode::AArch64_CNTD_XPiI: { // cntd xd{, pattern{, #imm}} - results[0] = sveHelp::sveCnt_gpr(metadata, VL_bits); + results[0] = sveCnt_gpr(metadata, VL_bits); break; } case Opcode::AArch64_CNTH_XPiI: { // cnth xd{, pattern{, #imm}} - results[0] = sveHelp::sveCnt_gpr(metadata, VL_bits); + results[0] = sveCnt_gpr(metadata, VL_bits); break; } case Opcode::AArch64_CNTP_XPP_B: { // cntp xd, pg, pn.b - results[0] = sveHelp::sveCntp(operands, VL_bits); + results[0] = sveCntp(operands, VL_bits); break; } case Opcode::AArch64_CNTP_XPP_D: { // cntp xd, pg, pn.d - results[0] = sveHelp::sveCntp(operands, VL_bits); + results[0] = sveCntp(operands, VL_bits); break; } case Opcode::AArch64_CNTP_XPP_H: { // cntp xd, pg, pn.h - results[0] = sveHelp::sveCntp(operands, VL_bits); + results[0] = sveCntp(operands, VL_bits); break; } case Opcode::AArch64_CNTP_XPP_S: { // cntp xd, pg, pn.s - results[0] = sveHelp::sveCntp(operands, VL_bits); + results[0] = sveCntp(operands, VL_bits); break; } case Opcode::AArch64_CNTW_XPiI: { // cntw xd{, pattern{, #imm}} - results[0] = sveHelp::sveCnt_gpr(metadata, VL_bits); + results[0] = sveCnt_gpr(metadata, VL_bits); break; } case Opcode::AArch64_CNTv8i8: { // cnt vd.8b, vn.8b - results[0] = neonHelp::vecCountPerByte(operands); + results[0] = vecCountPerByte(operands); break; } case Opcode::AArch64_CPY_ZPzI_B: { // cpy zd.b, pg/z, #imm{, shift} - results[0] = sveHelp::sveCpy_imm(operands, metadata, VL_bits); + results[0] = sveCpy_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_CPY_ZPzI_D: { // cpy zd.d, pg/z, #imm{, shift} - results[0] = sveHelp::sveCpy_imm(operands, metadata, VL_bits); + results[0] = sveCpy_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_CPY_ZPzI_H: { // cpy zd.h, pg/z, #imm{, shift} - results[0] = sveHelp::sveCpy_imm(operands, metadata, VL_bits); + results[0] = sveCpy_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_CPY_ZPzI_S: { // cpy zd.s, pg/z, #imm{, shift} - results[0] = sveHelp::sveCpy_imm(operands, metadata, VL_bits); + results[0] = sveCpy_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_DUPi32: { // dup vd, vn.s[index] - results[0] = - neonHelp::vecDup_gprOrIndex(operands, metadata, false); + results[0] = vecDup_gprOrIndex(operands, metadata, false); break; } case Opcode::AArch64_DUPi64: { // dup vd, vn.d[index] - results[0] = - neonHelp::vecDup_gprOrIndex(operands, metadata, false); + results[0] = vecDup_gprOrIndex(operands, metadata, false); break; } case Opcode::AArch64_CSELWr: { // csel wd, wn, wm, cc results[0] = { - conditionalHelp::cs_4ops( - operands, metadata, [](uint32_t x) -> uint32_t { return x; }), + cs_4ops(operands, metadata, + [](uint32_t x) -> uint32_t { return x; }), 8}; break; } case Opcode::AArch64_CSELXr: { // csel xd, xn, xm, cc - results[0] = conditionalHelp::cs_4ops( + results[0] = cs_4ops( operands, metadata, [](uint64_t x) -> uint64_t { return x; }); break; } case Opcode::AArch64_CSINCWr: { // csinc wd, wn, wm, cc - results[0] = {conditionalHelp::cs_4ops( - operands, metadata, - [](uint32_t x) -> uint32_t { return x + 1; }), - 8}; + results[0] = { + cs_4ops(operands, metadata, + [](uint32_t x) -> uint32_t { return x + 1; }), + 8}; break; } case Opcode::AArch64_CSINCXr: { // csinc xd, xn, xm, cc - results[0] = conditionalHelp::cs_4ops( + results[0] = cs_4ops( operands, metadata, [](uint64_t x) -> uint64_t { return x + 1; }); break; } case Opcode::AArch64_CSINVWr: { // csinv wd, wn, wm, cc results[0] = { - conditionalHelp::cs_4ops( - operands, metadata, [](uint32_t x) -> uint32_t { return ~x; }), + cs_4ops(operands, metadata, + [](uint32_t x) -> uint32_t { return ~x; }), 8}; break; } case Opcode::AArch64_CSINVXr: { // csinv xd, xn, xm, cc - results[0] = conditionalHelp::cs_4ops( + results[0] = cs_4ops( operands, metadata, [](uint64_t x) -> uint64_t { return ~x; }); break; } case Opcode::AArch64_CSNEGWr: { // csneg wd, wn, wm, cc - results[0] = { - conditionalHelp::cs_4ops( - operands, metadata, [](int32_t x) -> int32_t { return -x; }), - 8}; + results[0] = {cs_4ops(operands, metadata, + [](int32_t x) -> int32_t { return -x; }), + 8}; break; } case Opcode::AArch64_CSNEGXr: { // csneg xd, xn, xm, cc - results[0] = conditionalHelp::cs_4ops( + results[0] = cs_4ops( operands, metadata, [](uint64_t x) -> uint64_t { return -x; }); break; } case Opcode::AArch64_DECB_XPiI: { // decb xdn{, pattern{, MUL #imm}} - results[0] = - sveHelp::sveDec_scalar(operands, metadata, VL_bits); + results[0] = sveDec_scalar(operands, metadata, VL_bits); break; } case Opcode::AArch64_DECD_XPiI: { // decd xdn{, pattern{, MUL #imm}} - results[0] = - sveHelp::sveDec_scalar(operands, metadata, VL_bits); + results[0] = sveDec_scalar(operands, metadata, VL_bits); break; } case Opcode::AArch64_DMB: { // dmb option|#imm @@ -1017,48 +998,47 @@ void Instruction::execute() { break; } case Opcode::AArch64_DUP_ZI_B: { // dup zd.b, #imm{, shift} - results[0] = sveHelp::sveDup_immOrScalar(operands, metadata, - VL_bits, true); + results[0] = + sveDup_immOrScalar(operands, metadata, VL_bits, true); break; } case Opcode::AArch64_DUP_ZI_D: { // dup zd.d, #imm{, shift} - results[0] = sveHelp::sveDup_immOrScalar(operands, metadata, - VL_bits, true); + results[0] = + sveDup_immOrScalar(operands, metadata, VL_bits, true); break; } case Opcode::AArch64_DUP_ZI_H: { // dup zd.h, #imm{, shift} - results[0] = sveHelp::sveDup_immOrScalar(operands, metadata, - VL_bits, true); + results[0] = + sveDup_immOrScalar(operands, metadata, VL_bits, true); break; } case Opcode::AArch64_DUP_ZI_S: { // dup zd.s, #imm{, shift} - results[0] = sveHelp::sveDup_immOrScalar(operands, metadata, - VL_bits, true); + results[0] = + sveDup_immOrScalar(operands, metadata, VL_bits, true); break; } case Opcode::AArch64_DUP_ZR_B: { // dup zd.b, wn - results[0] = sveHelp::sveDup_immOrScalar(operands, metadata, - VL_bits, false); + results[0] = + sveDup_immOrScalar(operands, metadata, VL_bits, false); break; } case Opcode::AArch64_DUP_ZR_D: { // dup zd.d, xn - results[0] = sveHelp::sveDup_immOrScalar(operands, metadata, - VL_bits, false); + results[0] = + sveDup_immOrScalar(operands, metadata, VL_bits, false); break; } case Opcode::AArch64_DUP_ZR_H: { // dup zd.h, wn - results[0] = sveHelp::sveDup_immOrScalar(operands, metadata, - VL_bits, false); + results[0] = + sveDup_immOrScalar(operands, metadata, VL_bits, false); break; } case Opcode::AArch64_DUP_ZR_S: { // dup zd.s, wn - results[0] = sveHelp::sveDup_immOrScalar(operands, metadata, - VL_bits, false); + results[0] = + sveDup_immOrScalar(operands, metadata, VL_bits, false); break; } case Opcode::AArch64_DUP_ZZI_D: { // dup zd.d, zn.d[#imm] - results[0] = - sveHelp::sveDup_vecIndexed(operands, metadata, VL_bits); + results[0] = sveDup_vecIndexed(operands, metadata, VL_bits); break; } case Opcode::AArch64_DUP_ZZI_Q: { // dup zd.q, zn.q[#imm] @@ -1083,126 +1063,116 @@ void Instruction::execute() { break; } case Opcode::AArch64_DUP_ZZI_S: { // dup zd.s, zn.s[#imm] - results[0] = - sveHelp::sveDup_vecIndexed(operands, metadata, VL_bits); + results[0] = sveDup_vecIndexed(operands, metadata, VL_bits); break; } case Opcode::AArch64_DUPv16i8gpr: { // dup vd.16b, wn - results[0] = - neonHelp::vecDup_gprOrIndex(operands, metadata, true); + results[0] = vecDup_gprOrIndex(operands, metadata, true); break; } case Opcode::AArch64_DUPv2i32gpr: { // dup vd.2s, wn - results[0] = - neonHelp::vecDup_gprOrIndex(operands, metadata, true); + results[0] = vecDup_gprOrIndex(operands, metadata, true); break; } case Opcode::AArch64_DUPv2i32lane: { // dup vd.2s, vn.s[index] - results[0] = - neonHelp::vecDup_gprOrIndex(operands, metadata, false); + results[0] = vecDup_gprOrIndex(operands, metadata, false); break; } case Opcode::AArch64_DUPv2i64gpr: { // dup vd.2d, xn - results[0] = - neonHelp::vecDup_gprOrIndex(operands, metadata, true); + results[0] = vecDup_gprOrIndex(operands, metadata, true); break; } case Opcode::AArch64_DUPv2i64lane: { // dup vd.2d, vn.d[index] - results[0] = - neonHelp::vecDup_gprOrIndex(operands, metadata, false); + results[0] = vecDup_gprOrIndex(operands, metadata, false); break; } case Opcode::AArch64_DUPv4i16gpr: { // dup vd.4h, wn - results[0] = - neonHelp::vecDup_gprOrIndex(operands, metadata, true); + results[0] = vecDup_gprOrIndex(operands, metadata, true); break; } case Opcode::AArch64_DUPv4i32gpr: { // dup vd.4s, wn - results[0] = - neonHelp::vecDup_gprOrIndex(operands, metadata, true); + results[0] = vecDup_gprOrIndex(operands, metadata, true); break; } case Opcode::AArch64_DUPv4i32lane: { // dup vd.4s, vn.s[index] - results[0] = - neonHelp::vecDup_gprOrIndex(operands, metadata, false); + results[0] = vecDup_gprOrIndex(operands, metadata, false); break; } case Opcode::AArch64_DUPv8i16gpr: { // dup vd.8h, wn - results[0] = - neonHelp::vecDup_gprOrIndex(operands, metadata, true); + results[0] = vecDup_gprOrIndex(operands, metadata, true); break; } case Opcode::AArch64_EORWri: { // eor wd, wn, #imm - auto [result, nzcv] = logicalHelp::logicOp_imm( + auto [result, nzcv] = logicOp_imm( operands, metadata, false, [](uint32_t x, uint32_t y) -> uint32_t { return x ^ y; }); results[0] = {result, 8}; break; } case Opcode::AArch64_EORWrs: { // eor wd, wn, wm{, shift #imm} - auto [result, nzcv] = logicalHelp::logicOpShift_3ops( + auto [result, nzcv] = logicOpShift_3ops( operands, metadata, false, [](uint32_t x, uint32_t y) -> uint32_t { return x ^ y; }); results[0] = {result, 8}; break; } case Opcode::AArch64_EORXri: { // eor xd, xn, #imm - auto [result, nzcv] = logicalHelp::logicOp_imm( + auto [result, nzcv] = logicOp_imm( operands, metadata, false, [](uint64_t x, uint64_t y) -> uint64_t { return x ^ y; }); results[0] = result; break; } case Opcode::AArch64_EORXrs: { // eor xd, xn, xm{, shift #amount} - auto [result, nzcv] = logicalHelp::logicOpShift_3ops( + auto [result, nzcv] = logicOpShift_3ops( operands, metadata, false, [](uint64_t x, uint64_t y) -> uint64_t { return x ^ y; }); results[0] = result; break; } case Opcode::AArch64_EOR_PPzPP: { - results[0] = sveHelp::sveLogicOp_preds( + results[0] = sveLogicOp_preds( operands, VL_bits, [](uint64_t x, uint64_t y) -> uint64_t { return x ^ y; }); break; } case Opcode::AArch64_EOR_ZPmZ_B: { // eor zdn.b, pg/m, zdn.b, zm.b - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](uint8_t x, uint8_t y) -> uint8_t { return x ^ y; }); break; } case Opcode::AArch64_EOR_ZPmZ_D: { // eor zdn.d, pg/m, zdn.d, zm.d - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](uint64_t x, uint64_t y) -> uint64_t { return x ^ y; }); break; } case Opcode::AArch64_EOR_ZPmZ_H: { // eor zdn.h, pg/m, zdn.h, zm.h - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](uint16_t x, uint16_t y) -> uint16_t { return x ^ y; }); break; } case Opcode::AArch64_EOR_ZPmZ_S: { // eor zdn.s, pg/m, zdn.s, zm.s - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](uint32_t x, uint32_t y) -> uint32_t { return x ^ y; }); break; } case Opcode::AArch64_EOR_ZZZ: { // eor zd.d, zn.d, zm.d - results[0] = sveHelp::sveLogicOpUnPredicated_3vecs( + results[0] = sveLogicOpUnPredicated_3vecs( operands, VL_bits, [](uint64_t x, uint64_t y) -> uint64_t { return x ^ y; }); break; } case Opcode::AArch64_EORv16i8: { // eor vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint8_t x, uint8_t y) -> uint8_t { return x ^ y; }); break; } case Opcode::AArch64_EORv8i8: { // eor vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint8_t x, uint8_t y) -> uint8_t { return x ^ y; }); break; } @@ -1235,355 +1205,347 @@ void Instruction::execute() { break; } case Opcode::AArch64_EXTRWrri: { // extr wd, wn, wm, #lsb - results[0] = { - bitmanipHelp::extrLSB_registers(operands, metadata), 8}; + results[0] = {extrLSB_registers(operands, metadata), 8}; break; } case Opcode::AArch64_EXTRXrri: { // extr xd, xn, xm, #lsb - results[0] = - bitmanipHelp::extrLSB_registers(operands, metadata); + results[0] = extrLSB_registers(operands, metadata); break; } case Opcode::AArch64_EXTv16i8: { // ext vd.16b, vn.16b, vm.16b, #index - results[0] = - neonHelp::vecExtVecs_index(operands, metadata); + results[0] = vecExtVecs_index(operands, metadata); break; } case Opcode::AArch64_EXTv8i8: { // ext vd.8b, vn.8b, vm.8b, #index - results[0] = neonHelp::vecExtVecs_index(operands, metadata); + results[0] = vecExtVecs_index(operands, metadata); break; } case Opcode::AArch64_FABDv2f64: { // fabd vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecFabd(operands); + results[0] = vecFabd(operands); break; } case Opcode::AArch64_FABDv4f32: { // fabd vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecFabd(operands); + results[0] = vecFabd(operands); break; } case Opcode::AArch64_FABD32: { // fabd sd, sn, sm - results[0] = floatHelp::fabd_3ops(operands); + results[0] = fabd_3ops(operands); break; } case Opcode::AArch64_FABD64: { // fabd dd, dn, dm - results[0] = floatHelp::fabd_3ops(operands); + results[0] = fabd_3ops(operands); break; } case Opcode::AArch64_FABSDr: { // fabs dd, dn - results[0] = floatHelp::fabs_2ops(operands); + results[0] = fabs_2ops(operands); break; } case Opcode::AArch64_FABSSr: { // fabs sd, sn - results[0] = floatHelp::fabs_2ops(operands); + results[0] = fabs_2ops(operands); break; } case Opcode::AArch64_FABS_ZPmZ_D: { // fabs zd.d, pg/m, zn.d - results[0] = sveHelp::sveFabsPredicated(operands, VL_bits); + results[0] = sveFabsPredicated(operands, VL_bits); break; } case Opcode::AArch64_FABS_ZPmZ_S: { // fabs zd.s, pg/m, zn.s - results[0] = sveHelp::sveFabsPredicated(operands, VL_bits); + results[0] = sveFabsPredicated(operands, VL_bits); break; } case Opcode::AArch64_FABSv2f64: { // fabs vd.2d, vn.2d - results[0] = neonHelp::vecFabs_2ops(operands); + results[0] = vecFabs_2ops(operands); break; } case Opcode::AArch64_FABSv4f32: { // fabs vd.4s, vn.4s - results[0] = neonHelp::vecFabs_2ops(operands); + results[0] = vecFabs_2ops(operands); break; } case Opcode::AArch64_FADDA_VPZ_D: { // fadda dd, pg/m, dn, zm.d - results[0] = sveHelp::sveFaddaPredicated(operands, VL_bits); + results[0] = sveFaddaPredicated(operands, VL_bits); break; } case Opcode::AArch64_FADDA_VPZ_S: { // fadda sd, pg/m, sn, zm.s - results[0] = sveHelp::sveFaddaPredicated(operands, VL_bits); + results[0] = sveFaddaPredicated(operands, VL_bits); break; } case Opcode::AArch64_FADDDrr: { // fadd dd, dn, dm - results[0] = {arithmeticHelp::add_3ops(operands), 256}; + results[0] = {add_3ops(operands), 256}; break; } case Opcode::AArch64_FADDPv2f32: { // faddp vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecAddp_3ops(operands); + results[0] = vecAddp_3ops(operands); break; } case Opcode::AArch64_FADDPv2f64: { // faddp vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecAddp_3ops(operands); + results[0] = vecAddp_3ops(operands); break; } case Opcode::AArch64_FADDPv2i32p: { // faddp dd, vn.2s - results[0] = neonHelp::vecSumElems_2ops(operands); + results[0] = vecSumElems_2ops(operands); break; } case Opcode::AArch64_FADDPv2i64p: { // faddp dd, vn.2d - results[0] = neonHelp::vecSumElems_2ops(operands); + results[0] = vecSumElems_2ops(operands); break; } case Opcode::AArch64_FADDPv4f32: { // faddp vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecAddp_3ops(operands); + results[0] = vecAddp_3ops(operands); break; } case Opcode::AArch64_FADDSrr: { // fadd sd, sn, sm - results[0] = {arithmeticHelp::add_3ops(operands), 256}; + results[0] = {add_3ops(operands), 256}; break; } case Opcode::AArch64_FADD_ZPmI_D: { // fadd zdn.d, pg/m, zdn.d, const - results[0] = sveHelp::sveAddPredicated_const(operands, metadata, - VL_bits); + results[0] = + sveAddPredicated_const(operands, metadata, VL_bits); break; } case Opcode::AArch64_FADD_ZPmI_S: { // fadd zdn.s, pg/m, zdn.s, const - results[0] = - sveHelp::sveAddPredicated_const(operands, metadata, VL_bits); + results[0] = sveAddPredicated_const(operands, metadata, VL_bits); break; } case Opcode::AArch64_FADD_ZPmZ_D: { // fadd zdn.d, pg/m, zdn.d, zm.d - results[0] = sveHelp::sveAddPredicated_vecs(operands, VL_bits); + results[0] = sveAddPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_FADD_ZPmZ_S: { // fadd zdn.s, pg/m, zdn.s, zm.s - results[0] = sveHelp::sveAddPredicated_vecs(operands, VL_bits); + results[0] = sveAddPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_FADD_ZZZ_D: { // fadd zd.d, zn.d, zm.d - results[0] = sveHelp::sveAdd_3ops(operands, VL_bits); + results[0] = sveAdd_3ops(operands, VL_bits); break; } case Opcode::AArch64_FADD_ZZZ_S: { // fadd zd.s, zn.s, zm.s - results[0] = sveHelp::sveAdd_3ops(operands, VL_bits); + results[0] = sveAdd_3ops(operands, VL_bits); break; } case Opcode::AArch64_FADDv2f32: { // fadd vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecAdd_3ops(operands); + results[0] = vecAdd_3ops(operands); break; } case Opcode::AArch64_FADDv2f64: { // fadd vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecAdd_3ops(operands); + results[0] = vecAdd_3ops(operands); break; } case Opcode::AArch64_FADDv4f32: { // fadd vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecAdd_3ops(operands); + results[0] = vecAdd_3ops(operands); break; } case Opcode::AArch64_FCADD_ZPmZ_D: { // fcadd zdn.d, pg/m, zdn.d, zm.d, // #imm - results[0] = - sveHelp::sveFcaddPredicated(operands, metadata, VL_bits); + results[0] = sveFcaddPredicated(operands, metadata, VL_bits); break; } case Opcode::AArch64_FCCMPDrr: // fccmp sn, sm, #nzcv, cc case Opcode::AArch64_FCCMPEDrr: { // fccmpe sn, sm, #nzcv, cc - results[0] = floatHelp::fccmp(operands, metadata); + results[0] = fccmp(operands, metadata); break; } case Opcode::AArch64_FCCMPESrr: { // fccmpe sn, sm, #nzcv, cc - results[0] = floatHelp::fccmp(operands, metadata); + results[0] = fccmp(operands, metadata); break; } case Opcode::AArch64_FCCMPSrr: { // fccmp sn, sm, #nzcv, cc - results[0] = floatHelp::fccmp(operands, metadata); + results[0] = fccmp(operands, metadata); break; } case Opcode::AArch64_FCMEQv2i32rz: { // fcmeq vd.2s, vd.2s, #0.0 - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, true, [](float x, float y) -> bool { return x == y; }); break; } case Opcode::AArch64_FCMEQv4i32rz: { // fcmeq vd.4s vn.4s, #0.0 - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, true, [](float x, float y) -> bool { return x == y; }); break; } case Opcode::AArch64_FCMGE_PPzZ0_D: { // fcmge pd.d, pg/z, zn.d, #0.0 - results[0] = sveHelp::sveComparePredicated_vecsToPred( + results[0] = sveComparePredicated_vecsToPred( operands, metadata, VL_bits, true, [](double x, double y) -> bool { return x >= y; }); break; } case Opcode::AArch64_FCMGE_PPzZ0_S: { // fcmge pd.s, pg/z, zn.s, #0.0 - results[0] = sveHelp::sveComparePredicated_vecsToPred( + results[0] = sveComparePredicated_vecsToPred( operands, metadata, VL_bits, true, [](float x, float y) -> bool { return x >= y; }); break; } case Opcode::AArch64_FCMGE_PPzZZ_D: { // fcmge pd.d, pg/z, zn.d, zm.d - results[0] = sveHelp::sveComparePredicated_vecsToPred( + results[0] = sveComparePredicated_vecsToPred( operands, metadata, VL_bits, false, [](double x, double y) -> bool { return x >= y; }); break; } case Opcode::AArch64_FCMGE_PPzZZ_S: { // fcmge pd.s, pg/z, zn.s, zm.s - results[0] = sveHelp::sveComparePredicated_vecsToPred( + results[0] = sveComparePredicated_vecsToPred( operands, metadata, VL_bits, false, [](float x, float y) -> bool { return x >= y; }); break; } case Opcode::AArch64_FCMGEv2f32: { // fcmge vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, false, [](float x, float y) -> bool { return x >= y; }); break; } case Opcode::AArch64_FCMGEv2f64: { // fcmge vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, false, [](float x, double y) -> bool { return x >= y; }); break; } case Opcode::AArch64_FCMGEv2i64rz: { // fcmge vd.2d, vn.2d, 0.0 - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, true, [](double x, double y) -> bool { return x >= y; }); break; } case Opcode::AArch64_FCMGEv4f32: { // fcmge vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, false, [](float x, float y) -> bool { return x >= y; }); break; } case Opcode::AArch64_FCMGEv4i32rz: { // fcmge vd.4s, vn.4s, 0.0 - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, true, [](float x, float y) -> bool { return x >= y; }); break; } case Opcode::AArch64_FCMGT_PPzZ0_D: { // fcmgt pd.d, pg/z, zn.d, #0.0 - results[0] = sveHelp::sveComparePredicated_vecsToPred( + results[0] = sveComparePredicated_vecsToPred( operands, metadata, VL_bits, true, [](double x, double y) -> bool { return x > y; }); break; } case Opcode::AArch64_FCMGT_PPzZ0_S: { // fcmgt pd.s, pg/z, zn.s, #0.0 - results[0] = sveHelp::sveComparePredicated_vecsToPred( + results[0] = sveComparePredicated_vecsToPred( operands, metadata, VL_bits, true, [](float x, float y) -> bool { return x > y; }); break; } case Opcode::AArch64_FCMGT_PPzZZ_D: { // fcmgt pd.d, pg/z, zn.d, zm.d - results[0] = sveHelp::sveComparePredicated_vecsToPred( + results[0] = sveComparePredicated_vecsToPred( operands, metadata, VL_bits, false, [](double x, double y) -> bool { return x > y; }); break; } case Opcode::AArch64_FCMGT_PPzZZ_S: { // fcmgt pd.s, pg/z, zn.s, zm. - results[0] = sveHelp::sveComparePredicated_vecsToPred( + results[0] = sveComparePredicated_vecsToPred( operands, metadata, VL_bits, false, [](float x, float y) -> bool { return x > y; }); break; } case Opcode::AArch64_FCMGTv2i32rz: { // fcmgt vd.2s, vn.2s, #0.0 - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, true, [](float x, float y) -> bool { return x > y; }); break; } case Opcode::AArch64_FCMGTv2i64rz: { // fcmgt vd.2d, vn.2d, #0.0 - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, true, [](double x, double y) -> bool { return x > y; }); break; } case Opcode::AArch64_FCMGTv2f64: { // fcmgt vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, false, [](double x, double y) -> bool { return x > y; }); break; } case Opcode::AArch64_FCMGTv4f32: { // fcmgt vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, false, [](float x, float y) -> bool { return x > y; }); break; } case Opcode::AArch64_FCMGTv4i32rz: { // fcmgt vd.4s, vn.4s, #0.0 - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, true, [](float x, float y) -> bool { return x > y; }); break; } case Opcode::AArch64_FCMLA_ZPmZZ_D: { // fcmla zda, pg/m, zn, zm, #imm - results[0] = - sveHelp::sveFcmlaPredicated(operands, metadata, VL_bits); + results[0] = sveFcmlaPredicated(operands, metadata, VL_bits); break; } case Opcode::AArch64_FCMLE_PPzZ0_D: { // fcmle pd.d, pg/z, zn.d, #0.0 - results[0] = sveHelp::sveComparePredicated_vecsToPred( + results[0] = sveComparePredicated_vecsToPred( operands, metadata, VL_bits, true, [](double x, double y) -> bool { return x <= y; }); break; } case Opcode::AArch64_FCMLE_PPzZ0_S: { // fcmle pd.s, pg/z, zn.s, #0.0 - results[0] = sveHelp::sveComparePredicated_vecsToPred( + results[0] = sveComparePredicated_vecsToPred( operands, metadata, VL_bits, true, [](float x, float y) -> bool { return x <= y; }); break; } case Opcode::AArch64_FCMLT_PPzZ0_S: { // fcmlt pd.s, pg/z, zn.s, #0.0 - results[0] = sveHelp::sveComparePredicated_vecsToPred( + results[0] = sveComparePredicated_vecsToPred( operands, metadata, VL_bits, true, [](float x, float y) -> bool { return x < y; }); break; } case Opcode::AArch64_FCMLTv2i32rz: { // fcmlt vd.2s, vn.2s, #0.0 - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, true, [](float x, float y) -> bool { return x < y; }); break; } case Opcode::AArch64_FCMLTv2i64rz: { // fcmlt vd.2d, vn.2d, #0.0 - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, true, [](double x, double y) -> bool { return x < y; }); break; } case Opcode::AArch64_FCMLTv4i32rz: { // fcmlt vd.4s, vn.4s, #0.0 - results[0] = neonHelp::vecFCompare( + results[0] = vecFCompare( operands, true, [](float x, float y) -> bool { return x < y; }); break; } case Opcode::AArch64_FCMPDri: { // fcmp dn, #imm - results[0] = floatHelp::fcmp(operands, true); + results[0] = fcmp(operands, true); break; } case Opcode::AArch64_FCMPDrr: { // fcmp dn, dm - results[0] = floatHelp::fcmp(operands, false); + results[0] = fcmp(operands, false); break; } case Opcode::AArch64_FCMPEDri: { // fcmpe dn, #imm - results[0] = floatHelp::fcmp(operands, true); + results[0] = fcmp(operands, true); break; } case Opcode::AArch64_FCMPEDrr: { // fcmpe dn, dm - results[0] = floatHelp::fcmp(operands, false); + results[0] = fcmp(operands, false); break; } case Opcode::AArch64_FCMPESri: { // fcmpe sn, #imm - results[0] = floatHelp::fcmp(operands, true); + results[0] = fcmp(operands, true); break; } case Opcode::AArch64_FCMPESrr: { // fcmpe sn, sm - results[0] = floatHelp::fcmp(operands, false); + results[0] = fcmp(operands, false); break; } case Opcode::AArch64_FCMPSri: { // fcmp sn, #imm - results[0] = floatHelp::fcmp(operands, true); + results[0] = fcmp(operands, true); break; } case Opcode::AArch64_FCMPSrr: { // fcmp sn, sm - results[0] = floatHelp::fcmp(operands, false); + results[0] = fcmp(operands, false); break; } case Opcode::AArch64_FCPY_ZPmI_D: { // fcpy zd.d, pg/m, #const - results[0] = sveHelp::sveFcpy_imm(operands, metadata, VL_bits); + results[0] = sveFcpy_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_FCPY_ZPmI_S: { // fcpy zd.s, pg/m, #const - results[0] = sveHelp::sveFcpy_imm(operands, metadata, VL_bits); + results[0] = sveFcpy_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_FCSELDrrr: { // fcsel dd, dn, dm, cond - results[0] = { - conditionalHelp::cs_4ops( - operands, metadata, [](double x) -> double { return x; }), - 256}; + results[0] = {cs_4ops(operands, metadata, + [](double x) -> double { return x; }), + 256}; break; } case Opcode::AArch64_FCSELSrrr: { // fcsel sd, sn, sm, cond - results[0] = { - conditionalHelp::cs_4ops(operands, metadata, - [](float x) -> float { return x; }), - 256}; + results[0] = {cs_4ops(operands, metadata, + [](float x) -> float { return x; }), + 256}; break; } case Opcode::AArch64_FCVTASUWDr: { // fcvtas wd, dn @@ -1597,28 +1559,28 @@ void Instruction::execute() { } case Opcode::AArch64_FCVTDSr: { // fcvt dd, sn // TODO: Handle NaNs, denorms, and saturation? - results[0] = neonHelp::vecFcvtl(operands, false); + results[0] = vecFcvtl(operands, false); break; } case Opcode::AArch64_FCVTLv2i32: { // fcvtl vd.2d, vn.2s - results[0] = neonHelp::vecFcvtl(operands, false); + results[0] = vecFcvtl(operands, false); break; } case Opcode::AArch64_FCVTLv4i32: { // fcvtl2 vd.2d, vn.4s - results[0] = neonHelp::vecFcvtl(operands, true); + results[0] = vecFcvtl(operands, true); break; } case Opcode::AArch64_FCVTNv2i32: { // fcvtn vd.2s, vn.2d - results[0] = neonHelp::vecFcvtn(operands, false); + results[0] = vecFcvtn(operands, false); break; } case Opcode::AArch64_FCVTNv4i32: { // fcvtn2 vd.4s, vn.2d - results[0] = neonHelp::vecFcvtn(operands, true); + results[0] = vecFcvtn(operands, true); break; } case Opcode::AArch64_FCVTSDr: { // fcvt sd, dn // TODO: Handle NaNs, denorms, and saturation? - results[0] = neonHelp::vecFcvtl(operands, false); + results[0] = vecFcvtl(operands, false); break; } case Opcode::AArch64_FCVTZSUWDr: { // fcvtzs wd, dn @@ -1640,226 +1602,212 @@ void Instruction::execute() { break; } case Opcode::AArch64_FCVTZS_ZPmZ_DtoD: { // fcvtzs zd.d, pg/m, zn.d - results[0] = - sveHelp::sveFcvtzsPredicated(operands, VL_bits); + results[0] = sveFcvtzsPredicated(operands, VL_bits); break; } case Opcode::AArch64_FCVTZS_ZPmZ_DtoS: { // fcvtzs zd.s, pg/m, zn.d - results[0] = - sveHelp::sveFcvtzsPredicated(operands, VL_bits); + results[0] = sveFcvtzsPredicated(operands, VL_bits); break; } case Opcode::AArch64_FCVTZS_ZPmZ_StoD: { // fcvtzs zd.d, pg/m, zn.s - results[0] = - sveHelp::sveFcvtzsPredicated(operands, VL_bits); + results[0] = sveFcvtzsPredicated(operands, VL_bits); break; } case Opcode::AArch64_FCVTZS_ZPmZ_StoS: { // fcvtzs zd.s, pg/m, zn.s - results[0] = - sveHelp::sveFcvtzsPredicated(operands, VL_bits); + results[0] = sveFcvtzsPredicated(operands, VL_bits); break; } case Opcode::AArch64_FCVTZSv2f64: { // fcvtzs vd.2d, vn.2d - results[0] = neonHelp::vecFcvtzs(operands); + results[0] = vecFcvtzs(operands); break; } case Opcode::AArch64_FCVTZUUWDr: { // fcvtzu wd, dn - results[0] = {floatHelp::fcvtzu_integer(operands), 8}; + results[0] = {fcvtzu_integer(operands), 8}; break; } case Opcode::AArch64_FCVTZUUWSr: { // fcvtzu wd, sn - results[0] = {floatHelp::fcvtzu_integer(operands), 8}; + results[0] = {fcvtzu_integer(operands), 8}; break; } case Opcode::AArch64_FCVTZUUXDr: { // fcvtzu xd, dn - results[0] = {floatHelp::fcvtzu_integer(operands), 8}; + results[0] = {fcvtzu_integer(operands), 8}; break; } case Opcode::AArch64_FCVTZUUXSr: { // fcvtzu xd, sn - results[0] = {floatHelp::fcvtzu_integer(operands), 8}; + results[0] = {fcvtzu_integer(operands), 8}; break; } case Opcode::AArch64_FCVTZUv1i64: { // fcvtzu dd, dn - results[0] = {floatHelp::fcvtzu_integer(operands), - 256}; + results[0] = {fcvtzu_integer(operands), 256}; break; } case Opcode::AArch64_FCVT_ZPmZ_DtoS: { // fcvt zd.s, pg/m, zn.d - results[0] = - sveHelp::sveFcvtPredicated(operands, VL_bits); + results[0] = sveFcvtPredicated(operands, VL_bits); break; } case Opcode::AArch64_FCVT_ZPmZ_StoD: { // fcvt zd.d, pg/m, zn.s - results[0] = - sveHelp::sveFcvtPredicated(operands, VL_bits); + results[0] = sveFcvtPredicated(operands, VL_bits); break; } case Opcode::AArch64_FDIVDrr: { // fdiv dd, dn, dm - results[0] = {divideHelp::div_3ops(operands), 256}; + results[0] = {div_3ops(operands), 256}; break; } case Opcode::AArch64_FDIVR_ZPmZ_D: { // fdivr zdn.d, pg/m, zdn.d, zm.d - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](double x, double y) -> double { return (y / x); }); break; } case Opcode::AArch64_FDIVR_ZPmZ_S: { // fdivr zdn.s, pg/m, zdn.s, zm.s - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](float x, float y) -> float { return (y / x); }); break; } case Opcode::AArch64_FDIVSrr: { // fdiv sd, sn, sm - results[0] = {divideHelp::div_3ops(operands), 256}; + results[0] = {div_3ops(operands), 256}; break; } case Opcode::AArch64_FDIV_ZPmZ_D: { // fdiv zdn.d, pg/m, zdn.d, zm.d - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](double x, double y) -> double { return (x / y); }); break; } case Opcode::AArch64_FDIVv2f64: { // fdiv vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](double x, double y) -> double { return x / y; }); break; } case Opcode::AArch64_FDUP_ZI_D: { // fdup zd.d, #imm - results[0] = sveHelp::sveDup_immOrScalar(operands, metadata, - VL_bits, true); + results[0] = + sveDup_immOrScalar(operands, metadata, VL_bits, true); break; } case Opcode::AArch64_FDUP_ZI_S: { // fdup zd.s, #imm - results[0] = sveHelp::sveDup_immOrScalar(operands, metadata, - VL_bits, true); + results[0] = + sveDup_immOrScalar(operands, metadata, VL_bits, true); break; } case Opcode::AArch64_FMADDDrrr: { // fmadd dn, dm, da - results[0] = {multiplyHelp::madd_4ops(operands), 256}; + results[0] = {madd_4ops(operands), 256}; break; } case Opcode::AArch64_FMADDSrrr: { // fmadd sn, sm, sa - results[0] = {multiplyHelp::madd_4ops(operands), 256}; + results[0] = {madd_4ops(operands), 256}; break; } case Opcode::AArch64_FMAD_ZPmZZ_D: { // fmad zd.d, pg/m, zn.d, zm.d - results[0] = sveHelp::sveFmadPredicated_vecs(operands, VL_bits); + results[0] = sveFmadPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_FMAD_ZPmZZ_S: { // fmad zd.s, pg/m, zn.s, zm.s - results[0] = sveHelp::sveFmadPredicated_vecs(operands, VL_bits); + results[0] = sveFmadPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_FMAXNMDrr: { // fmaxnm dd, dn, dm - results[0] = floatHelp::fmaxnm_3ops(operands); + results[0] = fmaxnm_3ops(operands); break; } case Opcode::AArch64_FMAXNMPv2i64p: { // fmaxnmp dd, vd.2d - results[0] = neonHelp::vecMaxnmp_2ops(operands); + results[0] = vecMaxnmp_2ops(operands); break; } case Opcode::AArch64_FMAXNMSrr: { // fmaxnm sd, sn, sm - results[0] = floatHelp::fmaxnm_3ops(operands); + results[0] = fmaxnm_3ops(operands); break; } case Opcode::AArch64_FMAXNMv2f64: { // fmaxnm vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](double x, double y) -> double { return std::fmax(x, y); }); break; } case Opcode::AArch64_FMINNMDrr: { // fminnm dd, dn, dm - results[0] = floatHelp::fminnm_3ops(operands); + results[0] = fminnm_3ops(operands); break; } case Opcode::AArch64_FMINNMPv2i64p: { // fminnmp dd, vd.2d - results[0] = neonHelp::vecMinv_2ops(operands); + results[0] = vecMinv_2ops(operands); break; } case Opcode::AArch64_FMINNMSrr: { // fminnm sd, sn, sm - results[0] = floatHelp::fminnm_3ops(operands); + results[0] = fminnm_3ops(operands); break; } case Opcode::AArch64_FMINNMv2f64: { // fminnm vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](double x, double y) -> double { return std::fmin(x, y); }); break; } case Opcode::AArch64_FMLA_ZPmZZ_D: { // fmla zd.d, pg/m, zn.d, zm.d - results[0] = sveHelp::sveMlaPredicated_vecs(operands, VL_bits); + results[0] = sveMlaPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_FMLA_ZPmZZ_S: { // fmla zd.s, pg/m, zn.s, zm.s - results[0] = sveHelp::sveMlaPredicated_vecs(operands, VL_bits); + results[0] = sveMlaPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_FMLAv2f32: { // fmla vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecFmla_3vecs(operands); + results[0] = vecFmla_3vecs(operands); break; } case Opcode::AArch64_FMLA_ZZZI_D: { // fmla zda.d, zn.d, zm.d[index] - results[0] = - sveHelp::sveMlaIndexed_vecs(operands, metadata, VL_bits); + results[0] = sveMlaIndexed_vecs(operands, metadata, VL_bits); break; } case Opcode::AArch64_FMLA_ZZZI_S: { // fmla zda.s, zn.s, zm.s[index] - results[0] = - sveHelp::sveMlaIndexed_vecs(operands, metadata, VL_bits); + results[0] = sveMlaIndexed_vecs(operands, metadata, VL_bits); break; } case Opcode::AArch64_FMLAv2f64: { // fmla vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecFmla_3vecs(operands); + results[0] = vecFmla_3vecs(operands); break; } case Opcode::AArch64_FMLAv2i32_indexed: { // fmla vd.2s, vn.2s, // vm.2s[index] - results[0] = - neonHelp::vecFmlaIndexed_3vecs(operands, metadata); + results[0] = vecFmlaIndexed_3vecs(operands, metadata); break; } case Opcode::AArch64_FMLAv2i64_indexed: { // fmla vd.2d, vn.2d, // vm.d[index] - results[0] = - neonHelp::vecFmlaIndexed_3vecs(operands, metadata); + results[0] = vecFmlaIndexed_3vecs(operands, metadata); break; } case Opcode::AArch64_FMLAv4f32: { // fmla vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecFmla_3vecs(operands); + results[0] = vecFmla_3vecs(operands); break; } case Opcode::AArch64_FMLAv4i32_indexed: { // fmla vd.4s, vn.4s, // vm.s[index] - results[0] = - neonHelp::vecFmlaIndexed_3vecs(operands, metadata); + results[0] = vecFmlaIndexed_3vecs(operands, metadata); break; } case Opcode::AArch64_FMLS_ZPmZZ_D: { // fmls zd.d, pg/m, zn.d, zm.d - results[0] = sveHelp::sveFmlsPredicated_vecs(operands, VL_bits); + results[0] = sveFmlsPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_FMLS_ZPmZZ_S: { // fmls zd.s, pg/m, zn.s, zm.s - results[0] = sveHelp::sveFmlsPredicated_vecs(operands, VL_bits); + results[0] = sveFmlsPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_FMLSv2f64: { // fmls vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecFmls_3vecs(operands); + results[0] = vecFmls_3vecs(operands); break; } case Opcode::AArch64_FMLSv2i64_indexed: { - results[0] = - neonHelp::vecFmlsIndexed_3vecs(operands, metadata); + results[0] = vecFmlsIndexed_3vecs(operands, metadata); break; } case Opcode::AArch64_FMLSv4f32: { // fmls vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecFmls_3vecs(operands); + results[0] = vecFmls_3vecs(operands); break; } case Opcode::AArch64_FMLSv4i32_indexed: { // fmls vd.4s, vn.4s, // vm.s[index] - results[0] = - neonHelp::vecFmlsIndexed_3vecs(operands, metadata); + results[0] = vecFmlsIndexed_3vecs(operands, metadata); break; } case Opcode::AArch64_FMOPA_MPPZZ_D: { // fmopa zada.d, pn/m, pm/m, zn.d, @@ -1966,110 +1914,104 @@ void Instruction::execute() { break; } case Opcode::AArch64_FMOVv2f32_ns: { // fmov vd.2s, #imm - results[0] = neonHelp::vecMovi_imm(metadata); + results[0] = vecMovi_imm(metadata); break; } case Opcode::AArch64_FMOVv2f64_ns: { // fmov vd.2d, #imm - results[0] = neonHelp::vecMovi_imm(metadata); + results[0] = vecMovi_imm(metadata); break; } case Opcode::AArch64_FMOVv4f32_ns: { // fmov vd.4s, #imm - results[0] = neonHelp::vecMovi_imm(metadata); + results[0] = vecMovi_imm(metadata); break; } case Opcode::AArch64_FMSB_ZPmZZ_D: { // fmsb zd.d, pg/m, zn.d, zm.d - results[0] = sveHelp::sveFmsbPredicated_vecs(operands, VL_bits); + results[0] = sveFmsbPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_FMSB_ZPmZZ_S: { // fmsb zd.s, pg/m, zn.s, zm.s - results[0] = sveHelp::sveFmsbPredicated_vecs(operands, VL_bits); + results[0] = sveFmsbPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_FMSUBDrrr: { // fmsub dn, dm, da - results[0] = {multiplyHelp::msub_4ops(operands), 256}; + results[0] = {msub_4ops(operands), 256}; break; } case Opcode::AArch64_FMSUBSrrr: { // fmsub sn, sm, sa - results[0] = {multiplyHelp::msub_4ops(operands), 256}; + results[0] = {msub_4ops(operands), 256}; break; } case Opcode::AArch64_FMULDrr: { // fmul dd, dn, dm - results[0] = {multiplyHelp::mul_3ops(operands), 256}; + results[0] = {mul_3ops(operands), 256}; break; } case Opcode::AArch64_FMULSrr: { // fmul sd, sn, sm - results[0] = {multiplyHelp::mul_3ops(operands), 256}; + results[0] = {mul_3ops(operands), 256}; break; } case Opcode::AArch64_FMUL_ZPmI_D: { // fmul zd.d, pg/m, zn.d, #imm - results[0] = sveHelp::sveMulPredicated(operands, metadata, - VL_bits, true); + results[0] = + sveMulPredicated(operands, metadata, VL_bits, true); break; } case Opcode::AArch64_FMUL_ZPmI_S: { // fmul zd.s, pg/m, zn.s, #imm - results[0] = - sveHelp::sveMulPredicated(operands, metadata, VL_bits, true); + results[0] = sveMulPredicated(operands, metadata, VL_bits, true); break; } case Opcode::AArch64_FMUL_ZPmZ_D: { // fmul zdn.d, pg/m, zdn.d, zm.d - results[0] = sveHelp::sveMulPredicated(operands, metadata, - VL_bits, false); + results[0] = + sveMulPredicated(operands, metadata, VL_bits, false); break; } case Opcode::AArch64_FMUL_ZPmZ_S: { // fmul zdn.s, pg/m, zdn.s, zm.s - results[0] = sveHelp::sveMulPredicated(operands, metadata, - VL_bits, false); + results[0] = + sveMulPredicated(operands, metadata, VL_bits, false); break; } case Opcode::AArch64_FMUL_ZZZ_D: { // fmul zd.d, zn.d, zm.d - results[0] = sveHelp::sveFmul_3ops(operands, VL_bits); + results[0] = sveFmul_3ops(operands, VL_bits); break; } case Opcode::AArch64_FMUL_ZZZ_S: { // fmul zd.s, zn.s, zm.s - results[0] = sveHelp::sveFmul_3ops(operands, VL_bits); + results[0] = sveFmul_3ops(operands, VL_bits); break; } case Opcode::AArch64_FMULv1i32_indexed: { // fmul sd, sn, vm.s[index] - results[0] = - neonHelp::vecFmulIndexed_vecs(operands, metadata); + results[0] = vecFmulIndexed_vecs(operands, metadata); break; } case Opcode::AArch64_FMULv1i64_indexed: { // fmul dd, dn, vm.d[index] - results[0] = - neonHelp::vecFmulIndexed_vecs(operands, metadata); + results[0] = vecFmulIndexed_vecs(operands, metadata); break; } case Opcode::AArch64_FMULv2f32: { // fmul vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](float x, float y) -> float { return x * y; }); break; } case Opcode::AArch64_FMULv2f64: { // fmul vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](double x, double y) -> double { return x * y; }); break; } case Opcode::AArch64_FMULv2i32_indexed: { // fmul vd.2s, vn.2s, // vm.s[index] - results[0] = - neonHelp::vecFmulIndexed_vecs(operands, metadata); + results[0] = vecFmulIndexed_vecs(operands, metadata); break; } case Opcode::AArch64_FMULv2i64_indexed: { // fmul vd.2d, vn.2d, // vm.d[index] - results[0] = - neonHelp::vecFmulIndexed_vecs(operands, metadata); + results[0] = vecFmulIndexed_vecs(operands, metadata); break; } case Opcode::AArch64_FMULv4f32: { // fmul vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](float x, float y) -> float { return x * y; }); break; } case Opcode::AArch64_FMULv4i32_indexed: { // fmul vd.4s, vn.4s, // vm.s[index] - results[0] = - neonHelp::vecFmulIndexed_vecs(operands, metadata); + results[0] = vecFmulIndexed_vecs(operands, metadata); break; } case Opcode::AArch64_FNEGDr: { // fneg dd, dn @@ -2081,60 +2023,60 @@ void Instruction::execute() { break; } case Opcode::AArch64_FNEG_ZPmZ_D: { // fneg zd.d, pg/m, zn.d - results[0] = sveHelp::sveFnegPredicated(operands, VL_bits); + results[0] = sveFnegPredicated(operands, VL_bits); break; } case Opcode::AArch64_FNEG_ZPmZ_S: { // fneg zd.s, pg/m, zn.s - results[0] = sveHelp::sveFnegPredicated(operands, VL_bits); + results[0] = sveFnegPredicated(operands, VL_bits); break; } case Opcode::AArch64_FNEGv2f64: { // fneg vd.2d, vn.2d - results[0] = neonHelp::vecFneg_2ops(operands); + results[0] = vecFneg_2ops(operands); break; } case Opcode::AArch64_FNEGv4f32: { // fneg vd.4s, vn.4s - results[0] = neonHelp::vecFneg_2ops(operands); + results[0] = vecFneg_2ops(operands); break; } case Opcode::AArch64_FNMADDDrrr: { // fnmadd dd, dn, dm, da - results[0] = floatHelp::fnmadd_4ops(operands); + results[0] = fnmadd_4ops(operands); break; } case Opcode::AArch64_FNMADDSrrr: { // fnmadd sd, sn, sm, sa - results[0] = floatHelp::fnmadd_4ops(operands); + results[0] = fnmadd_4ops(operands); break; } case Opcode::AArch64_FNMLS_ZPmZZ_D: { // fnmls zd.d, pg/m, zn.d, zm.d - results[0] = sveHelp::sveFnmlsPredicated(operands, VL_bits); + results[0] = sveFnmlsPredicated(operands, VL_bits); break; } case Opcode::AArch64_FNMLS_ZPmZZ_S: { // fnmls zd.s, pg/m, zn.s, zm.s - results[0] = sveHelp::sveFnmlsPredicated(operands, VL_bits); + results[0] = sveFnmlsPredicated(operands, VL_bits); break; } case Opcode::AArch64_FNMSB_ZPmZZ_D: { // fnmsb zdn.d, pg/m, zm.d, za.d - results[0] = sveHelp::sveFnmsbPredicated(operands, VL_bits); + results[0] = sveFnmsbPredicated(operands, VL_bits); break; } case Opcode::AArch64_FNMSB_ZPmZZ_S: { // fnmsb zdn.s, pg/m, zm.s, za.s - results[0] = sveHelp::sveFnmsbPredicated(operands, VL_bits); + results[0] = sveFnmsbPredicated(operands, VL_bits); break; } case Opcode::AArch64_FNMSUBDrrr: { // fnmsub dd, dn, dm, da - results[0] = floatHelp::fnmsub_4ops(operands); + results[0] = fnmsub_4ops(operands); break; } case Opcode::AArch64_FNMSUBSrrr: { // fnmsub sd, sn, sm, sa - results[0] = floatHelp::fnmsub_4ops(operands); + results[0] = fnmsub_4ops(operands); break; } case Opcode::AArch64_FNMULDrr: { // fnmul dd, dn, dm - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](double x, double y) -> double { return -(x * y); }); break; } case Opcode::AArch64_FNMULSrr: { // fnmul sd, sn, sm - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](float x, float y) -> float { return -(x * y); }); break; } @@ -2143,61 +2085,59 @@ void Instruction::execute() { break; } case Opcode::AArch64_FRINTN_ZPmZ_D: { // frintn zd.d, pg/m, zn.d - results[0] = - sveHelp::sveFrintnPredicated(operands, VL_bits); + results[0] = sveFrintnPredicated(operands, VL_bits); break; } case Opcode::AArch64_FRINTN_ZPmZ_S: { // frintn zd.s, pg/m, zn.s - results[0] = - sveHelp::sveFrintnPredicated(operands, VL_bits); + results[0] = sveFrintnPredicated(operands, VL_bits); break; } case Opcode::AArch64_FRINTPDr: { // frintp dd, dn - results[0] = floatHelp::frintpScalar_2ops(operands); + results[0] = frintpScalar_2ops(operands); break; } case Opcode::AArch64_FRINTPSr: { // frintp sd, sn - results[0] = floatHelp::frintpScalar_2ops(operands); + results[0] = frintpScalar_2ops(operands); break; } case Opcode::AArch64_FRSQRTEv1i32: { // frsqrte sd, sn - results[0] = neonHelp::vecFrsqrte_2ops(operands); + results[0] = vecFrsqrte_2ops(operands); break; } case Opcode::AArch64_FRSQRTEv1i64: { // frsqrte dd, dn - results[0] = neonHelp::vecFrsqrte_2ops(operands); + results[0] = vecFrsqrte_2ops(operands); break; } case Opcode::AArch64_FRSQRTEv2f32: { // frsqrte vd.2s, vn.2s - results[0] = neonHelp::vecFrsqrte_2ops(operands); + results[0] = vecFrsqrte_2ops(operands); break; } case Opcode::AArch64_FRSQRTEv2f64: { // frsqrte vd.2d, vn.2d - results[0] = neonHelp::vecFrsqrte_2ops(operands); + results[0] = vecFrsqrte_2ops(operands); break; } case Opcode::AArch64_FRSQRTEv4f32: { // frsqrte vd.4s, vn.4s - results[0] = neonHelp::vecFrsqrte_2ops(operands); + results[0] = vecFrsqrte_2ops(operands); break; } case Opcode::AArch64_FRSQRTS32: { // frsqrts sd, sn, sm - results[0] = neonHelp::vecFrsqrts_3ops(operands); + results[0] = vecFrsqrts_3ops(operands); break; } case Opcode::AArch64_FRSQRTS64: { // frsqrts dd, dn, dm - results[0] = neonHelp::vecFrsqrts_3ops(operands); + results[0] = vecFrsqrts_3ops(operands); break; } case Opcode::AArch64_FRSQRTSv2f32: { // frsqrts vd.2s, vn.2s, vn.2s - results[0] = neonHelp::vecFrsqrts_3ops(operands); + results[0] = vecFrsqrts_3ops(operands); break; } case Opcode::AArch64_FRSQRTSv2f64: { // frsqrts vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecFrsqrts_3ops(operands); + results[0] = vecFrsqrts_3ops(operands); break; } case Opcode::AArch64_FRSQRTSv4f32: { // frsqrts vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecFrsqrts_3ops(operands); + results[0] = vecFrsqrts_3ops(operands); break; } case Opcode::AArch64_FSQRTDr: { // fsqrt dd, dn @@ -2209,83 +2149,78 @@ void Instruction::execute() { break; } case Opcode::AArch64_FSQRT_ZPmZ_D: { // fsqrt zd.d, pg/m, zn.d - results[0] = - sveHelp::sveFsqrtPredicated_2vecs(operands, VL_bits); + results[0] = sveFsqrtPredicated_2vecs(operands, VL_bits); break; } case Opcode::AArch64_FSQRT_ZPmZ_S: { // fsqrt zd.s, pg/m, zn.s - results[0] = - sveHelp::sveFsqrtPredicated_2vecs(operands, VL_bits); + results[0] = sveFsqrtPredicated_2vecs(operands, VL_bits); break; } case Opcode::AArch64_FSQRTv2f64: { // fsqrt vd.2d, vn.2d - results[0] = neonHelp::vecFsqrt_2ops(operands); + results[0] = vecFsqrt_2ops(operands); break; } case Opcode::AArch64_FSQRTv4f32: { // fsqrt vd.4s, vn.4s - results[0] = neonHelp::vecFsqrt_2ops(operands); + results[0] = vecFsqrt_2ops(operands); break; } case Opcode::AArch64_FSUBDrr: { // fsub dd, dn, dm - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](double x, double y) -> double { return x - y; }); break; } case Opcode::AArch64_FSUBR_ZPmZ_D: { // fsubr zdn.d, pg/m, zdn.d, zm.d - results[0] = - sveHelp::sveSubrPredicated_3vecs(operands, VL_bits); + results[0] = sveSubrPredicated_3vecs(operands, VL_bits); break; } case Opcode::AArch64_FSUBR_ZPmZ_S: { // fsubr zdn.s, pg/m, zdn.s, zm.s - results[0] = sveHelp::sveSubrPredicated_3vecs(operands, VL_bits); + results[0] = sveSubrPredicated_3vecs(operands, VL_bits); break; } case Opcode::AArch64_FSUBSrr: { // fsub ss, sn, sm - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](double x, double y) -> double { return x - y; }); break; } case Opcode::AArch64_FSUB_ZPmI_D: { // fsub zdn.d, pg/m, zdn.d, #imm - results[0] = - sveHelp::sveSubPredicated_imm(operands, metadata, VL_bits); + results[0] = sveSubPredicated_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_FSUB_ZPmI_S: { // fsub zdn.s, pg/m, zdn.s, #imm - results[0] = - sveHelp::sveSubPredicated_imm(operands, metadata, VL_bits); + results[0] = sveSubPredicated_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_FSUB_ZPmZ_D: { // fsub zdn.d, pg/m, zdn.d, zm.d - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](double x, double y) -> double { return x - y; }); break; } case Opcode::AArch64_FSUB_ZPmZ_S: { // fsub zdn.s, pg/m, zdn.s, zm.s - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](float x, float y) -> float { return x - y; }); break; } case Opcode::AArch64_FSUB_ZZZ_D: { // fsub zd.d, zn.d, zm.d - results[0] = sveHelp::sveSub_3vecs(operands, VL_bits); + results[0] = sveSub_3vecs(operands, VL_bits); break; } case Opcode::AArch64_FSUB_ZZZ_S: { // fsub zd.s, zn.s, zm.s - results[0] = sveHelp::sveSub_3vecs(operands, VL_bits); + results[0] = sveSub_3vecs(operands, VL_bits); break; } case Opcode::AArch64_FSUBv2f32: { - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](float x, float y) -> float { return x - y; }); break; } case Opcode::AArch64_FSUBv2f64: { // fsub vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](double x, double y) -> double { return x - y; }); break; } case Opcode::AArch64_FSUBv4f32: { // fsub vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](float x, float y) -> float { return x - y; }); break; } @@ -2389,159 +2324,147 @@ void Instruction::execute() { break; } case Opcode::AArch64_INCB_XPiI: { // incb xdn{, pattern{, #imm}} - results[0] = - sveHelp::sveInc_gprImm(operands, metadata, VL_bits); + results[0] = sveInc_gprImm(operands, metadata, VL_bits); break; } case Opcode::AArch64_INCD_XPiI: { // incd xdn{, pattern{, #imm}} - results[0] = - sveHelp::sveInc_gprImm(operands, metadata, VL_bits); + results[0] = sveInc_gprImm(operands, metadata, VL_bits); break; } case Opcode::AArch64_INCD_ZPiI: { // incd zdn.d{, pattern{, #imm}} - results[0] = sveHelp::sveInc_imm(operands, metadata, VL_bits); + results[0] = sveInc_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_INCH_XPiI: { // inch xdn{, pattern{, #imm}} - results[0] = - sveHelp::sveInc_gprImm(operands, metadata, VL_bits); + results[0] = sveInc_gprImm(operands, metadata, VL_bits); break; } case Opcode::AArch64_INCH_ZPiI: { // inch zdn.h{, pattern{, #imm}} - results[0] = sveHelp::sveInc_imm(operands, metadata, VL_bits); + results[0] = sveInc_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_INCP_XP_B: { // incp xdn, pm.b - results[0] = sveHelp::sveIncp_gpr(operands, VL_bits); + results[0] = sveIncp_gpr(operands, VL_bits); break; } case Opcode::AArch64_INCP_XP_D: { // incp xdn, pm.d - results[0] = sveHelp::sveIncp_gpr(operands, VL_bits); + results[0] = sveIncp_gpr(operands, VL_bits); break; } case Opcode::AArch64_INCP_XP_H: { // incp xdn, pm.h - results[0] = sveHelp::sveIncp_gpr(operands, VL_bits); + results[0] = sveIncp_gpr(operands, VL_bits); break; } case Opcode::AArch64_INCP_XP_S: { // incp xdn, pm.s - results[0] = sveHelp::sveIncp_gpr(operands, VL_bits); + results[0] = sveIncp_gpr(operands, VL_bits); break; } case Opcode::AArch64_INCW_XPiI: { // incw xdn{, pattern{, #imm}} - results[0] = - sveHelp::sveInc_gprImm(operands, metadata, VL_bits); + results[0] = sveInc_gprImm(operands, metadata, VL_bits); break; } case Opcode::AArch64_INCW_ZPiI: { // incw zdn.s{, pattern{, #imm}} - results[0] = sveHelp::sveInc_imm(operands, metadata, VL_bits); + results[0] = sveInc_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_INDEX_II_B: { // index zd.b, #imm, #imm - results[0] = - sveHelp::sveIndex(operands, metadata, VL_bits, true, true); + results[0] = sveIndex(operands, metadata, VL_bits, true, true); break; } case Opcode::AArch64_INDEX_II_D: { // index zd.d, #imm, #imm - results[0] = - sveHelp::sveIndex(operands, metadata, VL_bits, true, true); + results[0] = sveIndex(operands, metadata, VL_bits, true, true); break; } case Opcode::AArch64_INDEX_II_H: { // index zd.h, #imm, #imm - results[0] = - sveHelp::sveIndex(operands, metadata, VL_bits, true, true); + results[0] = sveIndex(operands, metadata, VL_bits, true, true); break; } case Opcode::AArch64_INDEX_II_S: { // index zd.s, #imm, #imm - results[0] = - sveHelp::sveIndex(operands, metadata, VL_bits, true, true); + results[0] = sveIndex(operands, metadata, VL_bits, true, true); break; } case Opcode::AArch64_INDEX_IR_B: { // index zd.b, #imm, wn - results[0] = sveHelp::sveIndex(operands, metadata, - VL_bits, true, false); + results[0] = + sveIndex(operands, metadata, VL_bits, true, false); break; } case Opcode::AArch64_INDEX_IR_D: { // index zd.d, #imm, xn - results[0] = sveHelp::sveIndex(operands, metadata, - VL_bits, true, false); + results[0] = sveIndex(operands, metadata, VL_bits, + true, false); break; } case Opcode::AArch64_INDEX_IR_H: { // index zd.h, #imm, wn - results[0] = sveHelp::sveIndex(operands, metadata, - VL_bits, true, false); + results[0] = sveIndex(operands, metadata, VL_bits, + true, false); break; } case Opcode::AArch64_INDEX_IR_S: { // index zd.s, #imm, wn - results[0] = sveHelp::sveIndex(operands, metadata, - VL_bits, true, false); + results[0] = sveIndex(operands, metadata, VL_bits, + true, false); break; } case Opcode::AArch64_INDEX_RI_B: { // index zd.b, wn, #imm - results[0] = sveHelp::sveIndex(operands, metadata, - VL_bits, false, true); + results[0] = + sveIndex(operands, metadata, VL_bits, false, true); break; } case Opcode::AArch64_INDEX_RI_D: { // index zd.d, xn, #imm - results[0] = sveHelp::sveIndex(operands, metadata, - VL_bits, false, true); + results[0] = sveIndex(operands, metadata, VL_bits, + false, true); break; } case Opcode::AArch64_INDEX_RI_H: { // index zd.h, wn, #imm - results[0] = sveHelp::sveIndex(operands, metadata, - VL_bits, false, true); + results[0] = sveIndex(operands, metadata, VL_bits, + false, true); break; } case Opcode::AArch64_INDEX_RI_S: { // index zd.s, wn, #imm - results[0] = sveHelp::sveIndex(operands, metadata, - VL_bits, false, true); + results[0] = sveIndex(operands, metadata, VL_bits, + false, true); break; } case Opcode::AArch64_INDEX_RR_B: { // index zd.b, wn, wm - results[0] = sveHelp::sveIndex(operands, metadata, - VL_bits, false, false); + results[0] = sveIndex(operands, metadata, VL_bits, + false, false); break; } case Opcode::AArch64_INDEX_RR_D: { // index zd.d, xn, xm - results[0] = sveHelp::sveIndex(operands, metadata, - VL_bits, false, false); + results[0] = sveIndex(operands, metadata, VL_bits, + false, false); break; } case Opcode::AArch64_INDEX_RR_H: { // index zd.h, wn, wm - results[0] = sveHelp::sveIndex(operands, metadata, - VL_bits, false, false); + results[0] = sveIndex(operands, metadata, VL_bits, + false, false); break; } case Opcode::AArch64_INDEX_RR_S: { // index zd.s, wn, wm - results[0] = sveHelp::sveIndex(operands, metadata, - VL_bits, false, false); + results[0] = sveIndex(operands, metadata, VL_bits, + false, false); break; } case Opcode::AArch64_INSvi16gpr: { // ins vd.h[index], wn - results[0] = neonHelp::vecInsIndex_gpr(operands, - metadata); + results[0] = vecInsIndex_gpr(operands, metadata); break; } case Opcode::AArch64_INSvi32gpr: { // ins vd.s[index], wn - results[0] = neonHelp::vecInsIndex_gpr(operands, - metadata); + results[0] = vecInsIndex_gpr(operands, metadata); break; } case Opcode::AArch64_INSvi32lane: { // ins vd.s[index1], vn.s[index2] - results[0] = neonHelp::vecIns_2Index(operands, metadata); + results[0] = vecIns_2Index(operands, metadata); break; } case Opcode::AArch64_INSvi64gpr: { // ins vd.d[index], xn - results[0] = neonHelp::vecInsIndex_gpr(operands, - metadata); + results[0] = vecInsIndex_gpr(operands, metadata); break; } case Opcode::AArch64_INSvi64lane: { // ins vd.d[index1], vn.d[index2] - results[0] = neonHelp::vecIns_2Index(operands, metadata); + results[0] = vecIns_2Index(operands, metadata); break; } case Opcode::AArch64_INSvi8gpr: { // ins vd.b[index], wn - results[0] = neonHelp::vecInsIndex_gpr(operands, - metadata); + results[0] = vecInsIndex_gpr(operands, metadata); break; } case Opcode::AArch64_LD1_MXIPXX_H_D: { // ld1d {zath.d[ws, #imm]}, pg/z, @@ -3674,53 +3597,47 @@ void Instruction::execute() { break; } case Opcode::AArch64_LSLVWr: { // lslv wd, wn, wm - results[0] = { - logicalHelp::logicalShiftLR_3ops(operands, true), 8}; + results[0] = {logicalShiftLR_3ops(operands, true), 8}; break; } case Opcode::AArch64_LSLVXr: { // lslv xd, xn, xm - results[0] = logicalHelp::logicalShiftLR_3ops(operands, true); + results[0] = logicalShiftLR_3ops(operands, true); break; } case Opcode::AArch64_LSL_ZZI_S: { // lsl zd.s, zn.s, #imm - results[0] = sveHelp::sveLsl_imm(operands, metadata, VL_bits); + results[0] = sveLsl_imm(operands, metadata, VL_bits); break; } case Opcode::AArch64_LSRVWr: { // lsrv wd, wn, wm - results[0] = { - logicalHelp::logicalShiftLR_3ops(operands, false), 8}; + results[0] = {logicalShiftLR_3ops(operands, false), 8}; break; } case Opcode::AArch64_LSRVXr: { // lsrv xd, xn, xm - results[0] = - logicalHelp::logicalShiftLR_3ops(operands, false); + results[0] = logicalShiftLR_3ops(operands, false); break; } case Opcode::AArch64_MADDWrrr: { // madd wd, wn, wm, wa - results[0] = {multiplyHelp::madd_4ops(operands), 8}; + results[0] = {madd_4ops(operands), 8}; break; } case Opcode::AArch64_MADDXrrr: { // madd xd, xn, xm, xa - results[0] = multiplyHelp::madd_4ops(operands); + results[0] = madd_4ops(operands); break; } case Opcode::AArch64_MLA_ZPmZZ_B: { // mla zda.b, pg/m, zn.b, zm.b - results[0] = sveHelp::sveMlaPredicated_vecs(operands, VL_bits); + results[0] = sveMlaPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_MLA_ZPmZZ_D: { // mla zda.d, pg/m, zn.d, zm.d - results[0] = - sveHelp::sveMlaPredicated_vecs(operands, VL_bits); + results[0] = sveMlaPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_MLA_ZPmZZ_H: { // mla zda.h, pg/m, zn.h, zm.h - results[0] = - sveHelp::sveMlaPredicated_vecs(operands, VL_bits); + results[0] = sveMlaPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_MLA_ZPmZZ_S: { // mla zda.s, pg/m, zn.s, zm.s - results[0] = - sveHelp::sveMlaPredicated_vecs(operands, VL_bits); + results[0] = sveMlaPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_MOVID: { // movi dd, #imm @@ -3728,59 +3645,57 @@ void Instruction::execute() { break; } case Opcode::AArch64_MOVIv16b_ns: { // movi vd.16b, #imm - results[0] = neonHelp::vecMovi_imm(metadata); + results[0] = vecMovi_imm(metadata); break; } case Opcode::AArch64_MOVIv2d_ns: { // movi vd.2d, #imm - results[0] = neonHelp::vecMovi_imm(metadata); + results[0] = vecMovi_imm(metadata); break; } case Opcode::AArch64_MOVIv2i32: { // movi vd.2s, #imm{, lsl #shift} - results[0] = neonHelp::vecMoviShift_imm(metadata, false); + results[0] = vecMoviShift_imm(metadata, false); break; } case Opcode::AArch64_MOVIv4i32: { // movi vd.4s, #imm{, LSL #shift} - results[0] = neonHelp::vecMoviShift_imm(metadata, false); + results[0] = vecMoviShift_imm(metadata, false); break; } case Opcode::AArch64_MOVIv8b_ns: { // movi vd.8b, #imm - results[0] = neonHelp::vecMovi_imm(metadata); + results[0] = vecMovi_imm(metadata); break; } case Opcode::AArch64_MOVKWi: { // movk wd, #imm - results[0] = { - arithmeticHelp::movkShift_imm(operands, metadata), 8}; + results[0] = {movkShift_imm(operands, metadata), 8}; break; } case Opcode::AArch64_MOVKXi: { // movk xd, #imm - results[0] = - arithmeticHelp::movkShift_imm(operands, metadata); + results[0] = movkShift_imm(operands, metadata); break; } case Opcode::AArch64_MOVNWi: { // movn wd, #imm{, LSL #shift} - results[0] = {arithmeticHelp::movnShift_imm( + results[0] = {movnShift_imm( metadata, [](uint64_t x) -> uint32_t { return ~x; }), 8}; break; } case Opcode::AArch64_MOVNXi: { // movn xd, #imm{, LSL #shift} - results[0] = arithmeticHelp::movnShift_imm( + results[0] = movnShift_imm( metadata, [](uint64_t x) -> uint64_t { return ~x; }); break; } case Opcode::AArch64_MOVPRFX_ZPmZ_D: { // movprfx zd.d, pg/m, zn.d - results[0] = sveHelp::sveMovprfxPredicated_destUnchanged( - operands, VL_bits); + results[0] = + sveMovprfxPredicated_destUnchanged(operands, VL_bits); break; } case Opcode::AArch64_MOVPRFX_ZPzZ_D: { // movprfx zd.d, pg/z, zn.d - results[0] = sveHelp::sveMovprfxPredicated_destToZero( - operands, VL_bits); + results[0] = + sveMovprfxPredicated_destToZero(operands, VL_bits); break; } case Opcode::AArch64_MOVPRFX_ZPzZ_S: { // movprfx zd.s, pg/z, zn.s - results[0] = sveHelp::sveMovprfxPredicated_destToZero( - operands, VL_bits); + results[0] = + sveMovprfxPredicated_destToZero(operands, VL_bits); break; } case Opcode::AArch64_MOVPRFX_ZZ: { // movprfx zd, zn @@ -3789,13 +3704,13 @@ void Instruction::execute() { break; } case Opcode::AArch64_MOVZWi: { // movz wd, #imm - results[0] = {arithmeticHelp::movnShift_imm( + results[0] = {movnShift_imm( metadata, [](uint64_t x) -> uint32_t { return x; }), 8}; break; } case Opcode::AArch64_MOVZXi: { // movz xd, #imm - results[0] = arithmeticHelp::movnShift_imm( + results[0] = movnShift_imm( metadata, [](uint64_t x) -> uint64_t { return x; }); break; } @@ -3815,11 +3730,11 @@ void Instruction::execute() { break; } case Opcode::AArch64_MSUBWrrr: { // msub wd, wn, wm, wa - results[0] = {multiplyHelp::msub_4ops(operands), 8}; + results[0] = {msub_4ops(operands), 8}; break; } case Opcode::AArch64_MSUBXrrr: { // msub xd, xn, xm, xa - results[0] = multiplyHelp::msub_4ops(operands); + results[0] = msub_4ops(operands); break; } case Opcode::AArch64_MSRpstatesvcrImm1: { // msr svcr, #imm @@ -3842,118 +3757,116 @@ void Instruction::execute() { } } case Opcode::AArch64_MUL_ZPmZ_B: { // mul zdn.b, pg/m, zdn.b, zm.b - results[0] = sveHelp::sveMulPredicated(operands, metadata, - VL_bits, false); + results[0] = + sveMulPredicated(operands, metadata, VL_bits, false); break; } case Opcode::AArch64_MUL_ZPmZ_D: { // mul zdn.d, pg/m, zdn.d, zm.d - results[0] = sveHelp::sveMulPredicated(operands, metadata, - VL_bits, false); + results[0] = + sveMulPredicated(operands, metadata, VL_bits, false); break; } case Opcode::AArch64_MUL_ZPmZ_H: { // mul zdn.h, pg/m, zdn.h, zm.h - results[0] = sveHelp::sveMulPredicated(operands, metadata, - VL_bits, false); + results[0] = + sveMulPredicated(operands, metadata, VL_bits, false); break; } case Opcode::AArch64_MUL_ZPmZ_S: { // mul zdn.s, pg/m, zdn.s, zm.s - results[0] = sveHelp::sveMulPredicated(operands, metadata, - VL_bits, false); + results[0] = + sveMulPredicated(operands, metadata, VL_bits, false); break; } case Opcode::AArch64_MVNIv2i32: { // mvni vd.2s, #imm{, lsl #shift} - results[0] = neonHelp::vecMoviShift_imm(metadata, true); + results[0] = vecMoviShift_imm(metadata, true); break; } case Opcode::AArch64_MVNIv2s_msl: { // mvni vd.2s, #imm, msl #amount - results[0] = neonHelp::vecMoviShift_imm(metadata, true); + results[0] = vecMoviShift_imm(metadata, true); break; } case Opcode::AArch64_MVNIv4i16: { // mvni vd.4h, #imm{, lsl #shift} - results[0] = neonHelp::vecMoviShift_imm(metadata, true); + results[0] = vecMoviShift_imm(metadata, true); break; } case Opcode::AArch64_MVNIv4i32: { // mvni vd.4s, #imm{, lsl #shift} - results[0] = neonHelp::vecMoviShift_imm(metadata, true); + results[0] = vecMoviShift_imm(metadata, true); break; } case Opcode::AArch64_MVNIv4s_msl: { // mvni vd.4s #imm, msl #amount - results[0] = neonHelp::vecMoviShift_imm(metadata, true); + results[0] = vecMoviShift_imm(metadata, true); break; } case Opcode::AArch64_MVNIv8i16: { // mvni vd.8h, #imm{, lsl #shift} - results[0] = neonHelp::vecMoviShift_imm(metadata, true); + results[0] = vecMoviShift_imm(metadata, true); break; } case Opcode::AArch64_NEGv2i64: { // neg vd.2d, vn.2d - results[0] = neonHelp::vecFneg_2ops(operands); + results[0] = vecFneg_2ops(operands); break; } case Opcode::AArch64_NOTv16i8: { // not vd.16b, vn.16b - results[0] = neonHelp::vecLogicOp_2vecs( + results[0] = vecLogicOp_2vecs( operands, [](uint8_t x) -> uint8_t { return ~x; }); break; } case Opcode::AArch64_NOTv8i8: { // not vd.8b, vn.8b - results[0] = neonHelp::vecLogicOp_2vecs( + results[0] = vecLogicOp_2vecs( operands, [](uint8_t x) -> uint8_t { return ~x; }); break; } case Opcode::AArch64_ORNWrs: { // orn wd, wn, wm{, shift{ #amount}} - auto [result, nzcv] = logicalHelp::logicOpShift_3ops( + auto [result, nzcv] = logicOpShift_3ops( operands, metadata, false, [](uint32_t x, uint32_t y) -> uint32_t { return x | (~y); }); results[0] = {result, 8}; break; } case Opcode::AArch64_ORNXrs: { // orn xd, xn, xm{, shift{ #amount}} - auto [result, nzcv] = logicalHelp::logicOpShift_3ops( + auto [result, nzcv] = logicOpShift_3ops( operands, metadata, false, [](uint64_t x, uint64_t y) -> uint64_t { return x | (~y); }); results[0] = result; break; } case Opcode::AArch64_ORRWri: { // orr wd, wn, #imm - auto [result, nzcv] = logicalHelp::logicOp_imm( + auto [result, nzcv] = logicOp_imm( operands, metadata, false, [](uint32_t x, uint32_t y) -> uint32_t { return x | y; }); results[0] = {result, 8}; break; } case Opcode::AArch64_ORRWrs: { // orr wd, wn, wm{, shift{ #amount}} - results[0] = { - comparisonHelp::orrShift_3ops(operands, metadata), 8}; + results[0] = {orrShift_3ops(operands, metadata), 8}; break; } case Opcode::AArch64_ORRXri: { // orr xd, xn, #imm - auto [result, nzcv] = logicalHelp::logicOp_imm( + auto [result, nzcv] = logicOp_imm( operands, metadata, false, [](uint64_t x, uint64_t y) -> uint64_t { return x | y; }); results[0] = {result, 8}; break; } case Opcode::AArch64_ORRXrs: { // orr xd, xn, xm{, shift{ #amount}} - results[0] = - comparisonHelp::orrShift_3ops(operands, metadata); + results[0] = orrShift_3ops(operands, metadata); break; } case Opcode::AArch64_ORR_PPzPP: { // orr pd.b, pg/z, pn.b, pm.b - results[0] = sveHelp::sveLogicOp_preds( + results[0] = sveLogicOp_preds( operands, VL_bits, [](uint64_t x, uint64_t y) -> uint64_t { return x | y; }); break; } case Opcode::AArch64_ORR_ZZZ: { // orr zd.d, zn.d, zm.d - results[0] = sveHelp::sveOrr_3vecs(operands, VL_bits); + results[0] = sveOrr_3vecs(operands, VL_bits); break; } case Opcode::AArch64_ORRv16i8: { // orr vd.16b, Vn.16b, Vm.16b - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint8_t x, uint8_t y) -> uint8_t { return x | y; }); break; } case Opcode::AArch64_ORRv8i8: { // orr vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint8_t x, uint8_t y) -> uint8_t { return x | y; }); break; } @@ -3966,19 +3879,19 @@ void Instruction::execute() { break; } case Opcode::AArch64_PSEL_PPPRI_B: { // psel pd, pn, pm.b[wa, #imm] - results[0] = sveHelp::svePsel(operands, metadata, VL_bits); + results[0] = svePsel(operands, metadata, VL_bits); break; } case Opcode::AArch64_PSEL_PPPRI_D: { // psel pd, pn, pm.d[wa, #imm] - results[0] = sveHelp::svePsel(operands, metadata, VL_bits); + results[0] = svePsel(operands, metadata, VL_bits); break; } case Opcode::AArch64_PSEL_PPPRI_H: { // psel pd, pn, pm.h[wa, #imm] - results[0] = sveHelp::svePsel(operands, metadata, VL_bits); + results[0] = svePsel(operands, metadata, VL_bits); break; } case Opcode::AArch64_PSEL_PPPRI_S: { // psel pd, pn, pm.s[wa, #imm] - results[0] = sveHelp::svePsel(operands, metadata, VL_bits); + results[0] = svePsel(operands, metadata, VL_bits); break; } case Opcode::AArch64_PTEST_PP: { // ptest pg, pn.b @@ -3987,39 +3900,39 @@ void Instruction::execute() { std::array masked_n = {(g[0] & s[0]), (g[1] & s[1]), (g[2] & s[2]), (g[3] & s[3])}; // Byte count = 1 as destination predicate is regarding single bytes. - results[0] = AuxFunc::getNZCVfromPred(masked_n, VL_bits, 1); + results[0] = getNZCVfromPred(masked_n, VL_bits, 1); break; } case Opcode::AArch64_PTRUE_B: { // ptrue pd.b{, pattern} - results[0] = sveHelp::svePtrue(metadata, VL_bits); + results[0] = svePtrue(metadata, VL_bits); break; } case Opcode::AArch64_PTRUE_D: { // ptrue pd.d{, pattern} - results[0] = sveHelp::svePtrue(metadata, VL_bits); + results[0] = svePtrue(metadata, VL_bits); break; } case Opcode::AArch64_PTRUE_H: { // ptrue pd.h{, pattern} - results[0] = sveHelp::svePtrue(metadata, VL_bits); + results[0] = svePtrue(metadata, VL_bits); break; } case Opcode::AArch64_PTRUE_S: { // ptrue pd.s{, pattern} - results[0] = sveHelp::svePtrue(metadata, VL_bits); + results[0] = svePtrue(metadata, VL_bits); break; } case Opcode::AArch64_PUNPKHI_PP: { // punpkhi pd.h, pn.b - results[0] = sveHelp::svePunpk(operands, VL_bits, true); + results[0] = svePunpk(operands, VL_bits, true); break; } case Opcode::AArch64_PUNPKLO_PP: { // punpklo pd.h, pn.b - results[0] = sveHelp::svePunpk(operands, VL_bits, false); + results[0] = svePunpk(operands, VL_bits, false); break; } case Opcode::AArch64_RBITWr: { // rbit wd, wn - results[0] = {bitmanipHelp::rbit(operands, metadata), 8}; + results[0] = {rbit(operands, metadata), 8}; break; } case Opcode::AArch64_RBITXr: { // rbit xd, xn - results[0] = bitmanipHelp::rbit(operands, metadata); + results[0] = rbit(operands, metadata); break; } case Opcode::AArch64_RDVLI_XI: { // rdvl xd, #imm @@ -4033,129 +3946,123 @@ void Instruction::execute() { break; } case Opcode::AArch64_REV16v16i8: { // rev16 Vd.16b, Vn.16b - results[0] = neonHelp::vecRev(operands); + results[0] = vecRev(operands); break; } case Opcode::AArch64_REV16v8i8: { // rev16 Vd.8b, Vn.8b - results[0] = neonHelp::vecRev(operands); + results[0] = vecRev(operands); break; } case Opcode::AArch64_REV32v16i8: { // rev32 Vd.16b, Vn.16b - results[0] = neonHelp::vecRev(operands); + results[0] = vecRev(operands); break; } case Opcode::AArch64_REV32v4i16: { // rev32 Vd.4h, Vn.4h - results[0] = neonHelp::vecRev(operands); + results[0] = vecRev(operands); break; } case Opcode::AArch64_REV32v8i16: { // rev32 Vd.8h, Vn.8h - results[0] = neonHelp::vecRev(operands); + results[0] = vecRev(operands); break; } case Opcode::AArch64_REV32v8i8: { // rev32 Vd.8b, Vn.8b - results[0] = neonHelp::vecRev(operands); + results[0] = vecRev(operands); break; } case Opcode::AArch64_REV64v16i8: { // rev64 Vd.16b, Vn.16b - results[0] = neonHelp::vecRev(operands); + results[0] = vecRev(operands); break; } case Opcode::AArch64_REV64v2i32: { // rev64 Vd.2s, Vn.2s - results[0] = neonHelp::vecRev(operands); + results[0] = vecRev(operands); break; } case Opcode::AArch64_REV64v4i16: { // rev64 Vd.4h, Vn.4h - results[0] = neonHelp::vecRev(operands); + results[0] = vecRev(operands); break; } case Opcode::AArch64_REV64v4i32: { // rev64 Vd.4s, Vn.4s - results[0] = neonHelp::vecRev(operands); + results[0] = vecRev(operands); break; } case Opcode::AArch64_REV64v8i16: { // rev64 Vd.8h, Vn.8h - results[0] = neonHelp::vecRev(operands); + results[0] = vecRev(operands); break; } case Opcode::AArch64_REV64v8i8: { // rev64 Vd.8b Vn.8b - results[0] = neonHelp::vecRev(operands); + results[0] = vecRev(operands); break; } case Opcode::AArch64_REVXr: { // rev xd, xn - results[0] = bitmanipHelp::rev(operands); + results[0] = rev(operands); break; } case Opcode::AArch64_REV_PP_B: { // rev pd.b, pn.b - results[0] = sveHelp::sveRev_predicates(operands, VL_bits); + results[0] = sveRev_predicates(operands, VL_bits); break; } case Opcode::AArch64_REV_PP_D: { // rev pd.d, pn.d - results[0] = sveHelp::sveRev_predicates(operands, VL_bits); + results[0] = sveRev_predicates(operands, VL_bits); break; } case Opcode::AArch64_REV_PP_H: { // rev pd.h, pn.h - results[0] = sveHelp::sveRev_predicates(operands, VL_bits); + results[0] = sveRev_predicates(operands, VL_bits); break; } case Opcode::AArch64_REV_PP_S: { // rev pd.s, pn.s - results[0] = sveHelp::sveRev_predicates(operands, VL_bits); + results[0] = sveRev_predicates(operands, VL_bits); break; } case Opcode::AArch64_REV_ZZ_B: { // rev zd.b, zn.b - results[0] = sveHelp::sveRev_vecs(operands, VL_bits); + results[0] = sveRev_vecs(operands, VL_bits); break; } case Opcode::AArch64_REV_ZZ_D: { // rev zd.d, zn.d - results[0] = sveHelp::sveRev_vecs(operands, VL_bits); + results[0] = sveRev_vecs(operands, VL_bits); break; } case Opcode::AArch64_REV_ZZ_H: { // rev zd.h, zn.h - results[0] = sveHelp::sveRev_vecs(operands, VL_bits); + results[0] = sveRev_vecs(operands, VL_bits); break; } case Opcode::AArch64_REV_ZZ_S: { // rev zd.s, zn.s - results[0] = sveHelp::sveRev_vecs(operands, VL_bits); + results[0] = sveRev_vecs(operands, VL_bits); break; } case Opcode::AArch64_RORVWr: { // rorv wd, wn, wm - results[0] = {logicalHelp::rorv_3ops(operands), 8}; + results[0] = {rorv_3ops(operands), 8}; break; } case Opcode::AArch64_RORVXr: { // rorv xd, xn, xm - results[0] = logicalHelp::rorv_3ops(operands); + results[0] = rorv_3ops(operands); break; } case Opcode::AArch64_SBCWr: { // sbc wd, wn, wm - results[0] = {arithmeticHelp::sbc(operands), 8}; + results[0] = {sbc(operands), 8}; break; } case Opcode::AArch64_SBCXr: { // sbc xd, xn, xm - results[0] = arithmeticHelp::sbc(operands); + results[0] = sbc(operands); break; } case Opcode::AArch64_SBFMWri: { // sbfm wd, wn, #immr, #imms - results[0] = { - bitmanipHelp::bfm_2imms(operands, metadata, true, true), - 8}; + results[0] = {bfm_2imms(operands, metadata, true, true), 8}; break; } case Opcode::AArch64_SBFMXri: { // sbfm xd, xn, #immr, #imms - results[0] = - bitmanipHelp::bfm_2imms(operands, metadata, true, true); + results[0] = bfm_2imms(operands, metadata, true, true); break; } case Opcode::AArch64_SCVTFSWSri: { // scvtf sd, wn, #fbits - results[0] = - floatHelp::scvtf_FixedPoint(operands, metadata); + results[0] = scvtf_FixedPoint(operands, metadata); break; } case Opcode::AArch64_SCVTFSXDri: { // scvtf dd, xn, #fbits - results[0] = - floatHelp::scvtf_FixedPoint(operands, metadata); + results[0] = scvtf_FixedPoint(operands, metadata); break; } case Opcode::AArch64_SCVTFSXSri: { // scvtf sd, xn, #fbits - results[0] = - floatHelp::scvtf_FixedPoint(operands, metadata); + results[0] = scvtf_FixedPoint(operands, metadata); break; } case Opcode::AArch64_SCVTFUWDri: { // scvtf dd, wn @@ -4175,23 +4082,19 @@ void Instruction::execute() { break; } case Opcode::AArch64_SCVTF_ZPmZ_DtoD: { // scvtf zd.d, pg/m, zn.d - results[0] = - sveHelp::sveFcvtPredicated(operands, VL_bits); + results[0] = sveFcvtPredicated(operands, VL_bits); break; } case Opcode::AArch64_SCVTF_ZPmZ_DtoS: { // scvtf zd.s, pg/m, zn.d - results[0] = - sveHelp::sveFcvtPredicated(operands, VL_bits); + results[0] = sveFcvtPredicated(operands, VL_bits); break; } case Opcode::AArch64_SCVTF_ZPmZ_StoD: { // scvtf zd.d, pg/m, zn.s - results[0] = - sveHelp::sveFcvtPredicated(operands, VL_bits); + results[0] = sveFcvtPredicated(operands, VL_bits); break; } case Opcode::AArch64_SCVTF_ZPmZ_StoS: { // scvtf zd.s, pg/m, zn.s - results[0] = - sveHelp::sveFcvtPredicated(operands, VL_bits); + results[0] = sveFcvtPredicated(operands, VL_bits); break; } case Opcode::AArch64_SCVTFv1i32: { // scvtf sd, sn @@ -4203,128 +4106,121 @@ void Instruction::execute() { break; } case Opcode::AArch64_SCVTFv2f32: { // scvtf vd.2s, vn.2s - results[0] = neonHelp::vecScvtf_2vecs( + results[0] = vecScvtf_2vecs( operands, [](int32_t x) -> float { return static_cast(x); }); break; } case Opcode::AArch64_SCVTFv2f64: { // scvtf vd.2d, vn.2d - results[0] = neonHelp::vecScvtf_2vecs( + results[0] = vecScvtf_2vecs( operands, [](int64_t x) -> double { return static_cast(x); }); break; } case Opcode::AArch64_SCVTFv4f32: { // scvtf vd.4s, vn.4s - results[0] = neonHelp::vecScvtf_2vecs( + results[0] = vecScvtf_2vecs( operands, [](int32_t x) -> float { return static_cast(x); }); break; } case Opcode::AArch64_SDIVWr: { // sdiv wd, wn, wm - results[0] = {divideHelp::div_3ops(operands), 8}; + results[0] = {div_3ops(operands), 8}; break; } case Opcode::AArch64_SDIVXr: { // sdiv xd, xn, xm - results[0] = {divideHelp::div_3ops(operands), 8}; + results[0] = {div_3ops(operands), 8}; break; } case Opcode::AArch64_SEL_ZPZZ_D: { // sel zd.d, pg, zn.d, zm.d - results[0] = sveHelp::sveSel_zpzz(operands, VL_bits); + results[0] = sveSel_zpzz(operands, VL_bits); break; } case Opcode::AArch64_SEL_ZPZZ_S: { // sel zd.s, pg, zn.s, zm.s - results[0] = sveHelp::sveSel_zpzz(operands, VL_bits); + results[0] = sveSel_zpzz(operands, VL_bits); break; } case Opcode::AArch64_SHLd: { // shl dd, dn #imm - results[0] = - neonHelp::vecShlShift_vecImm(operands, metadata); + results[0] = vecShlShift_vecImm(operands, metadata); break; } case Opcode::AArch64_SHLv4i32_shift: { // shl vd.4s, vn.4s, #imm - results[0] = - neonHelp::vecShlShift_vecImm(operands, metadata); + results[0] = vecShlShift_vecImm(operands, metadata); break; } case Opcode::AArch64_SMADDLrrr: { // smaddl xd, wn, wm, xa - results[0] = multiplyHelp::maddl_4ops(operands); + results[0] = maddl_4ops(operands); break; } case Opcode::AArch64_SMAX_ZI_S: { // smax zdn.s, zdn.s, #imm - results[0] = - sveHelp::sveMax_vecImm(operands, metadata, VL_bits); + results[0] = sveMax_vecImm(operands, metadata, VL_bits); break; } case Opcode::AArch64_SMAX_ZPmZ_S: { // smax zd.s, pg/m, zn.s, zm.s - results[0] = sveHelp::sveMaxPredicated_vecs(operands, VL_bits); + results[0] = sveMaxPredicated_vecs(operands, VL_bits); break; } case Opcode::AArch64_SMAXv4i32: { // smax vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](int32_t x, int32_t y) -> int32_t { return std::max(x, y); }); break; } case Opcode::AArch64_SMINV_VPZ_S: { // sminv sd, pg, zn.s - results[0] = sveHelp::sveSminv(operands, VL_bits); + results[0] = sveSminv(operands, VL_bits); break; } case Opcode::AArch64_SMINVv4i32v: { // sminv sd, vn.4s - results[0] = neonHelp::vecMinv_2ops(operands); + results[0] = vecMinv_2ops(operands); break; } case Opcode::AArch64_SMIN_ZPmZ_S: { // smin zd.s, pg/m, zn.s, zm.s - results[0] = sveHelp::sveLogicOpPredicated_3vecs( + results[0] = sveLogicOpPredicated_3vecs( operands, VL_bits, [](int32_t x, int32_t y) -> int32_t { return std::min(x, y); }); break; } case Opcode::AArch64_SMINv4i32: { // smin vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](int32_t x, int32_t y) -> int32_t { return std::min(x, y); }); break; } case Opcode::AArch64_SMSUBLrrr: { // smsubl xd, wn, wm, xa - results[0] = arithmeticHelp::msubl_4ops(operands); + results[0] = msubl_4ops(operands); break; } case Opcode::AArch64_SMULH_ZPmZ_B: { // smulh zdn.b, pg/m, zdn.b, zm.b - results[0] = - sveHelp::sveMulhPredicated(operands, VL_bits); + results[0] = sveMulhPredicated(operands, VL_bits); break; } case Opcode::AArch64_SMULH_ZPmZ_H: { // smulh zdn.h, pg/m, zdn.h, zm.h - results[0] = - sveHelp::sveMulhPredicated(operands, VL_bits); + results[0] = sveMulhPredicated(operands, VL_bits); break; } case Opcode::AArch64_SMULH_ZPmZ_S: { // smulh zdn.s, pg/m, zdn.s, zm.s - results[0] = - sveHelp::sveMulhPredicated(operands, VL_bits); + results[0] = sveMulhPredicated(operands, VL_bits); break; } case Opcode::AArch64_SMULHrr: { // smulh xd, xn, xm // TODO: signed - results[0] = AuxFunc::mulhi(operands[0].get(), - operands[1].get()); + results[0] = + mulhi(operands[0].get(), operands[1].get()); break; } case Opcode::AArch64_SSHLLv2i32_shift: { // sshll vd.2d, vn.2s, #imm - results[0] = neonHelp::vecShllShift_vecImm( - operands, metadata, false); + results[0] = + vecShllShift_vecImm(operands, metadata, false); break; } case Opcode::AArch64_SSHLLv4i32_shift: { // sshll2 vd.2d, vn.4s, #imm - results[0] = neonHelp::vecShllShift_vecImm( - operands, metadata, true); + results[0] = + vecShllShift_vecImm(operands, metadata, true); break; } case Opcode::AArch64_SHRNv8i8_shift: { // shrn vd.8b, vn.8h, #imm - results[0] = neonHelp::vecShrnShift_imm(operands, - metadata); + results[0] = vecShrnShift_imm(operands, metadata); break; } case Opcode::AArch64_SSHRv4i32_shift: { // sshr vd.4s, vn.4s, #imm - results[0] = neonHelp::vecSshrShift_imm(operands, metadata); + results[0] = vecSshrShift_imm(operands, metadata); break; } case Opcode::AArch64_SST1B_D_REAL: { // st1b {zd.d}, pg, [xn, zm.d] @@ -4408,8 +4304,7 @@ void Instruction::execute() { (ws + metadata.operands[0].sme_index.disp) % partition_num; const uint64_t* tileSlice = operands[sliceNum].getAsVector(); - memoryData = - sveHelp::sve_merge_store_data(tileSlice, pg, VL_bits); + memoryData = sve_merge_store_data(tileSlice, pg, VL_bits); break; } @@ -4462,8 +4357,7 @@ void Instruction::execute() { (ws + metadata.operands[0].sme_index.disp) % partition_num; const uint32_t* tileSlice = operands[sliceNum].getAsVector(); - memoryData = - sveHelp::sve_merge_store_data(tileSlice, pg, VL_bits); + memoryData = sve_merge_store_data(tileSlice, pg, VL_bits); break; } @@ -4539,7 +4433,7 @@ void Instruction::execute() { const uint8_t* d = operands[0].getAsVector(); const uint64_t* p = operands[1].getAsVector(); - memoryData = sveHelp::sve_merge_store_data(d, p, VL_bits); + memoryData = sve_merge_store_data(d, p, VL_bits); break; } case Opcode::AArch64_ST1B_IMM: { // st1b {zt.b}, pg, [xn{, #imm, mul vl}] @@ -4547,7 +4441,7 @@ void Instruction::execute() { const uint8_t* d = operands[0].getAsVector(); const uint64_t* p = operands[1].getAsVector(); - memoryData = sveHelp::sve_merge_store_data(d, p, VL_bits); + memoryData = sve_merge_store_data(d, p, VL_bits); break; } case Opcode::AArch64_ST1D: { // st1d {zt.d}, pg, [xn, xm, lsl #3] @@ -4555,7 +4449,7 @@ void Instruction::execute() { const uint64_t* d = operands[0].getAsVector(); const uint64_t* p = operands[1].getAsVector(); - memoryData = sveHelp::sve_merge_store_data(d, p, VL_bits); + memoryData = sve_merge_store_data(d, p, VL_bits); break; } case Opcode::AArch64_ST1D_IMM: { // st1d {zt.d}, pg, [xn{, #imm, mul vl}] @@ -4563,7 +4457,7 @@ void Instruction::execute() { const uint64_t* d = operands[0].getAsVector(); const uint64_t* p = operands[1].getAsVector(); - memoryData = sveHelp::sve_merge_store_data(d, p, VL_bits); + memoryData = sve_merge_store_data(d, p, VL_bits); break; } case Opcode::AArch64_ST1Fourv16b: { // st1 {vt.16b, vt2.16b, vt3.16b, @@ -4724,7 +4618,7 @@ void Instruction::execute() { const uint32_t* d = operands[0].getAsVector(); const uint64_t* p = operands[1].getAsVector(); - memoryData = sveHelp::sve_merge_store_data(d, p, VL_bits); + memoryData = sve_merge_store_data(d, p, VL_bits); break; } case Opcode::AArch64_ST1W_D: { // st1w {zt.d}, pg, [xn, xm, lsl #2] @@ -4732,8 +4626,7 @@ void Instruction::execute() { const uint64_t* d = operands[0].getAsVector(); const uint64_t* p = operands[1].getAsVector(); - memoryData = - sveHelp::sve_merge_store_data(d, p, VL_bits); + memoryData = sve_merge_store_data(d, p, VL_bits); break; } case Opcode::AArch64_ST1W_IMM: { // st1w {zt.s}, pg, [xn{, #imm, mul vl}] @@ -4741,7 +4634,7 @@ void Instruction::execute() { const uint32_t* d = operands[0].getAsVector(); const uint64_t* p = operands[1].getAsVector(); - memoryData = sveHelp::sve_merge_store_data(d, p, VL_bits); + memoryData = sve_merge_store_data(d, p, VL_bits); break; } case Opcode::AArch64_ST1i16: { // st1 {vt.h}[index], [xn] @@ -5105,36 +4998,32 @@ void Instruction::execute() { break; } case Opcode::AArch64_SUBSWri: { // subs wd, wn, #imm - auto [result, nzcv] = - arithmeticHelp::subShift_imm(operands, metadata, true); + auto [result, nzcv] = subShift_imm(operands, metadata, true); results[0] = nzcv; results[1] = {result, 8}; break; } case Opcode::AArch64_SUBSWrs: { // subs wd, wn, wm{, shift #amount} - auto [result, nzcv] = - arithmeticHelp::subShift_3ops(operands, metadata, true); + auto [result, nzcv] = subShift_3ops(operands, metadata, true); results[0] = nzcv; results[1] = {result, 8}; break; } case Opcode::AArch64_SUBSWrx: { // subs wd, wn, wm{, extend #amount} auto [result, nzcv] = - arithmeticHelp::subExtend_3ops(operands, metadata, true); + subExtend_3ops(operands, metadata, true); results[0] = nzcv; results[1] = {result, 8}; break; } case Opcode::AArch64_SUBSXri: { // subs xd, xn, #imm - auto [result, nzcv] = - arithmeticHelp::subShift_imm(operands, metadata, true); + auto [result, nzcv] = subShift_imm(operands, metadata, true); results[0] = nzcv; results[1] = result; break; } case Opcode::AArch64_SUBSXrs: { // subs xd, xn, xm{, shift #amount} - auto [result, nzcv] = - arithmeticHelp::subShift_3ops(operands, metadata, true); + auto [result, nzcv] = subShift_3ops(operands, metadata, true); results[0] = nzcv; results[1] = result; break; @@ -5142,95 +5031,93 @@ void Instruction::execute() { case Opcode::AArch64_SUBSXrx: // subs xd, xn, wm{, extend #amount} case Opcode::AArch64_SUBSXrx64: { // subs xd, xn, xm{, extend #amount} auto [result, nzcv] = - arithmeticHelp::subExtend_3ops(operands, metadata, true); + subExtend_3ops(operands, metadata, true); results[0] = nzcv; results[1] = result; break; } case Opcode::AArch64_SUBWri: { // sub wd, wn, #imm{, } - auto [result, nzcv] = - arithmeticHelp::subShift_imm(operands, metadata, false); + auto [result, nzcv] = subShift_imm(operands, metadata, false); results[0] = {result, 8}; break; } case Opcode::AArch64_SUBWrs: { // sub wd, wn, wm{, shift #amount} auto [result, nzcv] = - arithmeticHelp::subShift_3ops(operands, metadata, false); + subShift_3ops(operands, metadata, false); results[0] = {result, 8}; break; } case Opcode::AArch64_SUBXri: { // sub xd, xn, #imm{, } - auto [result, nzcv] = - arithmeticHelp::subShift_imm(operands, metadata, false); + auto [result, nzcv] = subShift_imm(operands, metadata, false); results[0] = result; break; } case Opcode::AArch64_SUBXrs: { // sub xd, xn, xm{, shift #amount} auto [result, nzcv] = - arithmeticHelp::subShift_3ops(operands, metadata, false); + subShift_3ops(operands, metadata, false); results[0] = result; break; } case Opcode::AArch64_SUBXrx: // sub xd, xn, wm{, extend #amount} case Opcode::AArch64_SUBXrx64: { // sub xd, xn, xm{, extend #amount} auto [result, nzcv] = - arithmeticHelp::subExtend_3ops(operands, metadata, false); + subExtend_3ops(operands, metadata, false); results[0] = result; break; } case Opcode::AArch64_SUB_ZZZ_B: { // sub zd.b, zn.b, zm.b - results[0] = sveHelp::sveSub_3vecs(operands, VL_bits); + results[0] = sveSub_3vecs(operands, VL_bits); break; } case Opcode::AArch64_SUB_ZZZ_D: { // sub zd.d, zn.d, zm.d - results[0] = sveHelp::sveSub_3vecs(operands, VL_bits); + results[0] = sveSub_3vecs(operands, VL_bits); break; } case Opcode::AArch64_SUB_ZZZ_H: { // sub zd.h, zn.h, zm.h - results[0] = sveHelp::sveSub_3vecs(operands, VL_bits); + results[0] = sveSub_3vecs(operands, VL_bits); break; } case Opcode::AArch64_SUB_ZZZ_S: { // sub zd.s, zn.s, zm.s - results[0] = sveHelp::sveSub_3vecs(operands, VL_bits); + results[0] = sveSub_3vecs(operands, VL_bits); break; } case Opcode::AArch64_SUBv16i8: { // sub vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint8_t x, uint8_t y) -> uint8_t { return x - y; }); break; } case Opcode::AArch64_SUBv1i64: { // sub dd, dn, dm - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint64_t x, uint64_t y) -> uint64_t { return x - y; }); break; } case Opcode::AArch64_SUBv2i32: { // sub vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint32_t x, uint32_t y) -> uint32_t { return x - y; }); break; } case Opcode::AArch64_SUBv2i64: { // sub vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint64_t x, uint64_t y) -> uint64_t { return x - y; }); break; } case Opcode::AArch64_SUBv4i16: { // sub vd.4h, vn.4h, vm.4h - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint64_t x, uint16_t y) -> uint16_t { return x - y; }); break; } case Opcode::AArch64_SUBv4i32: { // sub vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint32_t x, uint32_t y) -> uint32_t { return x - y; }); break; } case Opcode::AArch64_SUBv8i16: { // sub vd.8h, vn.8h, vm.8h - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint16_t x, uint16_t y) -> uint16_t { return x - y; }); break; } case Opcode::AArch64_SUBv8i8: { // sub vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecLogicOp_3vecs( + results[0] = vecLogicOp_3vecs( operands, [](uint8_t x, uint8_t y) -> uint8_t { return x - y; }); break; } @@ -5240,8 +5127,7 @@ void Instruction::execute() { break; } case Opcode::AArch64_SXTW_ZPmZ_D: { // sxtw zd.d, pg/m, zn.d - results[0] = - sveHelp::sveSxtPredicated(operands, VL_bits); + results[0] = sveSxtPredicated(operands, VL_bits); break; } case Opcode::AArch64_SYSxt: { // sys #, cn, cm, #{, xt} @@ -5259,182 +5145,179 @@ void Instruction::execute() { } case Opcode::AArch64_TBLv16i8Four: { // tbl Vd.16b {Vn.16b, Vn+1.16b, // Vn+2.16b,Vn+3.16b } Vm.16b - results[0] = neonHelp::vecTbl<16>(operands, metadata); + results[0] = vecTbl<16>(operands, metadata); break; } case Opcode::AArch64_TBLv16i8One: { // tbl Vd.16b {Vn.16b} Vm.16b - results[0] = neonHelp::vecTbl<16>(operands, metadata); + results[0] = vecTbl<16>(operands, metadata); break; } case Opcode::AArch64_TBLv16i8Three: { // tbl Vd.16b {Vn.16b, Vn+1.16b, // Vn+2.16b } Vm.16b - results[0] = neonHelp::vecTbl<16>(operands, metadata); + results[0] = vecTbl<16>(operands, metadata); break; } case Opcode::AArch64_TBLv16i8Two: { // tbl Vd.16b {Vn.16b, Vn+1.16b } // Vm.16b - results[0] = neonHelp::vecTbl<16>(operands, metadata); + results[0] = vecTbl<16>(operands, metadata); break; } case Opcode::AArch64_TBLv8i8Four: { // tbl Vd.8b {Vn.16b, Vn+1.16b, // Vn+2.16b,Vn+3.16b } Vm.8b - results[0] = neonHelp::vecTbl<8>(operands, metadata); + results[0] = vecTbl<8>(operands, metadata); break; } case Opcode::AArch64_TBLv8i8One: { // tbl Vd.8b {Vn.16b} Vm.8b - results[0] = neonHelp::vecTbl<8>(operands, metadata); + results[0] = vecTbl<8>(operands, metadata); break; } case Opcode::AArch64_TBLv8i8Three: { // tbl Vd.8b {Vn.16b, Vn+1.16b, // Vn+2.16b } Vm.8b - results[0] = neonHelp::vecTbl<8>(operands, metadata); + results[0] = vecTbl<8>(operands, metadata); break; } case Opcode::AArch64_TBLv8i8Two: { // tbl Vd.8b {Vn.16b, Vn+1.16b } Vm.8b - results[0] = neonHelp::vecTbl<8>(operands, metadata); + results[0] = vecTbl<8>(operands, metadata); break; } case Opcode::AArch64_TBNZW: { // tbnz wn, #imm, label - auto [taken, addr] = conditionalHelp::tbnz_tbz( - operands, metadata, instructionAddress_, true); + auto [taken, addr] = + tbnz_tbz(operands, metadata, instructionAddress_, true); branchTaken_ = taken; branchAddress_ = addr; break; } case Opcode::AArch64_TBNZX: { // tbnz xn, #imm, label - auto [taken, addr] = conditionalHelp::tbnz_tbz( - operands, metadata, instructionAddress_, true); + auto [taken, addr] = + tbnz_tbz(operands, metadata, instructionAddress_, true); branchTaken_ = taken; branchAddress_ = addr; break; } case Opcode::AArch64_TBZW: { // tbz wn, #imm, label - auto [taken, addr] = conditionalHelp::tbnz_tbz( - operands, metadata, instructionAddress_, false); + auto [taken, addr] = + tbnz_tbz(operands, metadata, instructionAddress_, false); branchTaken_ = taken; branchAddress_ = addr; break; } case Opcode::AArch64_TBZX: { // tbz xn, #imm, label - auto [taken, addr] = conditionalHelp::tbnz_tbz( - operands, metadata, instructionAddress_, false); + auto [taken, addr] = + tbnz_tbz(operands, metadata, instructionAddress_, false); branchTaken_ = taken; branchAddress_ = addr; break; } case Opcode::AArch64_TRN1_ZZZ_B: { // trn1 zd.b, zn.b, zm.b - results[0] = sveHelp::sveTrn1_3vecs(operands, VL_bits); + results[0] = sveTrn1_3vecs(operands, VL_bits); break; } case Opcode::AArch64_TRN1_ZZZ_D: { // trn1 zd.d, zn.d, zm.d - results[0] = sveHelp::sveTrn1_3vecs(operands, VL_bits); + results[0] = sveTrn1_3vecs(operands, VL_bits); break; } case Opcode::AArch64_TRN1_ZZZ_H: { // trn1 zd.h, zn.h, zm.h - results[0] = sveHelp::sveTrn1_3vecs(operands, VL_bits); + results[0] = sveTrn1_3vecs(operands, VL_bits); break; } case Opcode::AArch64_TRN1_ZZZ_S: { // trn1 zd.s, zn.s, zm.s - results[0] = sveHelp::sveTrn1_3vecs(operands, VL_bits); + results[0] = sveTrn1_3vecs(operands, VL_bits); break; } case Opcode::AArch64_TRN1v16i8: { // trn1 vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecTrn1(operands); + results[0] = vecTrn1(operands); break; } case Opcode::AArch64_TRN1v2i32: { // trn1 vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecTrn1(operands); + results[0] = vecTrn1(operands); break; } case Opcode::AArch64_TRN1v2i64: { // trn1 vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecTrn1(operands); + results[0] = vecTrn1(operands); break; } case Opcode::AArch64_TRN1v4i16: { // trn1 vd.4h, vn.4h, vm.4h - results[0] = neonHelp::vecTrn1(operands); + results[0] = vecTrn1(operands); break; } case Opcode::AArch64_TRN1v4i32: { // trn1 vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecTrn1(operands); + results[0] = vecTrn1(operands); break; } case Opcode::AArch64_TRN1v8i16: { // trn1 vd.8h, vn.8h, vm.8h - results[0] = neonHelp::vecTrn1(operands); + results[0] = vecTrn1(operands); break; } case Opcode::AArch64_TRN1v8i8: { // trn1 vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecTrn1(operands); + results[0] = vecTrn1(operands); break; } case Opcode::AArch64_TRN2_ZZZ_B: { // trn2 zd.b, zn.b, zm.b - results[0] = sveHelp::sveTrn2_3vecs(operands, VL_bits); + results[0] = sveTrn2_3vecs(operands, VL_bits); break; } case Opcode::AArch64_TRN2_ZZZ_D: { // trn2 zd.d, zn.d, zm.d - results[0] = sveHelp::sveTrn2_3vecs(operands, VL_bits); + results[0] = sveTrn2_3vecs(operands, VL_bits); break; } case Opcode::AArch64_TRN2_ZZZ_H: { // trn2 zd.h, zn.h, zm.h - results[0] = sveHelp::sveTrn2_3vecs(operands, VL_bits); + results[0] = sveTrn2_3vecs(operands, VL_bits); break; } case Opcode::AArch64_TRN2_ZZZ_S: { // trn2 zd.s, zn.s, zm.s - results[0] = sveHelp::sveTrn2_3vecs(operands, VL_bits); + results[0] = sveTrn2_3vecs(operands, VL_bits); break; } case Opcode::AArch64_TRN2v16i8: { // trn2 vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecTrn2(operands); + results[0] = vecTrn2(operands); break; } case Opcode::AArch64_TRN2v2i32: { // trn2 vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecTrn2(operands); + results[0] = vecTrn2(operands); break; } case Opcode::AArch64_TRN2v2i64: { // trn2 vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecTrn2(operands); + results[0] = vecTrn2(operands); break; } case Opcode::AArch64_TRN2v4i16: { // trn2 vd.4h, vn.4h, vm.4h - results[0] = neonHelp::vecTrn2(operands); + results[0] = vecTrn2(operands); break; } case Opcode::AArch64_TRN2v4i32: { // trn2 vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecTrn2(operands); + results[0] = vecTrn2(operands); break; } case Opcode::AArch64_TRN2v8i16: { // trn2 vd.8h, vn.8h, vm.8h - results[0] = neonHelp::vecTrn2(operands); + results[0] = vecTrn2(operands); break; } case Opcode::AArch64_TRN2v8i8: { // trn2 vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecTrn2(operands); + results[0] = vecTrn2(operands); break; } case Opcode::AArch64_UADDV_VPZ_B: { // uaddv dd, pg, zn.b - results[0] = sveHelp::sveAddvPredicated(operands, VL_bits); + results[0] = sveAddvPredicated(operands, VL_bits); break; } case Opcode::AArch64_UADDV_VPZ_D: { // uaddv dd, pg, zn.d - results[0] = sveHelp::sveAddvPredicated(operands, VL_bits); + results[0] = sveAddvPredicated(operands, VL_bits); break; } case Opcode::AArch64_UADDV_VPZ_H: { // uaddv dd, pg, zn.h - results[0] = sveHelp::sveAddvPredicated(operands, VL_bits); + results[0] = sveAddvPredicated(operands, VL_bits); break; } case Opcode::AArch64_UADDV_VPZ_S: { // uaddv dd, pg, zn.s - results[0] = sveHelp::sveAddvPredicated(operands, VL_bits); + results[0] = sveAddvPredicated(operands, VL_bits); break; } case Opcode::AArch64_UBFMWri: { // ubfm wd, wn, #immr, #imms - results[0] = { - bitmanipHelp::bfm_2imms(operands, metadata, false, true), - 8}; + results[0] = {bfm_2imms(operands, metadata, false, true), 8}; break; } case Opcode::AArch64_UBFMXri: { // ubfm xd, xn, #immr, #imms - results[0] = - bitmanipHelp::bfm_2imms(operands, metadata, false, true); + results[0] = bfm_2imms(operands, metadata, false, true); break; } case Opcode::AArch64_UCVTFUWDri: { // ucvtf dd, wn @@ -5462,23 +5345,23 @@ void Instruction::execute() { break; } case Opcode::AArch64_UDIVWr: { // udiv wd, wn, wm - results[0] = {divideHelp::div_3ops(operands), 8}; + results[0] = {div_3ops(operands), 8}; break; } case Opcode::AArch64_UDIVXr: { // udiv xd, xn, xm - results[0] = {divideHelp::div_3ops(operands), 8}; + results[0] = {div_3ops(operands), 8}; break; } case Opcode::AArch64_UMADDLrrr: { // umaddl xd, wn, wm, xa - results[0] = multiplyHelp::maddl_4ops(operands); + results[0] = maddl_4ops(operands); break; } case Opcode::AArch64_UMAXPv16i8: { // umaxp vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecUMaxP(operands); + results[0] = vecUMaxP(operands); break; } case Opcode::AArch64_UMINPv16i8: { // uminp vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecUMinP(operands); + results[0] = vecUMinP(operands); break; } case Opcode::AArch64_UMOVvi32_idx0: // umov wd, vn.s[0] @@ -5500,224 +5383,214 @@ void Instruction::execute() { break; } case Opcode::AArch64_UMSUBLrrr: { // umsubl xd, wn, wm, xa - results[0] = arithmeticHelp::msubl_4ops(operands); + results[0] = msubl_4ops(operands); break; } case Opcode::AArch64_UMULHrr: { // umulh xd, xn, xm - results[0] = AuxFunc::mulhi(operands[0].get(), - operands[1].get()); + results[0] = + mulhi(operands[0].get(), operands[1].get()); break; } case Opcode::AArch64_UQDECD_WPiI: { // uqdecd wd{, pattern{, MUL #imm}} - results[0] = - sveHelp::sveUqdec(operands, metadata, VL_bits); + results[0] = sveUqdec(operands, metadata, VL_bits); break; } case Opcode::AArch64_UQDECD_XPiI: { // uqdecd xd{, pattern{, MUL #imm}} - results[0] = - sveHelp::sveUqdec(operands, metadata, VL_bits); + results[0] = sveUqdec(operands, metadata, VL_bits); break; } case Opcode::AArch64_UQDECH_XPiI: { // uqdech xd{, pattern{, MUL #imm}} - results[0] = - sveHelp::sveUqdec(operands, metadata, VL_bits); + results[0] = sveUqdec(operands, metadata, VL_bits); break; } case Opcode::AArch64_UQDECW_XPiI: { // uqdecw xd{, pattern{, MUL #imm}} - results[0] = - sveHelp::sveUqdec(operands, metadata, VL_bits); + results[0] = sveUqdec(operands, metadata, VL_bits); break; } case Opcode::AArch64_USHLLv16i8_shift: { // ushll2 vd.8h, vn.16b, #imm - results[0] = neonHelp::vecShllShift_vecImm( - operands, metadata, true); + results[0] = + vecShllShift_vecImm(operands, metadata, true); break; } case Opcode::AArch64_USHLLv4i16_shift: { // ushll vd.4s, vn.4h, #imm - results[0] = neonHelp::vecShllShift_vecImm( + results[0] = vecShllShift_vecImm( operands, metadata, false); break; } case Opcode::AArch64_USHLLv8i16_shift: { // ushll2 vd.4s, vn.8h, #imm - results[0] = neonHelp::vecShllShift_vecImm( - operands, metadata, true); + results[0] = vecShllShift_vecImm(operands, + metadata, true); break; } case Opcode::AArch64_USHLLv8i8_shift: { // ushll vd.8h, vn.8b, #imm - results[0] = neonHelp::vecShllShift_vecImm( - operands, metadata, false); + results[0] = vecShllShift_vecImm(operands, + metadata, false); break; } case Opcode::AArch64_UUNPKHI_ZZ_D: { // uunpkhi zd.d, zn.s - results[0] = - sveHelp::sveUnpk_vecs(operands, VL_bits, true); + results[0] = sveUnpk_vecs(operands, VL_bits, true); break; } case Opcode::AArch64_UUNPKHI_ZZ_H: { // uunpkhi zd.h, zn.b - results[0] = - sveHelp::sveUnpk_vecs(operands, VL_bits, true); + results[0] = sveUnpk_vecs(operands, VL_bits, true); break; } case Opcode::AArch64_UUNPKHI_ZZ_S: { // uunpkhi zd.s, zn.h - results[0] = - sveHelp::sveUnpk_vecs(operands, VL_bits, true); + results[0] = sveUnpk_vecs(operands, VL_bits, true); break; } case Opcode::AArch64_UUNPKLO_ZZ_D: { // uunpklo zd.d, zn.s - results[0] = - sveHelp::sveUnpk_vecs(operands, VL_bits, false); + results[0] = sveUnpk_vecs(operands, VL_bits, false); break; } case Opcode::AArch64_UUNPKLO_ZZ_H: { // uunpklo zd.h, zn.b - results[0] = - sveHelp::sveUnpk_vecs(operands, VL_bits, false); + results[0] = sveUnpk_vecs(operands, VL_bits, false); break; } case Opcode::AArch64_UUNPKLO_ZZ_S: { // uunpklo zd.s, zn.h - results[0] = - sveHelp::sveUnpk_vecs(operands, VL_bits, false); + results[0] = sveUnpk_vecs(operands, VL_bits, false); break; } case Opcode::AArch64_UZP1_ZZZ_S: { // uzp1 zd.s, zn.s, zm.s - results[0] = sveHelp::sveUzp_vecs(operands, VL_bits, true); + results[0] = sveUzp_vecs(operands, VL_bits, true); break; } case Opcode::AArch64_UZP1v16i8: { // uzp1 vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecUzp(operands, true); + results[0] = vecUzp(operands, true); break; } case Opcode::AArch64_UZP1v2i32: { // uzp1 vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecUzp(operands, true); + results[0] = vecUzp(operands, true); break; } case Opcode::AArch64_UZP1v2i64: { // uzp1 vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecUzp(operands, true); + results[0] = vecUzp(operands, true); break; } case Opcode::AArch64_UZP1v4i16: { // uzp1 vd.4h, vn.4h, vm.4h - results[0] = neonHelp::vecUzp(operands, true); + results[0] = vecUzp(operands, true); break; } case Opcode::AArch64_UZP1v4i32: { // uzp1 vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecUzp(operands, true); + results[0] = vecUzp(operands, true); break; } case Opcode::AArch64_UZP1v8i16: { // uzp1 vd.8h, vn.8h, vm.8h - results[0] = neonHelp::vecUzp(operands, true); + results[0] = vecUzp(operands, true); break; } case Opcode::AArch64_UZP1v8i8: { // uzp1 vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecUzp(operands, true); + results[0] = vecUzp(operands, true); break; } case Opcode::AArch64_UZP2v16i8: { // uzp2 vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecUzp(operands, false); + results[0] = vecUzp(operands, false); break; } case Opcode::AArch64_UZP2v2i32: { // uzp2 vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecUzp(operands, false); + results[0] = vecUzp(operands, false); break; } case Opcode::AArch64_UZP2v2i64: { // uzp2 vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecUzp(operands, false); + results[0] = vecUzp(operands, false); break; } case Opcode::AArch64_UZP2v4i16: { // uzp2 vd.4h, vn.4h, vm.4h - results[0] = neonHelp::vecUzp(operands, false); + results[0] = vecUzp(operands, false); break; } case Opcode::AArch64_UZP2v4i32: { // uzp2 vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecUzp(operands, false); + results[0] = vecUzp(operands, false); break; } case Opcode::AArch64_UZP2v8i16: { // uzp2 vd.8h, vn.8h, vm.8h - results[0] = neonHelp::vecUzp(operands, false); + results[0] = vecUzp(operands, false); break; } case Opcode::AArch64_UZP2v8i8: { // uzp2 vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecUzp(operands, false); + results[0] = vecUzp(operands, false); break; } case Opcode::AArch64_WHILELO_PWW_B: { // whilelo pd.b, wn, wm auto [output, nzcv] = - sveHelp::sveWhilelo(operands, VL_bits, true); + sveWhilelo(operands, VL_bits, true); results[0] = nzcv; results[1] = output; break; } case Opcode::AArch64_WHILELO_PWW_D: { // whilelo pd.d, wn, wm auto [output, nzcv] = - sveHelp::sveWhilelo(operands, VL_bits, true); + sveWhilelo(operands, VL_bits, true); results[0] = nzcv; results[1] = output; break; } case Opcode::AArch64_WHILELO_PWW_H: { // whilelo pd.h, wn, wm auto [output, nzcv] = - sveHelp::sveWhilelo(operands, VL_bits, true); + sveWhilelo(operands, VL_bits, true); results[0] = nzcv; results[1] = output; break; } case Opcode::AArch64_WHILELO_PWW_S: { // whilelo pd.s, wn, wm auto [output, nzcv] = - sveHelp::sveWhilelo(operands, VL_bits, true); + sveWhilelo(operands, VL_bits, true); results[0] = nzcv; results[1] = output; break; } case Opcode::AArch64_WHILELO_PXX_B: { // whilelo pd.b, xn, xm auto [output, nzcv] = - sveHelp::sveWhilelo(operands, VL_bits, true); + sveWhilelo(operands, VL_bits, true); results[0] = nzcv; results[1] = output; break; } case Opcode::AArch64_WHILELO_PXX_D: { // whilelo pd.d, xn, xm auto [output, nzcv] = - sveHelp::sveWhilelo(operands, VL_bits, true); + sveWhilelo(operands, VL_bits, true); results[0] = nzcv; results[1] = output; break; } case Opcode::AArch64_WHILELO_PXX_H: { // whilelo pd.h, xn, xm auto [output, nzcv] = - sveHelp::sveWhilelo(operands, VL_bits, true); + sveWhilelo(operands, VL_bits, true); results[0] = nzcv; results[1] = output; break; } case Opcode::AArch64_WHILELO_PXX_S: { // whilelo pd.s, xn, xm auto [output, nzcv] = - sveHelp::sveWhilelo(operands, VL_bits, true); + sveWhilelo(operands, VL_bits, true); results[0] = nzcv; results[1] = output; break; } case Opcode::AArch64_WHILELT_PXX_B: { // whilelt pd.b, xn, xm auto [output, nzcv] = - sveHelp::sveWhilelo(operands, VL_bits, true); + sveWhilelo(operands, VL_bits, true); results[0] = nzcv; results[1] = output; break; } case Opcode::AArch64_WHILELT_PXX_D: { // whilelt pd.d, xn, xm auto [output, nzcv] = - sveHelp::sveWhilelo(operands, VL_bits, true); + sveWhilelo(operands, VL_bits, true); results[0] = nzcv; results[1] = output; break; } case Opcode::AArch64_WHILELT_PXX_H: { // whilelt pd.h, xn, xm auto [output, nzcv] = - sveHelp::sveWhilelo(operands, VL_bits, true); + sveWhilelo(operands, VL_bits, true); results[0] = nzcv; results[1] = output; break; } case Opcode::AArch64_WHILELT_PXX_S: { // whilelt pd.s, xn, xm auto [output, nzcv] = - sveHelp::sveWhilelo(operands, VL_bits, true); + sveWhilelo(operands, VL_bits, true); results[0] = nzcv; results[1] = output; break; @@ -5727,119 +5600,119 @@ void Instruction::execute() { break; } case Opcode::AArch64_XTNv2i32: { // xtn vd.2s, vn.2d - results[0] = neonHelp::vecXtn(operands, false); + results[0] = vecXtn(operands, false); break; } case Opcode::AArch64_XTNv4i16: { // xtn vd.4h, vn.4s - results[0] = neonHelp::vecXtn(operands, false); + results[0] = vecXtn(operands, false); break; } case Opcode::AArch64_XTNv4i32: { // xtn2 vd.4s, vn.2d - results[0] = neonHelp::vecXtn(operands, true); + results[0] = vecXtn(operands, true); break; } case Opcode::AArch64_ZIP1_PPP_B: { // zip1 pd.b, pn.b, pm.b - results[0] = sveHelp::sveZip_preds(operands, VL_bits, false); + results[0] = sveZip_preds(operands, VL_bits, false); break; } case Opcode::AArch64_ZIP1_PPP_D: { // zip1 pd.d, pn.d, pm.d - results[0] = sveHelp::sveZip_preds(operands, VL_bits, false); + results[0] = sveZip_preds(operands, VL_bits, false); break; } case Opcode::AArch64_ZIP1_PPP_H: { // zip1 pd.h, pn.h, pm.h - results[0] = sveHelp::sveZip_preds(operands, VL_bits, false); + results[0] = sveZip_preds(operands, VL_bits, false); break; } case Opcode::AArch64_ZIP1_PPP_S: { // zip1 pd.s, pn.s, pm.s - results[0] = sveHelp::sveZip_preds(operands, VL_bits, false); + results[0] = sveZip_preds(operands, VL_bits, false); break; } case Opcode::AArch64_ZIP1_ZZZ_D: { // zip1 zd.d, zn.d, zm.d - results[0] = sveHelp::sveZip_vecs(operands, VL_bits, false); + results[0] = sveZip_vecs(operands, VL_bits, false); break; } case Opcode::AArch64_ZIP1_ZZZ_S: { // zip1 zd.s, zn.s, zm.s - results[0] = sveHelp::sveZip_vecs(operands, VL_bits, false); + results[0] = sveZip_vecs(operands, VL_bits, false); break; } case Opcode::AArch64_ZIP1v16i8: { // zip1 vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecZip(operands, false); + results[0] = vecZip(operands, false); break; } case Opcode::AArch64_ZIP1v2i32: { // zip1 vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecZip(operands, false); + results[0] = vecZip(operands, false); break; } case Opcode::AArch64_ZIP1v2i64: { // zip1 vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecZip(operands, false); + results[0] = vecZip(operands, false); break; } case Opcode::AArch64_ZIP1v4i16: { // zip1 vd.4h, vn.4h, vm.4h - results[0] = neonHelp::vecZip(operands, false); + results[0] = vecZip(operands, false); break; } case Opcode::AArch64_ZIP1v4i32: { // zip1 vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecZip(operands, false); + results[0] = vecZip(operands, false); break; } case Opcode::AArch64_ZIP1v8i16: { // zip1 vd.8h, vn.8h, vm.8h - results[0] = neonHelp::vecZip(operands, false); + results[0] = vecZip(operands, false); break; } case Opcode::AArch64_ZIP1v8i8: { // zip1 vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecZip(operands, false); + results[0] = vecZip(operands, false); break; } case Opcode::AArch64_ZIP2_PPP_B: { // zip2 pd.b, pn.b, pm.b - results[0] = sveHelp::sveZip_preds(operands, VL_bits, true); + results[0] = sveZip_preds(operands, VL_bits, true); break; } case Opcode::AArch64_ZIP2_PPP_D: { // zip2 pd.d, pn.d, pm.d - results[0] = sveHelp::sveZip_preds(operands, VL_bits, true); + results[0] = sveZip_preds(operands, VL_bits, true); break; } case Opcode::AArch64_ZIP2_PPP_H: { // zip2 pd.h, pn.h, pm.h - results[0] = sveHelp::sveZip_preds(operands, VL_bits, true); + results[0] = sveZip_preds(operands, VL_bits, true); break; } case Opcode::AArch64_ZIP2_PPP_S: { // zip2 pd.s, pn.s, pm.s - results[0] = sveHelp::sveZip_preds(operands, VL_bits, true); + results[0] = sveZip_preds(operands, VL_bits, true); break; } case Opcode::AArch64_ZIP2_ZZZ_D: { // zip2 zd.d, zn.d, zm.d - results[0] = sveHelp::sveZip_vecs(operands, VL_bits, true); + results[0] = sveZip_vecs(operands, VL_bits, true); break; } case Opcode::AArch64_ZIP2_ZZZ_S: { // zip2 zd.s, zn.s, zm.s - results[0] = sveHelp::sveZip_vecs(operands, VL_bits, true); + results[0] = sveZip_vecs(operands, VL_bits, true); break; } case Opcode::AArch64_ZIP2v16i8: { // zip2 vd.16b, vn.16b, vm.16b - results[0] = neonHelp::vecZip(operands, true); + results[0] = vecZip(operands, true); break; } case Opcode::AArch64_ZIP2v2i32: { // zip2 vd.2s, vn.2s, vm.2s - results[0] = neonHelp::vecZip(operands, true); + results[0] = vecZip(operands, true); break; } case Opcode::AArch64_ZIP2v2i64: { // zip2 vd.2d, vn.2d, vm.2d - results[0] = neonHelp::vecZip(operands, true); + results[0] = vecZip(operands, true); break; } case Opcode::AArch64_ZIP2v4i16: { // zip2 vd.4h, vn.4h, vm.4h - results[0] = neonHelp::vecZip(operands, true); + results[0] = vecZip(operands, true); break; } case Opcode::AArch64_ZIP2v4i32: { // zip2 vd.4s, vn.4s, vm.4s - results[0] = neonHelp::vecZip(operands, true); + results[0] = vecZip(operands, true); break; } case Opcode::AArch64_ZIP2v8i16: { // zip2 vd.8h, vn.8h, vm.8h - results[0] = neonHelp::vecZip(operands, true); + results[0] = vecZip(operands, true); break; } case Opcode::AArch64_ZIP2v8i8: { // zip2 vd.8b, vn.8b, vm.8b - results[0] = neonHelp::vecZip(operands, true); + results[0] = vecZip(operands, true); break; } case Opcode::AArch64_ZERO_M: { // zero {mask} From 4ec8f2dccbb1ffe22d94686c14c1bb7fb564c94a Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 12 Jan 2024 14:02:43 +0000 Subject: [PATCH 71/96] Updated riscv zero register to match that of AArch64. --- src/lib/arch/riscv/Instruction.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/arch/riscv/Instruction.cc b/src/lib/arch/riscv/Instruction.cc index 1af879f577..1241b7e2c6 100644 --- a/src/lib/arch/riscv/Instruction.cc +++ b/src/lib/arch/riscv/Instruction.cc @@ -10,7 +10,8 @@ namespace simeng { namespace arch { namespace riscv { -const Register Instruction::ZERO_REGISTER = {RegisterType::GENERAL, 0}; +const Register Instruction::ZERO_REGISTER = {RegisterType::GENERAL, + (uint16_t)-1}; Instruction::Instruction(const Architecture& architecture, const InstructionMetadata& metadata) From 6372025fd66276c4fa16a1096c4e45d51fa34c31 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 12 Jan 2024 15:01:43 +0000 Subject: [PATCH 72/96] Bug fixes and SME performance improvement, and better explained extra dest reg for WZR and XZR. --- .../simeng/arch/aarch64/Instruction.hh | 13 +-- src/include/simeng/arch/riscv/Instruction.hh | 4 +- src/lib/arch/aarch64/Instruction.cc | 9 +- src/lib/arch/aarch64/InstructionMetadata.cc | 3 + src/lib/arch/aarch64/Instruction_decode.cc | 91 ++++++++++--------- 5 files changed, 63 insertions(+), 57 deletions(-) diff --git a/src/include/simeng/arch/aarch64/Instruction.hh b/src/include/simeng/arch/aarch64/Instruction.hh index ed5ae8c1e0..bffe425976 100644 --- a/src/include/simeng/arch/aarch64/Instruction.hh +++ b/src/include/simeng/arch/aarch64/Instruction.hh @@ -365,9 +365,7 @@ class Instruction : public simeng::Instruction { /** Retrieve the instruction's associated architecture. */ const Architecture& getArchitecture() const; - /** A special register value representing the zero register. If passed to - * `setSourceRegisters`/`setDestinationRegisters`, the value will be - * automatically supplied as zero. */ + /** A special register value representing the zero register. */ static const Register ZERO_REGISTER; private: @@ -403,15 +401,6 @@ class Instruction : public simeng::Instruction { * registers. */ void decode(); - /** Set the source registers of the instruction, and create a corresponding - * operands vector. Zero register references will be pre-supplied with a value - * of 0. */ - void setSourceRegisters(const std::vector& registers); - - /** Set the destination registers for the instruction, and create a - * corresponding results vector. */ - void setDestinationRegisters(const std::vector& registers); - // Scheduling /** The number of operands that have not yet had values supplied. Used to * determine execution readiness. */ diff --git a/src/include/simeng/arch/riscv/Instruction.hh b/src/include/simeng/arch/riscv/Instruction.hh index 16272d6872..0f2b924c06 100644 --- a/src/include/simeng/arch/riscv/Instruction.hh +++ b/src/include/simeng/arch/riscv/Instruction.hh @@ -166,9 +166,7 @@ class Instruction : public simeng::Instruction { /** Retrieve the instruction's associated architecture. */ const Architecture& getArchitecture() const; - /** A special register value representing the zero register. If passed to - * `setSourceRegisters`/`setDestinationRegisters`, the value will be - * automatically supplied as zero. */ + /** A special register value representing the zero register. */ static const Register ZERO_REGISTER; /** The maximum number of source registers any supported RISC-V instruction diff --git a/src/lib/arch/aarch64/Instruction.cc b/src/lib/arch/aarch64/Instruction.cc index a3e0e698ad..c66b738a60 100644 --- a/src/lib/arch/aarch64/Instruction.cc +++ b/src/lib/arch/aarch64/Instruction.cc @@ -37,7 +37,8 @@ Instruction::Instruction(const Architecture& architecture, InstructionException Instruction::getException() const { return exception_; } const span Instruction::getSourceRegisters() const { - return {const_cast(sourceRegisters.data()), sourceRegisterCount}; + return {const_cast(sourceRegisters.data()), + sourceRegisters.size()}; } const span Instruction::getSourceOperands() const { @@ -45,6 +46,8 @@ const span Instruction::getSourceOperands() const { } const span Instruction::getDestinationRegisters() const { + // destinationRegisterCount used as there may be +n in destinationRegisters + // vector for any zero destinations - these can't be written to. return {const_cast(destinationRegisters.data()), destinationRegisterCount}; } @@ -55,6 +58,7 @@ bool Instruction::isOperandReady(int index) const { void Instruction::renameSource(uint16_t i, Register renamed) { sourceRegisters[i] = renamed; } + void Instruction::renameDestination(uint16_t i, Register renamed) { destinationRegisters[i] = renamed; } @@ -95,6 +99,8 @@ span Instruction::getData() const { bool Instruction::canExecute() const { return (operandsPending == 0); } const span Instruction::getResults() const { + // destinationRegisterCount used as there may be +n in results vector for any + // zero destinations - these can't be written to. return {const_cast(results.data()), destinationRegisterCount}; } @@ -185,6 +191,7 @@ void Instruction::setExecutionInfo(const ExecutionInfo& info) { stallCycles_ = info.stallCycles; supportedPorts_ = info.ports; } + const std::vector& Instruction::getSupportedPorts() { if (supportedPorts_.size() == 0) { exception_ = InstructionException::NoAvailablePort; diff --git a/src/lib/arch/aarch64/InstructionMetadata.cc b/src/lib/arch/aarch64/InstructionMetadata.cc index 6421664ce0..59f529e3c6 100644 --- a/src/lib/arch/aarch64/InstructionMetadata.cc +++ b/src/lib/arch/aarch64/InstructionMetadata.cc @@ -1463,6 +1463,9 @@ InstructionMetadata::InstructionMetadata(const cs_insn& insn) case Opcode::AArch64_STRXui: operands[1].access = CS_AC_READ; break; + case Opcode::AArch64_PFALSE: + operands[0].access = CS_AC_WRITE; + break; case Opcode::AArch64_STR_PXI: [[fallthrough]]; case Opcode::AArch64_STR_ZXI: diff --git a/src/lib/arch/aarch64/Instruction_decode.cc b/src/lib/arch/aarch64/Instruction_decode.cc index 4e60ae1b62..54f7a32db4 100644 --- a/src/lib/arch/aarch64/Instruction_decode.cc +++ b/src/lib/arch/aarch64/Instruction_decode.cc @@ -17,6 +17,7 @@ namespace aarch64 { constexpr bool bit(uint32_t value, uint8_t start) { return (value >> start) & 1; } + // Extract bits `start` to `start+width` of `value` constexpr uint32_t bits(uint32_t value, uint8_t start, uint8_t width) { return ((value >> start) & ((1 << width) - 1)); @@ -24,6 +25,7 @@ constexpr uint32_t bits(uint32_t value, uint8_t start, uint8_t width) { // Generate a general purpose register identifier with tag `tag` constexpr Register genReg(uint16_t tag) { return {RegisterType::GENERAL, tag}; } + // Generate a NZCV register identifier constexpr Register nzcvReg() { return {RegisterType::NZCV, 0}; } @@ -201,51 +203,56 @@ void Instruction::decode() { } bool accessesMemory = false; + uint16_t zrDestRegs = 0; // Extract explicit register accesses for (size_t i = 0; i < metadata.operandCount; i++) { const auto& op = metadata.operands[i]; if (op.type == ARM64_OP_REG) { // Register operand - if ((op.access & cs_ac_type::CS_AC_WRITE) && op.reg != ARM64_REG_WZR && - op.reg != ARM64_REG_XZR) { - // Determine the data type the instruction operates on based on the - // register operand used - // Belongs to the predicate group if the destination register is a - // predicate - if (op.reg >= ARM64_REG_V0) { - isVectorData_ = true; - } else if (op.reg >= ARM64_REG_ZAB0 || op.reg == ARM64_REG_ZA) { - isSMEData_ = true; - } else if (op.reg >= ARM64_REG_Z0) { - isSVEData_ = true; - } else if (op.reg <= ARM64_REG_S31 && op.reg >= ARM64_REG_Q0) { - isScalarData_ = true; - } else if (op.reg <= ARM64_REG_P15 && op.reg >= ARM64_REG_P0) { - isPredicate_ = true; - } else if (op.reg <= ARM64_REG_H31 && op.reg >= ARM64_REG_B0) { - isScalarData_ = true; - } + if ((op.access & cs_ac_type::CS_AC_WRITE)) { + if (op.reg != ARM64_REG_WZR && op.reg != ARM64_REG_XZR) { + // Determine the data type the instruction operates on based on the + // register operand used + // Belongs to the predicate group if the destination register is a + // predicate + if (op.reg >= ARM64_REG_V0) { + isVectorData_ = true; + } else if (op.reg >= ARM64_REG_ZAB0 || op.reg == ARM64_REG_ZA) { + isSMEData_ = true; + } else if (op.reg >= ARM64_REG_Z0) { + isSVEData_ = true; + } else if (op.reg <= ARM64_REG_S31 && op.reg >= ARM64_REG_Q0) { + isScalarData_ = true; + } else if (op.reg <= ARM64_REG_P15 && op.reg >= ARM64_REG_P0) { + isPredicate_ = true; + } else if (op.reg <= ARM64_REG_H31 && op.reg >= ARM64_REG_B0) { + isScalarData_ = true; + } - if ((op.reg >= ARM64_REG_ZAB0 && op.reg < ARM64_REG_V0) || - (op.reg == ARM64_REG_ZA)) { - // Add all Matrix register rows as destination operands - std::vector regs = - getZARowVectors(op.reg, architecture_.getStreamingVectorLength()); - for (int i = 0; i < regs.size(); i++) { - destinationRegisters.push_back(regs[i]); + if ((op.reg >= ARM64_REG_ZAB0 && op.reg < ARM64_REG_V0) || + (op.reg == ARM64_REG_ZA)) { + // Add all Matrix register rows as destination operands + std::vector regs = getZARowVectors( + op.reg, architecture_.getStreamingVectorLength()); + for (int i = 0; i < regs.size(); i++) { + destinationRegisters.push_back(regs[i]); + destinationRegisterCount++; + // If WRITE, also need to add to source registers to maintain + // unaltered row values + sourceRegisters.push_back(regs[i]); + sourceRegisterCount++; + operandsPending++; + } + } else { + // Add register writes to destinations, but skip zero-register + // destinations + destinationRegisters.push_back(csRegToRegister(op.reg)); destinationRegisterCount++; - // If WRITE, also need to add to source registers to maintain - // unaltered row values - sourceRegisters.push_back(regs[i]); - sourceRegisterCount++; - operandsPending++; } } else { - // Add register writes to destinations, but skip zero-register - // destinations - destinationRegisters.push_back(csRegToRegister(op.reg)); - destinationRegisterCount++; + // Need to allocate extra space in results vector for zero destination + zrDestRegs++; } } if (op.access & cs_ac_type::CS_AC_READ) { @@ -638,15 +645,17 @@ void Instruction::decode() { } // Allocate enough entries in results vector - results.resize(destinationRegisterCount + 1); + results.resize(destinationRegisterCount + zrDestRegs); // Allocate enough entries in the operands vector - operands.resize(sourceRegisterCount + 1); + operands.resize(sourceRegisterCount); // Catch zero register references and pre-complete those operands - for (uint16_t i = 0; i < sourceRegisterCount; i++) { - if (sourceRegisters[i] == Instruction::ZERO_REGISTER) { - operands[i] = RegisterValue(0, 8); - operandsPending--; + if (!(isSMEData_ || isSVEData_)) { + for (uint16_t i = 0; i < sourceRegisterCount; i++) { + if (sourceRegisters[i] == Instruction::ZERO_REGISTER) { + operands[i] = RegisterValue(0, 8); + operandsPending--; + } } } } From 4c04ff3afb62033e747803bffa70478e3050d8fc Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 12 Jan 2024 16:41:55 +0000 Subject: [PATCH 73/96] Moved shiftValue to more appropriate file. --- .../simeng/arch/aarch64/Instruction.hh | 32 ------------------- .../aarch64/helpers/auxiliaryFunctions.hh | 32 +++++++++++++++++++ 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/include/simeng/arch/aarch64/Instruction.hh b/src/include/simeng/arch/aarch64/Instruction.hh index bffe425976..d59c0ece4c 100644 --- a/src/include/simeng/arch/aarch64/Instruction.hh +++ b/src/include/simeng/arch/aarch64/Instruction.hh @@ -13,38 +13,6 @@ namespace simeng { namespace arch { namespace aarch64 { -/** Apply the shift specified by `shiftType` to the unsigned integer `value`, - * shifting by `amount`. */ -template -std::enable_if_t && std::is_unsigned_v, T> shiftValue( - T value, uint8_t shiftType, uint8_t amount) { - switch (shiftType) { - case ARM64_SFT_LSL: - return value << amount; - case ARM64_SFT_LSR: - return value >> amount; - case ARM64_SFT_ASR: - return static_cast>(value) >> amount; - case ARM64_SFT_ROR: { - // Assuming sizeof(T) is a power of 2. - const T mask = sizeof(T) * 8 - 1; - assert((amount <= mask) && "Rotate amount exceeds type width"); - amount &= mask; - return (value >> amount) | (value << ((-amount) & mask)); - } - case ARM64_SFT_MSL: { - // pad in with ones instead of zeros - const T mask = (static_cast(1) << static_cast(amount)) - 1; - return (value << amount) | mask; - } - case ARM64_SFT_INVALID: - return value; - default: - assert(false && "Unknown shift type"); - return 0; - } -} - /** Get the size of the data to be accessed from/to memory. */ inline uint8_t getDataSize(cs_arm64_op op) { // Check from top of the range downwards diff --git a/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh b/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh index b5f930db9f..6824908bcf 100644 --- a/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh +++ b/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh @@ -318,6 +318,38 @@ uint16_t sveGetPattern(const std::string operandStr, const uint8_t esize, return 0; } +/** Apply the shift specified by `shiftType` to the unsigned integer `value`, + * shifting by `amount`. */ +template +std::enable_if_t && std::is_unsigned_v, T> shiftValue( + T value, uint8_t shiftType, uint8_t amount) { + switch (shiftType) { + case ARM64_SFT_LSL: + return value << amount; + case ARM64_SFT_LSR: + return value >> amount; + case ARM64_SFT_ASR: + return static_cast>(value) >> amount; + case ARM64_SFT_ROR: { + // Assuming sizeof(T) is a power of 2. + const T mask = sizeof(T) * 8 - 1; + assert((amount <= mask) && "Rotate amount exceeds type width"); + amount &= mask; + return (value >> amount) | (value << ((-amount) & mask)); + } + case ARM64_SFT_MSL: { + // pad in with ones instead of zeros + const T mask = (static_cast(1) << static_cast(amount)) - 1; + return (value << amount) | mask; + } + case ARM64_SFT_INVALID: + return value; + default: + assert(false && "Unknown shift type"); + return 0; + } +} + } // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file From a2a1639b76fe53d6087e943e845f340929ab1597 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 12 Jan 2024 16:48:24 +0000 Subject: [PATCH 74/96] Fixed shiftValue test header. --- test/unit/aarch64/ShiftValueTest.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/aarch64/ShiftValueTest.cc b/test/unit/aarch64/ShiftValueTest.cc index 0402bbcdfc..12ec4e2b84 100644 --- a/test/unit/aarch64/ShiftValueTest.cc +++ b/test/unit/aarch64/ShiftValueTest.cc @@ -1,5 +1,5 @@ #include "gtest/gtest.h" -#include "simeng/arch/aarch64/Instruction.hh" +#include "simeng/arch/aarch64/helpers/auxiliaryFunctions.hh" namespace { From db3e3fa1f0a993644437fd21eceeb769835a3819 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Mon, 15 Jan 2024 17:49:04 +0000 Subject: [PATCH 75/96] Added AArch64 instruction class unit tests. --- test/unit/CMakeLists.txt | 3 + test/unit/aarch64/InstructionTest.cc | 593 ++++++++++++++++++++++++++- 2 files changed, 589 insertions(+), 7 deletions(-) diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 7cbde46f77..fbc9d61658 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -37,6 +37,9 @@ set(TEST_SOURCES add_executable(unittests ${TEST_SOURCES}) +configure_file(${capstone_SOURCE_DIR}/arch/AArch64/AArch64GenInstrInfo.inc AArch64GenInstrInfo.inc COPYONLY) +configure_file(${capstone_SOURCE_DIR}/arch/RISCV/RISCVGenInstrInfo.inc RISCVGenInstrInfo.inc COPYONLY) + target_include_directories(unittests PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories(unittests PUBLIC ${PROJECT_SOURCE_DIR}/src/lib) target_link_libraries(unittests libsimeng) diff --git a/test/unit/aarch64/InstructionTest.cc b/test/unit/aarch64/InstructionTest.cc index 327b442a33..b09eb860d5 100644 --- a/test/unit/aarch64/InstructionTest.cc +++ b/test/unit/aarch64/InstructionTest.cc @@ -1,5 +1,6 @@ #include "../ConfigInit.hh" #include "../MockArchitecture.hh" +#include "arch/aarch64/InstructionMetadata.hh" #include "gmock/gmock.h" #include "simeng/arch/aarch64/Instruction.hh" #include "simeng/version.hh" @@ -8,21 +9,599 @@ namespace simeng { namespace arch { namespace aarch64 { -// TODO: Implement instruction unit tests once InstructionMetadata.hh has been -// moved to include/simeng - // AArch64 Instruction Tests class AArch64InstructionTest : public testing::Test { public: - AArch64InstructionTest() {} + AArch64InstructionTest() + : os(config::SimInfo::getConfig()["CPU-Info"]["Special-File-Dir-Path"] + .as()), + arch(os) { + // Create InstructionMetadata objects + cs_open(CS_ARCH_ARM64, CS_MODE_ARM, &capstoneHandle); + cs_option(capstoneHandle, CS_OPT_DETAIL, CS_OPT_ON); + + // fdiv + cs_insn rawInsn_fdiv; + cs_detail rawDetail_fdiv; + rawInsn_fdiv.detail = &rawDetail_fdiv; + size_t size_fdiv = 4; + uint64_t address_fdiv = 0; + const uint8_t* encoding_fdiv = + reinterpret_cast(fdivInstrBytes.data()); + cs_disasm_iter(capstoneHandle, &encoding_fdiv, &size_fdiv, &address_fdiv, + &rawInsn_fdiv); + fdivMetadata = std::make_unique(rawInsn_fdiv); + + // ldp + cs_insn rawInsn_ldp; + cs_detail rawDetail_ldp; + rawInsn_ldp.detail = &rawDetail_ldp; + size_t size_ldp = 4; + uint64_t address_ldp = 4; + const uint8_t* encoding_ldp = + reinterpret_cast(ldpInstrBytes.data()); + cs_disasm_iter(capstoneHandle, &encoding_ldp, &size_ldp, &address_ldp, + &rawInsn_ldp); + ldpMetadata = std::make_unique(rawInsn_ldp); + + // cbz + cs_insn rawInsn_cbz; + cs_detail rawDetail_cbz; + rawInsn_cbz.detail = &rawDetail_cbz; + size_t size_cbz = 4; + uint64_t address_cbz = 4; + const uint8_t* encoding_cbz = + reinterpret_cast(cbzInstrBytes.data()); + cs_disasm_iter(capstoneHandle, &encoding_cbz, &size_cbz, &address_cbz, + &rawInsn_cbz); + cbzMetadata = std::make_unique(rawInsn_cbz); + + const uint8_t* badEncoding = + reinterpret_cast(invalidInstrBytes.data()); + invalidMetadata = std::make_unique(badEncoding); + } + + ~AArch64InstructionTest() { cs_close(&capstoneHandle); } protected: - MockArchitecture arch; - // InstructionMetadata metadata; - MicroOpInfo uopInfo; + ConfigInit configInit = ConfigInit(config::ISA::AArch64, ""); + + // fdivr z1.s, p0/m, z1.s, z0.s + std::array fdivInstrBytes = {0x01, 0x80, 0x8c, 0x65}; + // ldp x1, x2, [x3] + std::array ldpInstrBytes = {0x61, 0x08, 0x40, 0xA9}; + // cbz x2, #0x28 + std::array cbzInstrBytes = {0x42, 0x01, 0x00, 0xB4}; + std::array invalidInstrBytes = {0x20, 0x00, 0x02, 0x8c}; + + // A Capstone decoding library handle, for decoding instructions. + csh capstoneHandle; + + kernel::Linux os; + Architecture arch; + + std::unique_ptr fdivMetadata; + std::unique_ptr ldpMetadata; + std::unique_ptr cbzMetadata; + std::unique_ptr invalidMetadata; + std::unique_ptr uopInfo; InstructionException exception; }; +// Test that a valid instruction is created correctly +TEST_F(AArch64InstructionTest, validInsn) { + // Insn is `fdivr z1.s, p0/m, z1.s, z0.s` + Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); + std::vector destRegs = {{RegisterType::VECTOR, 1}}; + std::vector srcRegs = {{RegisterType::PREDICATE, 0}, + {RegisterType::VECTOR, 1}, + {RegisterType::VECTOR, 0}}; + const std::vector ports = {1, 2, 3}; + insn.setExecutionInfo({3, 3, ports}); + insn.setInstructionAddress(0x48); + insn.setInstructionId(11); + insn.setSequenceId(12); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred) ? true : false; + EXPECT_EQ(&insn.getArchitecture(), &arch); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_TRUE(matchingPred); + EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); + EXPECT_EQ(insn.getData().size(), 0); + EXPECT_EQ(insn.getDestinationRegisters().size(), destRegs.size()); + for (int i = 0; i < destRegs.size(); i++) { + EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); + } + EXPECT_EQ(insn.getException(), InstructionException::None); + EXPECT_EQ(insn.getGeneratedAddresses().size(), 0); + EXPECT_EQ(insn.getGroup(), InstructionGroups::SVE_DIV_OR_SQRT); + EXPECT_EQ(insn.getInstructionAddress(), 0x48); + EXPECT_EQ(insn.getInstructionId(), 11); + EXPECT_EQ(insn.getKnownOffset(), 0); + EXPECT_EQ(insn.getLatency(), 3); + EXPECT_EQ(insn.getLSQLatency(), 1); + EXPECT_EQ(&insn.getMetadata(), fdivMetadata.get()); + EXPECT_EQ(insn.getMicroOpIndex(), 0); + // Results vector resized at decode + EXPECT_EQ(insn.getResults().size(), 1); + EXPECT_EQ(insn.getSequenceId(), 12); + // Operands vector resized at decode + EXPECT_EQ(insn.getSourceOperands().size(), 3); + EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); + for (int i = 0; i < srcRegs.size(); i++) { + EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); + EXPECT_FALSE(insn.isOperandReady(i)); + } + EXPECT_EQ(insn.getStallCycles(), 3); + EXPECT_EQ(insn.getSupportedPorts(), ports); + + EXPECT_FALSE(insn.canExecute()); + EXPECT_FALSE(insn.isStoreAddress()); + EXPECT_FALSE(insn.isStoreData()); + EXPECT_FALSE(insn.isLoad()); + EXPECT_FALSE(insn.isBranch()); + EXPECT_FALSE(insn.exceptionEncountered()); + EXPECT_FALSE(insn.hasExecuted()); + EXPECT_FALSE(insn.canCommit()); + EXPECT_TRUE(insn.hasAllData()); + EXPECT_FALSE(insn.wasBranchMispredicted()); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.isFlushed()); + EXPECT_FALSE(insn.isMicroOp()); + EXPECT_TRUE(insn.isLastMicroOp()); + EXPECT_FALSE(insn.isWaitingCommit()); +} + +// Test that an invalid instruction can be created - invalid due to byte stream +TEST_F(AArch64InstructionTest, invalidInsn_1) { + Instruction insn = Instruction(arch, *invalidMetadata.get(), MicroOpInfo()); + std::vector destRegs = {}; + std::vector srcRegs = {}; + const std::vector ports = {}; + insn.setExecutionInfo({1, 1, ports}); + insn.setInstructionAddress(0x44); + insn.setInstructionId(13); + insn.setSequenceId(14); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred) ? true : false; + EXPECT_EQ(&insn.getArchitecture(), &arch); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_TRUE(matchingPred); + EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); + EXPECT_EQ(insn.getData().size(), 0); + EXPECT_EQ(insn.getDestinationRegisters().size(), destRegs.size()); + for (int i = 0; i < destRegs.size(); i++) { + EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); + } + EXPECT_EQ(insn.getException(), InstructionException::EncodingUnallocated); + EXPECT_EQ(insn.getGeneratedAddresses().size(), 0); + // Default Group + EXPECT_EQ(insn.getGroup(), InstructionGroups::INT_SIMPLE_ARTH_NOSHIFT); + EXPECT_EQ(insn.getInstructionAddress(), 0x44); + EXPECT_EQ(insn.getInstructionId(), 13); + EXPECT_EQ(insn.getKnownOffset(), 0); + EXPECT_EQ(insn.getLatency(), 1); + EXPECT_EQ(insn.getLSQLatency(), 1); + EXPECT_EQ(&insn.getMetadata(), invalidMetadata.get()); + EXPECT_EQ(insn.getMicroOpIndex(), 0); + // Results vector resized at decode + EXPECT_EQ(insn.getResults().size(), 0); + EXPECT_EQ(insn.getSequenceId(), 14); + // Operands vector resized at decode + EXPECT_EQ(insn.getSourceOperands().size(), 0); + EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); + for (int i = 0; i < srcRegs.size(); i++) { + EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); + EXPECT_FALSE(insn.isOperandReady(i)); + } + EXPECT_EQ(insn.getStallCycles(), 1); + EXPECT_EQ(insn.getSupportedPorts(), ports); + + EXPECT_TRUE(insn.canExecute()); + EXPECT_FALSE(insn.isStoreAddress()); + EXPECT_FALSE(insn.isStoreData()); + EXPECT_FALSE(insn.isLoad()); + EXPECT_FALSE(insn.isBranch()); + EXPECT_TRUE(insn.exceptionEncountered()); + EXPECT_FALSE(insn.hasExecuted()); + EXPECT_FALSE(insn.canCommit()); + EXPECT_TRUE(insn.hasAllData()); + EXPECT_FALSE(insn.wasBranchMispredicted()); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.isFlushed()); + EXPECT_FALSE(insn.isMicroOp()); + EXPECT_TRUE(insn.isLastMicroOp()); + EXPECT_FALSE(insn.isWaitingCommit()); +} + +// Test that an invalid instruction can be created - invalid due to exception +// provided +TEST_F(AArch64InstructionTest, invalidInsn_2) { + Instruction insn = Instruction(arch, *invalidMetadata.get(), + InstructionException::HypervisorCall); + + std::vector destRegs = {}; + std::vector srcRegs = {}; + const std::vector ports = {}; + insn.setExecutionInfo({1, 1, ports}); + insn.setInstructionAddress(0x43); + insn.setInstructionId(15); + insn.setSequenceId(16); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred) ? true : false; + EXPECT_EQ(&insn.getArchitecture(), &arch); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_TRUE(matchingPred); + EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); + EXPECT_EQ(insn.getData().size(), 0); + EXPECT_EQ(insn.getDestinationRegisters().size(), destRegs.size()); + for (int i = 0; i < destRegs.size(); i++) { + EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); + } + EXPECT_EQ(insn.getException(), InstructionException::HypervisorCall); + EXPECT_EQ(insn.getGeneratedAddresses().size(), 0); + // Default Group + EXPECT_EQ(insn.getGroup(), InstructionGroups::INT_SIMPLE_ARTH_NOSHIFT); + EXPECT_EQ(insn.getInstructionAddress(), 0x43); + EXPECT_EQ(insn.getInstructionId(), 15); + EXPECT_EQ(insn.getKnownOffset(), 0); + EXPECT_EQ(insn.getLatency(), 1); + EXPECT_EQ(insn.getLSQLatency(), 1); + EXPECT_EQ(&insn.getMetadata(), invalidMetadata.get()); + EXPECT_EQ(insn.getMicroOpIndex(), 0); + // Results vector resized at decode + EXPECT_EQ(insn.getResults().size(), 0); + EXPECT_EQ(insn.getSequenceId(), 16); + // Operands vector resized at decode + EXPECT_EQ(insn.getSourceOperands().size(), 0); + EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); + for (int i = 0; i < srcRegs.size(); i++) { + EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); + EXPECT_FALSE(insn.isOperandReady(i)); + } + EXPECT_EQ(insn.getStallCycles(), 1); + EXPECT_EQ(insn.getSupportedPorts(), ports); + + EXPECT_TRUE(insn.canExecute()); + EXPECT_FALSE(insn.isStoreAddress()); + EXPECT_FALSE(insn.isStoreData()); + EXPECT_FALSE(insn.isLoad()); + EXPECT_FALSE(insn.isBranch()); + EXPECT_TRUE(insn.exceptionEncountered()); + EXPECT_FALSE(insn.hasExecuted()); + EXPECT_FALSE(insn.canCommit()); + EXPECT_TRUE(insn.hasAllData()); + EXPECT_FALSE(insn.wasBranchMispredicted()); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.isFlushed()); + EXPECT_FALSE(insn.isMicroOp()); + EXPECT_TRUE(insn.isLastMicroOp()); + EXPECT_FALSE(insn.isWaitingCommit()); +} + +// Test to ensure that source and operand registers can be renamed correctly +TEST_F(AArch64InstructionTest, renameRegs) { + // Insn is `fdivr z1.s, p0/m, z1.s, z0.s` + Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); + std::vector destRegs = {{RegisterType::VECTOR, 1}}; + std::vector srcRegs = {{RegisterType::PREDICATE, 0}, + {RegisterType::VECTOR, 1}, + {RegisterType::VECTOR, 0}}; + EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); + for (int i = 0; i < srcRegs.size(); i++) { + EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); + } + EXPECT_EQ(insn.getDestinationRegisters().size(), destRegs.size()); + for (int i = 0; i < destRegs.size(); i++) { + EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); + } + + std::vector destRegs_new = {{RegisterType::VECTOR, 24}}; + std::vector srcRegs_new = {{RegisterType::PREDICATE, 0}, + {RegisterType::VECTOR, 97}, + {RegisterType::VECTOR, 0}}; + insn.renameDestination(0, destRegs_new[0]); + insn.renameSource(1, srcRegs_new[1]); + EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs_new.size()); + for (int i = 0; i < srcRegs_new.size(); i++) { + EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs_new[i]); + } + EXPECT_EQ(insn.getDestinationRegisters().size(), destRegs_new.size()); + for (int i = 0; i < destRegs_new.size(); i++) { + EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs_new[i]); + } +} + +// Test that operand values can be properly supplied and change the state of +// `canExecute` +TEST_F(AArch64InstructionTest, supplyOperand) { + // Insn is `fdivr z1.s, p0/m, z1.s, z0.s` + Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); + std::vector destRegs = {{RegisterType::VECTOR, 1}}; + std::vector srcRegs = {{RegisterType::PREDICATE, 0}, + {RegisterType::VECTOR, 1}, + {RegisterType::VECTOR, 0}}; + EXPECT_FALSE(insn.canExecute()); + EXPECT_FALSE(insn.isOperandReady(0)); + EXPECT_FALSE(insn.isOperandReady(1)); + EXPECT_FALSE(insn.isOperandReady(2)); + + RegisterValue vec = {0xABBACAFE01234567, 256}; + RegisterValue pred = {0xFFFFFFFF, 32}; + insn.supplyOperand(0, pred); + insn.supplyOperand(1, vec); + insn.supplyOperand(2, vec); + EXPECT_TRUE(insn.canExecute()); + EXPECT_TRUE(insn.isOperandReady(0)); + EXPECT_TRUE(insn.isOperandReady(1)); + EXPECT_TRUE(insn.isOperandReady(2)); + auto sourceVals = insn.getSourceOperands(); + EXPECT_EQ(sourceVals.size(), 3); + EXPECT_EQ(sourceVals[0], pred); + EXPECT_EQ(sourceVals[1], vec); + EXPECT_EQ(sourceVals[2], vec); + + EXPECT_FALSE(insn.hasExecuted()); + insn.execute(); + EXPECT_TRUE(insn.hasExecuted()); + auto results = insn.getResults(); + RegisterValue refRes = {0x0000000100000001, 256}; + EXPECT_EQ(results.size(), 1); + EXPECT_EQ(results[0], refRes); +} + +// Test that data can be supplied successfully +TEST_F(AArch64InstructionTest, supplyData) { + // Insn is `ldp x1, x2, [x3]` + Instruction insn = Instruction(arch, *ldpMetadata.get(), MicroOpInfo()); + std::vector destRegs = {{RegisterType::GENERAL, 1}, + {RegisterType::GENERAL, 2}}; + std::vector srcRegs = {{RegisterType::GENERAL, 3}}; + + // Check instruction created correctly + EXPECT_FALSE(insn.exceptionEncountered()); + EXPECT_EQ(&insn.getMetadata(), ldpMetadata.get()); + EXPECT_EQ(insn.getGroup(), InstructionGroups::LOAD_INT); + + // Check source and destination registers extracted correctly + EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); + for (int i = 0; i < srcRegs.size(); i++) { + EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); + } + EXPECT_EQ(insn.getDestinationRegisters().size(), destRegs.size()); + for (int i = 0; i < destRegs.size(); i++) { + EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); + } + + // Supply needed operands + EXPECT_FALSE(insn.isOperandReady(0)); + RegisterValue addr = {0x480, 4}; + insn.supplyOperand(0, addr); + EXPECT_TRUE(insn.isOperandReady(0)); + + // Generate memory addresses + EXPECT_EQ(insn.getGeneratedAddresses().size(), 0); + insn.generateAddresses(); + auto generatedAddresses = insn.getGeneratedAddresses(); + EXPECT_EQ(generatedAddresses.size(), 2); + for (int i = 0; i < generatedAddresses.size(); i++) { + EXPECT_EQ(generatedAddresses[i].address, 0x480 + (i * 0x8)); + EXPECT_EQ(generatedAddresses[i].size, 8); + } + + // Supply required data + EXPECT_FALSE(insn.hasAllData()); + std::vector data = {{123, 8}, {456, 8}}; + EXPECT_EQ(generatedAddresses.size(), data.size()); + for (int i = 0; i < generatedAddresses.size(); i++) { + insn.supplyData(generatedAddresses[i].address, data[i]); + } + auto retrievedData = insn.getData(); + for (int i = 0; i < retrievedData.size(); i++) { + EXPECT_EQ(retrievedData[i], data[i]); + } + EXPECT_TRUE(insn.hasAllData()); +} + +// Test DataAbort Exception is triggered correctly when supplying data +TEST_F(AArch64InstructionTest, supplyData_dataAbort) { + // Insn is `ldp x1, x2, [x3]` + Instruction insn = Instruction(arch, *ldpMetadata.get(), MicroOpInfo()); + std::vector destRegs = {{RegisterType::GENERAL, 1}, + {RegisterType::GENERAL, 2}}; + std::vector srcRegs = {{RegisterType::GENERAL, 3}}; + + // Check instruction created correctly + EXPECT_EQ(&insn.getMetadata(), ldpMetadata.get()); + EXPECT_EQ(insn.getGroup(), InstructionGroups::LOAD_INT); + + // Supply needed operands + EXPECT_FALSE(insn.isOperandReady(0)); + RegisterValue addr = {0x480, 4}; + insn.supplyOperand(0, addr); + EXPECT_TRUE(insn.isOperandReady(0)); + + // Generate memory addresses + EXPECT_EQ(insn.getGeneratedAddresses().size(), 0); + insn.generateAddresses(); + auto generatedAddresses = insn.getGeneratedAddresses(); + EXPECT_EQ(generatedAddresses.size(), 2); + for (int i = 0; i < generatedAddresses.size(); i++) { + EXPECT_EQ(generatedAddresses[i].address, 0x480 + (i * 0x8)); + EXPECT_EQ(generatedAddresses[i].size, 8); + } + + // Trigger data abort + EXPECT_FALSE(insn.exceptionEncountered()); + insn.supplyData(generatedAddresses[0].address, RegisterValue()); + EXPECT_TRUE(insn.exceptionEncountered()); + EXPECT_EQ(insn.getException(), InstructionException::DataAbort); +} + +// Test to check logic around branch misprediction logic +TEST_F(AArch64InstructionTest, branchMisprediction) { + // Insn is `fdivr z1.s, p0/m, z1.s, z0.s` + Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); + insn.setInstructionAddress(64); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); + EXPECT_FALSE(insn.isBranch()); + std::tuple tup = {false, insn.getInstructionAddress() + 4}; + EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + + pred = {true, 0x4848}; + insn.setBranchPrediction(pred); + matchingPred = (insn.getBranchPrediction() == pred); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_TRUE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); + + EXPECT_FALSE(insn.isBranch()); + tup = {true, insn.getInstructionAddress() + 4}; + EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); +} + +TEST_F(AArch64InstructionTest, correctPred_taken) { + // insn is `cbz x2, #0x28` + Instruction insn = Instruction(arch, *cbzMetadata.get(), MicroOpInfo()); + insn.setInstructionAddress(80); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_EQ(insn.getBranchType(), BranchType::Conditional); + EXPECT_TRUE(insn.isBranch()); + std::tuple tup = {false, 0}; + EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + + // imm operand 0x28 has 4 added implicitly by dissassembler + pred = {true, 80 + (0x28 + 0x4)}; + insn.setBranchPrediction(pred); + matchingPred = (insn.getBranchPrediction() == pred); + insn.supplyOperand(0, RegisterValue(0, 8)); + insn.execute(); + EXPECT_TRUE(matchingPred); + EXPECT_TRUE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), pred.target); +} + +TEST_F(AArch64InstructionTest, correctPred_notTaken) { + // insn is `cbz x2, #0x28` + Instruction insn = Instruction(arch, *cbzMetadata.get(), MicroOpInfo()); + insn.setInstructionAddress(80); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_EQ(insn.getBranchType(), BranchType::Conditional); + EXPECT_TRUE(insn.isBranch()); + std::tuple tup = {false, 0}; + EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + + // imm operand 0x28 has 4 added implicitly by dissassembler + pred = {false, 80 + 4}; + insn.setBranchPrediction(pred); + matchingPred = (insn.getBranchPrediction() == pred); + insn.supplyOperand(0, RegisterValue(1, 8)); + insn.execute(); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), pred.target); +} + +TEST_F(AArch64InstructionTest, incorrectPred_target) { + // insn is `cbz x2, #0x28` + Instruction insn = Instruction(arch, *cbzMetadata.get(), MicroOpInfo()); + insn.setInstructionAddress(100); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_EQ(insn.getBranchType(), BranchType::Conditional); + EXPECT_TRUE(insn.isBranch()); + std::tuple tup = {false, 0}; + EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + + // imm operand 0x28 has 4 added implicitly by dissassembler + pred = {true, 80 + (0x28 + 0x4)}; + insn.setBranchPrediction(pred); + matchingPred = (insn.getBranchPrediction() == pred); + insn.supplyOperand(0, RegisterValue(0, 8)); + insn.execute(); + EXPECT_TRUE(matchingPred); + EXPECT_TRUE(insn.wasBranchTaken()); + EXPECT_TRUE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), 100 + (0x28 + 4)); +} + +TEST_F(AArch64InstructionTest, incorrectPred_taken) { + // insn is `cbz x2, #0x28` + Instruction insn = Instruction(arch, *cbzMetadata.get(), MicroOpInfo()); + insn.setInstructionAddress(100); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_EQ(insn.getBranchType(), BranchType::Conditional); + EXPECT_TRUE(insn.isBranch()); + std::tuple tup = {false, 0}; + EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + + // imm operand 0x28 has 4 added implicitly by dissassembler + pred = {true, 100 + (0x28 + 0x4)}; + insn.setBranchPrediction(pred); + matchingPred = (insn.getBranchPrediction() == pred); + insn.supplyOperand(0, RegisterValue(1, 8)); + insn.execute(); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_TRUE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), 100 + 4); +} + +// Test commit and flush setters such as `setFlushed`, `setCommitReady`, etc. +TEST_F(AArch64InstructionTest, setters) { + // Insn is `fdivr z1.s, p0/m, z1.s, z0.s` + Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); + + EXPECT_FALSE(insn.canCommit()); + insn.setCommitReady(); + EXPECT_TRUE(insn.canCommit()); + + EXPECT_FALSE(insn.isFlushed()); + insn.setFlushed(); + EXPECT_TRUE(insn.isFlushed()); + + EXPECT_FALSE(insn.isWaitingCommit()); + insn.setWaitingCommit(); + EXPECT_TRUE(insn.isWaitingCommit()); +} + } // namespace aarch64 } // namespace arch } // namespace simeng \ No newline at end of file From 32ad64362e59456b02693d87d28abe0669333248 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 16 Jan 2024 11:01:39 +0000 Subject: [PATCH 76/96] Jenkins fix --- test/unit/aarch64/InstructionTest.cc | 52 ++++++++++++++-------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/test/unit/aarch64/InstructionTest.cc b/test/unit/aarch64/InstructionTest.cc index b09eb860d5..cbba3db713 100644 --- a/test/unit/aarch64/InstructionTest.cc +++ b/test/unit/aarch64/InstructionTest.cc @@ -92,10 +92,10 @@ class AArch64InstructionTest : public testing::Test { TEST_F(AArch64InstructionTest, validInsn) { // Insn is `fdivr z1.s, p0/m, z1.s, z0.s` Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); - std::vector destRegs = {{RegisterType::VECTOR, 1}}; - std::vector srcRegs = {{RegisterType::PREDICATE, 0}, - {RegisterType::VECTOR, 1}, - {RegisterType::VECTOR, 0}}; + std::vector destRegs = {{RegisterType::VECTOR, 1}}; + std::vector srcRegs = {{RegisterType::PREDICATE, 0}, + {RegisterType::VECTOR, 1}, + {RegisterType::VECTOR, 0}}; const std::vector ports = {1, 2, 3}; insn.setExecutionInfo({3, 3, ports}); insn.setInstructionAddress(0x48); @@ -156,8 +156,8 @@ TEST_F(AArch64InstructionTest, validInsn) { // Test that an invalid instruction can be created - invalid due to byte stream TEST_F(AArch64InstructionTest, invalidInsn_1) { Instruction insn = Instruction(arch, *invalidMetadata.get(), MicroOpInfo()); - std::vector destRegs = {}; - std::vector srcRegs = {}; + std::vector destRegs = {}; + std::vector srcRegs = {}; const std::vector ports = {}; insn.setExecutionInfo({1, 1, ports}); insn.setInstructionAddress(0x44); @@ -222,8 +222,8 @@ TEST_F(AArch64InstructionTest, invalidInsn_2) { Instruction insn = Instruction(arch, *invalidMetadata.get(), InstructionException::HypervisorCall); - std::vector destRegs = {}; - std::vector srcRegs = {}; + std::vector destRegs = {}; + std::vector srcRegs = {}; const std::vector ports = {}; insn.setExecutionInfo({1, 1, ports}); insn.setInstructionAddress(0x43); @@ -286,10 +286,10 @@ TEST_F(AArch64InstructionTest, invalidInsn_2) { TEST_F(AArch64InstructionTest, renameRegs) { // Insn is `fdivr z1.s, p0/m, z1.s, z0.s` Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); - std::vector destRegs = {{RegisterType::VECTOR, 1}}; - std::vector srcRegs = {{RegisterType::PREDICATE, 0}, - {RegisterType::VECTOR, 1}, - {RegisterType::VECTOR, 0}}; + std::vector destRegs = {{RegisterType::VECTOR, 1}}; + std::vector srcRegs = {{RegisterType::PREDICATE, 0}, + {RegisterType::VECTOR, 1}, + {RegisterType::VECTOR, 0}}; EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); for (int i = 0; i < srcRegs.size(); i++) { EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); @@ -299,10 +299,10 @@ TEST_F(AArch64InstructionTest, renameRegs) { EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); } - std::vector destRegs_new = {{RegisterType::VECTOR, 24}}; - std::vector srcRegs_new = {{RegisterType::PREDICATE, 0}, - {RegisterType::VECTOR, 97}, - {RegisterType::VECTOR, 0}}; + std::vector destRegs_new = {{RegisterType::VECTOR, 24}}; + std::vector srcRegs_new = {{RegisterType::PREDICATE, 0}, + {RegisterType::VECTOR, 97}, + {RegisterType::VECTOR, 0}}; insn.renameDestination(0, destRegs_new[0]); insn.renameSource(1, srcRegs_new[1]); EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs_new.size()); @@ -320,10 +320,10 @@ TEST_F(AArch64InstructionTest, renameRegs) { TEST_F(AArch64InstructionTest, supplyOperand) { // Insn is `fdivr z1.s, p0/m, z1.s, z0.s` Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); - std::vector destRegs = {{RegisterType::VECTOR, 1}}; - std::vector srcRegs = {{RegisterType::PREDICATE, 0}, - {RegisterType::VECTOR, 1}, - {RegisterType::VECTOR, 0}}; + std::vector destRegs = {{RegisterType::VECTOR, 1}}; + std::vector srcRegs = {{RegisterType::PREDICATE, 0}, + {RegisterType::VECTOR, 1}, + {RegisterType::VECTOR, 0}}; EXPECT_FALSE(insn.canExecute()); EXPECT_FALSE(insn.isOperandReady(0)); EXPECT_FALSE(insn.isOperandReady(1)); @@ -357,9 +357,9 @@ TEST_F(AArch64InstructionTest, supplyOperand) { TEST_F(AArch64InstructionTest, supplyData) { // Insn is `ldp x1, x2, [x3]` Instruction insn = Instruction(arch, *ldpMetadata.get(), MicroOpInfo()); - std::vector destRegs = {{RegisterType::GENERAL, 1}, - {RegisterType::GENERAL, 2}}; - std::vector srcRegs = {{RegisterType::GENERAL, 3}}; + std::vector destRegs = {{RegisterType::GENERAL, 1}, + {RegisterType::GENERAL, 2}}; + std::vector srcRegs = {{RegisterType::GENERAL, 3}}; // Check instruction created correctly EXPECT_FALSE(insn.exceptionEncountered()); @@ -410,9 +410,9 @@ TEST_F(AArch64InstructionTest, supplyData) { TEST_F(AArch64InstructionTest, supplyData_dataAbort) { // Insn is `ldp x1, x2, [x3]` Instruction insn = Instruction(arch, *ldpMetadata.get(), MicroOpInfo()); - std::vector destRegs = {{RegisterType::GENERAL, 1}, - {RegisterType::GENERAL, 2}}; - std::vector srcRegs = {{RegisterType::GENERAL, 3}}; + std::vector destRegs = {{RegisterType::GENERAL, 1}, + {RegisterType::GENERAL, 2}}; + std::vector srcRegs = {{RegisterType::GENERAL, 3}}; // Check instruction created correctly EXPECT_EQ(&insn.getMetadata(), ldpMetadata.get()); From 91d62ef3d41beb7a6f0aa358298dfb764376cc86 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 16 Jan 2024 11:11:39 +0000 Subject: [PATCH 77/96] Jenkins fix 2 --- test/unit/aarch64/InstructionTest.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/aarch64/InstructionTest.cc b/test/unit/aarch64/InstructionTest.cc index cbba3db713..6e2f0b6329 100644 --- a/test/unit/aarch64/InstructionTest.cc +++ b/test/unit/aarch64/InstructionTest.cc @@ -394,7 +394,7 @@ TEST_F(AArch64InstructionTest, supplyData) { // Supply required data EXPECT_FALSE(insn.hasAllData()); - std::vector data = {{123, 8}, {456, 8}}; + std::vector data = {{123, 8}, {456, 8}}; EXPECT_EQ(generatedAddresses.size(), data.size()); for (int i = 0; i < generatedAddresses.size(); i++) { insn.supplyData(generatedAddresses[i].address, data[i]); From 8b7bce13e1e3e2d5c858958190ad000b28ff8694 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 16 Jan 2024 11:44:02 +0000 Subject: [PATCH 78/96] Further fixes. --- test/unit/aarch64/InstructionTest.cc | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/test/unit/aarch64/InstructionTest.cc b/test/unit/aarch64/InstructionTest.cc index 6e2f0b6329..237fb8dfaf 100644 --- a/test/unit/aarch64/InstructionTest.cc +++ b/test/unit/aarch64/InstructionTest.cc @@ -145,7 +145,6 @@ TEST_F(AArch64InstructionTest, validInsn) { EXPECT_FALSE(insn.hasExecuted()); EXPECT_FALSE(insn.canCommit()); EXPECT_TRUE(insn.hasAllData()); - EXPECT_FALSE(insn.wasBranchMispredicted()); EXPECT_FALSE(insn.wasBranchTaken()); EXPECT_FALSE(insn.isFlushed()); EXPECT_FALSE(insn.isMicroOp()); @@ -208,7 +207,6 @@ TEST_F(AArch64InstructionTest, invalidInsn_1) { EXPECT_FALSE(insn.hasExecuted()); EXPECT_FALSE(insn.canCommit()); EXPECT_TRUE(insn.hasAllData()); - EXPECT_FALSE(insn.wasBranchMispredicted()); EXPECT_FALSE(insn.wasBranchTaken()); EXPECT_FALSE(insn.isFlushed()); EXPECT_FALSE(insn.isMicroOp()); @@ -251,7 +249,6 @@ TEST_F(AArch64InstructionTest, invalidInsn_2) { EXPECT_EQ(insn.getLatency(), 1); EXPECT_EQ(insn.getLSQLatency(), 1); EXPECT_EQ(&insn.getMetadata(), invalidMetadata.get()); - EXPECT_EQ(insn.getMicroOpIndex(), 0); // Results vector resized at decode EXPECT_EQ(insn.getResults().size(), 0); EXPECT_EQ(insn.getSequenceId(), 16); @@ -274,7 +271,6 @@ TEST_F(AArch64InstructionTest, invalidInsn_2) { EXPECT_FALSE(insn.hasExecuted()); EXPECT_FALSE(insn.canCommit()); EXPECT_TRUE(insn.hasAllData()); - EXPECT_FALSE(insn.wasBranchMispredicted()); EXPECT_FALSE(insn.wasBranchTaken()); EXPECT_FALSE(insn.isFlushed()); EXPECT_FALSE(insn.isMicroOp()); @@ -378,7 +374,7 @@ TEST_F(AArch64InstructionTest, supplyData) { // Supply needed operands EXPECT_FALSE(insn.isOperandReady(0)); - RegisterValue addr = {0x480, 4}; + RegisterValue addr = {0x480, 8}; insn.supplyOperand(0, addr); EXPECT_TRUE(insn.isOperandReady(0)); @@ -420,7 +416,7 @@ TEST_F(AArch64InstructionTest, supplyData_dataAbort) { // Supply needed operands EXPECT_FALSE(insn.isOperandReady(0)); - RegisterValue addr = {0x480, 4}; + RegisterValue addr = {0x480, 8}; insn.supplyOperand(0, addr); EXPECT_TRUE(insn.isOperandReady(0)); @@ -451,7 +447,6 @@ TEST_F(AArch64InstructionTest, branchMisprediction) { bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); EXPECT_FALSE(insn.wasBranchTaken()); - EXPECT_FALSE(insn.wasBranchMispredicted()); EXPECT_EQ(insn.getBranchAddress(), 0); EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); EXPECT_FALSE(insn.isBranch()); @@ -463,7 +458,6 @@ TEST_F(AArch64InstructionTest, branchMisprediction) { matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); EXPECT_FALSE(insn.wasBranchTaken()); - EXPECT_TRUE(insn.wasBranchMispredicted()); EXPECT_EQ(insn.getBranchAddress(), 0); EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); @@ -481,7 +475,6 @@ TEST_F(AArch64InstructionTest, correctPred_taken) { bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); EXPECT_FALSE(insn.wasBranchTaken()); - EXPECT_FALSE(insn.wasBranchMispredicted()); EXPECT_EQ(insn.getBranchAddress(), 0); EXPECT_EQ(insn.getBranchType(), BranchType::Conditional); EXPECT_TRUE(insn.isBranch()); @@ -509,7 +502,6 @@ TEST_F(AArch64InstructionTest, correctPred_notTaken) { bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); EXPECT_FALSE(insn.wasBranchTaken()); - EXPECT_FALSE(insn.wasBranchMispredicted()); EXPECT_EQ(insn.getBranchAddress(), 0); EXPECT_EQ(insn.getBranchType(), BranchType::Conditional); EXPECT_TRUE(insn.isBranch()); @@ -537,7 +529,6 @@ TEST_F(AArch64InstructionTest, incorrectPred_target) { bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); EXPECT_FALSE(insn.wasBranchTaken()); - EXPECT_FALSE(insn.wasBranchMispredicted()); EXPECT_EQ(insn.getBranchAddress(), 0); EXPECT_EQ(insn.getBranchType(), BranchType::Conditional); EXPECT_TRUE(insn.isBranch()); @@ -565,7 +556,6 @@ TEST_F(AArch64InstructionTest, incorrectPred_taken) { bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); EXPECT_FALSE(insn.wasBranchTaken()); - EXPECT_FALSE(insn.wasBranchMispredicted()); EXPECT_EQ(insn.getBranchAddress(), 0); EXPECT_EQ(insn.getBranchType(), BranchType::Conditional); EXPECT_TRUE(insn.isBranch()); From 67c7abb8d1c4d3f6dc185bf93b3a0118bc9fd916 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 16 Jan 2024 12:37:55 +0000 Subject: [PATCH 79/96] AArch64 unit test and bug fixes. --- src/include/simeng/Instruction.hh | 2 +- src/lib/arch/aarch64/Instruction_decode.cc | 2 +- test/unit/aarch64/InstructionTest.cc | 25 +++++++++++----------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/include/simeng/Instruction.hh b/src/include/simeng/Instruction.hh index 81cf9d7e54..0b326f0ee5 100644 --- a/src/include/simeng/Instruction.hh +++ b/src/include/simeng/Instruction.hh @@ -256,7 +256,7 @@ class Instruction { /** An arbitrary index value for the micro-operation. Its use is based on the * implementation of specific micro-operations. */ - int microOpIndex_; + int microOpIndex_ = 0; }; } // namespace simeng \ No newline at end of file diff --git a/src/lib/arch/aarch64/Instruction_decode.cc b/src/lib/arch/aarch64/Instruction_decode.cc index 54f7a32db4..a6560c25ed 100644 --- a/src/lib/arch/aarch64/Instruction_decode.cc +++ b/src/lib/arch/aarch64/Instruction_decode.cc @@ -650,7 +650,7 @@ void Instruction::decode() { operands.resize(sourceRegisterCount); // Catch zero register references and pre-complete those operands - if (!(isSMEData_ || isSVEData_)) { + if (!(isSMEData_)) { for (uint16_t i = 0; i < sourceRegisterCount; i++) { if (sourceRegisters[i] == Instruction::ZERO_REGISTER) { operands[i] = RegisterValue(0, 8); diff --git a/test/unit/aarch64/InstructionTest.cc b/test/unit/aarch64/InstructionTest.cc index 237fb8dfaf..d26cd2f457 100644 --- a/test/unit/aarch64/InstructionTest.cc +++ b/test/unit/aarch64/InstructionTest.cc @@ -37,7 +37,7 @@ class AArch64InstructionTest : public testing::Test { cs_detail rawDetail_ldp; rawInsn_ldp.detail = &rawDetail_ldp; size_t size_ldp = 4; - uint64_t address_ldp = 4; + uint64_t address_ldp = 0; const uint8_t* encoding_ldp = reinterpret_cast(ldpInstrBytes.data()); cs_disasm_iter(capstoneHandle, &encoding_ldp, &size_ldp, &address_ldp, @@ -49,7 +49,7 @@ class AArch64InstructionTest : public testing::Test { cs_detail rawDetail_cbz; rawInsn_cbz.detail = &rawDetail_cbz; size_t size_cbz = 4; - uint64_t address_cbz = 4; + uint64_t address_cbz = 0; const uint8_t* encoding_cbz = reinterpret_cast(cbzInstrBytes.data()); cs_disasm_iter(capstoneHandle, &encoding_cbz, &size_cbz, &address_cbz, @@ -97,7 +97,7 @@ TEST_F(AArch64InstructionTest, validInsn) { {RegisterType::VECTOR, 1}, {RegisterType::VECTOR, 0}}; const std::vector ports = {1, 2, 3}; - insn.setExecutionInfo({3, 3, ports}); + insn.setExecutionInfo({3, 4, ports}); insn.setInstructionAddress(0x48); insn.setInstructionId(11); insn.setSequenceId(12); @@ -133,7 +133,7 @@ TEST_F(AArch64InstructionTest, validInsn) { EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); EXPECT_FALSE(insn.isOperandReady(i)); } - EXPECT_EQ(insn.getStallCycles(), 3); + EXPECT_EQ(insn.getStallCycles(), 4); EXPECT_EQ(insn.getSupportedPorts(), ports); EXPECT_FALSE(insn.canExecute()); @@ -249,6 +249,7 @@ TEST_F(AArch64InstructionTest, invalidInsn_2) { EXPECT_EQ(insn.getLatency(), 1); EXPECT_EQ(insn.getLSQLatency(), 1); EXPECT_EQ(&insn.getMetadata(), invalidMetadata.get()); + EXPECT_EQ(insn.getMicroOpIndex(), 0); // Results vector resized at decode EXPECT_EQ(insn.getResults().size(), 0); EXPECT_EQ(insn.getSequenceId(), 16); @@ -481,8 +482,8 @@ TEST_F(AArch64InstructionTest, correctPred_taken) { std::tuple tup = {false, 0}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); - // imm operand 0x28 has 4 added implicitly by dissassembler - pred = {true, 80 + (0x28 + 0x4)}; + // Correct prediction + pred = {true, 80 + 0x28}; insn.setBranchPrediction(pred); matchingPred = (insn.getBranchPrediction() == pred); insn.supplyOperand(0, RegisterValue(0, 8)); @@ -508,7 +509,7 @@ TEST_F(AArch64InstructionTest, correctPred_notTaken) { std::tuple tup = {false, 0}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); - // imm operand 0x28 has 4 added implicitly by dissassembler + // Correct prediction pred = {false, 80 + 4}; insn.setBranchPrediction(pred); matchingPred = (insn.getBranchPrediction() == pred); @@ -535,8 +536,8 @@ TEST_F(AArch64InstructionTest, incorrectPred_target) { std::tuple tup = {false, 0}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); - // imm operand 0x28 has 4 added implicitly by dissassembler - pred = {true, 80 + (0x28 + 0x4)}; + // Incorrect prediction - target is wrong + pred = {true, 80 + 0x28}; insn.setBranchPrediction(pred); matchingPred = (insn.getBranchPrediction() == pred); insn.supplyOperand(0, RegisterValue(0, 8)); @@ -544,7 +545,7 @@ TEST_F(AArch64InstructionTest, incorrectPred_target) { EXPECT_TRUE(matchingPred); EXPECT_TRUE(insn.wasBranchTaken()); EXPECT_TRUE(insn.wasBranchMispredicted()); - EXPECT_EQ(insn.getBranchAddress(), 100 + (0x28 + 4)); + EXPECT_EQ(insn.getBranchAddress(), 100 + 0x28); } TEST_F(AArch64InstructionTest, incorrectPred_taken) { @@ -562,8 +563,8 @@ TEST_F(AArch64InstructionTest, incorrectPred_taken) { std::tuple tup = {false, 0}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); - // imm operand 0x28 has 4 added implicitly by dissassembler - pred = {true, 100 + (0x28 + 0x4)}; + // Incorrect prediction - taken is wrong + pred = {true, 100 + 0x28}; insn.setBranchPrediction(pred); matchingPred = (insn.getBranchPrediction() == pred); insn.supplyOperand(0, RegisterValue(1, 8)); From 1f619423cacefbde3e6a0346132de6bcd8fb6ac8 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Tue, 16 Jan 2024 17:39:34 +0000 Subject: [PATCH 80/96] Implemented RiscV Instruction class unit tests. --- src/lib/arch/riscv/Instruction.cc | 2 +- test/unit/aarch64/InstructionTest.cc | 8 +- test/unit/riscv/InstructionTest.cc | 574 ++++++++++++++++++++++++++- 3 files changed, 574 insertions(+), 10 deletions(-) diff --git a/src/lib/arch/riscv/Instruction.cc b/src/lib/arch/riscv/Instruction.cc index 1241b7e2c6..dc0a71c3c7 100644 --- a/src/lib/arch/riscv/Instruction.cc +++ b/src/lib/arch/riscv/Instruction.cc @@ -37,7 +37,7 @@ const span Instruction::getSourceRegisters() const { } const span Instruction::getSourceOperands() const { - return {const_cast(operands.data()), operands.size()}; + return {const_cast(operands.data()), sourceRegisterCount}; } const span Instruction::getDestinationRegisters() const { diff --git a/test/unit/aarch64/InstructionTest.cc b/test/unit/aarch64/InstructionTest.cc index d26cd2f457..09efcc910b 100644 --- a/test/unit/aarch64/InstructionTest.cc +++ b/test/unit/aarch64/InstructionTest.cc @@ -438,8 +438,8 @@ TEST_F(AArch64InstructionTest, supplyData_dataAbort) { EXPECT_EQ(insn.getException(), InstructionException::DataAbort); } -// Test to check logic around branch misprediction logic -TEST_F(AArch64InstructionTest, branchMisprediction) { +// Test to check logic around early branch misprediction logic +TEST_F(AArch64InstructionTest, earlyBranchMisprediction) { // Insn is `fdivr z1.s, p0/m, z1.s, z0.s` Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); insn.setInstructionAddress(64); @@ -467,6 +467,7 @@ TEST_F(AArch64InstructionTest, branchMisprediction) { EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); } +// Test that a correct prediction (branch taken) is handled correctly TEST_F(AArch64InstructionTest, correctPred_taken) { // insn is `cbz x2, #0x28` Instruction insn = Instruction(arch, *cbzMetadata.get(), MicroOpInfo()); @@ -494,6 +495,7 @@ TEST_F(AArch64InstructionTest, correctPred_taken) { EXPECT_EQ(insn.getBranchAddress(), pred.target); } +// Test that a correct prediction (branch not taken) is handled correctly TEST_F(AArch64InstructionTest, correctPred_notTaken) { // insn is `cbz x2, #0x28` Instruction insn = Instruction(arch, *cbzMetadata.get(), MicroOpInfo()); @@ -521,6 +523,7 @@ TEST_F(AArch64InstructionTest, correctPred_notTaken) { EXPECT_EQ(insn.getBranchAddress(), pred.target); } +// Test that an incorrect prediction (wrong target) is handled correctly TEST_F(AArch64InstructionTest, incorrectPred_target) { // insn is `cbz x2, #0x28` Instruction insn = Instruction(arch, *cbzMetadata.get(), MicroOpInfo()); @@ -548,6 +551,7 @@ TEST_F(AArch64InstructionTest, incorrectPred_target) { EXPECT_EQ(insn.getBranchAddress(), 100 + 0x28); } +// Test that an incorrect prediction (wrong taken) is handled correctly TEST_F(AArch64InstructionTest, incorrectPred_taken) { // insn is `cbz x2, #0x28` Instruction insn = Instruction(arch, *cbzMetadata.get(), MicroOpInfo()); diff --git a/test/unit/riscv/InstructionTest.cc b/test/unit/riscv/InstructionTest.cc index 8718c072d0..4dbf4d5595 100644 --- a/test/unit/riscv/InstructionTest.cc +++ b/test/unit/riscv/InstructionTest.cc @@ -1,5 +1,6 @@ #include "../ConfigInit.hh" #include "../MockArchitecture.hh" +#include "arch/riscv/InstructionMetadata.hh" #include "gmock/gmock.h" #include "simeng/arch/riscv/Instruction.hh" #include "simeng/version.hh" @@ -8,20 +9,579 @@ namespace simeng { namespace arch { namespace riscv { -// TODO: Implement instruction unit tests once InstructionMetadata.hh has been -// moved to include/simeng - -// AArch64 Instruction Tests +// RiscV Instruction Tests class RiscVInstructionTest : public testing::Test { public: - RiscVInstructionTest() {} + RiscVInstructionTest() + : os(config::SimInfo::getConfig()["CPU-Info"]["Special-File-Dir-Path"] + .as()), + arch(os) { + // Create InstructionMetadata objects + cs_open(CS_ARCH_RISCV, CS_MODE_RISCV64, &capstoneHandle); + cs_option(capstoneHandle, CS_OPT_DETAIL, CS_OPT_ON); + + // div + cs_insn rawInsn_div; + cs_detail rawDetail_div; + rawInsn_div.detail = &rawDetail_div; + size_t size_div = 4; + uint64_t address_div = 0; + const uint8_t* encoding_div = + reinterpret_cast(divInstrBytes.data()); + cs_disasm_iter(capstoneHandle, &encoding_div, &size_div, &address_div, + &rawInsn_div); + divMetadata = std::make_unique(rawInsn_div); + + // lbu + cs_insn rawInsn_lbu; + cs_detail rawDetail_ldp; + rawInsn_lbu.detail = &rawDetail_ldp; + size_t size_lbu = 4; + uint64_t address_lbu = 0; + const uint8_t* encoding_lbu = + reinterpret_cast(lbuInstrBytes.data()); + cs_disasm_iter(capstoneHandle, &encoding_lbu, &size_lbu, &address_lbu, + &rawInsn_lbu); + lbuMetadata = std::make_unique(rawInsn_lbu); + + // bgeu + cs_insn rawInsn_bgeu; + cs_detail rawDetail_bgeu; + rawInsn_bgeu.detail = &rawDetail_bgeu; + size_t size_bgeu = 4; + uint64_t address_bgeu = 0; + const uint8_t* encoding_bgeu = + reinterpret_cast(bgeuInstrBytes.data()); + cs_disasm_iter(capstoneHandle, &encoding_bgeu, &size_bgeu, &address_bgeu, + &rawInsn_bgeu); + bgeuMetadata = std::make_unique(rawInsn_bgeu); + + const uint8_t* badEncoding = + reinterpret_cast(invalidInstrBytes.data()); + invalidMetadata = std::make_unique(badEncoding); + } + + ~RiscVInstructionTest() { cs_close(&capstoneHandle); } protected: - MockArchitecture arch; - // InstructionMetadata metadata; + ConfigInit configInit = ConfigInit(config::ISA::RV64, ""); + + // div a3, a3, a0 + std::array divInstrBytes = {0xB3, 0xC6, 0xA6, 0x02}; + // lbu a5, 0(s3) + std::array lbuInstrBytes = {0x83, 0xC7, 0x09, 0x00}; + // bgeu a5, a4, -86 + std::array bgeuInstrBytes = {0xE3, 0xF5, 0xE7, 0xFA}; + std::array invalidInstrBytes = {0x20, 0x00, 0x02, 0x8c}; + + // A Capstone decoding library handle, for decoding instructions. + csh capstoneHandle; + + kernel::Linux os; + Architecture arch; + + std::unique_ptr divMetadata; + std::unique_ptr lbuMetadata; + std::unique_ptr bgeuMetadata; + std::unique_ptr invalidMetadata; InstructionException exception; }; +// Test that a valid instruction is created correctly +TEST_F(RiscVInstructionTest, validInsn) { + // Insn is `div a3, a3, a0` + Instruction insn = Instruction(arch, *divMetadata.get()); + std::vector destRegs = {{RegisterType::GENERAL, 13}}; + std::vector srcRegs = {{RegisterType::GENERAL, 13}, + {RegisterType::GENERAL, 10}}; + const std::vector ports = {1, 2, 3}; + insn.setExecutionInfo({3, 4, ports}); + insn.setInstructionAddress(0x48); + insn.setInstructionId(11); + insn.setSequenceId(12); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred) ? true : false; + EXPECT_EQ(&insn.getArchitecture(), &arch); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_TRUE(matchingPred); + EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); + EXPECT_EQ(insn.getData().size(), 0); + EXPECT_EQ(insn.getDestinationRegisters().size(), destRegs.size()); + for (int i = 0; i < destRegs.size(); i++) { + EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); + } + EXPECT_EQ(insn.getException(), InstructionException::None); + EXPECT_EQ(insn.getGeneratedAddresses().size(), 0); + EXPECT_EQ(insn.getGroup(), InstructionGroups::INT_DIV_OR_SQRT); + EXPECT_EQ(insn.getInstructionAddress(), 0x48); + EXPECT_EQ(insn.getInstructionId(), 11); + EXPECT_EQ(insn.getKnownOffset(), 0); + EXPECT_EQ(insn.getLatency(), 3); + EXPECT_EQ(insn.getLSQLatency(), 1); + EXPECT_EQ(&insn.getMetadata(), divMetadata.get()); + EXPECT_EQ(insn.getMicroOpIndex(), 0); + EXPECT_EQ(insn.getResults().size(), 1); + EXPECT_EQ(insn.getSequenceId(), 12); + EXPECT_EQ(insn.getSourceOperands().size(), 2); + EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); + for (int i = 0; i < srcRegs.size(); i++) { + EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); + EXPECT_FALSE(insn.isOperandReady(i)); + } + EXPECT_EQ(insn.getStallCycles(), 4); + EXPECT_EQ(insn.getSupportedPorts(), ports); + + EXPECT_FALSE(insn.canExecute()); + EXPECT_FALSE(insn.isStoreAddress()); + EXPECT_FALSE(insn.isStoreData()); + EXPECT_FALSE(insn.isLoad()); + EXPECT_FALSE(insn.isBranch()); + EXPECT_FALSE(insn.isAtomic()); + EXPECT_FALSE(insn.isFloat()); + EXPECT_FALSE(insn.exceptionEncountered()); + EXPECT_FALSE(insn.hasExecuted()); + EXPECT_FALSE(insn.canCommit()); + EXPECT_TRUE(insn.hasAllData()); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.isFlushed()); + EXPECT_FALSE(insn.isMicroOp()); + EXPECT_TRUE(insn.isLastMicroOp()); + EXPECT_FALSE(insn.isWaitingCommit()); +} + +// Test that an invalid instruction can be created - invalid due to byte stream +TEST_F(RiscVInstructionTest, invalidInsn_1) { + Instruction insn = Instruction(arch, *invalidMetadata.get()); + std::vector destRegs = {}; + std::vector srcRegs = {}; + const std::vector ports = {}; + insn.setExecutionInfo({1, 1, ports}); + insn.setInstructionAddress(0x44); + insn.setInstructionId(13); + insn.setSequenceId(14); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred) ? true : false; + EXPECT_EQ(&insn.getArchitecture(), &arch); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_TRUE(matchingPred); + EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); + EXPECT_EQ(insn.getData().size(), 0); + EXPECT_EQ(insn.getDestinationRegisters().size(), destRegs.size()); + for (int i = 0; i < destRegs.size(); i++) { + EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); + } + EXPECT_EQ(insn.getException(), InstructionException::EncodingUnallocated); + EXPECT_EQ(insn.getGeneratedAddresses().size(), 0); + // Default Group + EXPECT_EQ(insn.getGroup(), InstructionGroups::INT_SIMPLE_ARTH); + EXPECT_EQ(insn.getInstructionAddress(), 0x44); + EXPECT_EQ(insn.getInstructionId(), 13); + EXPECT_EQ(insn.getKnownOffset(), 0); + EXPECT_EQ(insn.getLatency(), 1); + EXPECT_EQ(insn.getLSQLatency(), 1); + EXPECT_EQ(&insn.getMetadata(), invalidMetadata.get()); + EXPECT_EQ(insn.getMicroOpIndex(), 0); + EXPECT_EQ(insn.getResults().size(), 0); + EXPECT_EQ(insn.getSequenceId(), 14); + EXPECT_EQ(insn.getSourceOperands().size(), 0); + EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); + for (int i = 0; i < srcRegs.size(); i++) { + EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); + EXPECT_FALSE(insn.isOperandReady(i)); + } + EXPECT_EQ(insn.getStallCycles(), 1); + EXPECT_EQ(insn.getSupportedPorts(), ports); + + EXPECT_TRUE(insn.canExecute()); + EXPECT_FALSE(insn.isStoreAddress()); + EXPECT_FALSE(insn.isStoreData()); + EXPECT_FALSE(insn.isLoad()); + EXPECT_FALSE(insn.isBranch()); + EXPECT_FALSE(insn.isAtomic()); + EXPECT_FALSE(insn.isFloat()); + EXPECT_TRUE(insn.exceptionEncountered()); + EXPECT_FALSE(insn.hasExecuted()); + EXPECT_FALSE(insn.canCommit()); + EXPECT_TRUE(insn.hasAllData()); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.isFlushed()); + EXPECT_FALSE(insn.isMicroOp()); + EXPECT_TRUE(insn.isLastMicroOp()); + EXPECT_FALSE(insn.isWaitingCommit()); +} + +// Test that an invalid instruction can be created - invalid due to exception +// provided +TEST_F(RiscVInstructionTest, invalidInsn_2) { + Instruction insn = Instruction(arch, *invalidMetadata.get(), + InstructionException::HypervisorCall); + + std::vector destRegs = {}; + std::vector srcRegs = {}; + const std::vector ports = {}; + insn.setExecutionInfo({1, 1, ports}); + insn.setInstructionAddress(0x43); + insn.setInstructionId(15); + insn.setSequenceId(16); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred) ? true : false; + EXPECT_EQ(&insn.getArchitecture(), &arch); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_TRUE(matchingPred); + EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); + EXPECT_EQ(insn.getData().size(), 0); + EXPECT_EQ(insn.getDestinationRegisters().size(), destRegs.size()); + for (int i = 0; i < destRegs.size(); i++) { + EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); + } + EXPECT_EQ(insn.getException(), InstructionException::HypervisorCall); + EXPECT_EQ(insn.getGeneratedAddresses().size(), 0); + // Default Group + EXPECT_EQ(insn.getGroup(), InstructionGroups::INT_SIMPLE_ARTH); + EXPECT_EQ(insn.getInstructionAddress(), 0x43); + EXPECT_EQ(insn.getInstructionId(), 15); + EXPECT_EQ(insn.getKnownOffset(), 0); + EXPECT_EQ(insn.getLatency(), 1); + EXPECT_EQ(insn.getLSQLatency(), 1); + EXPECT_EQ(&insn.getMetadata(), invalidMetadata.get()); + EXPECT_EQ(insn.getMicroOpIndex(), 0); + EXPECT_EQ(insn.getResults().size(), 0); + EXPECT_EQ(insn.getSequenceId(), 16); + EXPECT_EQ(insn.getSourceOperands().size(), 0); + EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); + for (int i = 0; i < srcRegs.size(); i++) { + EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); + EXPECT_FALSE(insn.isOperandReady(i)); + } + EXPECT_EQ(insn.getStallCycles(), 1); + EXPECT_EQ(insn.getSupportedPorts(), ports); + + EXPECT_TRUE(insn.canExecute()); + EXPECT_FALSE(insn.isStoreAddress()); + EXPECT_FALSE(insn.isStoreData()); + EXPECT_FALSE(insn.isLoad()); + EXPECT_FALSE(insn.isBranch()); + EXPECT_FALSE(insn.isAtomic()); + EXPECT_FALSE(insn.isFloat()); + EXPECT_TRUE(insn.exceptionEncountered()); + EXPECT_FALSE(insn.hasExecuted()); + EXPECT_FALSE(insn.canCommit()); + EXPECT_TRUE(insn.hasAllData()); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.isFlushed()); + EXPECT_FALSE(insn.isMicroOp()); + EXPECT_TRUE(insn.isLastMicroOp()); + EXPECT_FALSE(insn.isWaitingCommit()); +} + +// Test to ensure that source and operand registers can be renamed correctly +TEST_F(RiscVInstructionTest, renameRegs) { + // Insn is `div a3, a3, a0` + Instruction insn = Instruction(arch, *divMetadata.get()); + std::vector destRegs = {{RegisterType::GENERAL, 13}}; + std::vector srcRegs = {{RegisterType::GENERAL, 13}, + {RegisterType::GENERAL, 10}}; + EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); + for (int i = 0; i < srcRegs.size(); i++) { + EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); + } + EXPECT_EQ(insn.getDestinationRegisters().size(), destRegs.size()); + for (int i = 0; i < destRegs.size(); i++) { + EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); + } + + std::vector destRegs_new = {{RegisterType::GENERAL, 24}}; + std::vector srcRegs_new = {{RegisterType::GENERAL, 13}, + {RegisterType::GENERAL, 97}}; + insn.renameDestination(0, destRegs_new[0]); + insn.renameSource(1, srcRegs_new[1]); + EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs_new.size()); + for (int i = 0; i < srcRegs_new.size(); i++) { + EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs_new[i]); + } + EXPECT_EQ(insn.getDestinationRegisters().size(), destRegs_new.size()); + for (int i = 0; i < destRegs_new.size(); i++) { + EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs_new[i]); + } +} + +// Test that operand values can be properly supplied and change the state of +// `canExecute` +TEST_F(RiscVInstructionTest, supplyOperand) { + // Insn is `div a3, a3, a0` + Instruction insn = Instruction(arch, *divMetadata.get()); + std::vector destRegs = {{RegisterType::GENERAL, 13}}; + std::vector srcRegs = {{RegisterType::GENERAL, 13}, + {RegisterType::GENERAL, 10}}; + EXPECT_FALSE(insn.canExecute()); + EXPECT_FALSE(insn.isOperandReady(0)); + EXPECT_FALSE(insn.isOperandReady(1)); + + RegisterValue val = {0xABBACAFE, 8}; + insn.supplyOperand(0, val); + insn.supplyOperand(1, val); + EXPECT_TRUE(insn.canExecute()); + EXPECT_TRUE(insn.isOperandReady(0)); + EXPECT_TRUE(insn.isOperandReady(1)); + auto sourceVals = insn.getSourceOperands(); + EXPECT_EQ(sourceVals.size(), 2); + EXPECT_EQ(sourceVals[0], val); + EXPECT_EQ(sourceVals[1], val); + + EXPECT_FALSE(insn.hasExecuted()); + insn.execute(); + EXPECT_TRUE(insn.hasExecuted()); + auto results = insn.getResults(); + RegisterValue refRes = {0x00000001, 8}; + EXPECT_EQ(results.size(), 1); + EXPECT_EQ(results[0], refRes); +} + +// Test that data can be supplied successfully +TEST_F(RiscVInstructionTest, supplyData) { + // Insn is `lbu a5, 0(s3)` + Instruction insn = Instruction(arch, *lbuMetadata.get()); + std::vector destRegs = {{RegisterType::GENERAL, 15}}; + std::vector srcRegs = {{RegisterType::GENERAL, 19}}; + + // Check instruction created correctly + EXPECT_FALSE(insn.exceptionEncountered()); + EXPECT_EQ(&insn.getMetadata(), lbuMetadata.get()); + EXPECT_EQ(insn.getGroup(), InstructionGroups::LOAD_INT); + + // Check source and destination registers extracted correctly + EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); + for (int i = 0; i < srcRegs.size(); i++) { + EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); + } + EXPECT_EQ(insn.getDestinationRegisters().size(), destRegs.size()); + for (int i = 0; i < destRegs.size(); i++) { + EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); + } + + // Supply needed operands + EXPECT_FALSE(insn.isOperandReady(0)); + RegisterValue addr = {0x480, 8}; + insn.supplyOperand(0, addr); + EXPECT_TRUE(insn.isOperandReady(0)); + + // Generate memory addresses + EXPECT_EQ(insn.getGeneratedAddresses().size(), 0); + insn.generateAddresses(); + auto generatedAddresses = insn.getGeneratedAddresses(); + EXPECT_EQ(generatedAddresses.size(), 1); + EXPECT_EQ(generatedAddresses[0].address, 0x480); + EXPECT_EQ(generatedAddresses[0].size, 1); + + // Supply required data + EXPECT_FALSE(insn.hasAllData()); + std::vector data = {{123, 1}}; + EXPECT_EQ(generatedAddresses.size(), data.size()); + insn.supplyData(generatedAddresses[0].address, data[0]); + auto retrievedData = insn.getData(); + for (int i = 0; i < retrievedData.size(); i++) { + EXPECT_EQ(retrievedData[i], data[i]); + } + EXPECT_TRUE(insn.hasAllData()); +} + +// Test DataAbort Exception is triggered correctly when supplying data +TEST_F(RiscVInstructionTest, supplyData_dataAbort) { + // Insn is `lbu a5, 0(s3)` + Instruction insn = Instruction(arch, *lbuMetadata.get()); + std::vector destRegs = {{RegisterType::GENERAL, 15}}; + std::vector srcRegs = {{RegisterType::GENERAL, 19}}; + + // Check instruction created correctly + EXPECT_EQ(&insn.getMetadata(), lbuMetadata.get()); + EXPECT_EQ(insn.getGroup(), InstructionGroups::LOAD_INT); + + // Supply needed operands + EXPECT_FALSE(insn.isOperandReady(0)); + RegisterValue addr = {0x480, 8}; + insn.supplyOperand(0, addr); + EXPECT_TRUE(insn.isOperandReady(0)); + + // Generate memory addresses + EXPECT_EQ(insn.getGeneratedAddresses().size(), 0); + insn.generateAddresses(); + auto generatedAddresses = insn.getGeneratedAddresses(); + EXPECT_EQ(generatedAddresses.size(), 1); + EXPECT_EQ(generatedAddresses[0].address, 0x480); + EXPECT_EQ(generatedAddresses[0].size, 1); + + // Trigger data abort + EXPECT_FALSE(insn.exceptionEncountered()); + insn.supplyData(generatedAddresses[0].address, RegisterValue()); + EXPECT_TRUE(insn.exceptionEncountered()); + EXPECT_EQ(insn.getException(), InstructionException::DataAbort); +} + +// Test to check logic around early branch misprediction logic +TEST_F(RiscVInstructionTest, earlyBranchMisprediction) { + // Insn is `div a3, a3, a0` + Instruction insn = Instruction(arch, *divMetadata.get()); + insn.setInstructionAddress(64); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); + EXPECT_FALSE(insn.isBranch()); + std::tuple tup = {false, insn.getInstructionAddress() + 4}; + EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + + pred = {true, 0x4848}; + insn.setBranchPrediction(pred); + matchingPred = (insn.getBranchPrediction() == pred); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); + + EXPECT_FALSE(insn.isBranch()); + tup = {true, insn.getInstructionAddress() + 4}; + EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); +} + +// Test that a correct prediction (branch taken) is handled correctly +TEST_F(RiscVInstructionTest, correctPred_taken) { + // insn is `bgeu a5, a4, -86` + Instruction insn = Instruction(arch, *bgeuMetadata.get()); + insn.setInstructionAddress(400); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_EQ(insn.getBranchType(), BranchType::Conditional); + EXPECT_TRUE(insn.isBranch()); + std::tuple tup = {false, 0}; + EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + + pred = {true, 400 - 86}; + insn.setBranchPrediction(pred); + matchingPred = (insn.getBranchPrediction() == pred); + insn.supplyOperand(0, RegisterValue(3, 8)); + insn.supplyOperand(1, RegisterValue(0, 8)); + insn.execute(); + EXPECT_TRUE(matchingPred); + EXPECT_TRUE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), pred.target); +} + +// Test that a correct prediction (branch not taken) is handled correctly +TEST_F(RiscVInstructionTest, correctPred_notTaken) { + // insn is `bgeu a5, a4, -86` + Instruction insn = Instruction(arch, *bgeuMetadata.get()); + insn.setInstructionAddress(400); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_EQ(insn.getBranchType(), BranchType::Conditional); + EXPECT_TRUE(insn.isBranch()); + std::tuple tup = {false, 0}; + EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + + // imm operand 0x28 has 4 added implicitly by dissassembler + pred = {false, 400 + 4}; + insn.setBranchPrediction(pred); + matchingPred = (insn.getBranchPrediction() == pred); + insn.supplyOperand(0, RegisterValue(0, 8)); + insn.supplyOperand(1, RegisterValue(3, 8)); + insn.execute(); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_FALSE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), pred.target); +} + +// Test that an incorrect prediction (wrong target) is handled correctly +TEST_F(RiscVInstructionTest, incorrectPred_target) { + // insn is `bgeu a5, a4, -86` + Instruction insn = Instruction(arch, *bgeuMetadata.get()); + insn.setInstructionAddress(400); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_EQ(insn.getBranchType(), BranchType::Conditional); + EXPECT_TRUE(insn.isBranch()); + std::tuple tup = {false, 0}; + EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + + // imm operand 0x28 has 4 added implicitly by dissassembler + pred = {true, 80 + (0x28 + 0x4)}; + insn.setBranchPrediction(pred); + matchingPred = (insn.getBranchPrediction() == pred); + insn.supplyOperand(0, RegisterValue(3, 8)); + insn.supplyOperand(1, RegisterValue(0, 8)); + insn.execute(); + EXPECT_TRUE(matchingPred); + EXPECT_TRUE(insn.wasBranchTaken()); + EXPECT_TRUE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), 400 - 86); +} + +// Test that an incorrect prediction(wrong taken) is handled correctly +TEST_F(RiscVInstructionTest, incorrectPred_taken) { + // insn is `bgeu a5, a4, -86` + Instruction insn = Instruction(arch, *bgeuMetadata.get()); + insn.setInstructionAddress(400); + + BranchPrediction pred = {false, 0}; + bool matchingPred = (insn.getBranchPrediction() == pred); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_EQ(insn.getBranchAddress(), 0); + EXPECT_EQ(insn.getBranchType(), BranchType::Conditional); + EXPECT_TRUE(insn.isBranch()); + std::tuple tup = {false, 0}; + EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + + // imm operand 0x28 has 4 added implicitly by dissassembler + pred = {true, 400 - 86}; + insn.setBranchPrediction(pred); + matchingPred = (insn.getBranchPrediction() == pred); + insn.supplyOperand(0, RegisterValue(0, 8)); + insn.supplyOperand(1, RegisterValue(3, 8)); + insn.execute(); + EXPECT_TRUE(matchingPred); + EXPECT_FALSE(insn.wasBranchTaken()); + EXPECT_TRUE(insn.wasBranchMispredicted()); + EXPECT_EQ(insn.getBranchAddress(), 400 + 4); +} + +// Test commit and flush setters such as `setFlushed`, `setCommitReady`, etc. +TEST_F(RiscVInstructionTest, setters) { + // Insn is `div a3, a3, a0` + Instruction insn = Instruction(arch, *divMetadata.get()); + + EXPECT_FALSE(insn.canCommit()); + insn.setCommitReady(); + EXPECT_TRUE(insn.canCommit()); + + EXPECT_FALSE(insn.isFlushed()); + insn.setFlushed(); + EXPECT_TRUE(insn.isFlushed()); + + EXPECT_FALSE(insn.isWaitingCommit()); + insn.setWaitingCommit(); + EXPECT_TRUE(insn.isWaitingCommit()); +} + } // namespace riscv } // namespace arch } // namespace simeng \ No newline at end of file From 19cf339ac6e05b3e63d2edc510b6b7413bdb0bf5 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 17 Jan 2024 11:45:43 +0000 Subject: [PATCH 81/96] Added stricter usage requirements on addWithCarry aarch64 auxiliary function. --- .../simeng/arch/aarch64/helpers/auxiliaryFunctions.hh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh b/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh index 6824908bcf..067ded47f2 100644 --- a/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh +++ b/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh @@ -17,9 +17,11 @@ uint8_t nzcv(bool n, bool z, bool c, bool v) { return (n << 3) | (z << 2) | (c << 1) | v; } -/** Performs a type agnostic add with carry. */ +/** Performs a type agnostic unsigned add with carry. */ template -std::tuple addWithCarry(T x, T y, bool carryIn) { +std::enable_if_t && std::is_unsigned_v, + std::tuple> +addWithCarry(T x, T y, bool carryIn) { T result = x + y + carryIn; bool n = (result >> (sizeof(T) * 8 - 1)); From 5f9160cfcfd385a0a2377014ff0cf7d6e2055bb7 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 17 Jan 2024 12:10:42 +0000 Subject: [PATCH 82/96] Marginal optimisation of conditionHolds aarch64 auxiliary function. --- .../simeng/arch/aarch64/helpers/auxiliaryFunctions.hh | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh b/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh index 067ded47f2..5425dce230 100644 --- a/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh +++ b/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh @@ -103,10 +103,6 @@ bitfieldManipulate(T value, T dest, uint8_t rotateBy, uint8_t sourceBits, /** Function to check if NZCV conditions hold. */ bool conditionHolds(uint8_t cond, uint8_t nzcv) { - if (cond == 0b1111) { - return true; - } - bool inverse = cond & 1; uint8_t upper = cond >> 1; bool n = (nzcv >> 3) & 1; @@ -137,10 +133,10 @@ bool conditionHolds(uint8_t cond, uint8_t nzcv) { result = (n == v && !z); break; // GT/LE default: // 0b111, AL - result = true; + // AL returns true regardless of inverse value + result = (true ^ inverse); } - - return (inverse ? !result : result); + return (result ^ inverse); } // Rounding function that rounds a double to nearest integer (64-bit). In From 961ab1f4b43b4760da2514df00032659aff620ff Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 17 Jan 2024 13:28:23 +0000 Subject: [PATCH 83/96] Fixed rounding logic for AArch64 SVE FRINTN instruction. --- .../simeng/arch/aarch64/helpers/sve.hh | 40 ++++++++++++------- src/lib/arch/aarch64/Instruction_execute.cc | 4 +- test/regression/aarch64/instructions/sve.cc | 31 +++++++------- 3 files changed, 44 insertions(+), 31 deletions(-) diff --git a/src/include/simeng/arch/aarch64/helpers/sve.hh b/src/include/simeng/arch/aarch64/helpers/sve.hh index 0725165772..b06c0d052b 100644 --- a/src/include/simeng/arch/aarch64/helpers/sve.hh +++ b/src/include/simeng/arch/aarch64/helpers/sve.hh @@ -741,25 +741,37 @@ RegisterValue sveFnmsbPredicated(std::vector& operands, /** Helper function for SVE instructions with the format `frintn zd, pg/m, * zn`. - * D represents the destination vector register type (e.g. zd.s would be - * int32_t). - * N represents the source vector register type (e.g. zn.d would be - * double). + * T represents the vector type (e.g. zd.s would be float). * Returns correctly formatted RegisterValue. */ -template -RegisterValue sveFrintnPredicated(std::vector& operands, - const uint16_t VL_bits) { - const D* d = operands[0].getAsVector(); +template +std::enable_if_t, RegisterValue> +sveFrintnPredicated(std::vector& operands, + const uint16_t VL_bits) { + const T* d = operands[0].getAsVector(); const uint64_t* p = operands[1].getAsVector(); - const N* n = operands[2].getAsVector(); + const T* n = operands[2].getAsVector(); - const uint16_t partition_num = VL_bits / (sizeof(N) * 8); - D out[256 / sizeof(D)] = {0}; + bool isFloat = (sizeof(T) == sizeof(float)); + const uint16_t partition_num = VL_bits / (sizeof(T) * 8); + T out[256 / sizeof(T)] = {0}; for (int i = 0; i < partition_num; i++) { - uint64_t shifted_active = 1ull << ((i % (64 / sizeof(N))) * sizeof(N)); - if (p[i / (64 / sizeof(N))] & shifted_active) { - out[i] = roundToNearestTiesToEven(n[i]); + uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); + if (p[i / (64 / sizeof(T))] & shifted_active) { + // Get remainder + T trunc = isFloat ? std::truncf(n[i]) : std::trunc(n[i]); + T rem = isFloat ? (std::fabsf(n[i] - trunc)) : (std::fabs(n[i] - trunc)); + // On tie, round to even + if (rem == static_cast(0.5)) { + T addand = (trunc > static_cast(0.0)) ? static_cast(1) + : static_cast(-1); + bool isEven = isFloat ? (std::fmodf(trunc, 2.0f) == 0.0f) + : (std::fmod(trunc, 2.0) == 0.0); + out[i] = isEven ? trunc : (trunc + addand); + } else { + // Else, round to nearest + out[i] = isFloat ? std::roundf(n[i]) : std::round(n[i]); + } } else { out[i] = d[i]; } diff --git a/src/lib/arch/aarch64/Instruction_execute.cc b/src/lib/arch/aarch64/Instruction_execute.cc index 1a2069a4bf..ea0fff265d 100644 --- a/src/lib/arch/aarch64/Instruction_execute.cc +++ b/src/lib/arch/aarch64/Instruction_execute.cc @@ -2085,11 +2085,11 @@ void Instruction::execute() { break; } case Opcode::AArch64_FRINTN_ZPmZ_D: { // frintn zd.d, pg/m, zn.d - results[0] = sveFrintnPredicated(operands, VL_bits); + results[0] = sveFrintnPredicated(operands, VL_bits); break; } case Opcode::AArch64_FRINTN_ZPmZ_S: { // frintn zd.s, pg/m, zn.s - results[0] = sveFrintnPredicated(operands, VL_bits); + results[0] = sveFrintnPredicated(operands, VL_bits); break; } case Opcode::AArch64_FRINTPDr: { // frintp dd, dn diff --git a/test/regression/aarch64/instructions/sve.cc b/test/regression/aarch64/instructions/sve.cc index 6982fb8c9e..39a95ee4a3 100644 --- a/test/regression/aarch64/instructions/sve.cc +++ b/test/regression/aarch64/instructions/sve.cc @@ -4065,7 +4065,7 @@ TEST_P(InstSve, frintn) { initialHeapData_.resize(VL / 8); float* fheap = reinterpret_cast(initialHeapData_.data()); std::vector fsrcA = {1.0f, -42.5f, -0.125f, 0.0f, - 40.5f, -684.72f, -0.15f, 107.86f}; + 41.5f, -684.72f, -0.15f, 107.86f}; std::vector fsrcB = {-34.5f, -0.917f, 0.0f, 80.72f, -125.5f, -0.01f, 701.90f, 7.5f}; fillHeapCombined(fheap, fsrcA, fsrcB, VL / 32); @@ -4084,18 +4084,19 @@ TEST_P(InstSve, frintn) { ptrue p0.s whilelo p1.s, xzr, x2 - dup z0.s, #15 - dup z1.s, #13 + fdup z0.s, #2.0 + fdup z1.s, #3.0 ld1w {z2.s}, p0/z, [x0, x1, lsl #2] frintn z0.s, p0/m, z2.s frintn z1.s, p1/m, z2.s )"); - std::vector results32A = {1, -42, 0, 0, 40, -685, 0, 108}; - std::vector results32B = {-34, -1, 0, 81, -126, 0, 702, 8}; - CHECK_NEON(0, int32_t, - fillNeonCombined(results32A, results32B, VL / 8)); - CHECK_NEON(1, int32_t, fillNeonCombined(results32A, {13}, VL / 8)); + std::vector results32A = {1.0f, -42.0f, 0.0f, 0.0f, + 42.0f, -685.0f, 0.0f, 108.0f}; + std::vector results32B = {-34.0f, -1.0f, 0.0f, 81.0f, + -126.0f, 0.0f, 702.0f, 8.0f}; + CHECK_NEON(0, float, fillNeonCombined(results32A, results32B, VL / 8)); + CHECK_NEON(1, float, fillNeonCombined(results32A, {3.0}, VL / 8)); // 64-bit initialHeapData_.resize(VL / 8); @@ -4118,18 +4119,18 @@ TEST_P(InstSve, frintn) { ptrue p0.d whilelo p1.d, xzr, x2 - dup z0.d, #15 - dup z1.d, #13 + fdup z0.d, #2.0 + fdup z1.d, #3.0 ld1d {z2.d}, p0/z, [x0, x1, lsl #3] frintn z0.d, p0/m, z2.d frintn z1.d, p1/m, z2.d )"); - std::vector results64A = {1, -42, 0, 0}; - std::vector results64B = {40, -685, -4, 108}; - CHECK_NEON(0, int64_t, - fillNeonCombined(results64A, results64B, VL / 8)); - CHECK_NEON(1, int64_t, fillNeonCombined(results64A, {13}, VL / 8)); + std::vector results64A = {1.0, -42.0, 0.0, 0.0}; + std::vector results64B = {40.0, -685.0, -4.0, 108.0}; + CHECK_NEON(0, double, + fillNeonCombined(results64A, results64B, VL / 8)); + CHECK_NEON(1, double, fillNeonCombined(results64A, {3.0}, VL / 8)); } TEST_P(InstSve, fsqrt) { From a907fed572876078c0be430b064fadc5e1d45172 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 17 Jan 2024 13:28:47 +0000 Subject: [PATCH 84/96] Removed unused AArch64 auxiliary functions. --- .../aarch64/helpers/auxiliaryFunctions.hh | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh b/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh index 5425dce230..dbf725ef93 100644 --- a/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh +++ b/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh @@ -139,22 +139,6 @@ bool conditionHolds(uint8_t cond, uint8_t nzcv) { return (result ^ inverse); } -// Rounding function that rounds a double to nearest integer (64-bit). In -// event of a tie (i.e. 7.5) it will be rounded to the nearest even number. -template -OUT roundToNearestTiesToEven(IN input) { - IN half = static_cast(0.5); - if (std::fabs(input - std::trunc(input)) == half) { - OUT truncd = static_cast(std::trunc(input)); - // if value is negative, then may need to -1 from truncd, else may need to - // +1. - OUT addand = (truncd > 0) ? 1 : -1; - return ((truncd % 2 == 0) ? truncd : (truncd + addand)); - } - // Otherwise round to nearest - return static_cast(std::round(input)); -} - /** Extend `value` according to `extendType`, and left-shift the result by * `shift`. Replicated from Instruction.cc */ uint64_t extendValue(uint64_t value, uint8_t extendType, uint8_t shift) { @@ -198,20 +182,6 @@ uint64_t extendValue(uint64_t value, uint8_t extendType, uint8_t shift) { return extended << shift; } -// Rounding function that rounds a float to nearest integer (32-bit). In event -// of a tie (i.e. 7.5) it will be rounded to the nearest even number. -int32_t floatRoundToNearestTiesToEven(float input) { - if (std::fabs(input - std::trunc(input)) == 0.5f) { - if (static_cast(input - 0.5f) % 2 == 0) { - return static_cast(input - 0.5f); - } else { - return static_cast(input + 0.5f); - } - } - // Otherwise round to nearest - return static_cast(std::round(input)); -} - /** Calculate the corresponding NZCV values from select SVE instructions that * set the First(N), None(Z), !Last(C) condition flags based on the predicate * result, and the V flag to 0. */ From 16eab3da66bcabe99b0996c3739378d7a0fd28d9 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 17 Jan 2024 15:45:37 +0000 Subject: [PATCH 85/96] Made most micro decoder functions private as all only used internally. --- src/include/simeng/arch/aarch64/MicroDecoder.hh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/include/simeng/arch/aarch64/MicroDecoder.hh b/src/include/simeng/arch/aarch64/MicroDecoder.hh index f91f4041d7..f13fb02077 100644 --- a/src/include/simeng/arch/aarch64/MicroDecoder.hh +++ b/src/include/simeng/arch/aarch64/MicroDecoder.hh @@ -30,6 +30,7 @@ class MicroDecoder { const Instruction& macroOp, MacroOp& output, csh capstoneHandle); + private: /** Detect if there's an overlap between the underlying hardware registers * (e.g. z5, v5, q5, d5, s5, h5, and b5). */ bool detectOverlap(arm64_reg registerA, arm64_reg registerB); @@ -67,7 +68,6 @@ class MicroDecoder { csh capstoneHandle, bool lastMicroOp = false, int microOpIndex = 0, uint8_t dataSize = 0); - private: /** Flag to determine whether instruction splitting is enabled. */ const bool instructionSplit_; From c9540435c3177d85609e168e6a31b9417d0d6dd9 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 18 Jan 2024 18:13:39 +0000 Subject: [PATCH 86/96] Jenkins fabsf fix. --- .../simeng/arch/aarch64/helpers/sve.hh | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/include/simeng/arch/aarch64/helpers/sve.hh b/src/include/simeng/arch/aarch64/helpers/sve.hh index b06c0d052b..fa8df45589 100644 --- a/src/include/simeng/arch/aarch64/helpers/sve.hh +++ b/src/include/simeng/arch/aarch64/helpers/sve.hh @@ -751,26 +751,25 @@ sveFrintnPredicated(std::vector& operands, const uint64_t* p = operands[1].getAsVector(); const T* n = operands[2].getAsVector(); - bool isFloat = (sizeof(T) == sizeof(float)); const uint16_t partition_num = VL_bits / (sizeof(T) * 8); T out[256 / sizeof(T)] = {0}; for (int i = 0; i < partition_num; i++) { uint64_t shifted_active = 1ull << ((i % (64 / sizeof(T))) * sizeof(T)); if (p[i / (64 / sizeof(T))] & shifted_active) { - // Get remainder - T trunc = isFloat ? std::truncf(n[i]) : std::trunc(n[i]); - T rem = isFloat ? (std::fabsf(n[i] - trunc)) : (std::fabs(n[i] - trunc)); - // On tie, round to even - if (rem == static_cast(0.5)) { + // Get truncation + T trunc = std::trunc(n[i]); + // On tie, round to nearest even + if (std::fabs(n[i] - trunc) == static_cast(0.5)) { T addand = (trunc > static_cast(0.0)) ? static_cast(1) : static_cast(-1); - bool isEven = isFloat ? (std::fmodf(trunc, 2.0f) == 0.0f) - : (std::fmod(trunc, 2.0) == 0.0); - out[i] = isEven ? trunc : (trunc + addand); + // If odd, add the addand + out[i] = (std::fmod(trunc, static_cast(2.0)) == static_cast(0.0)) + ? trunc + : (trunc + addand); } else { // Else, round to nearest - out[i] = isFloat ? std::roundf(n[i]) : std::round(n[i]); + out[i] = std::round(n[i]); } } else { out[i] = d[i]; From 1b9ec5e06959d9e0fe0470b899c38c7996a86757 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 18 Jan 2024 18:53:58 +0000 Subject: [PATCH 87/96] Added aarch64 auxiliary function unit tests. --- test/unit/CMakeLists.txt | 2 +- test/unit/aarch64/AuxiliaryFunctionsTest.cc | 652 ++++++++++++++++++++ test/unit/aarch64/ShiftValueTest.cc | 54 -- 3 files changed, 653 insertions(+), 55 deletions(-) create mode 100644 test/unit/aarch64/AuxiliaryFunctionsTest.cc delete mode 100644 test/unit/aarch64/ShiftValueTest.cc diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index fbc9d61658..fd1e4f9882 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -1,9 +1,9 @@ set(TEST_SOURCES aarch64/ArchInfoTest.cc aarch64/ArchitectureTest.cc + aarch64/AuxiliaryFunctionsTest.cc aarch64/ExceptionHandlerTest.cc aarch64/InstructionTest.cc - aarch64/ShiftValueTest.cc riscv/ArchInfoTest.cc riscv/ArchitectureTest.cc riscv/ExceptionHandlerTest.cc diff --git a/test/unit/aarch64/AuxiliaryFunctionsTest.cc b/test/unit/aarch64/AuxiliaryFunctionsTest.cc new file mode 100644 index 0000000000..c06e6bf83f --- /dev/null +++ b/test/unit/aarch64/AuxiliaryFunctionsTest.cc @@ -0,0 +1,652 @@ +#include "gtest/gtest.h" +#include "simeng/arch/aarch64/helpers/auxiliaryFunctions.hh" + +namespace simeng { +namespace arch { +namespace aarch64 { + +/** `nzcv` Tests */ +TEST(AArch64AuxNzcvTest, nzcv) { + EXPECT_EQ(nzcv(true, true, true, true), 0b00001111); + EXPECT_EQ(nzcv(false, false, false, false), 0b00000000); + EXPECT_EQ(nzcv(true, false, false, true), 0b00001001); + EXPECT_EQ(nzcv(false, true, false, false), 0b00000100); +} + +/** `addWithCarry` Tests */ +TEST(AArch64AuxAddWithCarry, unsigned) { + std::tuple u8Res = {111, 0b0010}; + EXPECT_EQ(addWithCarry(123, 244, false), u8Res); + + std::tuple u16Res = {0xFFFD, 0b1000}; + EXPECT_EQ(addWithCarry(0xFFF0, 0x000C, true), u16Res); + + std::tuple u32Res = {2147483649, 0b1001}; + EXPECT_EQ(addWithCarry(1, 2147483647, true), u32Res); + + std::tuple u64Res = {0, 0b0110}; + EXPECT_EQ(addWithCarry(0xFFFFFFFFFFFFFFFF, 1, false), u64Res); +} + +/** `bitfieldManipulate` Tests */ +TEST(AArch64AuxBitfieldManipulate, uint8) { + EXPECT_EQ(bitfieldManipulate(0xFF, 12, 2, 1, false), 204); + EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, false), 3); + EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, false), 64); + EXPECT_EQ(bitfieldManipulate(64, 0, 8, 4, false), 0); + + EXPECT_EQ(bitfieldManipulate(0xFF, 12, 2, 1, true), 204); + EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, true), 3); + EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, true), 0); + EXPECT_EQ(bitfieldManipulate(64, 8, 8, 4, true), 0); +} + +TEST(AArch64AuxBitfieldManipulate, uint16) { + EXPECT_EQ(bitfieldManipulate(0xFFFF, 12, 2, 1, false), 49164); + EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, false), 3); + EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, false), 64); + EXPECT_EQ(bitfieldManipulate(64, 0, 8, 4, false), 0); + + EXPECT_EQ(bitfieldManipulate(0xFFFF, 12, 2, 1, true), 49164); + EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, true), 3); + EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, true), 0); + EXPECT_EQ(bitfieldManipulate(64, 8, 8, 4, true), 8); +} + +TEST(AArch64AuxBitfieldManipulate, uint32) { + EXPECT_EQ(bitfieldManipulate(0xFFFFFFFF, 12, 2, 1, false), + 3221225484); + EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, false), 33); + EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, false), 64); + EXPECT_EQ(bitfieldManipulate(64, 0, 8, 4, false), 0); + + EXPECT_EQ(bitfieldManipulate(0xFFFFFFFF, 12, 2, 1, true), + 3221225484); + EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, true), 33); + EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, true), 0); + EXPECT_EQ(bitfieldManipulate(64, 8, 8, 4, true), 8); +} + +TEST(AArch64AuxBitfieldManipulate, uint64) { + EXPECT_EQ(bitfieldManipulate(0xFFFFFFFFFFFFFFFF, 12, 2, 1, false), + 13835058055282163724u); + EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, false), 33); + EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, false), 64); + EXPECT_EQ(bitfieldManipulate(64, 0, 8, 4, false), 0); + + EXPECT_EQ(bitfieldManipulate(0xFFFFFFFFFFFFFFFF, 12, 2, 1, true), + 13835058055282163724u); + EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, true), 33); + EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, true), 0); + EXPECT_EQ(bitfieldManipulate(64, 8, 8, 4, true), 8); +} + +/** `conditionHolds` Tests */ +TEST(AArch64AuxConditionHolds, inverseFalse) { + // Run each condition at least twice, one which we expect to be true, one we + // expect to be false + // EQ/NE + EXPECT_TRUE(conditionHolds(0b0000, 0b0100)); + EXPECT_FALSE(conditionHolds(0b0000, 0b1011)); + + // CS/CC + EXPECT_TRUE(conditionHolds(0b0010, 0b0010)); + EXPECT_FALSE(conditionHolds(0b0010, 0b1101)); + + // MI/PL + EXPECT_TRUE(conditionHolds(0b0100, 0b1000)); + EXPECT_FALSE(conditionHolds(0b0100, 0b0111)); + + // VS/VC + EXPECT_TRUE(conditionHolds(0b0110, 0b0001)); + EXPECT_FALSE(conditionHolds(0b0110, 0b1110)); + + // HI/LS + EXPECT_TRUE(conditionHolds(0b1000, 0b1010)); + EXPECT_FALSE(conditionHolds(0b1000, 0b1111)); + EXPECT_FALSE(conditionHolds(0b1000, 0b1001)); + + // GE/LT + EXPECT_TRUE(conditionHolds(0b1010, 0b1001)); + EXPECT_TRUE(conditionHolds(0b1010, 0b0000)); + EXPECT_FALSE(conditionHolds(0b1010, 0b1000)); + + // GT/LE + EXPECT_TRUE(conditionHolds(0b1100, 0b1001)); + EXPECT_TRUE(conditionHolds(0b1100, 0b0000)); + EXPECT_FALSE(conditionHolds(0b1100, 0b0001)); + EXPECT_FALSE(conditionHolds(0b1100, 0b1000)); + EXPECT_FALSE(conditionHolds(0b1100, 0b1101)); + + // Condition of 0b111 always returns `true` + // AL + EXPECT_TRUE(conditionHolds(0b1110, 0b1111)); + EXPECT_TRUE(conditionHolds(0b1110, 0b0000)); +} + +TEST(AArch64AuxConditionHolds, inverseTrue) { + // Run each condition at least twice, one which we expect to be true, one we + // expect to be false + // EQ/NE + EXPECT_FALSE(conditionHolds(0b0001, 0b0100)); + EXPECT_TRUE(conditionHolds(0b0001, 0b1011)); + + // CS/CC + EXPECT_FALSE(conditionHolds(0b0011, 0b0010)); + EXPECT_TRUE(conditionHolds(0b0011, 0b1101)); + + // MI/PL + EXPECT_FALSE(conditionHolds(0b0101, 0b1000)); + EXPECT_TRUE(conditionHolds(0b0101, 0b0111)); + + // VS/VC + EXPECT_FALSE(conditionHolds(0b0111, 0b0001)); + EXPECT_TRUE(conditionHolds(0b0111, 0b1110)); + + // HI/LS + EXPECT_FALSE(conditionHolds(0b1001, 0b1010)); + EXPECT_TRUE(conditionHolds(0b1001, 0b1111)); + EXPECT_TRUE(conditionHolds(0b1001, 0b1001)); + + // GE/LT + EXPECT_FALSE(conditionHolds(0b1011, 0b1001)); + EXPECT_FALSE(conditionHolds(0b1011, 0b0000)); + EXPECT_TRUE(conditionHolds(0b1011, 0b1000)); + + // GT/LE + EXPECT_FALSE(conditionHolds(0b1101, 0b1001)); + EXPECT_FALSE(conditionHolds(0b1101, 0b0000)); + EXPECT_TRUE(conditionHolds(0b1101, 0b0001)); + EXPECT_TRUE(conditionHolds(0b1101, 0b1000)); + EXPECT_TRUE(conditionHolds(0b1101, 0b1101)); + + // AL + // Cond=0b111 and inverse of 1 always returns `true` + EXPECT_TRUE(conditionHolds(0b1111, 0b1111)); + EXPECT_TRUE(conditionHolds(0b1111, 0b0000)); +} + +/** `extendValue` Tests */ +TEST(AArch64AuxExtendValue, extend) { + // Test special case + EXPECT_EQ(extendValue(123, ARM64_EXT_INVALID, 0), 123); + + // Results validated on XCI and A64FX hardware + EXPECT_EQ(extendValue(270, ARM64_EXT_UXTB, 3), 112); + EXPECT_EQ(extendValue(65560, ARM64_EXT_UXTH, 3), 192); + EXPECT_EQ(extendValue(0xFFFFFFFF, ARM64_EXT_UXTW, 3), 34359738360); + EXPECT_EQ(extendValue(0x0F0F0F0F0F0F0F01, ARM64_EXT_UXTX, 4), + 0xF0F0F0F0F0F0F010); + // TODO: Commenting out until extendValue function is fixed + // EXPECT_EQ(extendValue(133, ARM64_EXT_SXTB, 3), 64); + // EXPECT_EQ(extendValue(32768, ARM64_EXT_SXTH, 3), -64); + // EXPECT_EQ(extendValue(2147483648, ARM64_EXT_SXTW, 3), 1536); + // EXPECT_EQ(extendValue(0x8000000000000000, ARM64_EXT_SXTX, 3), + // 896); // or if function should return a signed output: 1792 +} + +/** `getNZCVfromPred` Tests */ +TEST(AArch64AuxgetNZCVfromPred, 128) { + uint64_t vl = 128; + // VL 128 will only use array[0] + EXPECT_EQ(getNZCVfromPred( + {0, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF}, + vl, 1), + 0b0110); + EXPECT_EQ( + getNZCVfromPred({0xFFFFFFFFFFFFFFFF, 0, 0, 0x300000000000000C}, vl, 2), + 0b1000); + EXPECT_EQ(getNZCVfromPred( + {0xE000000000000000, 0xE000000000000000, 0xE000000000000000, 0}, + vl, 4), + 0b0010); + EXPECT_EQ(getNZCVfromPred({0, 0x8000000000000001, 0, 0}, vl, 8), 0b0110); +} + +TEST(AArch64AuxgetNZCVfromPred, 256) { + uint64_t vl = 256; + // VL 256 will only use array[0] + EXPECT_EQ(getNZCVfromPred( + {0, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF}, + vl, 1), + 0b0110); + EXPECT_EQ( + getNZCVfromPred({0xFFFFFFFFFFFFFFFF, 0, 0, 0x300000000000000C}, vl, 2), + 0b1000); + EXPECT_EQ(getNZCVfromPred( + {0xE000000000000000, 0xE000000000000000, 0xE000000000000000, 0}, + vl, 4), + 0b0010); + EXPECT_EQ(getNZCVfromPred({0, 0x8000000000000001, 0, 0}, vl, 8), 0b0110); +} + +TEST(AArch64AuxgetNZCVfromPred, 512) { + uint64_t vl = 512; + // VL 512 will only use array[0] + EXPECT_EQ(getNZCVfromPred( + {0, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF}, + vl, 1), + 0b0110); + EXPECT_EQ( + getNZCVfromPred({0xFFFFFFFFFFFFFFFF, 0, 0, 0x300000000000000C}, vl, 2), + 0b1000); + EXPECT_EQ(getNZCVfromPred( + {0xE000000000000000, 0xE000000000000000, 0xE000000000000000, 0}, + vl, 4), + 0b0010); + EXPECT_EQ(getNZCVfromPred({0, 0x8000000000000001, 0, 0}, vl, 8), 0b0110); +} + +TEST(AArch64AuxgetNZCVfromPred, 1024) { + uint64_t vl = 1024; + // VL 1024 will only use array[0, 1] + EXPECT_EQ(getNZCVfromPred( + {0, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF}, + vl, 1), + 0b0000); + EXPECT_EQ( + getNZCVfromPred({0xFFFFFFFFFFFFFFFF, 0, 0, 0x300000000000000C}, vl, 2), + 0b1010); + EXPECT_EQ(getNZCVfromPred( + {0xE000000000000000, 0xE000000000000000, 0xE000000000000000, 0}, + vl, 4), + 0b0010); + EXPECT_EQ(getNZCVfromPred({0, 0x8000000000000000, 0, 0}, vl, 8), 0b0010); +} + +TEST(AArch64AuxgetNZCVfromPred, 2048) { + uint64_t vl = 2048; + // VL 2048 will only use array[0, 1, 2, 3] + EXPECT_EQ(getNZCVfromPred( + {0, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF}, + vl, 1), + 0b0000); + EXPECT_EQ( + getNZCVfromPred({0xFFFFFFFFFFFFFFFF, 0, 0, 0x300000000000000C}, vl, 2), + 0b1010); + EXPECT_EQ(getNZCVfromPred( + {0xE000000000000000, 0xE000000000000000, 0xE000000000000000, 0}, + vl, 4), + 0b0010); + EXPECT_EQ(getNZCVfromPred({0, 0x8000000000000001, 0, 0}, vl, 8), 0b0010); +} + +/** `mulhi` Tests */ +TEST(AArch64AuxMulhi, mulhi) { + EXPECT_EQ(mulhi(0xFFFFFFFFFFFFFFFF, 2), 1); + EXPECT_EQ(mulhi(1, 245), 0); + + EXPECT_EQ(mulhi(0xF000000000000000, 4), 3); + EXPECT_EQ(mulhi(0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF), 0xFFFFFFFFFFFFFFFE); + EXPECT_EQ(mulhi(0xFFFFFFFFFFFFFFFF, 0xFFFFFFFF00000000), 0xFFFFFFFEFFFFFFFF); + EXPECT_EQ(mulhi(0xFFFFFFFFFFFFFFFF, 0xFFFFFFFF), 0xFFFFFFFE); +} + +/** `sveGetPattern` Tests */ +TEST(AArch64AuxSveGetPattern, vl128) { + uint16_t vl = 128; + EXPECT_EQ(sveGetPattern("", 64, vl), 2); + EXPECT_EQ(sveGetPattern("", 16, vl), 8); + EXPECT_EQ(sveGetPattern("all", 64, vl), 2); + EXPECT_EQ(sveGetPattern("all", 16, vl), 8); + EXPECT_EQ(sveGetPattern("notValid", 64, vl), 2); + EXPECT_EQ(sveGetPattern("notValid", 16, vl), 8); + + EXPECT_EQ(sveGetPattern("vl1", 64, vl), 1); + EXPECT_EQ(sveGetPattern("vl2", 64, vl), 2); + EXPECT_EQ(sveGetPattern("vl3", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl4", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl5", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl6", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl7", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl8", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl16", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl32", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl64", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl128", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl256", 64, vl), 0); + + EXPECT_EQ(sveGetPattern("mul4", 8, vl), 16); + EXPECT_EQ(sveGetPattern("mul3", 8, vl), 15); +} + +TEST(AArch64AuxSveGetPattern, vl256) { + uint16_t vl = 256; + EXPECT_EQ(sveGetPattern("", 64, vl), 4); + EXPECT_EQ(sveGetPattern("", 16, vl), 16); + EXPECT_EQ(sveGetPattern("all", 64, vl), 4); + EXPECT_EQ(sveGetPattern("all", 16, vl), 16); + EXPECT_EQ(sveGetPattern("notValid", 64, vl), 4); + EXPECT_EQ(sveGetPattern("notValid", 16, vl), 16); + + EXPECT_EQ(sveGetPattern("vl1", 64, vl), 1); + EXPECT_EQ(sveGetPattern("vl2", 64, vl), 2); + EXPECT_EQ(sveGetPattern("vl3", 64, vl), 3); + EXPECT_EQ(sveGetPattern("vl4", 64, vl), 4); + EXPECT_EQ(sveGetPattern("vl5", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl6", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl7", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl8", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl16", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl32", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl64", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl128", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl256", 64, vl), 0); + + EXPECT_EQ(sveGetPattern("mul4", 8, vl), 32); + EXPECT_EQ(sveGetPattern("mul3", 8, vl), 30); +} + +TEST(AArch64AuxSveGetPattern, vl512) { + uint16_t vl = 512; + EXPECT_EQ(sveGetPattern("", 64, vl), 8); + EXPECT_EQ(sveGetPattern("", 16, vl), 32); + EXPECT_EQ(sveGetPattern("all", 64, vl), 8); + EXPECT_EQ(sveGetPattern("all", 16, vl), 32); + EXPECT_EQ(sveGetPattern("notValid", 64, vl), 8); + EXPECT_EQ(sveGetPattern("notValid", 16, vl), 32); + + EXPECT_EQ(sveGetPattern("vl1", 64, vl), 1); + EXPECT_EQ(sveGetPattern("vl2", 64, vl), 2); + EXPECT_EQ(sveGetPattern("vl3", 64, vl), 3); + EXPECT_EQ(sveGetPattern("vl4", 64, vl), 4); + EXPECT_EQ(sveGetPattern("vl5", 64, vl), 5); + EXPECT_EQ(sveGetPattern("vl6", 64, vl), 6); + EXPECT_EQ(sveGetPattern("vl7", 64, vl), 7); + EXPECT_EQ(sveGetPattern("vl8", 64, vl), 8); + EXPECT_EQ(sveGetPattern("vl16", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl32", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl64", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl128", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl256", 64, vl), 0); + + EXPECT_EQ(sveGetPattern("mul4", 8, vl), 64); + EXPECT_EQ(sveGetPattern("mul3", 8, vl), 63); +} + +TEST(AArch64AuxSveGetPattern, vl1024) { + uint16_t vl = 1024; + EXPECT_EQ(sveGetPattern("", 64, vl), 16); + EXPECT_EQ(sveGetPattern("", 16, vl), 64); + EXPECT_EQ(sveGetPattern("all", 64, vl), 16); + EXPECT_EQ(sveGetPattern("all", 16, vl), 64); + EXPECT_EQ(sveGetPattern("notValid", 64, vl), 16); + EXPECT_EQ(sveGetPattern("notValid", 16, vl), 64); + + EXPECT_EQ(sveGetPattern("vl1", 64, vl), 1); + EXPECT_EQ(sveGetPattern("vl2", 64, vl), 2); + EXPECT_EQ(sveGetPattern("vl3", 64, vl), 3); + EXPECT_EQ(sveGetPattern("vl4", 64, vl), 4); + EXPECT_EQ(sveGetPattern("vl5", 64, vl), 5); + EXPECT_EQ(sveGetPattern("vl6", 64, vl), 6); + EXPECT_EQ(sveGetPattern("vl7", 64, vl), 7); + EXPECT_EQ(sveGetPattern("vl8", 64, vl), 8); + EXPECT_EQ(sveGetPattern("vl16", 64, vl), 16); + EXPECT_EQ(sveGetPattern("vl32", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl64", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl128", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl256", 64, vl), 0); + + EXPECT_EQ(sveGetPattern("mul4", 8, vl), 128); + EXPECT_EQ(sveGetPattern("mul3", 8, vl), 126); +} + +TEST(AArch64AuxSveGetPattern, vl2048) { + uint16_t vl = 2048; + EXPECT_EQ(sveGetPattern("", 64, vl), 32); + EXPECT_EQ(sveGetPattern("", 16, vl), 128); + EXPECT_EQ(sveGetPattern("all", 64, vl), 32); + EXPECT_EQ(sveGetPattern("all", 16, vl), 128); + EXPECT_EQ(sveGetPattern("notValid", 64, vl), 32); + EXPECT_EQ(sveGetPattern("notValid", 16, vl), 128); + + EXPECT_EQ(sveGetPattern("vl1", 64, vl), 1); + EXPECT_EQ(sveGetPattern("vl2", 64, vl), 2); + EXPECT_EQ(sveGetPattern("vl3", 64, vl), 3); + EXPECT_EQ(sveGetPattern("vl4", 64, vl), 4); + EXPECT_EQ(sveGetPattern("vl5", 64, vl), 5); + EXPECT_EQ(sveGetPattern("vl6", 64, vl), 6); + EXPECT_EQ(sveGetPattern("vl7", 64, vl), 7); + EXPECT_EQ(sveGetPattern("vl8", 64, vl), 8); + EXPECT_EQ(sveGetPattern("vl16", 64, vl), 16); + EXPECT_EQ(sveGetPattern("vl32", 64, vl), 32); + EXPECT_EQ(sveGetPattern("vl64", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl128", 64, vl), 0); + EXPECT_EQ(sveGetPattern("vl256", 64, vl), 0); + + EXPECT_EQ(sveGetPattern("mul4", 8, vl), 256); + EXPECT_EQ(sveGetPattern("mul3", 8, vl), 255); +} + +/** `ShiftValue` Tests */ +TEST(AArch64AuxShiftValueTest, LSL) { + // 8-bit + const uint8_t a = 0x0F; + EXPECT_EQ(shiftValue(a, ARM64_SFT_LSL, 4), 0xF0); + + const uint8_t b = 0xF0; + EXPECT_EQ(shiftValue(b, ARM64_SFT_LSL, 7), 0x00); + + EXPECT_EQ(shiftValue(b, ARM64_SFT_LSL, 0), b); + + // 16-bit + const uint16_t c = 0x00FF; + EXPECT_EQ(shiftValue(c, ARM64_SFT_LSL, 8), 0xFF00); + + const uint16_t d = 0xFF00; + EXPECT_EQ(shiftValue(d, ARM64_SFT_LSL, 15), 0x0000); + + EXPECT_EQ(shiftValue(d, ARM64_SFT_LSL, 0), d); + + // 32-bit + const uint32_t e = 0x0000FFFF; + EXPECT_EQ(shiftValue(e, ARM64_SFT_LSL, 16), 0xFFFF0000); + + const uint32_t f = 0xFFFF0000; + EXPECT_EQ(shiftValue(f, ARM64_SFT_LSL, 31), 0x00000000); + + EXPECT_EQ(shiftValue(f, ARM64_SFT_LSL, 0), f); + + // 64-bit + const uint64_t g = 0x00000000FFFFFFFF; + EXPECT_EQ(shiftValue(g, ARM64_SFT_LSL, 32), 0xFFFFFFFF00000000); + + const uint64_t h = 0xFFFFFFFF00000000; + EXPECT_EQ(shiftValue(h, ARM64_SFT_LSL, 63), 0x0000000000000000); + + EXPECT_EQ(shiftValue(h, ARM64_SFT_LSL, 0), h); +} + +TEST(AArch64AuxShiftValueTest, LSR) { + // 8-bit + const uint8_t a = 0x0F; + EXPECT_EQ(shiftValue(a, ARM64_SFT_LSR, 4), 0x00); + + const uint8_t b = 0xF0; + EXPECT_EQ(shiftValue(b, ARM64_SFT_LSR, 7), 0x01); + + EXPECT_EQ(shiftValue(b, ARM64_SFT_LSR, 0), b); + + // 16-bit + const uint16_t c = 0x00FF; + EXPECT_EQ(shiftValue(c, ARM64_SFT_LSR, 8), 0x0); + + const uint16_t d = 0xFF00; + EXPECT_EQ(shiftValue(d, ARM64_SFT_LSR, 15), 0x0001); + + EXPECT_EQ(shiftValue(d, ARM64_SFT_LSR, 0), d); + + // 32-bit + const uint32_t e = 0x0000FFFF; + EXPECT_EQ(shiftValue(e, ARM64_SFT_LSR, 16), 0x00000000); + + const uint32_t f = 0xFFFF0000; + EXPECT_EQ(shiftValue(f, ARM64_SFT_LSR, 31), 0x00000001); + + EXPECT_EQ(shiftValue(f, ARM64_SFT_LSR, 0), f); + + // 64-bit + const uint64_t g = 0x00000000FFFFFFFF; + EXPECT_EQ(shiftValue(g, ARM64_SFT_LSR, 32), 0x0000000000000000); + + const uint64_t h = 0xFFFFFFFF00000000; + EXPECT_EQ(shiftValue(h, ARM64_SFT_LSR, 63), 0x0000000000000001); + + EXPECT_EQ(shiftValue(h, ARM64_SFT_LSR, 0), h); +} + +TEST(AArch64AuxShiftValueTest, ASR) { + // 8-bit + const uint8_t a = 0x0F; + EXPECT_EQ(shiftValue(a, ARM64_SFT_ASR, 4), 0x00); + + const uint8_t b = 0xF0; + EXPECT_EQ(shiftValue(b, ARM64_SFT_ASR, 7), 0xFF); + + EXPECT_EQ(shiftValue(b, ARM64_SFT_ASR, 0), b); + + // 16-bit + const uint16_t c = 0x00FF; + EXPECT_EQ(shiftValue(c, ARM64_SFT_ASR, 8), 0x0000); + + const uint16_t d = 0xFF00; + EXPECT_EQ(shiftValue(d, ARM64_SFT_ASR, 15), 0xFFFF); + + EXPECT_EQ(shiftValue(d, ARM64_SFT_ASR, 0), d); + + // 32-bit + const uint32_t e = 0x0000FFFF; + EXPECT_EQ(shiftValue(e, ARM64_SFT_ASR, 16), 0x00000000); + + const uint32_t f = 0xFFFF0000; + EXPECT_EQ(shiftValue(f, ARM64_SFT_ASR, 31), 0xFFFFFFFF); + + EXPECT_EQ(shiftValue(f, ARM64_SFT_ASR, 0), f); + + // 64-bit + const uint64_t g = 0x00000000FFFFFFFF; + EXPECT_EQ(shiftValue(g, ARM64_SFT_ASR, 32), 0x0000000000000000); + + const uint64_t h = 0xFFFFFFFF00000000; + EXPECT_EQ(shiftValue(h, ARM64_SFT_ASR, 63), 0xFFFFFFFFFFFFFFFF); + + EXPECT_EQ(shiftValue(h, ARM64_SFT_ASR, 0), h); +} + +TEST(AArch64AuxShiftValueTest, ROR) { + // 8-bit + const uint8_t a = 0x0F; + EXPECT_EQ(shiftValue(a, ARM64_SFT_ROR, 4), 0xF0); + + const uint8_t b = 0xF0; + EXPECT_EQ(shiftValue(b, ARM64_SFT_ROR, 7), 0xE1); + + EXPECT_EQ(shiftValue(b, ARM64_SFT_ROR, 0), b); + + // 16-bit + const uint16_t c = 0x00FF; + EXPECT_EQ(shiftValue(c, ARM64_SFT_ROR, 8), 0xFF00); + + const uint16_t d = 0xFF00; + EXPECT_EQ(shiftValue(d, ARM64_SFT_ROR, 15), 0xFE01); + + EXPECT_EQ(shiftValue(d, ARM64_SFT_ROR, 0), d); + + // 32-bit + const uint32_t e = 0x0000FFFF; + EXPECT_EQ(shiftValue(e, ARM64_SFT_ROR, 16), 0xFFFF0000); + + const uint32_t f = 0xFFFF0000; + EXPECT_EQ(shiftValue(f, ARM64_SFT_ROR, 31), 0xFFFE0001); + + EXPECT_EQ(shiftValue(f, ARM64_SFT_ROR, 0), f); + + // 64-bit + const uint64_t g = 0x00000000FFFFFFFF; + EXPECT_EQ(shiftValue(g, ARM64_SFT_ROR, 32), 0xFFFFFFFF00000000); + + const uint64_t h = 0xFFFFFFFF00000000; + EXPECT_EQ(shiftValue(h, ARM64_SFT_ROR, 63), 0xFFFFFFFE00000001); + + EXPECT_EQ(shiftValue(h, ARM64_SFT_ROR, 0), h); +} + +TEST(AArch64AuxShiftValueTest, MSL) { + // 8-bit + const uint8_t a = 0x0F; + EXPECT_EQ(shiftValue(a, ARM64_SFT_MSL, 4), 0xFF); + + const uint8_t b = 0xF0; + EXPECT_EQ(shiftValue(b, ARM64_SFT_MSL, 7), 0x7F); + + EXPECT_EQ(shiftValue(b, ARM64_SFT_MSL, 0), b); + + // 16-bit + const uint16_t c = 0x00FF; + EXPECT_EQ(shiftValue(c, ARM64_SFT_MSL, 8), 0xFFFF); + + const uint16_t d = 0xFF00; + EXPECT_EQ(shiftValue(d, ARM64_SFT_MSL, 15), 0x7FFF); + + EXPECT_EQ(shiftValue(d, ARM64_SFT_MSL, 0), d); + + // 32-bit + const uint32_t e = 0x0000FFFF; + EXPECT_EQ(shiftValue(e, ARM64_SFT_MSL, 16), 0xFFFFFFFF); + + const uint32_t f = 0xFFFF0000; + EXPECT_EQ(shiftValue(f, ARM64_SFT_MSL, 31), 0x7FFFFFFF); + + EXPECT_EQ(shiftValue(f, ARM64_SFT_MSL, 0), f); + + // 64-bit + const uint64_t g = 0x00000000FFFFFFFF; + EXPECT_EQ(shiftValue(g, ARM64_SFT_MSL, 32), 0xFFFFFFFFFFFFFFFF); + + const uint64_t h = 0xFFFFFFFF00000000; + EXPECT_EQ(shiftValue(h, ARM64_SFT_MSL, 63), 0x7FFFFFFFFFFFFFFF); + + EXPECT_EQ(shiftValue(h, ARM64_SFT_MSL, 0), h); +} + +TEST(AArch64AuxShiftValueTest, INVALID) { + // 8-bit + const uint8_t a = 0x0F; + EXPECT_EQ(shiftValue(a, ARM64_SFT_INVALID, 4), a); + + const uint8_t b = 0xF0; + EXPECT_EQ(shiftValue(b, ARM64_SFT_INVALID, 7), b); + + EXPECT_EQ(shiftValue(b, ARM64_SFT_INVALID, 0), b); + + // 16-bit + const uint16_t c = 0x00FF; + EXPECT_EQ(shiftValue(c, ARM64_SFT_INVALID, 8), c); + + const uint16_t d = 0xFF00; + EXPECT_EQ(shiftValue(d, ARM64_SFT_INVALID, 15), d); + + EXPECT_EQ(shiftValue(d, ARM64_SFT_INVALID, 0), d); + + // 32-bit + const uint32_t e = 0x0000FFFF; + EXPECT_EQ(shiftValue(e, ARM64_SFT_INVALID, 16), e); + + const uint32_t f = 0xFFFF0000; + EXPECT_EQ(shiftValue(f, ARM64_SFT_INVALID, 31), f); + + EXPECT_EQ(shiftValue(f, ARM64_SFT_INVALID, 0), f); + + // 64-bit + const uint64_t g = 0x00000000FFFFFFFF; + EXPECT_EQ(shiftValue(g, ARM64_SFT_INVALID, 32), g); + + const uint64_t h = 0xFFFFFFFF00000000; + EXPECT_EQ(shiftValue(h, ARM64_SFT_INVALID, 63), h); + + EXPECT_EQ(shiftValue(h, ARM64_SFT_INVALID, 0), h); +} + +} // namespace aarch64 +} // namespace arch +} // namespace simeng \ No newline at end of file diff --git a/test/unit/aarch64/ShiftValueTest.cc b/test/unit/aarch64/ShiftValueTest.cc deleted file mode 100644 index 12ec4e2b84..0000000000 --- a/test/unit/aarch64/ShiftValueTest.cc +++ /dev/null @@ -1,54 +0,0 @@ -#include "gtest/gtest.h" -#include "simeng/arch/aarch64/helpers/auxiliaryFunctions.hh" - -namespace { - -TEST(ShiftValueTest, MSL) { - // 32-bit - const uint32_t a = 0x0000FFFF; - EXPECT_EQ(simeng::arch::aarch64::shiftValue(a, ARM64_SFT_MSL, 16), - 0xFFFFFFFF); - - const uint32_t b = 0xFFFF0000; - EXPECT_EQ(simeng::arch::aarch64::shiftValue(b, ARM64_SFT_MSL, 31), - 0x7FFFFFFF); - - EXPECT_EQ(simeng::arch::aarch64::shiftValue(b, ARM64_SFT_MSL, 0), b); - - // 64-bit - const uint64_t c = 0x00000000FFFFFFFF; - EXPECT_EQ(simeng::arch::aarch64::shiftValue(c, ARM64_SFT_MSL, 32), - 0xFFFFFFFFFFFFFFFF); - - const uint64_t d = 0xFFFFFFFF00000000; - EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_MSL, 63), - 0x7FFFFFFFFFFFFFFF); - - EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_MSL, 0), d); -} - -TEST(ShiftValueTest, ROR) { - // 32-bit - const uint32_t a = 0x0000FFFF; - EXPECT_EQ(simeng::arch::aarch64::shiftValue(a, ARM64_SFT_ROR, 16), - 0xFFFF0000); - - const uint32_t b = 0xFFFF0000; - EXPECT_EQ(simeng::arch::aarch64::shiftValue(b, ARM64_SFT_ROR, 31), - 0xFFFE0001); - - EXPECT_EQ(simeng::arch::aarch64::shiftValue(b, ARM64_SFT_ROR, 0), b); - - // 64-bit - const uint64_t c = 0x00000000FFFFFFFF; - EXPECT_EQ(simeng::arch::aarch64::shiftValue(c, ARM64_SFT_ROR, 32), - 0xFFFFFFFF00000000); - - const uint64_t d = 0xFFFFFFFF00000000; - EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_ROR, 63), - 0xFFFFFFFE00000001); - - EXPECT_EQ(simeng::arch::aarch64::shiftValue(d, ARM64_SFT_ROR, 0), d); -} - -} // namespace \ No newline at end of file From 07db0dddf8f66b8ff49378cf4433494f0ff2a972 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 18 Jan 2024 21:16:30 +0000 Subject: [PATCH 88/96] Added signed extendValue unit tests, and moved extendValue and extendOffset from Instruction to AuxiliaryFunctions.hh --- .../simeng/arch/aarch64/Instruction.hh | 8 --- .../aarch64/helpers/auxiliaryFunctions.hh | 39 ++++++++----- src/lib/arch/aarch64/Instruction.cc | 58 ------------------- src/lib/arch/aarch64/Instruction_address.cc | 1 + test/unit/aarch64/AuxiliaryFunctionsTest.cc | 11 ++-- 5 files changed, 32 insertions(+), 85 deletions(-) diff --git a/src/include/simeng/arch/aarch64/Instruction.hh b/src/include/simeng/arch/aarch64/Instruction.hh index d59c0ece4c..164c1545c0 100644 --- a/src/include/simeng/arch/aarch64/Instruction.hh +++ b/src/include/simeng/arch/aarch64/Instruction.hh @@ -455,14 +455,6 @@ class Instruction : public simeng::Instruction { * for sending to memory (according to instruction type). Each entry * corresponds to a `memoryAddresses` entry. */ std::vector memoryData; - - // Execution helpers - /** Extend `value` according to `extendType`, and left-shift the result by - * `shift` */ - uint64_t extendValue(uint64_t value, uint8_t extendType, uint8_t shift) const; - - /** Extend `value` using extension/shifting rules defined in `op`. */ - uint64_t extendOffset(uint64_t value, const cs_arm64_op& op) const; }; } // namespace aarch64 diff --git a/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh b/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh index dbf725ef93..2a612cea8f 100644 --- a/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh +++ b/src/include/simeng/arch/aarch64/helpers/auxiliaryFunctions.hh @@ -13,14 +13,14 @@ namespace arch { namespace aarch64 { /** Returns a correctly formatted nzcv value. */ -uint8_t nzcv(bool n, bool z, bool c, bool v) { +inline uint8_t nzcv(bool n, bool z, bool c, bool v) { return (n << 3) | (z << 2) | (c << 1) | v; } /** Performs a type agnostic unsigned add with carry. */ template -std::enable_if_t && std::is_unsigned_v, - std::tuple> +inline std::enable_if_t && std::is_unsigned_v, + std::tuple> addWithCarry(T x, T y, bool carryIn) { T result = x + y + carryIn; @@ -59,7 +59,7 @@ addWithCarry(T x, T y, bool carryIn) { /** Manipulate the bitfield `value` according to the logic of the (U|S)BFM * Armv9.2-a instructions. */ template -std::enable_if_t && std::is_unsigned_v, T> +inline std::enable_if_t && std::is_unsigned_v, T> bitfieldManipulate(T value, T dest, uint8_t rotateBy, uint8_t sourceBits, bool signExtend = false) { size_t bits = sizeof(T) * 8; @@ -102,7 +102,7 @@ bitfieldManipulate(T value, T dest, uint8_t rotateBy, uint8_t sourceBits, } /** Function to check if NZCV conditions hold. */ -bool conditionHolds(uint8_t cond, uint8_t nzcv) { +inline bool conditionHolds(uint8_t cond, uint8_t nzcv) { bool inverse = cond & 1; uint8_t upper = cond >> 1; bool n = (nzcv >> 3) & 1; @@ -141,7 +141,7 @@ bool conditionHolds(uint8_t cond, uint8_t nzcv) { /** Extend `value` according to `extendType`, and left-shift the result by * `shift`. Replicated from Instruction.cc */ -uint64_t extendValue(uint64_t value, uint8_t extendType, uint8_t shift) { +inline uint64_t extendValue(uint64_t value, uint8_t extendType, uint8_t shift) { if (extendType == ARM64_EXT_INVALID && shift == 0) { // Special case: an invalid shift type with a shift amount of 0 implies an // identity operation @@ -182,11 +182,24 @@ uint64_t extendValue(uint64_t value, uint8_t extendType, uint8_t shift) { return extended << shift; } +/** Extend `value` using extension/shifting rules defined in `op`. */ +inline uint64_t extendOffset(uint64_t value, const cs_arm64_op& op) { + if (op.ext == 0) { + if (op.shift.value == 0) { + return value; + } + if (op.shift.type == 1) { + return extendValue(value, ARM64_EXT_UXTX, op.shift.value); + } + } + return extendValue(value, op.ext, op.shift.value); +} + /** Calculate the corresponding NZCV values from select SVE instructions that * set the First(N), None(Z), !Last(C) condition flags based on the predicate * result, and the V flag to 0. */ -uint8_t getNZCVfromPred(std::array predResult, uint64_t VL_bits, - int byteCount) { +inline uint8_t getNZCVfromPred(std::array predResult, + uint64_t VL_bits, int byteCount) { uint8_t N = (predResult[0] & 1); uint8_t Z = 1; // (int)(VL_bits - 1)/512 derives which block of 64-bits within the @@ -206,7 +219,7 @@ uint8_t getNZCVfromPred(std::array predResult, uint64_t VL_bits, /** Multiply `a` and `b`, and return the high 64 bits of the result. * https://stackoverflow.com/a/28904636 */ -uint64_t mulhi(uint64_t a, uint64_t b) { +inline uint64_t mulhi(uint64_t a, uint64_t b) { uint64_t a_lo = (uint32_t)a; uint64_t a_hi = a >> 32; uint64_t b_lo = (uint32_t)b; @@ -228,8 +241,8 @@ uint64_t mulhi(uint64_t a, uint64_t b) { } /** Decode the instruction pattern from OperandStr. */ -uint16_t sveGetPattern(const std::string operandStr, const uint8_t esize, - const uint16_t VL_) { +inline uint16_t sveGetPattern(const std::string operandStr, const uint8_t esize, + const uint16_t VL_) { const uint16_t elements = VL_ / esize; const std::vector patterns = { "pow2", "vl1", "vl2", "vl3", "vl4", "vl5", "vl6", "vl7", "vl8", @@ -289,8 +302,8 @@ uint16_t sveGetPattern(const std::string operandStr, const uint8_t esize, /** Apply the shift specified by `shiftType` to the unsigned integer `value`, * shifting by `amount`. */ template -std::enable_if_t && std::is_unsigned_v, T> shiftValue( - T value, uint8_t shiftType, uint8_t amount) { +inline std::enable_if_t && std::is_unsigned_v, T> +shiftValue(T value, uint8_t shiftType, uint8_t amount) { switch (shiftType) { case ARM64_SFT_LSL: return value << amount; diff --git a/src/lib/arch/aarch64/Instruction.cc b/src/lib/arch/aarch64/Instruction.cc index c66b738a60..8568480c55 100644 --- a/src/lib/arch/aarch64/Instruction.cc +++ b/src/lib/arch/aarch64/Instruction.cc @@ -206,64 +206,6 @@ const Architecture& Instruction::getArchitecture() const { return architecture_; } -/** Extend `value` according to `extendType`, and left-shift the result by - * `shift` */ -uint64_t Instruction::extendValue(uint64_t value, uint8_t extendType, - uint8_t shift) const { - if (extendType == ARM64_EXT_INVALID && shift == 0) { - // Special case: an invalid shift type with a shift amount of 0 implies an - // identity operation - return value; - } - - uint64_t extended; - switch (extendType) { - case ARM64_EXT_UXTB: - extended = static_cast(value); - break; - case ARM64_EXT_UXTH: - extended = static_cast(value); - break; - case ARM64_EXT_UXTW: - extended = static_cast(value); - break; - case ARM64_EXT_UXTX: - extended = value; - break; - case ARM64_EXT_SXTB: - extended = static_cast(value); - break; - case ARM64_EXT_SXTH: - extended = static_cast(value); - break; - case ARM64_EXT_SXTW: - extended = static_cast(value); - break; - case ARM64_EXT_SXTX: - extended = value; - break; - default: - assert(false && "Invalid extension type"); - return 0; - } - - return extended << shift; -} - -/** Extend `value` using extension/shifting rules defined in `op`. */ -uint64_t Instruction::extendOffset(uint64_t value, - const cs_arm64_op& op) const { - if (op.ext == 0) { - if (op.shift.value == 0) { - return value; - } - if (op.shift.type == 1) { - return extendValue(value, ARM64_EXT_UXTX, op.shift.value); - } - } - return extendValue(value, op.ext, op.shift.value); -} - } // namespace aarch64 } // namespace arch } // namespace simeng diff --git a/src/lib/arch/aarch64/Instruction_address.cc b/src/lib/arch/aarch64/Instruction_address.cc index 3878d80648..42b2fed7be 100644 --- a/src/lib/arch/aarch64/Instruction_address.cc +++ b/src/lib/arch/aarch64/Instruction_address.cc @@ -2,6 +2,7 @@ #include #include "InstructionMetadata.hh" +#include "simeng/arch/aarch64/helpers/auxiliaryFunctions.hh" namespace simeng { namespace arch { diff --git a/test/unit/aarch64/AuxiliaryFunctionsTest.cc b/test/unit/aarch64/AuxiliaryFunctionsTest.cc index c06e6bf83f..e7ebe745e6 100644 --- a/test/unit/aarch64/AuxiliaryFunctionsTest.cc +++ b/test/unit/aarch64/AuxiliaryFunctionsTest.cc @@ -177,12 +177,11 @@ TEST(AArch64AuxExtendValue, extend) { EXPECT_EQ(extendValue(0xFFFFFFFF, ARM64_EXT_UXTW, 3), 34359738360); EXPECT_EQ(extendValue(0x0F0F0F0F0F0F0F01, ARM64_EXT_UXTX, 4), 0xF0F0F0F0F0F0F010); - // TODO: Commenting out until extendValue function is fixed - // EXPECT_EQ(extendValue(133, ARM64_EXT_SXTB, 3), 64); - // EXPECT_EQ(extendValue(32768, ARM64_EXT_SXTH, 3), -64); - // EXPECT_EQ(extendValue(2147483648, ARM64_EXT_SXTW, 3), 1536); - // EXPECT_EQ(extendValue(0x8000000000000000, ARM64_EXT_SXTX, 3), - // 896); // or if function should return a signed output: 1792 + + EXPECT_EQ(extendValue(133, ARM64_EXT_SXTB, 3), -984); + EXPECT_EQ(extendValue(32768, ARM64_EXT_SXTH, 3), -262144); + EXPECT_EQ(extendValue(2147483648, ARM64_EXT_SXTW, 3), -17179869184); + EXPECT_EQ(extendValue(0x8000000000000000, ARM64_EXT_SXTX, 3), 0); } /** `getNZCVfromPred` Tests */ From abf2620afd37b82b497cbb3dfdc0a4b5bfd75234 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Wed, 24 Jan 2024 17:42:07 +0000 Subject: [PATCH 89/96] Added equality operator to register value. --- src/include/simeng/RegisterValue.hh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/include/simeng/RegisterValue.hh b/src/include/simeng/RegisterValue.hh index 1a0c37dd98..96614b93d9 100644 --- a/src/include/simeng/RegisterValue.hh +++ b/src/include/simeng/RegisterValue.hh @@ -131,4 +131,16 @@ class RegisterValue { alignas(8) char value[MAX_LOCAL_BYTES]; }; +inline bool operator==(const RegisterValue& lhs, const RegisterValue& rhs) { + if (lhs.size() == rhs.size()) { + auto lhV = lhs.getAsVector(); + auto rhV = rhs.getAsVector(); + for (int i = 0; i < lhs.size(); i++) { + if (lhV[i] != rhV[i]) return false; + } + return true; + } + return false; +} + } // namespace simeng \ No newline at end of file From cdc12f613bb83fc44bfcae5e4b5118df3196fbfe Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 25 Jan 2024 11:36:28 +0000 Subject: [PATCH 90/96] Attended to PR comments. --- src/include/simeng/SpecialFileDirGen.hh | 1 - .../simeng/arch/aarch64/Instruction.hh | 3 +- src/lib/arch/aarch64/Instruction_decode.cc | 2 + src/lib/config/ModelConfig.cc | 7 +-- test/unit/FixedLatencyMemoryInterfaceTest.cc | 4 +- test/unit/FlatMemoryInterfaceTest.cc | 4 +- test/unit/aarch64/ArchitectureTest.cc | 28 ++++++----- test/unit/aarch64/ExceptionHandlerTest.cc | 17 +++++++ test/unit/aarch64/InstructionTest.cc | 47 +++++++++++++++---- test/unit/pipeline/DispatchIssueUnitTest.cc | 28 ++++++----- test/unit/riscv/ArchitectureTest.cc | 2 + test/unit/riscv/ExceptionHandlerTest.cc | 20 ++++++++ test/unit/riscv/InstructionTest.cc | 39 +++++++++++++-- 13 files changed, 153 insertions(+), 49 deletions(-) diff --git a/src/include/simeng/SpecialFileDirGen.hh b/src/include/simeng/SpecialFileDirGen.hh index aeacf27b3e..a60c0d54ca 100644 --- a/src/include/simeng/SpecialFileDirGen.hh +++ b/src/include/simeng/SpecialFileDirGen.hh @@ -4,7 +4,6 @@ #include #include "simeng/config/SimInfo.hh" -#include "simeng/version.hh" namespace simeng { class SpecialFileDirGen { diff --git a/src/include/simeng/arch/aarch64/Instruction.hh b/src/include/simeng/arch/aarch64/Instruction.hh index 164c1545c0..c09044ab36 100644 --- a/src/include/simeng/arch/aarch64/Instruction.hh +++ b/src/include/simeng/arch/aarch64/Instruction.hh @@ -345,11 +345,10 @@ class Instruction : public simeng::Instruction { /** A vector of source registers. */ std::vector sourceRegisters; - /** The number of source registers this instruction reads from. */ - uint16_t sourceRegisterCount = 0; /** A vector of destination registers. */ std::vector destinationRegisters; + /** The number of destination registers this instruction writes to. */ uint16_t destinationRegisterCount = 0; diff --git a/src/lib/arch/aarch64/Instruction_decode.cc b/src/lib/arch/aarch64/Instruction_decode.cc index a6560c25ed..092c65df09 100644 --- a/src/lib/arch/aarch64/Instruction_decode.cc +++ b/src/lib/arch/aarch64/Instruction_decode.cc @@ -188,6 +188,8 @@ void Instruction::decode() { return; } + uint16_t sourceRegisterCount = 0; + // Extract implicit writes for (size_t i = 0; i < metadata.implicitDestinationCount; i++) { destinationRegisters.push_back(csRegToRegister( diff --git a/src/lib/config/ModelConfig.cc b/src/lib/config/ModelConfig.cc index c2faf94c12..1e7f0014f3 100644 --- a/src/lib/config/ModelConfig.cc +++ b/src/lib/config/ModelConfig.cc @@ -891,12 +891,9 @@ void ModelConfig::postValidation() { for (const auto& prt : portnames) invalid_ << "\t- " << prt << " has no associated reservation station\n"; - // Ensure that given special file directory exists IF: - // - it is not the default path - // - auto-generation is False + // Ensure that given special file directory exists iff auto-generation is + // False if (!configTree_["CPU-Info"]["Generate-Special-Dir"].as() && - (configTree_["CPU-Info"]["Special-File-Dir-Path"].as() != - defaultSpecialFilePath_) && !std::ifstream( configTree_["CPU-Info"]["Special-File-Dir-Path"].as()) .good()) { diff --git a/test/unit/FixedLatencyMemoryInterfaceTest.cc b/test/unit/FixedLatencyMemoryInterfaceTest.cc index d9862f5d27..e2f4c6f1c0 100644 --- a/test/unit/FixedLatencyMemoryInterfaceTest.cc +++ b/test/unit/FixedLatencyMemoryInterfaceTest.cc @@ -84,12 +84,12 @@ TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsRead) { auto overflowResult = entries[0]; EXPECT_EQ(overflowResult.requestId, 1); - EXPECT_EQ(overflowResult.data, simeng::RegisterValue()); + EXPECT_FALSE(overflowResult.data); EXPECT_EQ(overflowResult.target, target_OutOfBound1); overflowResult = entries[1]; EXPECT_EQ(overflowResult.requestId, 2); - EXPECT_EQ(overflowResult.data, simeng::RegisterValue()); + EXPECT_FALSE(overflowResult.data); EXPECT_EQ(overflowResult.target, target_OutOfBound2); } diff --git a/test/unit/FlatMemoryInterfaceTest.cc b/test/unit/FlatMemoryInterfaceTest.cc index 93d9b5f5f0..e8025a2e80 100644 --- a/test/unit/FlatMemoryInterfaceTest.cc +++ b/test/unit/FlatMemoryInterfaceTest.cc @@ -55,12 +55,12 @@ TEST_F(FlatMemoryInterfaceTest, OutofBoundsRead) { auto overflowResult = entries[0]; EXPECT_EQ(overflowResult.requestId, 1); - EXPECT_EQ(overflowResult.data, simeng::RegisterValue()); + EXPECT_FALSE(overflowResult.data); EXPECT_EQ(overflowResult.target, target_OutOfBound1); overflowResult = entries[1]; EXPECT_EQ(overflowResult.requestId, 2); - EXPECT_EQ(overflowResult.data, simeng::RegisterValue()); + EXPECT_FALSE(overflowResult.data); EXPECT_EQ(overflowResult.target, target_OutOfBound2); } diff --git a/test/unit/aarch64/ArchitectureTest.cc b/test/unit/aarch64/ArchitectureTest.cc index 90a33c82a2..63b2805ce3 100644 --- a/test/unit/aarch64/ArchitectureTest.cc +++ b/test/unit/aarch64/ArchitectureTest.cc @@ -24,6 +24,8 @@ class AArch64ArchitectureTest : public testing::Test { } protected: + // Setting core model to complex OoO model to more verbosely test the + // Architecture class. ConfigInit configInit = ConfigInit(config::ISA::AArch64, R"YAML({ Core: { Simulation-Mode: outoforder, @@ -31,21 +33,21 @@ class AArch64ArchitectureTest : public testing::Test { Streaming-Vector-Length: 128 }, Ports: { - '0': {Portname: FLA, Instruction-Group-Support: [FP, SVE]}, - '1': {Portname: PR, Instruction-Group-Support: [PREDICATE]}, - '2': {Portname: EXA, Instruction-Group-Support: [INT_SIMPLE, INT_MUL, STORE_DATA]}, - '3': {Portname: FLB, Instruction-Group-Support: [FP_SIMPLE, FP_MUL, SVE_SIMPLE, SVE_MUL]}, - '4': {Portname: EXB, Instruction-Group-Support: [INT_SIMPLE, INT_DIV_OR_SQRT]}, - '5': {Portname: EAGA, Instruction-Group-Support: [LOAD, STORE_ADDRESS, INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CMP]}, - '6': {Portname: EAGB, Instruction-Group-Support: [LOAD, STORE_ADDRESS, INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CMP]}, - '7': {Portname: BR, Instruction-Group-Support: [BRANCH]} + '0': {Portname: Port 0, Instruction-Group-Support: [FP, SVE]}, + '1': {Portname: Port 1, Instruction-Group-Support: [PREDICATE]}, + '2': {Portname: Port 2, Instruction-Group-Support: [INT_SIMPLE, INT_MUL, STORE_DATA]}, + '3': {Portname: Port 3, Instruction-Group-Support: [FP_SIMPLE, FP_MUL, SVE_SIMPLE, SVE_MUL]}, + '4': {Portname: Port 4, Instruction-Group-Support: [INT_SIMPLE, INT_DIV_OR_SQRT]}, + '5': {Portname: Port 5, Instruction-Group-Support: [LOAD, STORE_ADDRESS, INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CMP]}, + '6': {Portname: Port 6, Instruction-Group-Support: [LOAD, STORE_ADDRESS, INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CMP]}, + '7': {Portname: Port 7, Instruction-Group-Support: [BRANCH]} }, Reservation-Stations: { - '0': {Size: 20, Dispatch-Rate: 2, Ports: [FLA, PR, EXA]}, - '1': {Size: 20, Dispatch-Rate: 2, Ports: [FLB, EXB]}, - '2': {Size: 10, Dispatch-Rate: 1, Ports: [EAGA]}, - '3': {Size: 10, Dispatch-Rate: 1, Ports: [EAGB]}, - '4': {Size: 19, Dispatch-Rate: 1, Ports: [BR]}, + '0': {Size: 20, Dispatch-Rate: 2, Ports: [Port 0, Port 1, Port 2]}, + '1': {Size: 20, Dispatch-Rate: 2, Ports: [Port 3, Port 4]}, + '2': {Size: 10, Dispatch-Rate: 1, Ports: [Port 5]}, + '3': {Size: 10, Dispatch-Rate: 1, Ports: [Port 6]}, + '4': {Size: 19, Dispatch-Rate: 1, Ports: [Port 7]}, }, Execution-Units: { '0': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, diff --git a/test/unit/aarch64/ExceptionHandlerTest.cc b/test/unit/aarch64/ExceptionHandlerTest.cc index e3fa9ed0aa..72ce6f1a22 100644 --- a/test/unit/aarch64/ExceptionHandlerTest.cc +++ b/test/unit/aarch64/ExceptionHandlerTest.cc @@ -68,6 +68,7 @@ TEST_F(AArch64ExceptionHandlerTest, testSyscall) { insn->setInstructionAddress(insnAddr); // Setup register file for `uname` syscall (chosen as minimal functionality) + archRegFileSet.set(R0, RegisterValue(1234, 8)); archRegFileSet.set(R8, RegisterValue(160, 8)); // Create ExceptionHandler @@ -84,6 +85,22 @@ TEST_F(AArch64ExceptionHandlerTest, testSyscall) { EXPECT_FALSE(result.fatal); EXPECT_EQ(result.instructionAddress, insnAddr + 4); EXPECT_EQ(result.stateChange.type, ChangeType::REPLACEMENT); + std::vector modRegs = {R0}; + EXPECT_EQ(result.stateChange.modifiedRegisters, modRegs); + std::vector modRegVals = {{0ull, 8}}; + EXPECT_EQ(result.stateChange.modifiedRegisterValues, modRegVals); + std::vector modMemTargets = {{1234, 6}, + {1234 + 65, 25}, + {1234 + (65 * 2), 7}, + {1234 + (65 * 3), 39}, + {1234 + (65 * 4), 8}}; + EXPECT_EQ(result.stateChange.memoryAddresses, modMemTargets); + std::vector modMemVals = { + RegisterValue("Linux"), RegisterValue("simeng.hpc.cs.bris.ac.uk"), + RegisterValue("4.14.0"), + RegisterValue("#1 SimEng Mon Apr 29 16:28:37 UTC 2019"), + RegisterValue("aarch64")}; + EXPECT_EQ(result.stateChange.memoryAddressValues, modMemVals); } // Test that `readStringThen()` operates as expected diff --git a/test/unit/aarch64/InstructionTest.cc b/test/unit/aarch64/InstructionTest.cc index 09efcc910b..91c2e6946c 100644 --- a/test/unit/aarch64/InstructionTest.cc +++ b/test/unit/aarch64/InstructionTest.cc @@ -20,6 +20,9 @@ class AArch64InstructionTest : public testing::Test { cs_open(CS_ARCH_ARM64, CS_MODE_ARM, &capstoneHandle); cs_option(capstoneHandle, CS_OPT_DETAIL, CS_OPT_ON); + // Create instructions which cover the 3 main types: Arithmetic, Memory, + // Branch. This allows for full testing of the Instruction class. + // fdiv cs_insn rawInsn_fdiv; cs_detail rawDetail_fdiv; @@ -92,6 +95,7 @@ class AArch64InstructionTest : public testing::Test { TEST_F(AArch64InstructionTest, validInsn) { // Insn is `fdivr z1.s, p0/m, z1.s, z0.s` Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); + // Define instruction's registers std::vector destRegs = {{RegisterType::VECTOR, 1}}; std::vector srcRegs = {{RegisterType::PREDICATE, 0}, {RegisterType::VECTOR, 1}, @@ -102,6 +106,7 @@ TEST_F(AArch64InstructionTest, validInsn) { insn.setInstructionId(11); insn.setSequenceId(12); + // Ensure that all instruction values are as expected after creation BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred) ? true : false; EXPECT_EQ(&insn.getArchitecture(), &arch); @@ -155,6 +160,7 @@ TEST_F(AArch64InstructionTest, validInsn) { // Test that an invalid instruction can be created - invalid due to byte stream TEST_F(AArch64InstructionTest, invalidInsn_1) { Instruction insn = Instruction(arch, *invalidMetadata.get(), MicroOpInfo()); + // Define instruction's registers std::vector destRegs = {}; std::vector srcRegs = {}; const std::vector ports = {}; @@ -163,6 +169,7 @@ TEST_F(AArch64InstructionTest, invalidInsn_1) { insn.setInstructionId(13); insn.setSequenceId(14); + // Ensure that all instruction values are as expected after creation BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred) ? true : false; EXPECT_EQ(&insn.getArchitecture(), &arch); @@ -219,7 +226,7 @@ TEST_F(AArch64InstructionTest, invalidInsn_1) { TEST_F(AArch64InstructionTest, invalidInsn_2) { Instruction insn = Instruction(arch, *invalidMetadata.get(), InstructionException::HypervisorCall); - + // Define instruction's registers std::vector destRegs = {}; std::vector srcRegs = {}; const std::vector ports = {}; @@ -228,6 +235,7 @@ TEST_F(AArch64InstructionTest, invalidInsn_2) { insn.setInstructionId(15); insn.setSequenceId(16); + // Ensure that all instruction values are as expected after creation BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred) ? true : false; EXPECT_EQ(&insn.getArchitecture(), &arch); @@ -283,10 +291,12 @@ TEST_F(AArch64InstructionTest, invalidInsn_2) { TEST_F(AArch64InstructionTest, renameRegs) { // Insn is `fdivr z1.s, p0/m, z1.s, z0.s` Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); + // Define instruction's registers std::vector destRegs = {{RegisterType::VECTOR, 1}}; std::vector srcRegs = {{RegisterType::PREDICATE, 0}, {RegisterType::VECTOR, 1}, {RegisterType::VECTOR, 0}}; + // Ensure registers decoded correctly EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); for (int i = 0; i < srcRegs.size(); i++) { EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); @@ -296,12 +306,14 @@ TEST_F(AArch64InstructionTest, renameRegs) { EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); } + // Define renamed registers std::vector destRegs_new = {{RegisterType::VECTOR, 24}}; std::vector srcRegs_new = {{RegisterType::PREDICATE, 0}, {RegisterType::VECTOR, 97}, {RegisterType::VECTOR, 0}}; insn.renameDestination(0, destRegs_new[0]); insn.renameSource(1, srcRegs_new[1]); + // Ensure renaming functionality works as expected EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs_new.size()); for (int i = 0; i < srcRegs_new.size(); i++) { EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs_new[i]); @@ -317,20 +329,26 @@ TEST_F(AArch64InstructionTest, renameRegs) { TEST_F(AArch64InstructionTest, supplyOperand) { // Insn is `fdivr z1.s, p0/m, z1.s, z0.s` Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); + // Define instruction's registers std::vector destRegs = {{RegisterType::VECTOR, 1}}; std::vector srcRegs = {{RegisterType::PREDICATE, 0}, {RegisterType::VECTOR, 1}, {RegisterType::VECTOR, 0}}; + // Check initial state is as expected EXPECT_FALSE(insn.canExecute()); EXPECT_FALSE(insn.isOperandReady(0)); EXPECT_FALSE(insn.isOperandReady(1)); EXPECT_FALSE(insn.isOperandReady(2)); + // Define mock register values for source registers RegisterValue vec = {0xABBACAFE01234567, 256}; - RegisterValue pred = {0xFFFFFFFF, 32}; + uint64_t pred_vals[4] = {0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF}; + RegisterValue pred = {pred_vals, 32}; + // Supply values for all source registers insn.supplyOperand(0, pred); insn.supplyOperand(1, vec); insn.supplyOperand(2, vec); + // Ensure Instruction state has updated as expected EXPECT_TRUE(insn.canExecute()); EXPECT_TRUE(insn.isOperandReady(0)); EXPECT_TRUE(insn.isOperandReady(1)); @@ -341,11 +359,14 @@ TEST_F(AArch64InstructionTest, supplyOperand) { EXPECT_EQ(sourceVals[1], vec); EXPECT_EQ(sourceVals[2], vec); + // Ensure instruction execute updates instruction state as expected, and + // produces the expected result. EXPECT_FALSE(insn.hasExecuted()); insn.execute(); EXPECT_TRUE(insn.hasExecuted()); auto results = insn.getResults(); - RegisterValue refRes = {0x0000000100000001, 256}; + uint64_t vals[2] = {0x3f8000003f800000, 0x7fc000007fc00000}; + RegisterValue refRes = {vals, 256}; EXPECT_EQ(results.size(), 1); EXPECT_EQ(results[0], refRes); } @@ -354,6 +375,7 @@ TEST_F(AArch64InstructionTest, supplyOperand) { TEST_F(AArch64InstructionTest, supplyData) { // Insn is `ldp x1, x2, [x3]` Instruction insn = Instruction(arch, *ldpMetadata.get(), MicroOpInfo()); + // Define instruction's registers std::vector destRegs = {{RegisterType::GENERAL, 1}, {RegisterType::GENERAL, 2}}; std::vector srcRegs = {{RegisterType::GENERAL, 3}}; @@ -396,6 +418,7 @@ TEST_F(AArch64InstructionTest, supplyData) { for (int i = 0; i < generatedAddresses.size(); i++) { insn.supplyData(generatedAddresses[i].address, data[i]); } + // Ensure data was supplied correctly auto retrievedData = insn.getData(); for (int i = 0; i < retrievedData.size(); i++) { EXPECT_EQ(retrievedData[i], data[i]); @@ -407,6 +430,7 @@ TEST_F(AArch64InstructionTest, supplyData) { TEST_F(AArch64InstructionTest, supplyData_dataAbort) { // Insn is `ldp x1, x2, [x3]` Instruction insn = Instruction(arch, *ldpMetadata.get(), MicroOpInfo()); + // Define instruction's registers std::vector destRegs = {{RegisterType::GENERAL, 1}, {RegisterType::GENERAL, 2}}; std::vector srcRegs = {{RegisterType::GENERAL, 3}}; @@ -444,6 +468,7 @@ TEST_F(AArch64InstructionTest, earlyBranchMisprediction) { Instruction insn = Instruction(arch, *fdivMetadata.get(), MicroOpInfo()); insn.setInstructionAddress(64); + // Check initial state of an instruction's branch related options BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); @@ -454,6 +479,7 @@ TEST_F(AArch64InstructionTest, earlyBranchMisprediction) { std::tuple tup = {false, insn.getInstructionAddress() + 4}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + // Set prediction and ensure expected state changes / outcomes are seen pred = {true, 0x4848}; insn.setBranchPrediction(pred); matchingPred = (insn.getBranchPrediction() == pred); @@ -461,7 +487,8 @@ TEST_F(AArch64InstructionTest, earlyBranchMisprediction) { EXPECT_FALSE(insn.wasBranchTaken()); EXPECT_EQ(insn.getBranchAddress(), 0); EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); - + // Check logic of `checkEarlyBranchMisprediction` which is different for + // non-branch instructions EXPECT_FALSE(insn.isBranch()); tup = {true, insn.getInstructionAddress() + 4}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); @@ -473,6 +500,7 @@ TEST_F(AArch64InstructionTest, correctPred_taken) { Instruction insn = Instruction(arch, *cbzMetadata.get(), MicroOpInfo()); insn.setInstructionAddress(80); + // Check initial state of an instruction's branch related options BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); @@ -483,7 +511,7 @@ TEST_F(AArch64InstructionTest, correctPred_taken) { std::tuple tup = {false, 0}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); - // Correct prediction + // Test a correct prediction where branch is taken is handled correctly pred = {true, 80 + 0x28}; insn.setBranchPrediction(pred); matchingPred = (insn.getBranchPrediction() == pred); @@ -501,6 +529,7 @@ TEST_F(AArch64InstructionTest, correctPred_notTaken) { Instruction insn = Instruction(arch, *cbzMetadata.get(), MicroOpInfo()); insn.setInstructionAddress(80); + // Check initial state of an instruction's branch related options BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); @@ -511,7 +540,7 @@ TEST_F(AArch64InstructionTest, correctPred_notTaken) { std::tuple tup = {false, 0}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); - // Correct prediction + // Test a correct prediction where a branch isn't taken is handled correctly pred = {false, 80 + 4}; insn.setBranchPrediction(pred); matchingPred = (insn.getBranchPrediction() == pred); @@ -529,6 +558,7 @@ TEST_F(AArch64InstructionTest, incorrectPred_target) { Instruction insn = Instruction(arch, *cbzMetadata.get(), MicroOpInfo()); insn.setInstructionAddress(100); + // Check initial state of an instruction's branch related options BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); @@ -539,7 +569,7 @@ TEST_F(AArch64InstructionTest, incorrectPred_target) { std::tuple tup = {false, 0}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); - // Incorrect prediction - target is wrong + // Test an incorrect prediction is handled correctly - target is wrong pred = {true, 80 + 0x28}; insn.setBranchPrediction(pred); matchingPred = (insn.getBranchPrediction() == pred); @@ -557,6 +587,7 @@ TEST_F(AArch64InstructionTest, incorrectPred_taken) { Instruction insn = Instruction(arch, *cbzMetadata.get(), MicroOpInfo()); insn.setInstructionAddress(100); + // Check initial state of an instruction's branch related options BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); @@ -567,7 +598,7 @@ TEST_F(AArch64InstructionTest, incorrectPred_taken) { std::tuple tup = {false, 0}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); - // Incorrect prediction - taken is wrong + // Test an incorrect prediction is handled correctly - taken is wrong pred = {true, 100 + 0x28}; insn.setBranchPrediction(pred); matchingPred = (insn.getBranchPrediction() == pred); diff --git a/test/unit/pipeline/DispatchIssueUnitTest.cc b/test/unit/pipeline/DispatchIssueUnitTest.cc index 3ebd785189..9bd953f567 100644 --- a/test/unit/pipeline/DispatchIssueUnitTest.cc +++ b/test/unit/pipeline/DispatchIssueUnitTest.cc @@ -26,23 +26,25 @@ class PipelineDispatchIssueUnitTest : public testing::Test { uop2Ptr(uop2) {} protected: + // More complex model used to enable better testing of the DispatchIssueUnit + // class. ConfigInit configInit = ConfigInit(config::ISA::AArch64, R"YAML({ Ports: { - '0': {Portname: FLA, Instruction-Group-Support: [FP, SVE]}, - '1': {Portname: PR, Instruction-Group-Support: [PREDICATE]}, - '2': {Portname: EXA, Instruction-Group-Support: [INT_SIMPLE, INT_MUL, STORE_DATA]}, - '3': {Portname: FLB, Instruction-Group-Support: [FP_SIMPLE, FP_MUL, SVE_SIMPLE, SVE_MUL]}, - '4': {Portname: EXB, Instruction-Group-Support: [INT_SIMPLE, INT_DIV_OR_SQRT]}, - '5': {Portname: EAGA, Instruction-Group-Support: [LOAD, STORE_ADDRESS, INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CMP]}, - '6': {Portname: EAGB, Instruction-Group-Support: [LOAD, STORE_ADDRESS, INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CMP]}, - '7': {Portname: BR, Instruction-Group-Support: [BRANCH]} + '0': {Portname: Port 0, Instruction-Group-Support: [FP, SVE]}, + '1': {Portname: Port 1, Instruction-Group-Support: [PREDICATE]}, + '2': {Portname: Port 2, Instruction-Group-Support: [INT_SIMPLE, INT_MUL, STORE_DATA]}, + '3': {Portname: Port 3, Instruction-Group-Support: [FP_SIMPLE, FP_MUL, SVE_SIMPLE, SVE_MUL]}, + '4': {Portname: Port 4, Instruction-Group-Support: [INT_SIMPLE, INT_DIV_OR_SQRT]}, + '5': {Portname: Port 5, Instruction-Group-Support: [LOAD, STORE_ADDRESS, INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CMP]}, + '6': {Portname: Port 6, Instruction-Group-Support: [LOAD, STORE_ADDRESS, INT_SIMPLE_ARTH_NOSHIFT, INT_SIMPLE_LOGICAL_NOSHIFT, INT_SIMPLE_CMP]}, + '7': {Portname: Port 7, Instruction-Group-Support: [BRANCH]} }, Reservation-Stations: { - '0': {Size: 20, Dispatch-Rate: 2, Ports: [FLA, PR, EXA]}, - '1': {Size: 20, Dispatch-Rate: 2, Ports: [FLB, EXB]}, - '2': {Size: 10, Dispatch-Rate: 1, Ports: [EAGA]}, - '3': {Size: 10, Dispatch-Rate: 1, Ports: [EAGB]}, - '4': {Size: 19, Dispatch-Rate: 1, Ports: [BR]} + '0': {Size: 20, Dispatch-Rate: 2, Ports: [Port 0, Port 1, Port 2]}, + '1': {Size: 20, Dispatch-Rate: 2, Ports: [Port 3, Port 4]}, + '2': {Size: 10, Dispatch-Rate: 1, Ports: [Port 5]}, + '3': {Size: 10, Dispatch-Rate: 1, Ports: [Port 6]}, + '4': {Size: 19, Dispatch-Rate: 1, Ports: [Port 7]} }, Execution-Units: { '0': {Pipelined: True, Blocking-Groups: [INT_DIV_OR_SQRT, FP_DIV_OR_SQRT, SVE_DIV_OR_SQRT]}, diff --git a/test/unit/riscv/ArchitectureTest.cc b/test/unit/riscv/ArchitectureTest.cc index 7a86f8a50d..a934232fe4 100644 --- a/test/unit/riscv/ArchitectureTest.cc +++ b/test/unit/riscv/ArchitectureTest.cc @@ -24,6 +24,8 @@ class RiscVArchitectureTest : public testing::Test { } protected: + // Setting core model to complex OoO model to more verbosely test the + // Architecture class. ConfigInit configInit = ConfigInit(config::ISA::RV64, R"YAML({ Core: { Simulation-Mode: outoforder diff --git a/test/unit/riscv/ExceptionHandlerTest.cc b/test/unit/riscv/ExceptionHandlerTest.cc index cd2de52587..dc51f781e8 100644 --- a/test/unit/riscv/ExceptionHandlerTest.cc +++ b/test/unit/riscv/ExceptionHandlerTest.cc @@ -64,6 +64,7 @@ TEST_F(RiscVExceptionHandlerTest, testSyscall) { insn->setInstructionAddress(insnAddr); // Setup register file for `uname` syscall (chosen as minimal functionality) + archRegFileSet.set(R0, RegisterValue(1234, 8)); archRegFileSet.set(R7, RegisterValue(160, 8)); // Create ExceptionHandler @@ -80,6 +81,25 @@ TEST_F(RiscVExceptionHandlerTest, testSyscall) { EXPECT_FALSE(result.fatal); EXPECT_EQ(result.instructionAddress, insnAddr + 4); EXPECT_EQ(result.stateChange.type, ChangeType::REPLACEMENT); + std::vector modRegs = {R0}; + EXPECT_EQ(result.stateChange.modifiedRegisters, modRegs); + std::vector modRegVals = {{0ull, 8}}; + EXPECT_EQ(result.stateChange.modifiedRegisterValues, modRegVals); + std::vector modMemTargets = {{1234, 6}, + {1234 + 65, 13}, + {1234 + (65 * 2), 42}, + {1234 + (65 * 3), 35}, + {1234 + (65 * 4), 8}, + {1234 + (65 * 5), 7}}; + EXPECT_EQ(result.stateChange.memoryAddresses, modMemTargets); + std::vector modMemVals = { + RegisterValue("Linux"), + RegisterValue("fedora-riscv"), + RegisterValue("5.5.0-0.rc5.git0.1.1.riscv64.fc32.riscv64"), + RegisterValue("#1 SMP Mon Jan 6 17:31:22 UTC 2020"), + RegisterValue("riscv64"), + RegisterValue("(none)")}; + EXPECT_EQ(result.stateChange.memoryAddressValues, modMemVals); } // Test that `readStringThen()` operates as expected diff --git a/test/unit/riscv/InstructionTest.cc b/test/unit/riscv/InstructionTest.cc index 4dbf4d5595..37580c4f80 100644 --- a/test/unit/riscv/InstructionTest.cc +++ b/test/unit/riscv/InstructionTest.cc @@ -20,6 +20,9 @@ class RiscVInstructionTest : public testing::Test { cs_open(CS_ARCH_RISCV, CS_MODE_RISCV64, &capstoneHandle); cs_option(capstoneHandle, CS_OPT_DETAIL, CS_OPT_ON); + // Create instructions which cover the 3 main types: Arithmetic, Memory, + // Branch. This allows for full testing of the Instruction class. + // div cs_insn rawInsn_div; cs_detail rawDetail_div; @@ -91,6 +94,7 @@ class RiscVInstructionTest : public testing::Test { TEST_F(RiscVInstructionTest, validInsn) { // Insn is `div a3, a3, a0` Instruction insn = Instruction(arch, *divMetadata.get()); + // Define instruction's registers std::vector destRegs = {{RegisterType::GENERAL, 13}}; std::vector srcRegs = {{RegisterType::GENERAL, 13}, {RegisterType::GENERAL, 10}}; @@ -100,6 +104,7 @@ TEST_F(RiscVInstructionTest, validInsn) { insn.setInstructionId(11); insn.setSequenceId(12); + // Ensure that all instruction values are as expected after creation BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred) ? true : false; EXPECT_EQ(&insn.getArchitecture(), &arch); @@ -153,6 +158,7 @@ TEST_F(RiscVInstructionTest, validInsn) { // Test that an invalid instruction can be created - invalid due to byte stream TEST_F(RiscVInstructionTest, invalidInsn_1) { Instruction insn = Instruction(arch, *invalidMetadata.get()); + // Define instruction's registers std::vector destRegs = {}; std::vector srcRegs = {}; const std::vector ports = {}; @@ -161,6 +167,7 @@ TEST_F(RiscVInstructionTest, invalidInsn_1) { insn.setInstructionId(13); insn.setSequenceId(14); + // Ensure that all instruction values are as expected after creation BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred) ? true : false; EXPECT_EQ(&insn.getArchitecture(), &arch); @@ -217,7 +224,7 @@ TEST_F(RiscVInstructionTest, invalidInsn_1) { TEST_F(RiscVInstructionTest, invalidInsn_2) { Instruction insn = Instruction(arch, *invalidMetadata.get(), InstructionException::HypervisorCall); - + // Define instruction's registers std::vector destRegs = {}; std::vector srcRegs = {}; const std::vector ports = {}; @@ -226,6 +233,7 @@ TEST_F(RiscVInstructionTest, invalidInsn_2) { insn.setInstructionId(15); insn.setSequenceId(16); + // Ensure that all instruction values are as expected after creation BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred) ? true : false; EXPECT_EQ(&insn.getArchitecture(), &arch); @@ -281,9 +289,11 @@ TEST_F(RiscVInstructionTest, invalidInsn_2) { TEST_F(RiscVInstructionTest, renameRegs) { // Insn is `div a3, a3, a0` Instruction insn = Instruction(arch, *divMetadata.get()); + // Define instruction's registers std::vector destRegs = {{RegisterType::GENERAL, 13}}; std::vector srcRegs = {{RegisterType::GENERAL, 13}, {RegisterType::GENERAL, 10}}; + // Ensure registers decoded correctly EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs.size()); for (int i = 0; i < srcRegs.size(); i++) { EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs[i]); @@ -293,11 +303,13 @@ TEST_F(RiscVInstructionTest, renameRegs) { EXPECT_EQ(insn.getDestinationRegisters()[i], destRegs[i]); } + // Define renamed registers std::vector destRegs_new = {{RegisterType::GENERAL, 24}}; std::vector srcRegs_new = {{RegisterType::GENERAL, 13}, {RegisterType::GENERAL, 97}}; insn.renameDestination(0, destRegs_new[0]); insn.renameSource(1, srcRegs_new[1]); + // Ensure renaming functionality works as expected EXPECT_EQ(insn.getSourceRegisters().size(), srcRegs_new.size()); for (int i = 0; i < srcRegs_new.size(); i++) { EXPECT_EQ(insn.getSourceRegisters()[i], srcRegs_new[i]); @@ -313,16 +325,21 @@ TEST_F(RiscVInstructionTest, renameRegs) { TEST_F(RiscVInstructionTest, supplyOperand) { // Insn is `div a3, a3, a0` Instruction insn = Instruction(arch, *divMetadata.get()); + // Define instruction's registers std::vector destRegs = {{RegisterType::GENERAL, 13}}; std::vector srcRegs = {{RegisterType::GENERAL, 13}, {RegisterType::GENERAL, 10}}; + // Check initial state is as expected EXPECT_FALSE(insn.canExecute()); EXPECT_FALSE(insn.isOperandReady(0)); EXPECT_FALSE(insn.isOperandReady(1)); + // Define mock register values for source registers RegisterValue val = {0xABBACAFE, 8}; + // Supply values for all source registers insn.supplyOperand(0, val); insn.supplyOperand(1, val); + // Ensure Instruction state has updated as expected EXPECT_TRUE(insn.canExecute()); EXPECT_TRUE(insn.isOperandReady(0)); EXPECT_TRUE(insn.isOperandReady(1)); @@ -331,6 +348,8 @@ TEST_F(RiscVInstructionTest, supplyOperand) { EXPECT_EQ(sourceVals[0], val); EXPECT_EQ(sourceVals[1], val); + // Ensure instruction execute updates instruction state as expected, and + // produces the expected result. EXPECT_FALSE(insn.hasExecuted()); insn.execute(); EXPECT_TRUE(insn.hasExecuted()); @@ -344,6 +363,7 @@ TEST_F(RiscVInstructionTest, supplyOperand) { TEST_F(RiscVInstructionTest, supplyData) { // Insn is `lbu a5, 0(s3)` Instruction insn = Instruction(arch, *lbuMetadata.get()); + // Define instruction's registers std::vector destRegs = {{RegisterType::GENERAL, 15}}; std::vector srcRegs = {{RegisterType::GENERAL, 19}}; @@ -381,6 +401,7 @@ TEST_F(RiscVInstructionTest, supplyData) { std::vector data = {{123, 1}}; EXPECT_EQ(generatedAddresses.size(), data.size()); insn.supplyData(generatedAddresses[0].address, data[0]); + // Ensure data was supplied correctly auto retrievedData = insn.getData(); for (int i = 0; i < retrievedData.size(); i++) { EXPECT_EQ(retrievedData[i], data[i]); @@ -392,6 +413,7 @@ TEST_F(RiscVInstructionTest, supplyData) { TEST_F(RiscVInstructionTest, supplyData_dataAbort) { // Insn is `lbu a5, 0(s3)` Instruction insn = Instruction(arch, *lbuMetadata.get()); + // Define instruction's registers std::vector destRegs = {{RegisterType::GENERAL, 15}}; std::vector srcRegs = {{RegisterType::GENERAL, 19}}; @@ -426,6 +448,7 @@ TEST_F(RiscVInstructionTest, earlyBranchMisprediction) { Instruction insn = Instruction(arch, *divMetadata.get()); insn.setInstructionAddress(64); + // Check initial state of an instruction's branch related options BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); @@ -436,6 +459,7 @@ TEST_F(RiscVInstructionTest, earlyBranchMisprediction) { std::tuple tup = {false, insn.getInstructionAddress() + 4}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + // Set prediction and ensure expected state changes / outcomes are seen pred = {true, 0x4848}; insn.setBranchPrediction(pred); matchingPred = (insn.getBranchPrediction() == pred); @@ -443,7 +467,8 @@ TEST_F(RiscVInstructionTest, earlyBranchMisprediction) { EXPECT_FALSE(insn.wasBranchTaken()); EXPECT_EQ(insn.getBranchAddress(), 0); EXPECT_EQ(insn.getBranchType(), BranchType::Unknown); - + // Check logic of `checkEarlyBranchMisprediction` which is different for + // non-branch instructions EXPECT_FALSE(insn.isBranch()); tup = {true, insn.getInstructionAddress() + 4}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); @@ -455,6 +480,7 @@ TEST_F(RiscVInstructionTest, correctPred_taken) { Instruction insn = Instruction(arch, *bgeuMetadata.get()); insn.setInstructionAddress(400); + // Check initial state of an instruction's branch related options BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); @@ -465,6 +491,7 @@ TEST_F(RiscVInstructionTest, correctPred_taken) { std::tuple tup = {false, 0}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + // Test a correct prediction where branch is taken is handled correctly pred = {true, 400 - 86}; insn.setBranchPrediction(pred); matchingPred = (insn.getBranchPrediction() == pred); @@ -483,6 +510,7 @@ TEST_F(RiscVInstructionTest, correctPred_notTaken) { Instruction insn = Instruction(arch, *bgeuMetadata.get()); insn.setInstructionAddress(400); + // Check initial state of an instruction's branch related options BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); @@ -493,6 +521,7 @@ TEST_F(RiscVInstructionTest, correctPred_notTaken) { std::tuple tup = {false, 0}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + // Test a correct prediction where a branch isn't taken is handled correctly // imm operand 0x28 has 4 added implicitly by dissassembler pred = {false, 400 + 4}; insn.setBranchPrediction(pred); @@ -512,6 +541,7 @@ TEST_F(RiscVInstructionTest, incorrectPred_target) { Instruction insn = Instruction(arch, *bgeuMetadata.get()); insn.setInstructionAddress(400); + // Check initial state of an instruction's branch related options BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); @@ -522,6 +552,7 @@ TEST_F(RiscVInstructionTest, incorrectPred_target) { std::tuple tup = {false, 0}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + // Test an incorrect prediction is handled correctly - target is wrong // imm operand 0x28 has 4 added implicitly by dissassembler pred = {true, 80 + (0x28 + 0x4)}; insn.setBranchPrediction(pred); @@ -535,12 +566,13 @@ TEST_F(RiscVInstructionTest, incorrectPred_target) { EXPECT_EQ(insn.getBranchAddress(), 400 - 86); } -// Test that an incorrect prediction(wrong taken) is handled correctly +// Test that an incorrect prediction (wrong taken) is handled correctly TEST_F(RiscVInstructionTest, incorrectPred_taken) { // insn is `bgeu a5, a4, -86` Instruction insn = Instruction(arch, *bgeuMetadata.get()); insn.setInstructionAddress(400); + // Check initial state of an instruction's branch related options BranchPrediction pred = {false, 0}; bool matchingPred = (insn.getBranchPrediction() == pred); EXPECT_TRUE(matchingPred); @@ -551,6 +583,7 @@ TEST_F(RiscVInstructionTest, incorrectPred_taken) { std::tuple tup = {false, 0}; EXPECT_EQ(insn.checkEarlyBranchMisprediction(), tup); + // Test an incorrect prediction is handled correctly - taken is wrong // imm operand 0x28 has 4 added implicitly by dissassembler pred = {true, 400 - 86}; insn.setBranchPrediction(pred); From 43cca780c443a92ee9c142fcd0a1fa99e749cc01 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 25 Jan 2024 11:46:12 +0000 Subject: [PATCH 91/96] Updated aarch64 auxiliary function tests structure. --- test/unit/aarch64/AuxiliaryFunctionsTest.cc | 77 ++++++++------------- 1 file changed, 29 insertions(+), 48 deletions(-) diff --git a/test/unit/aarch64/AuxiliaryFunctionsTest.cc b/test/unit/aarch64/AuxiliaryFunctionsTest.cc index e7ebe745e6..554280f944 100644 --- a/test/unit/aarch64/AuxiliaryFunctionsTest.cc +++ b/test/unit/aarch64/AuxiliaryFunctionsTest.cc @@ -6,7 +6,7 @@ namespace arch { namespace aarch64 { /** `nzcv` Tests */ -TEST(AArch64AuxNzcvTest, nzcv) { +TEST(AArch64AuxiliaryFunctionTest, NzcvTest) { EXPECT_EQ(nzcv(true, true, true, true), 0b00001111); EXPECT_EQ(nzcv(false, false, false, false), 0b00000000); EXPECT_EQ(nzcv(true, false, false, true), 0b00001001); @@ -14,7 +14,7 @@ TEST(AArch64AuxNzcvTest, nzcv) { } /** `addWithCarry` Tests */ -TEST(AArch64AuxAddWithCarry, unsigned) { +TEST(AArch64AuxiliaryFunctionTest, AddWithCarry) { std::tuple u8Res = {111, 0b0010}; EXPECT_EQ(addWithCarry(123, 244, false), u8Res); @@ -29,7 +29,8 @@ TEST(AArch64AuxAddWithCarry, unsigned) { } /** `bitfieldManipulate` Tests */ -TEST(AArch64AuxBitfieldManipulate, uint8) { +TEST(AArch64AuxiliaryFunctionTest, BitfieldManipulate) { + // uint8 EXPECT_EQ(bitfieldManipulate(0xFF, 12, 2, 1, false), 204); EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, false), 3); EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, false), 64); @@ -39,9 +40,8 @@ TEST(AArch64AuxBitfieldManipulate, uint8) { EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, true), 3); EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, true), 0); EXPECT_EQ(bitfieldManipulate(64, 8, 8, 4, true), 0); -} -TEST(AArch64AuxBitfieldManipulate, uint16) { + // uint16 EXPECT_EQ(bitfieldManipulate(0xFFFF, 12, 2, 1, false), 49164); EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, false), 3); EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, false), 64); @@ -51,9 +51,8 @@ TEST(AArch64AuxBitfieldManipulate, uint16) { EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, true), 3); EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, true), 0); EXPECT_EQ(bitfieldManipulate(64, 8, 8, 4, true), 8); -} -TEST(AArch64AuxBitfieldManipulate, uint32) { + // uint32 EXPECT_EQ(bitfieldManipulate(0xFFFFFFFF, 12, 2, 1, false), 3221225484); EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, false), 33); @@ -65,9 +64,8 @@ TEST(AArch64AuxBitfieldManipulate, uint32) { EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, true), 33); EXPECT_EQ(bitfieldManipulate(0, 64, 4, 8, true), 0); EXPECT_EQ(bitfieldManipulate(64, 8, 8, 4, true), 8); -} -TEST(AArch64AuxBitfieldManipulate, uint64) { + // uint64 EXPECT_EQ(bitfieldManipulate(0xFFFFFFFFFFFFFFFF, 12, 2, 1, false), 13835058055282163724u); EXPECT_EQ(bitfieldManipulate(16, 3, 0xFF, 24, false), 33); @@ -82,9 +80,11 @@ TEST(AArch64AuxBitfieldManipulate, uint64) { } /** `conditionHolds` Tests */ -TEST(AArch64AuxConditionHolds, inverseFalse) { +TEST(AArch64AuxiliaryFunctionTest, ConditionHolds) { // Run each condition at least twice, one which we expect to be true, one we // expect to be false + + // Inverse False // EQ/NE EXPECT_TRUE(conditionHolds(0b0000, 0b0100)); EXPECT_FALSE(conditionHolds(0b0000, 0b1011)); @@ -122,11 +122,8 @@ TEST(AArch64AuxConditionHolds, inverseFalse) { // AL EXPECT_TRUE(conditionHolds(0b1110, 0b1111)); EXPECT_TRUE(conditionHolds(0b1110, 0b0000)); -} -TEST(AArch64AuxConditionHolds, inverseTrue) { - // Run each condition at least twice, one which we expect to be true, one we - // expect to be false + // Inverse True // EQ/NE EXPECT_FALSE(conditionHolds(0b0001, 0b0100)); EXPECT_TRUE(conditionHolds(0b0001, 0b1011)); @@ -167,7 +164,7 @@ TEST(AArch64AuxConditionHolds, inverseTrue) { } /** `extendValue` Tests */ -TEST(AArch64AuxExtendValue, extend) { +TEST(AArch64AuxiliaryFunctionTest, ExtendValue) { // Test special case EXPECT_EQ(extendValue(123, ARM64_EXT_INVALID, 0), 123); @@ -185,7 +182,7 @@ TEST(AArch64AuxExtendValue, extend) { } /** `getNZCVfromPred` Tests */ -TEST(AArch64AuxgetNZCVfromPred, 128) { +TEST(AArch64AuxiliaryFunctionTest, getNZCVfromPred) { uint64_t vl = 128; // VL 128 will only use array[0] EXPECT_EQ(getNZCVfromPred( @@ -200,10 +197,8 @@ TEST(AArch64AuxgetNZCVfromPred, 128) { vl, 4), 0b0010); EXPECT_EQ(getNZCVfromPred({0, 0x8000000000000001, 0, 0}, vl, 8), 0b0110); -} -TEST(AArch64AuxgetNZCVfromPred, 256) { - uint64_t vl = 256; + vl = 256; // VL 256 will only use array[0] EXPECT_EQ(getNZCVfromPred( {0, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF}, @@ -217,10 +212,8 @@ TEST(AArch64AuxgetNZCVfromPred, 256) { vl, 4), 0b0010); EXPECT_EQ(getNZCVfromPred({0, 0x8000000000000001, 0, 0}, vl, 8), 0b0110); -} -TEST(AArch64AuxgetNZCVfromPred, 512) { - uint64_t vl = 512; + vl = 512; // VL 512 will only use array[0] EXPECT_EQ(getNZCVfromPred( {0, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF}, @@ -234,10 +227,8 @@ TEST(AArch64AuxgetNZCVfromPred, 512) { vl, 4), 0b0010); EXPECT_EQ(getNZCVfromPred({0, 0x8000000000000001, 0, 0}, vl, 8), 0b0110); -} -TEST(AArch64AuxgetNZCVfromPred, 1024) { - uint64_t vl = 1024; + vl = 1024; // VL 1024 will only use array[0, 1] EXPECT_EQ(getNZCVfromPred( {0, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF}, @@ -251,10 +242,8 @@ TEST(AArch64AuxgetNZCVfromPred, 1024) { vl, 4), 0b0010); EXPECT_EQ(getNZCVfromPred({0, 0x8000000000000000, 0, 0}, vl, 8), 0b0010); -} -TEST(AArch64AuxgetNZCVfromPred, 2048) { - uint64_t vl = 2048; + vl = 2048; // VL 2048 will only use array[0, 1, 2, 3] EXPECT_EQ(getNZCVfromPred( {0, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF}, @@ -271,7 +260,7 @@ TEST(AArch64AuxgetNZCVfromPred, 2048) { } /** `mulhi` Tests */ -TEST(AArch64AuxMulhi, mulhi) { +TEST(AArch64AuxiliaryFunctionTest, Mulhi) { EXPECT_EQ(mulhi(0xFFFFFFFFFFFFFFFF, 2), 1); EXPECT_EQ(mulhi(1, 245), 0); @@ -282,7 +271,7 @@ TEST(AArch64AuxMulhi, mulhi) { } /** `sveGetPattern` Tests */ -TEST(AArch64AuxSveGetPattern, vl128) { +TEST(AArch64AuxiliaryFunctionTest, sveGetPattern) { uint16_t vl = 128; EXPECT_EQ(sveGetPattern("", 64, vl), 2); EXPECT_EQ(sveGetPattern("", 16, vl), 8); @@ -307,10 +296,8 @@ TEST(AArch64AuxSveGetPattern, vl128) { EXPECT_EQ(sveGetPattern("mul4", 8, vl), 16); EXPECT_EQ(sveGetPattern("mul3", 8, vl), 15); -} -TEST(AArch64AuxSveGetPattern, vl256) { - uint16_t vl = 256; + vl = 256; EXPECT_EQ(sveGetPattern("", 64, vl), 4); EXPECT_EQ(sveGetPattern("", 16, vl), 16); EXPECT_EQ(sveGetPattern("all", 64, vl), 4); @@ -334,10 +321,8 @@ TEST(AArch64AuxSveGetPattern, vl256) { EXPECT_EQ(sveGetPattern("mul4", 8, vl), 32); EXPECT_EQ(sveGetPattern("mul3", 8, vl), 30); -} -TEST(AArch64AuxSveGetPattern, vl512) { - uint16_t vl = 512; + vl = 512; EXPECT_EQ(sveGetPattern("", 64, vl), 8); EXPECT_EQ(sveGetPattern("", 16, vl), 32); EXPECT_EQ(sveGetPattern("all", 64, vl), 8); @@ -361,10 +346,8 @@ TEST(AArch64AuxSveGetPattern, vl512) { EXPECT_EQ(sveGetPattern("mul4", 8, vl), 64); EXPECT_EQ(sveGetPattern("mul3", 8, vl), 63); -} -TEST(AArch64AuxSveGetPattern, vl1024) { - uint16_t vl = 1024; + vl = 1024; EXPECT_EQ(sveGetPattern("", 64, vl), 16); EXPECT_EQ(sveGetPattern("", 16, vl), 64); EXPECT_EQ(sveGetPattern("all", 64, vl), 16); @@ -388,10 +371,8 @@ TEST(AArch64AuxSveGetPattern, vl1024) { EXPECT_EQ(sveGetPattern("mul4", 8, vl), 128); EXPECT_EQ(sveGetPattern("mul3", 8, vl), 126); -} -TEST(AArch64AuxSveGetPattern, vl2048) { - uint16_t vl = 2048; + vl = 2048; EXPECT_EQ(sveGetPattern("", 64, vl), 32); EXPECT_EQ(sveGetPattern("", 16, vl), 128); EXPECT_EQ(sveGetPattern("all", 64, vl), 32); @@ -418,7 +399,7 @@ TEST(AArch64AuxSveGetPattern, vl2048) { } /** `ShiftValue` Tests */ -TEST(AArch64AuxShiftValueTest, LSL) { +TEST(AArch64AuxiliaryFunctionTest, ShiftValueTest_LSL) { // 8-bit const uint8_t a = 0x0F; EXPECT_EQ(shiftValue(a, ARM64_SFT_LSL, 4), 0xF0); @@ -456,7 +437,7 @@ TEST(AArch64AuxShiftValueTest, LSL) { EXPECT_EQ(shiftValue(h, ARM64_SFT_LSL, 0), h); } -TEST(AArch64AuxShiftValueTest, LSR) { +TEST(AArch64AuxiliaryFunctionTest, ShiftValueTest_LSR) { // 8-bit const uint8_t a = 0x0F; EXPECT_EQ(shiftValue(a, ARM64_SFT_LSR, 4), 0x00); @@ -494,7 +475,7 @@ TEST(AArch64AuxShiftValueTest, LSR) { EXPECT_EQ(shiftValue(h, ARM64_SFT_LSR, 0), h); } -TEST(AArch64AuxShiftValueTest, ASR) { +TEST(AArch64AuxiliaryFunctionTest, ShiftValueTest_ASR) { // 8-bit const uint8_t a = 0x0F; EXPECT_EQ(shiftValue(a, ARM64_SFT_ASR, 4), 0x00); @@ -532,7 +513,7 @@ TEST(AArch64AuxShiftValueTest, ASR) { EXPECT_EQ(shiftValue(h, ARM64_SFT_ASR, 0), h); } -TEST(AArch64AuxShiftValueTest, ROR) { +TEST(AArch64AuxiliaryFunctionTest, ShiftValueTest_ROR) { // 8-bit const uint8_t a = 0x0F; EXPECT_EQ(shiftValue(a, ARM64_SFT_ROR, 4), 0xF0); @@ -570,7 +551,7 @@ TEST(AArch64AuxShiftValueTest, ROR) { EXPECT_EQ(shiftValue(h, ARM64_SFT_ROR, 0), h); } -TEST(AArch64AuxShiftValueTest, MSL) { +TEST(AArch64AuxiliaryFunctionTest, ShiftValueTest_MSL) { // 8-bit const uint8_t a = 0x0F; EXPECT_EQ(shiftValue(a, ARM64_SFT_MSL, 4), 0xFF); @@ -608,7 +589,7 @@ TEST(AArch64AuxShiftValueTest, MSL) { EXPECT_EQ(shiftValue(h, ARM64_SFT_MSL, 0), h); } -TEST(AArch64AuxShiftValueTest, INVALID) { +TEST(AArch64AuxiliaryFunctionTest, ShiftValueTest_INVALID) { // 8-bit const uint8_t a = 0x0F; EXPECT_EQ(shiftValue(a, ARM64_SFT_INVALID, 4), a); From 7c0ca0da72672fe7fe53b9b6de8898c780e32e92 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Thu, 25 Jan 2024 22:06:09 +0000 Subject: [PATCH 92/96] More changes attending to PR comments, --- .../simeng/arch/aarch64/Instruction.hh | 6 ++--- src/include/simeng/arch/riscv/Instruction.hh | 6 ++--- src/lib/arch/aarch64/Instruction.cc | 3 --- src/lib/arch/aarch64/Instruction_decode.cc | 22 ++++--------------- src/lib/arch/riscv/Instruction.cc | 3 --- src/lib/arch/riscv/Instruction_decode.cc | 8 +++---- src/lib/config/ModelConfig.cc | 2 +- test/integration/ConfigTest.cc | 4 ++-- 8 files changed, 17 insertions(+), 37 deletions(-) diff --git a/src/include/simeng/arch/aarch64/Instruction.hh b/src/include/simeng/arch/aarch64/Instruction.hh index c09044ab36..92ac0bc96d 100644 --- a/src/include/simeng/arch/aarch64/Instruction.hh +++ b/src/include/simeng/arch/aarch64/Instruction.hh @@ -171,6 +171,9 @@ const uint8_t NZCV = 3; const uint8_t SYSTEM = 4; /** The [256-byte x (SVL / 8)] SME matrix register za. */ const uint8_t MATRIX = 5; + +/** A special register value representing the zero register. */ +const Register ZERO_REGISTER = {GENERAL, (uint16_t)-1}; } // namespace RegisterType /** A struct holding user-defined execution information for a aarch64 @@ -333,9 +336,6 @@ class Instruction : public simeng::Instruction { /** Retrieve the instruction's associated architecture. */ const Architecture& getArchitecture() const; - /** A special register value representing the zero register. */ - static const Register ZERO_REGISTER; - private: /** A reference to the ISA instance this instruction belongs to. */ const Architecture& architecture_; diff --git a/src/include/simeng/arch/riscv/Instruction.hh b/src/include/simeng/arch/riscv/Instruction.hh index 0f2b924c06..33e5b05e7f 100644 --- a/src/include/simeng/arch/riscv/Instruction.hh +++ b/src/include/simeng/arch/riscv/Instruction.hh @@ -23,6 +23,9 @@ const uint8_t GENERAL = 0; const uint8_t FLOAT = 1; /** The system registers. */ const uint8_t SYSTEM = 2; + +/** A special register value representing the zero register. */ +const Register ZERO_REGISTER = {GENERAL, (uint16_t)-1}; } // namespace RegisterType /** A struct holding user-defined execution information for a aarch64 @@ -166,9 +169,6 @@ class Instruction : public simeng::Instruction { /** Retrieve the instruction's associated architecture. */ const Architecture& getArchitecture() const; - /** A special register value representing the zero register. */ - static const Register ZERO_REGISTER; - /** The maximum number of source registers any supported RISC-V instruction * can have. */ static const uint8_t MAX_SOURCE_REGISTERS = 3; diff --git a/src/lib/arch/aarch64/Instruction.cc b/src/lib/arch/aarch64/Instruction.cc index 8568480c55..8676dcb5e6 100644 --- a/src/lib/arch/aarch64/Instruction.cc +++ b/src/lib/arch/aarch64/Instruction.cc @@ -8,9 +8,6 @@ namespace simeng { namespace arch { namespace aarch64 { -const Register Instruction::ZERO_REGISTER = {RegisterType::GENERAL, - (uint16_t)-1}; - Instruction::Instruction(const Architecture& architecture, const InstructionMetadata& metadata, MicroOpInfo microOpInfo) diff --git a/src/lib/arch/aarch64/Instruction_decode.cc b/src/lib/arch/aarch64/Instruction_decode.cc index 092c65df09..03a6632f30 100644 --- a/src/lib/arch/aarch64/Instruction_decode.cc +++ b/src/lib/arch/aarch64/Instruction_decode.cc @@ -99,7 +99,7 @@ Register csRegToRegister(arm64_reg reg) { // ARM64_REG_WZR and _XZR are zero registers, and don't read if (reg == ARM64_REG_WZR || reg == ARM64_REG_XZR) { - return Instruction::ZERO_REGISTER; + return RegisterType::ZERO_REGISTER; } // ARM64_REG_SP and _WSP are stack pointer registers, stored in r31 of the @@ -188,8 +188,6 @@ void Instruction::decode() { return; } - uint16_t sourceRegisterCount = 0; - // Extract implicit writes for (size_t i = 0; i < metadata.implicitDestinationCount; i++) { destinationRegisters.push_back(csRegToRegister( @@ -201,7 +199,6 @@ void Instruction::decode() { sourceRegisters.push_back( csRegToRegister(static_cast(metadata.implicitSources[i]))); operandsPending++; - sourceRegisterCount++; } bool accessesMemory = false; @@ -243,7 +240,6 @@ void Instruction::decode() { // If WRITE, also need to add to source registers to maintain // unaltered row values sourceRegisters.push_back(regs[i]); - sourceRegisterCount++; operandsPending++; } } else { @@ -265,14 +261,12 @@ void Instruction::decode() { getZARowVectors(op.reg, architecture_.getStreamingVectorLength()); for (int i = 0; i < regs.size(); i++) { sourceRegisters.push_back(regs[i]); - sourceRegisterCount++; operandsPending++; } } else { // Add register reads to destinations sourceRegisters.push_back(csRegToRegister(op.reg)); operandsPending++; - sourceRegisterCount++; } if (op.shift.value > 0) isNoShift_ = false; // Identify shift operands } @@ -280,7 +274,6 @@ void Instruction::decode() { accessesMemory = true; sourceRegisters.push_back(csRegToRegister(op.mem.base)); operandsPending++; - sourceRegisterCount++; if (metadata.writeback) { // Writeback instructions modify the base address @@ -291,7 +284,6 @@ void Instruction::decode() { // Register offset; add to sources sourceRegisters.push_back(csRegToRegister(op.mem.index)); operandsPending++; - sourceRegisterCount++; } } else if (op.type == ARM64_OP_SME_INDEX) { // SME instruction with index std::vector regs; @@ -306,7 +298,6 @@ void Instruction::decode() { // un-updated rows for (int i = 0; i < regs.size(); i++) { sourceRegisters.push_back(regs[i]); - sourceRegisterCount++; operandsPending++; if (op.access & cs_ac_type::CS_AC_WRITE) { destinationRegisters.push_back(regs[i]); @@ -323,25 +314,21 @@ void Instruction::decode() { } else if (op.access & cs_ac_type::CS_AC_READ) { sourceRegisters.push_back(csRegToRegister(op.sme_index.reg)); operandsPending++; - sourceRegisterCount++; } } // Register that is base of index will always be a source operand sourceRegisters.push_back(csRegToRegister(op.sme_index.base)); operandsPending++; - sourceRegisterCount++; } else if (op.type == ARM64_OP_REG_MRS) { int32_t sysRegTag = architecture_.getSystemRegisterTag(op.imm); if (sysRegTag == -1) { exceptionEncountered_ = true; exception_ = InstructionException::UnmappedSysReg; // Clear any registered operands - sourceRegisterCount = 0; destinationRegisterCount = 0; } else { sourceRegisters.push_back( {RegisterType::SYSTEM, static_cast(sysRegTag)}); - sourceRegisterCount++; operandsPending++; } } else if (op.type == ARM64_OP_REG_MSR) { @@ -350,7 +337,6 @@ void Instruction::decode() { exceptionEncountered_ = true; exception_ = InstructionException::UnmappedSysReg; // Clear any registered operands - sourceRegisterCount = 0; destinationRegisterCount = 0; } else { destinationRegisters.push_back( @@ -649,12 +635,12 @@ void Instruction::decode() { // Allocate enough entries in results vector results.resize(destinationRegisterCount + zrDestRegs); // Allocate enough entries in the operands vector - operands.resize(sourceRegisterCount); + operands.resize(sourceRegisters.size()); // Catch zero register references and pre-complete those operands if (!(isSMEData_)) { - for (uint16_t i = 0; i < sourceRegisterCount; i++) { - if (sourceRegisters[i] == Instruction::ZERO_REGISTER) { + for (uint16_t i = 0; i < sourceRegisters.size(); i++) { + if (sourceRegisters[i] == RegisterType::ZERO_REGISTER) { operands[i] = RegisterValue(0, 8); operandsPending--; } diff --git a/src/lib/arch/riscv/Instruction.cc b/src/lib/arch/riscv/Instruction.cc index dc0a71c3c7..2c2eaf78cb 100644 --- a/src/lib/arch/riscv/Instruction.cc +++ b/src/lib/arch/riscv/Instruction.cc @@ -10,9 +10,6 @@ namespace simeng { namespace arch { namespace riscv { -const Register Instruction::ZERO_REGISTER = {RegisterType::GENERAL, - (uint16_t)-1}; - Instruction::Instruction(const Architecture& architecture, const InstructionMetadata& metadata) : architecture_(architecture), diff --git a/src/lib/arch/riscv/Instruction_decode.cc b/src/lib/arch/riscv/Instruction_decode.cc index 18c024eded..d997ff5b7d 100644 --- a/src/lib/arch/riscv/Instruction_decode.cc +++ b/src/lib/arch/riscv/Instruction_decode.cc @@ -52,7 +52,7 @@ Register csRegToRegister(unsigned int reg) { if (reg == RISCV_REG_X0) { // Zero register - return Instruction::ZERO_REGISTER; + return RegisterType::ZERO_REGISTER; } assert(false && "Decoding failed due to unknown register identifier"); @@ -148,7 +148,7 @@ void Instruction::decode() { sourceRegisters[sourceRegisterCount] = csRegToRegister(op.reg); if (sourceRegisters[sourceRegisterCount] == - Instruction::ZERO_REGISTER) { + RegisterType::ZERO_REGISTER) { // Catch zero register references and pre-complete those operands operands[sourceRegisterCount] = RegisterValue(0, 8); } else { @@ -157,7 +157,7 @@ void Instruction::decode() { sourceRegisterCount++; } else { - if (csRegToRegister(op.reg) != Instruction::ZERO_REGISTER) { + if (csRegToRegister(op.reg) != RegisterType::ZERO_REGISTER) { destinationRegisters[destinationRegisterCount] = csRegToRegister(op.reg); @@ -190,7 +190,7 @@ void Instruction::decode() { // Second or third operand sourceRegisters[sourceRegisterCount] = csRegToRegister(op.reg); - if (sourceRegisters[sourceRegisterCount] == Instruction::ZERO_REGISTER) { + if (sourceRegisters[sourceRegisterCount] == RegisterType::ZERO_REGISTER) { // Catch zero register references and pre-complete those operands operands[sourceRegisterCount] = RegisterValue(0, 8); } else { diff --git a/src/lib/config/ModelConfig.cc b/src/lib/config/ModelConfig.cc index 1e7f0014f3..85489385b7 100644 --- a/src/lib/config/ModelConfig.cc +++ b/src/lib/config/ModelConfig.cc @@ -649,7 +649,7 @@ void ModelConfig::setExpectations(bool isDefault) { expectations_.addChild(ExpectationNode::createExpectation("CPU-Info")); expectations_["CPU-Info"].addChild(ExpectationNode::createExpectation( - false, "Generate-Special-Dir", true)); + true, "Generate-Special-Dir", true)); expectations_["CPU-Info"]["Generate-Special-Dir"].setValueSet( std::vector{false, true}); diff --git a/test/integration/ConfigTest.cc b/test/integration/ConfigTest.cc index e142735727..ed0f4124de 100644 --- a/test/integration/ConfigTest.cc +++ b/test/integration/ConfigTest.cc @@ -68,7 +68,7 @@ TEST(ConfigTest, Default) { " 'Instruction-Groups':\n - NONE\n 'Instruction-Opcodes':\n " " - 6343\n 'Execution-Latency': 1\n 'Execution-Throughput': 1\n " " 'Instruction-Group-Nums':\n - 87\n'CPU-Info':\n " - "'Generate-Special-Dir': 0\n 'Special-File-Dir-Path': " SIMENG_BUILD_DIR + "'Generate-Special-Dir': 1\n 'Special-File-Dir-Path': " SIMENG_BUILD_DIR "/specialFiles/\n 'Core-Count': 1\n 'Socket-Count': 1\n " "SMT: 1\n BogoMIPS: 0\n Features: ''\n 'CPU-Implementer': 0x0\n " "'CPU-Architecture': 0\n 'CPU-Variant': 0x0\n 'CPU-Part': 0x0\n " @@ -123,7 +123,7 @@ TEST(ConfigTest, Default) { " 'Instruction-Groups':\n - NONE\n 'Instruction-Opcodes':\n " " - 450\n 'Execution-Latency': 1\n 'Execution-Throughput': 1\n " "'Instruction-Group-Nums':\n - 24\n'CPU-Info':\n " - "'Generate-Special-Dir': 0\n 'Special-File-Dir-Path': " SIMENG_BUILD_DIR + "'Generate-Special-Dir': 1\n 'Special-File-Dir-Path': " SIMENG_BUILD_DIR "/specialFiles/\n 'Core-Count': 1\n 'Socket-Count': 1\n " "SMT: 1\n BogoMIPS: 0\n Features: ''\n 'CPU-Implementer': 0x0\n " "'CPU-Architecture': 0\n 'CPU-Variant': 0x0\n 'CPU-Part': 0x0\n " From c9991770d453fba468876e72b95a9b8ac2e5ade0 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 26 Jan 2024 08:58:47 +0000 Subject: [PATCH 93/96] Minor changes. --- src/lib/arch/aarch64/Instruction.cc | 12 ++++++++---- src/lib/arch/aarch64/Instruction_decode.cc | 6 ++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/lib/arch/aarch64/Instruction.cc b/src/lib/arch/aarch64/Instruction.cc index 8676dcb5e6..df4e55c07f 100644 --- a/src/lib/arch/aarch64/Instruction.cc +++ b/src/lib/arch/aarch64/Instruction.cc @@ -43,8 +43,10 @@ const span Instruction::getSourceOperands() const { } const span Instruction::getDestinationRegisters() const { - // destinationRegisterCount used as there may be +n in destinationRegisters - // vector for any zero destinations - these can't be written to. + // The `destinationRegisterCount` is used here as the span count value because + // there may be n number of zero registers in the latter indexes of the + // `destinationRegisters` vector. These cannot be written to and hence + // shouldn't be included in the returned span. return {const_cast(destinationRegisters.data()), destinationRegisterCount}; } @@ -96,8 +98,10 @@ span Instruction::getData() const { bool Instruction::canExecute() const { return (operandsPending == 0); } const span Instruction::getResults() const { - // destinationRegisterCount used as there may be +n in results vector for any - // zero destinations - these can't be written to. + // The `destinationRegisterCount` is used here as the span count value because + // there may be n number of values attributed to zero registers in the latter + // indexes of the `results` vector. Zero registers cannot be written to and + // hence shouldn't be included in the returned span. return {const_cast(results.data()), destinationRegisterCount}; } diff --git a/src/lib/arch/aarch64/Instruction_decode.cc b/src/lib/arch/aarch64/Instruction_decode.cc index 03a6632f30..bc90f8a2f9 100644 --- a/src/lib/arch/aarch64/Instruction_decode.cc +++ b/src/lib/arch/aarch64/Instruction_decode.cc @@ -324,8 +324,7 @@ void Instruction::decode() { if (sysRegTag == -1) { exceptionEncountered_ = true; exception_ = InstructionException::UnmappedSysReg; - // Clear any registered operands - destinationRegisterCount = 0; + return; } else { sourceRegisters.push_back( {RegisterType::SYSTEM, static_cast(sysRegTag)}); @@ -336,8 +335,7 @@ void Instruction::decode() { if (sysRegTag == -1) { exceptionEncountered_ = true; exception_ = InstructionException::UnmappedSysReg; - // Clear any registered operands - destinationRegisterCount = 0; + return; } else { destinationRegisters.push_back( {RegisterType::SYSTEM, static_cast(sysRegTag)}); From 9d6e5819f504f4c26643a274961312b73c1c2f5f Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 2 Feb 2024 09:34:45 +0000 Subject: [PATCH 94/96] Changes for PR comments. --- .../simeng/arch/aarch64/helpers/load.hh | 9 -- .../simeng/arch/aarch64/helpers/store.hh | 9 -- src/include/simeng/arch/riscv/Instruction.hh | 2 +- src/lib/arch/aarch64/Instruction_execute.cc | 2 - test/unit/FixedLatencyMemoryInterfaceTest.cc | 86 +++++++++++++++++-- test/unit/FlatMemoryInterfaceTest.cc | 4 +- 6 files changed, 80 insertions(+), 32 deletions(-) delete mode 100644 src/include/simeng/arch/aarch64/helpers/load.hh delete mode 100644 src/include/simeng/arch/aarch64/helpers/store.hh diff --git a/src/include/simeng/arch/aarch64/helpers/load.hh b/src/include/simeng/arch/aarch64/helpers/load.hh deleted file mode 100644 index aac46622bf..0000000000 --- a/src/include/simeng/arch/aarch64/helpers/load.hh +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include "auxiliaryFunctions.hh" - -namespace simeng { -namespace arch { -namespace aarch64 {} // namespace aarch64 -} // namespace arch -} // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/aarch64/helpers/store.hh b/src/include/simeng/arch/aarch64/helpers/store.hh deleted file mode 100644 index aac46622bf..0000000000 --- a/src/include/simeng/arch/aarch64/helpers/store.hh +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include "auxiliaryFunctions.hh" - -namespace simeng { -namespace arch { -namespace aarch64 {} // namespace aarch64 -} // namespace arch -} // namespace simeng \ No newline at end of file diff --git a/src/include/simeng/arch/riscv/Instruction.hh b/src/include/simeng/arch/riscv/Instruction.hh index 33e5b05e7f..b3064d6b48 100644 --- a/src/include/simeng/arch/riscv/Instruction.hh +++ b/src/include/simeng/arch/riscv/Instruction.hh @@ -25,7 +25,7 @@ const uint8_t FLOAT = 1; const uint8_t SYSTEM = 2; /** A special register value representing the zero register. */ -const Register ZERO_REGISTER = {GENERAL, (uint16_t)-1}; +const Register ZERO_REGISTER = {GENERAL, (uint16_t)0}; } // namespace RegisterType /** A struct holding user-defined execution information for a aarch64 diff --git a/src/lib/arch/aarch64/Instruction_execute.cc b/src/lib/arch/aarch64/Instruction_execute.cc index ea0fff265d..7f75fb4340 100644 --- a/src/lib/arch/aarch64/Instruction_execute.cc +++ b/src/lib/arch/aarch64/Instruction_execute.cc @@ -10,11 +10,9 @@ #include "simeng/arch/aarch64/helpers/conditional.hh" #include "simeng/arch/aarch64/helpers/divide.hh" #include "simeng/arch/aarch64/helpers/float.hh" -#include "simeng/arch/aarch64/helpers/load.hh" #include "simeng/arch/aarch64/helpers/logical.hh" #include "simeng/arch/aarch64/helpers/multiply.hh" #include "simeng/arch/aarch64/helpers/neon.hh" -#include "simeng/arch/aarch64/helpers/store.hh" #include "simeng/arch/aarch64/helpers/sve.hh" namespace simeng { diff --git a/test/unit/FixedLatencyMemoryInterfaceTest.cc b/test/unit/FixedLatencyMemoryInterfaceTest.cc index e2f4c6f1c0..3f1a573573 100644 --- a/test/unit/FixedLatencyMemoryInterfaceTest.cc +++ b/test/unit/FixedLatencyMemoryInterfaceTest.cc @@ -5,12 +5,11 @@ namespace { class FixedLatencyMemoryInterfaceTest : public testing::Test { public: - FixedLatencyMemoryInterfaceTest() + FixedLatencyMemoryInterfaceTest(const uint16_t latency) : memory(memoryData.data(), memorySize, latency) {} protected: static constexpr uint16_t memorySize = 4; - const uint16_t latency = 2; std::array memoryData = {(char)0xFE, (char)0xCA, (char)0xBA, (char)0xAB}; @@ -26,8 +25,24 @@ class FixedLatencyMemoryInterfaceTest : public testing::Test { simeng::FixedLatencyMemoryInterface memory; }; -// Test that we can read data and it completes after a number of cycles. -TEST_F(FixedLatencyMemoryInterfaceTest, FixedReadData) { +// Test class definition for a fixed latency memory interface with a latency of +// 2 cycles +class FixedLatencyMemoryInterfaceTest_2 + : public FixedLatencyMemoryInterfaceTest { + public: + FixedLatencyMemoryInterfaceTest_2() : FixedLatencyMemoryInterfaceTest(2) {} +}; + +// Test class definition for a fixed latency memory interface with a latency of +// 4 cycles +class FixedLatencyMemoryInterfaceTest_4 + : public FixedLatencyMemoryInterfaceTest { + public: + FixedLatencyMemoryInterfaceTest_4() : FixedLatencyMemoryInterfaceTest(4) {} +}; + +// Test that we can read data and it completes after two cycles. +TEST_F(FixedLatencyMemoryInterfaceTest_2, FixedReadData) { // Read a 32-bit value memory.requestRead(target, 1); EXPECT_TRUE(memory.hasPendingRequests()); @@ -47,8 +62,8 @@ TEST_F(FixedLatencyMemoryInterfaceTest, FixedReadData) { EXPECT_EQ(entries[0].target, target); } -// Test that we can write data and it completes after a number of cycles. -TEST_F(FixedLatencyMemoryInterfaceTest, FixedWriteData) { +// Test that we can write data and it completes after two cycles. +TEST_F(FixedLatencyMemoryInterfaceTest_2, FixedWriteData) { // Write a 32-bit value to memory memory.requestWrite(target, value); EXPECT_TRUE(memory.hasPendingRequests()); @@ -63,8 +78,61 @@ TEST_F(FixedLatencyMemoryInterfaceTest, FixedWriteData) { EXPECT_EQ(reinterpret_cast(memoryData.data())[0], 0xDEADBEEF); } +// Test that we can read data and it completes after four cycles. +TEST_F(FixedLatencyMemoryInterfaceTest_4, FixedReadData) { + // Read a 32-bit value + memory.requestRead(target, 1); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick once - request should still be pending + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick again - request should still be pending + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick again - request should still be pending + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick again - request should have completed + memory.tick(); + EXPECT_FALSE(memory.hasPendingRequests()); + + auto entries = memory.getCompletedReads(); + EXPECT_EQ(entries.size(), 1); + EXPECT_EQ(entries[0].requestId, 1); + EXPECT_EQ(entries[0].data, simeng::RegisterValue(0xABBACAFE, 4)); + EXPECT_EQ(entries[0].target, target); +} + +// Test that we can write data and it completes after four cycles. +TEST_F(FixedLatencyMemoryInterfaceTest_4, FixedWriteData) { + // Write a 32-bit value to memory + memory.requestWrite(target, value); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick once - request should still be pending + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick again - request should still be pending + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick again - request should still be pending + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + + // Tick again - request should have completed + memory.tick(); + EXPECT_FALSE(memory.hasPendingRequests()); + EXPECT_EQ(reinterpret_cast(memoryData.data())[0], 0xDEADBEEF); +} + // Test that out-of-bounds memory reads are correctly handled. -TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsRead) { +TEST_F(FixedLatencyMemoryInterfaceTest_2, OutofBoundsRead) { // Create a target such that address + size will overflow memory.requestRead(target_OutOfBound1, 1); @@ -94,7 +162,7 @@ TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsRead) { } // Test that out-of-bounds memory writes are correctly handled. -TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsWrite_1) { +TEST_F(FixedLatencyMemoryInterfaceTest_2, OutofBoundsWrite_1) { // Create a target such that address + size will overflow memory.requestWrite(target_OutOfBound1, value); @@ -107,7 +175,7 @@ TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsWrite_1) { } // Test that out-of-bounds memory writes are correctly handled. -TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsWrite_2) { +TEST_F(FixedLatencyMemoryInterfaceTest_2, OutofBoundsWrite_2) { // Create a regular out-of-bounds target memory.requestWrite(target_OutOfBound2, value_oversized); diff --git a/test/unit/FlatMemoryInterfaceTest.cc b/test/unit/FlatMemoryInterfaceTest.cc index e8025a2e80..2348588ec5 100644 --- a/test/unit/FlatMemoryInterfaceTest.cc +++ b/test/unit/FlatMemoryInterfaceTest.cc @@ -24,7 +24,7 @@ class FlatMemoryInterfaceTest : public testing::Test { simeng::FlatMemoryInterface memory; }; -// Test that we can read data and it completes after a number of cycles. +// Test that we can read data and it completes after zero cycles. TEST_F(FlatMemoryInterfaceTest, FixedReadData) { // Read a 32-bit value memory.requestRead(target, 1); @@ -35,7 +35,7 @@ TEST_F(FlatMemoryInterfaceTest, FixedReadData) { EXPECT_EQ(entries[0].target, target); } -// Test that we can write data and it completes after a number of cycles. +// Test that we can write data and it completes after zero cycles. TEST_F(FlatMemoryInterfaceTest, FixedWriteData) { // Write a 32-bit value to memory memory.requestWrite(target, value); From 3e29b10fcc6dac40acd5438c8912af0a2337f764 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 2 Feb 2024 10:14:31 +0000 Subject: [PATCH 95/96] Updated how latency is provided to mem interface in FixedLatencyMemoryInterface unit tests. --- test/unit/FixedLatencyMemoryInterfaceTest.cc | 48 +++++++++----------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/test/unit/FixedLatencyMemoryInterfaceTest.cc b/test/unit/FixedLatencyMemoryInterfaceTest.cc index 3f1a573573..cd492e1945 100644 --- a/test/unit/FixedLatencyMemoryInterfaceTest.cc +++ b/test/unit/FixedLatencyMemoryInterfaceTest.cc @@ -5,10 +5,15 @@ namespace { class FixedLatencyMemoryInterfaceTest : public testing::Test { public: - FixedLatencyMemoryInterfaceTest(const uint16_t latency) - : memory(memoryData.data(), memorySize, latency) {} + FixedLatencyMemoryInterfaceTest() {} protected: + // Function to construct the FixedLatencyMemoryInterface with a given latency. + simeng::FixedLatencyMemoryInterface getMemInterface(const uint16_t latency) { + return simeng::FixedLatencyMemoryInterface(memoryData.data(), memorySize, + latency); + } + static constexpr uint16_t memorySize = 4; std::array memoryData = {(char)0xFE, (char)0xCA, (char)0xBA, (char)0xAB}; @@ -21,28 +26,11 @@ class FixedLatencyMemoryInterfaceTest : public testing::Test { const std::string writeOverflowStr = "Attempted to write beyond memory limit."; - - simeng::FixedLatencyMemoryInterface memory; -}; - -// Test class definition for a fixed latency memory interface with a latency of -// 2 cycles -class FixedLatencyMemoryInterfaceTest_2 - : public FixedLatencyMemoryInterfaceTest { - public: - FixedLatencyMemoryInterfaceTest_2() : FixedLatencyMemoryInterfaceTest(2) {} -}; - -// Test class definition for a fixed latency memory interface with a latency of -// 4 cycles -class FixedLatencyMemoryInterfaceTest_4 - : public FixedLatencyMemoryInterfaceTest { - public: - FixedLatencyMemoryInterfaceTest_4() : FixedLatencyMemoryInterfaceTest(4) {} }; // Test that we can read data and it completes after two cycles. -TEST_F(FixedLatencyMemoryInterfaceTest_2, FixedReadData) { +TEST_F(FixedLatencyMemoryInterfaceTest, FixedReadData_2cycles) { + simeng::FixedLatencyMemoryInterface memory = getMemInterface(2); // Read a 32-bit value memory.requestRead(target, 1); EXPECT_TRUE(memory.hasPendingRequests()); @@ -63,7 +51,8 @@ TEST_F(FixedLatencyMemoryInterfaceTest_2, FixedReadData) { } // Test that we can write data and it completes after two cycles. -TEST_F(FixedLatencyMemoryInterfaceTest_2, FixedWriteData) { +TEST_F(FixedLatencyMemoryInterfaceTest, FixedWriteData_2cycles) { + simeng::FixedLatencyMemoryInterface memory = getMemInterface(2); // Write a 32-bit value to memory memory.requestWrite(target, value); EXPECT_TRUE(memory.hasPendingRequests()); @@ -79,7 +68,8 @@ TEST_F(FixedLatencyMemoryInterfaceTest_2, FixedWriteData) { } // Test that we can read data and it completes after four cycles. -TEST_F(FixedLatencyMemoryInterfaceTest_4, FixedReadData) { +TEST_F(FixedLatencyMemoryInterfaceTest, FixedReadData_4cycles) { + simeng::FixedLatencyMemoryInterface memory = getMemInterface(4); // Read a 32-bit value memory.requestRead(target, 1); EXPECT_TRUE(memory.hasPendingRequests()); @@ -108,7 +98,8 @@ TEST_F(FixedLatencyMemoryInterfaceTest_4, FixedReadData) { } // Test that we can write data and it completes after four cycles. -TEST_F(FixedLatencyMemoryInterfaceTest_4, FixedWriteData) { +TEST_F(FixedLatencyMemoryInterfaceTest, FixedWriteData_4cycles) { + simeng::FixedLatencyMemoryInterface memory = getMemInterface(4); // Write a 32-bit value to memory memory.requestWrite(target, value); EXPECT_TRUE(memory.hasPendingRequests()); @@ -132,7 +123,8 @@ TEST_F(FixedLatencyMemoryInterfaceTest_4, FixedWriteData) { } // Test that out-of-bounds memory reads are correctly handled. -TEST_F(FixedLatencyMemoryInterfaceTest_2, OutofBoundsRead) { +TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsRead) { + simeng::FixedLatencyMemoryInterface memory = getMemInterface(2); // Create a target such that address + size will overflow memory.requestRead(target_OutOfBound1, 1); @@ -162,7 +154,8 @@ TEST_F(FixedLatencyMemoryInterfaceTest_2, OutofBoundsRead) { } // Test that out-of-bounds memory writes are correctly handled. -TEST_F(FixedLatencyMemoryInterfaceTest_2, OutofBoundsWrite_1) { +TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsWrite_1) { + simeng::FixedLatencyMemoryInterface memory = getMemInterface(2); // Create a target such that address + size will overflow memory.requestWrite(target_OutOfBound1, value); @@ -175,7 +168,8 @@ TEST_F(FixedLatencyMemoryInterfaceTest_2, OutofBoundsWrite_1) { } // Test that out-of-bounds memory writes are correctly handled. -TEST_F(FixedLatencyMemoryInterfaceTest_2, OutofBoundsWrite_2) { +TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsWrite_2) { + simeng::FixedLatencyMemoryInterface memory = getMemInterface(2); // Create a regular out-of-bounds target memory.requestWrite(target_OutOfBound2, value_oversized); From 3c241625a6fb7332af2c3723f665749921cfafc1 Mon Sep 17 00:00:00 2001 From: Finn Wilkinson Date: Fri, 2 Feb 2024 10:38:42 +0000 Subject: [PATCH 96/96] Updated (again) how latency is provided to mem interface in FixedLatencyMemoryInterface unit tests. --- test/unit/FixedLatencyMemoryInterfaceTest.cc | 143 +++++++------------ 1 file changed, 50 insertions(+), 93 deletions(-) diff --git a/test/unit/FixedLatencyMemoryInterfaceTest.cc b/test/unit/FixedLatencyMemoryInterfaceTest.cc index cd492e1945..f5ea0d7581 100644 --- a/test/unit/FixedLatencyMemoryInterfaceTest.cc +++ b/test/unit/FixedLatencyMemoryInterfaceTest.cc @@ -3,17 +3,13 @@ namespace { -class FixedLatencyMemoryInterfaceTest : public testing::Test { +class FixedLatencyMemoryInterfaceTest + : public testing::TestWithParam { public: - FixedLatencyMemoryInterfaceTest() {} + FixedLatencyMemoryInterfaceTest() + : memory(memoryData.data(), memorySize, GetParam()) {} protected: - // Function to construct the FixedLatencyMemoryInterface with a given latency. - simeng::FixedLatencyMemoryInterface getMemInterface(const uint16_t latency) { - return simeng::FixedLatencyMemoryInterface(memoryData.data(), memorySize, - latency); - } - static constexpr uint16_t memorySize = 4; std::array memoryData = {(char)0xFE, (char)0xCA, (char)0xBA, (char)0xAB}; @@ -26,65 +22,22 @@ class FixedLatencyMemoryInterfaceTest : public testing::Test { const std::string writeOverflowStr = "Attempted to write beyond memory limit."; -}; - -// Test that we can read data and it completes after two cycles. -TEST_F(FixedLatencyMemoryInterfaceTest, FixedReadData_2cycles) { - simeng::FixedLatencyMemoryInterface memory = getMemInterface(2); - // Read a 32-bit value - memory.requestRead(target, 1); - EXPECT_TRUE(memory.hasPendingRequests()); - - // Tick once - request should still be pending - memory.tick(); - EXPECT_TRUE(memory.hasPendingRequests()); - - // Tick again - request should have completed - memory.tick(); - EXPECT_FALSE(memory.hasPendingRequests()); - - auto entries = memory.getCompletedReads(); - EXPECT_EQ(entries.size(), 1); - EXPECT_EQ(entries[0].requestId, 1); - EXPECT_EQ(entries[0].data, simeng::RegisterValue(0xABBACAFE, 4)); - EXPECT_EQ(entries[0].target, target); -} - -// Test that we can write data and it completes after two cycles. -TEST_F(FixedLatencyMemoryInterfaceTest, FixedWriteData_2cycles) { - simeng::FixedLatencyMemoryInterface memory = getMemInterface(2); - // Write a 32-bit value to memory - memory.requestWrite(target, value); - EXPECT_TRUE(memory.hasPendingRequests()); - - // Tick once - request should still be pending - memory.tick(); - EXPECT_TRUE(memory.hasPendingRequests()); - // Tick again - request should have completed - memory.tick(); - EXPECT_FALSE(memory.hasPendingRequests()); - EXPECT_EQ(reinterpret_cast(memoryData.data())[0], 0xDEADBEEF); -} + simeng::FixedLatencyMemoryInterface memory; +}; -// Test that we can read data and it completes after four cycles. -TEST_F(FixedLatencyMemoryInterfaceTest, FixedReadData_4cycles) { - simeng::FixedLatencyMemoryInterface memory = getMemInterface(4); +// Test that we can read data and it completes after n cycles. +TEST_P(FixedLatencyMemoryInterfaceTest, FixedReadData) { // Read a 32-bit value memory.requestRead(target, 1); EXPECT_TRUE(memory.hasPendingRequests()); - // Tick once - request should still be pending - memory.tick(); - EXPECT_TRUE(memory.hasPendingRequests()); - - // Tick again - request should still be pending - memory.tick(); - EXPECT_TRUE(memory.hasPendingRequests()); - - // Tick again - request should still be pending - memory.tick(); - EXPECT_TRUE(memory.hasPendingRequests()); + // Tick n-1 times - request should still be pending + uint16_t latency = GetParam(); + for (int n = 0; n < latency - 1; n++) { + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + } // Tick again - request should have completed memory.tick(); @@ -97,24 +50,18 @@ TEST_F(FixedLatencyMemoryInterfaceTest, FixedReadData_4cycles) { EXPECT_EQ(entries[0].target, target); } -// Test that we can write data and it completes after four cycles. -TEST_F(FixedLatencyMemoryInterfaceTest, FixedWriteData_4cycles) { - simeng::FixedLatencyMemoryInterface memory = getMemInterface(4); +// Test that we can write data and it completes after n cycles. +TEST_P(FixedLatencyMemoryInterfaceTest, FixedWriteData) { // Write a 32-bit value to memory memory.requestWrite(target, value); EXPECT_TRUE(memory.hasPendingRequests()); - // Tick once - request should still be pending - memory.tick(); - EXPECT_TRUE(memory.hasPendingRequests()); - - // Tick again - request should still be pending - memory.tick(); - EXPECT_TRUE(memory.hasPendingRequests()); - - // Tick again - request should still be pending - memory.tick(); - EXPECT_TRUE(memory.hasPendingRequests()); + // Tick n-1 times - request should still be pending + uint16_t latency = GetParam(); + for (int n = 0; n < latency - 1; n++) { + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + } // Tick again - request should have completed memory.tick(); @@ -123,19 +70,21 @@ TEST_F(FixedLatencyMemoryInterfaceTest, FixedWriteData_4cycles) { } // Test that out-of-bounds memory reads are correctly handled. -TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsRead) { - simeng::FixedLatencyMemoryInterface memory = getMemInterface(2); +TEST_P(FixedLatencyMemoryInterfaceTest, OutofBoundsRead) { // Create a target such that address + size will overflow memory.requestRead(target_OutOfBound1, 1); // Create a regular out-of-bounds target memory.requestRead(target_OutOfBound2, 2); - // Tick once - request shouldn't have completed - memory.tick(); - EXPECT_TRUE(memory.hasPendingRequests()); + // Tick n-1 times - request shouldn't have completed + uint16_t latency = GetParam(); + for (int n = 0; n < latency - 1; n++) { + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + } - // Tick twice - request should have completed + // Tick again - request should have completed memory.tick(); EXPECT_FALSE(memory.hasPendingRequests()); @@ -154,31 +103,39 @@ TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsRead) { } // Test that out-of-bounds memory writes are correctly handled. -TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsWrite_1) { - simeng::FixedLatencyMemoryInterface memory = getMemInterface(2); +TEST_P(FixedLatencyMemoryInterfaceTest, OutofBoundsWrite_1) { // Create a target such that address + size will overflow memory.requestWrite(target_OutOfBound1, value); - // Tick once - request shouldn't have completed - memory.tick(); - EXPECT_TRUE(memory.hasPendingRequests()); + // Tick n-1 times - request shouldn't have completed + uint16_t latency = GetParam(); + for (int n = 0; n < latency - 1; n++) { + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + } - // Tick twice - simulation should have come to a stop + // Tick again - simulation should have come to a stop ASSERT_DEATH(memory.tick(), writeOverflowStr); } // Test that out-of-bounds memory writes are correctly handled. -TEST_F(FixedLatencyMemoryInterfaceTest, OutofBoundsWrite_2) { - simeng::FixedLatencyMemoryInterface memory = getMemInterface(2); +TEST_P(FixedLatencyMemoryInterfaceTest, OutofBoundsWrite_2) { // Create a regular out-of-bounds target memory.requestWrite(target_OutOfBound2, value_oversized); - // Tick once - request shouldn't have completed - memory.tick(); - EXPECT_TRUE(memory.hasPendingRequests()); + // Tick n-1 times - request shouldn't have completed + uint16_t latency = GetParam(); + for (int n = 0; n < latency - 1; n++) { + memory.tick(); + EXPECT_TRUE(memory.hasPendingRequests()); + } - // Tick twice - simulation should have come to a stop + // Tick again - simulation should have come to a stop ASSERT_DEATH(memory.tick(), writeOverflowStr); } +INSTANTIATE_TEST_SUITE_P(FixedLatencyMemoryInterfaceTests, + FixedLatencyMemoryInterfaceTest, + ::testing::Values(2, 4)); + } // namespace

j;kZAf4h<^j?>1h!EBvAvR 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%0D98?eKq~4mO|SRrOsTA?RB_Pj9SEv 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