summaryrefslogtreecommitdiff
path: root/aisa/aisa.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--aisa/aisa.h20
1 files changed, 3 insertions, 17 deletions
diff --git a/aisa/aisa.h b/aisa/aisa.h
index e4e1074..a986cd7 100644
--- a/aisa/aisa.h
+++ b/aisa/aisa.h
@@ -17,7 +17,7 @@ namespace aisa {
17 struct Task; 17 struct Task;
18 18
19 struct ISA { 19 struct ISA {
20 virtual ~ISA() { } 20 virtual ~ISA();
21 21
22 virtual std::pair<std::unique_ptr<const Task>, regval_t> initial_task() const = 0; 22 virtual std::pair<std::unique_ptr<const Task>, regval_t> initial_task() const = 0;
23 }; 23 };
@@ -27,7 +27,7 @@ namespace aisa {
27 struct Task { 27 struct Task {
28 regnum_t environment; 28 regnum_t environment;
29 29
30 virtual ~Task() { } 30 virtual ~Task();
31 31
32 virtual std::string disasm() const = 0; 32 virtual std::string disasm() const = 0;
33 33
@@ -58,24 +58,10 @@ namespace aisa {
58 std::vector<regnum_t> source_regs; 58 std::vector<regnum_t> source_regs;
59 std::vector<regnum_t> destination_regs; 59 std::vector<regnum_t> destination_regs;
60 60
61 virtual ~Step() { } 61 virtual ~Step();
62 62
63 virtual std::string disasm(const Wires *w = nullptr) const = 0; 63 virtual std::string disasm(const Wires *w = nullptr) const = 0;
64 64
65 std::optional<regnum_t> predicate_reg() const
66 {
67 if (predicate.has_value())
68 return predicate->first;
69 return {};
70 }
71
72 std::optional<regnum_t> expected_predicate_val() const
73 {
74 if (predicate.has_value())
75 return predicate->second;
76 return {};
77 }
78
79 MOp mop = MOp::NONE; 65 MOp mop = MOp::NONE;
80 66
81 virtual MemInfo meminfo(const Wires &wires) const; 67 virtual MemInfo meminfo(const Wires &wires) const;