summaryrefslogtreecommitdiff
path: root/rtl/core/decode/data.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-10-17 01:25:42 -0600
committerAlejandro Soto <alejandro@34project.org>2022-10-17 01:25:42 -0600
commit1ca30fb3de058b9498f6a6bbc646b79978ece846 (patch)
tree9336889b1556563e3b8f6c328ae185aaa83895cb /rtl/core/decode/data.sv
parentb328dee91da704474509054043740128e5969c8b (diff)
Break false dependency on r0 for MOV/MVN
Diffstat (limited to 'rtl/core/decode/data.sv')
-rw-r--r--rtl/core/decode/data.sv11
1 files changed, 10 insertions, 1 deletions
diff --git a/rtl/core/decode/data.sv b/rtl/core/decode/data.sv
index cb21f5e..103fb14 100644
--- a/rtl/core/decode/data.sv
+++ b/rtl/core/decode/data.sv
@@ -10,7 +10,8 @@ module core_decode_data
snd_shift_by_reg_if_reg,
writeback,
update_flags,
- restore_spsr
+ restore_spsr,
+ uses_rn
);
alu_op op;
@@ -35,6 +36,14 @@ module core_decode_data
writeback = 1;
endcase
+ unique case(op)
+ `ALU_MOV, `ALU_MVN:
+ uses_rn = 0;
+
+ default:
+ uses_rn = 1;
+ endcase
+
update_flags = insn `FIELD_DATA_S;
restore_spsr = (rd == `R15) & update_flags;