ab_riscv_interpreter/rv32/m/
zmmul.rs1use crate::{
4 ExecutableInstruction, ExecutableInstructionCsr, ExecutableInstructionOperands, ExecutionError,
5 RegisterFile, Rs1Rs2OperandValues, Rs1Rs2Operands,
6};
7use ab_riscv_macros::instruction_execution;
8use ab_riscv_primitives::prelude::*;
9use core::ops::ControlFlow;
10
11#[instruction_execution]
12impl<Reg> ExecutableInstructionOperands for Rv32ZmmulInstruction<Reg> where Reg: Register<Type = u32>
13{}
14
15#[instruction_execution]
16impl<Reg, ExtState, CustomError> ExecutableInstructionCsr<ExtState, CustomError>
17 for Rv32ZmmulInstruction<Reg>
18where
19 Reg: Register<Type = u32>,
20{
21}
22
23#[instruction_execution]
24impl<Reg, Regs, ExtState, Memory, PC, InstructionHandler, CustomError>
25 ExecutableInstruction<Regs, ExtState, Memory, PC, InstructionHandler, CustomError>
26 for Rv32ZmmulInstruction<Reg>
27where
28 Reg: Register<Type = u32>,
29{
30 #[inline(always)]
31 fn execute(
32 self,
33 Rs1Rs2OperandValues {
34 rs1_value,
35 rs2_value,
36 }: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>,
37 _regs: &mut Regs,
38 _ext_state: &mut ExtState,
39 _memory: &mut Memory,
40 _program_counter: &mut PC,
41 _system_instruction_handler: &mut InstructionHandler,
42 ) -> Result<
43 ControlFlow<(), (Self::Reg, <Self::Reg as Register>::Type)>,
44 ExecutionError<Reg::Type, CustomError>,
45 > {
46 Ok(ControlFlow::Continue(Default::default()))
47 }
48}