From c72951a36d6cb9775dc1ecd9bc26bc13e796f10c Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Sat, 2 Jul 2022 13:45:09 -0700 Subject: Dropping the async interface, and adding some real uarch. --- aisa/simple-models.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 aisa/simple-models.cpp (limited to 'aisa/simple-models.cpp') diff --git a/aisa/simple-models.cpp b/aisa/simple-models.cpp new file mode 100644 index 0000000..b69dcb7 --- /dev/null +++ b/aisa/simple-models.cpp @@ -0,0 +1,49 @@ +#include +#include +#include +#include +#include +#include + +#include "aisa/aisa.h" +#include "aisa/simple-models.h" + +namespace aisa { + + bool TaskStack::pop_task() + { + if (tasks.empty()) + return false; + tasks.pop_back(); + return true; + } + + bool TaskStack::push_task(std::unique_ptr &&task) + { + tasks.emplace_back(std::move(task)); + return true; + } + + std::optional TaskStack::top_task() + { + if (tasks.empty()) + return {}; + return tasks.back().get(); + } + + std::optional VectorRF::load_reg(regnum_t rn) const + { + if (rf.size() <= rn) + return {}; + return rf[rn]; + } + + bool VectorRF::store_reg(regnum_t rn, regval_t rv) + { + if (rf.size() <= rn) + rf.resize(rn + 1); + rf[rn] = rv; + return true; + } + +} -- cgit v1.2.3