summaryrefslogtreecommitdiff
path: root/src/wb.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/wb.cc')
-rw-r--r--src/wb.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/wb.cc b/src/wb.cc
index cd24c6a..0dae5f2 100644
--- a/src/wb.cc
+++ b/src/wb.cc
@@ -45,13 +45,22 @@ void WB::write_handler()
// POP performs a second register write
reg = this->checked_out.front();
this->checked_out.pop_front();
- this->store_register(
+ this->store_register<signed int>(
reg, this->curr_instr->operands.integer.slot_three);
}
this->checked_out.pop_front();
reg = this->curr_instr->checked_out;
- this->store_register(reg, this->curr_instr->operands.integer.slot_one);
+
+ if(this->is_vector_type(this->curr_instr->mnemonic)) {
+ if(this->curr_instr->mnemonic != STOREV && this->curr_instr->mnemonic != LOADV) {
+ this->store_register<std::array<signed int, V_R_LIMIT>>(reg, this->curr_instr->operands.vector.slot_one);
+ } else {
+ this->store_register<std::array<signed int, V_R_LIMIT>>(reg, this->curr_instr->operands.load_store_vector.vector_register);
+ }
+ } else{
+ this->store_register<signed int>(reg, this->curr_instr->operands.integer.slot_one);
+ }
}
void WB::jump_handler()