group micro ops by the instruction they come from when retiring
Some checks failed
/ test (pull_request) Failing after 3m56s
Some checks failed
/ test (pull_request) Failing after 3m56s
This commit is contained in:
parent
83b3f7bac9
commit
09c8c194e0
3 changed files with 286045 additions and 274549 deletions
|
|
@ -736,8 +736,8 @@ impl<'a, C: PhantomConstCpuConfig> MockNextPcState<'a, C> {
|
|||
}
|
||||
let insn = self.insns.insns.get(&self.next_pc).ok_or(())?;
|
||||
let fallthrough_pc = self.next_pc.wrapping_add(insn.size_in_bytes.into());
|
||||
let is_last_mop_index = self.next_mop_index + 1 >= insn.mops.len();
|
||||
let mut predicted_next_pc = if is_last_mop_index {
|
||||
let is_last_mop_in_insn = self.next_mop_index + 1 >= insn.mops.len();
|
||||
let mut predicted_next_pc = if is_last_mop_in_insn {
|
||||
fallthrough_pc
|
||||
} else {
|
||||
self.next_pc
|
||||
|
|
@ -768,11 +768,12 @@ impl<'a, C: PhantomConstCpuConfig> MockNextPcState<'a, C> {
|
|||
predicted_next_pc,
|
||||
size_in_bytes: insn.size_in_bytes.cast_to_static::<UInt<_>>(),
|
||||
is_first_mop_in_insn: self.next_mop_index == 0,
|
||||
is_last_mop_in_insn,
|
||||
mop,
|
||||
};
|
||||
println!("pushed to fetch queue: {mop:?}");
|
||||
self.fetch_queue.push_back(mop);
|
||||
if is_last_mop_index {
|
||||
if is_last_mop_in_insn {
|
||||
self.next_mop_index = 0;
|
||||
self.next_pc = predicted_next_pc;
|
||||
} else {
|
||||
|
|
@ -1637,6 +1638,7 @@ trait MockExecutionStateTrait: Default {
|
|||
predicted_next_pc,
|
||||
size_in_bytes,
|
||||
is_first_mop_in_insn: _,
|
||||
is_last_mop_in_insn: _,
|
||||
mop,
|
||||
} = mop;
|
||||
let fallthrough_pc = pc
|
||||
|
|
@ -2453,6 +2455,7 @@ impl<C: PhantomConstCpuConfig> MockLoadStoreUnitState<C> {
|
|||
predicted_next_pc,
|
||||
size_in_bytes,
|
||||
is_first_mop_in_insn,
|
||||
is_last_mop_in_insn,
|
||||
mop,
|
||||
} = mop;
|
||||
let mop = #[hdl(sim)]
|
||||
|
|
@ -2468,6 +2471,7 @@ impl<C: PhantomConstCpuConfig> MockLoadStoreUnitState<C> {
|
|||
predicted_next_pc,
|
||||
size_in_bytes,
|
||||
is_first_mop_in_insn,
|
||||
is_last_mop_in_insn,
|
||||
mop,
|
||||
};
|
||||
self.ops.push_back(MockLoadStoreOp {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue