summaryrefslogtreecommitdiff
path: root/aisa/simple-models.h
diff options
context:
space:
mode:
authorJulian Blake Kongslie2022-07-02 13:45:09 -0700
committerJulian Blake Kongslie2022-07-02 13:45:09 -0700
commitc72951a36d6cb9775dc1ecd9bc26bc13e796f10c (patch)
tree5a8fe196beba5c7c674d1b3d627c9a0beac849f5 /aisa/simple-models.h
parentTrivial code reorg. (diff)
downloadissim-c72951a36d6cb9775dc1ecd9bc26bc13e796f10c.tar.xz
Dropping the async interface, and adding some real uarch.
Diffstat (limited to '')
-rw-r--r--aisa/simple-models.h39
1 files changed, 5 insertions, 34 deletions
diff --git a/aisa/simple-models.h b/aisa/simple-models.h
index 62b5388..a94f010 100644
--- a/aisa/simple-models.h
+++ b/aisa/simple-models.h
@@ -7,7 +7,6 @@
7#include <map> 7#include <map>
8#include <memory> 8#include <memory>
9#include <optional> 9#include <optional>
10#include <utility>
11#include <vector> 10#include <vector>
12 11
13#include "aisa/aisa.h" 12#include "aisa/aisa.h"
@@ -51,45 +50,17 @@ namespace aisa {
51 struct TaskStack { 50 struct TaskStack {
52 std::deque<std::unique_ptr<const Task>> tasks; 51 std::deque<std::unique_ptr<const Task>> tasks;
53 52
54 bool pop_task() 53 bool pop_task();
55 { 54 bool push_task(std::unique_ptr<const Task> &&task);
56 if (tasks.empty())
57 return false;
58 tasks.pop_back();
59 return true;
60 }
61
62 bool push_task(std::unique_ptr<const Task> &&task)
63 {
64 tasks.emplace_back(std::move(task));
65 return true;
66 }
67 55
68 std::optional<const Task *> top_task() 56 std::optional<const Task *> top_task();
69 {
70 if (tasks.empty())
71 return {};
72 return tasks.back().get();
73 }
74 }; 57 };
75 58
76 struct VectorRF { 59 struct VectorRF {
77 std::vector<std::optional<regval_t>> rf; 60 std::vector<std::optional<regval_t>> rf;
78 61
79 std::optional<regval_t> load_reg(regnum_t rn) const 62 std::optional<regval_t> load_reg(regnum_t rn) const;
80 { 63 bool store_reg(regnum_t rn, regval_t rv);
81 if (rf.size() <= rn)
82 return {};
83 return rf[rn];
84 }
85
86 bool store_reg(regnum_t rn, regval_t rv)
87 {
88 if (rf.size() <= rn)
89 rf.resize(rn + 1);
90 rf[rn] = rv;
91 return true;
92 }
93 }; 64 };
94 65
95} 66}