Skip to main content

ab_riscv_interpreter/v/
zve64x.rs

1//! Zve64x extension
2
3pub mod arith;
4pub mod config;
5pub mod fixed_point;
6pub mod load;
7pub mod mask;
8pub mod muldiv;
9pub mod perm;
10pub mod reduction;
11pub mod store;
12pub mod widen_narrow;
13pub mod zve64x_helpers;
14
15use crate::v::vector_registers::VectorRegistersExt;
16use crate::v::zve64x::arith::zve64x_arith_helpers;
17use crate::v::zve64x::config::zve64x_config_helpers;
18use crate::v::zve64x::fixed_point::zve64x_fixed_point_helpers;
19use crate::v::zve64x::load::zve64x_load_helpers;
20use crate::v::zve64x::mask::zve64x_mask_helpers;
21use crate::v::zve64x::muldiv::zve64x_muldiv_helpers;
22use crate::v::zve64x::perm::zve64x_perm_helpers;
23use crate::v::zve64x::reduction::zve64x_reduction_helpers;
24use crate::v::zve64x::store::zve64x_store_helpers;
25use crate::v::zve64x::widen_narrow::zve64x_widen_narrow_helpers;
26use crate::zicsr::zicsr_helpers;
27use crate::{
28    CsrError, Csrs, ExecutableInstruction, ExecutableInstructionCsr, ExecutableInstructionOperands,
29    ExecutionError, ProgramCounter, RegisterFile, Rs1Rs2OperandValues, Rs1Rs2Operands,
30    VirtualMemory,
31};
32use ab_riscv_macros::instruction_execution;
33use ab_riscv_primitives::prelude::*;
34use core::fmt;
35use core::ops::ControlFlow;
36
37#[instruction_execution]
38impl<Reg> ExecutableInstructionOperands for Zve64xInstruction<Reg> where Reg: Register {}
39
40#[instruction_execution]
41impl<Reg, ExtState, CustomError> ExecutableInstructionCsr<ExtState, CustomError>
42    for Zve64xInstruction<Reg>
43where
44    Reg: Register,
45{
46}
47
48#[instruction_execution]
49impl<Reg, Regs, ExtState, Memory, PC, InstructionHandler, CustomError>
50    ExecutableInstruction<Regs, ExtState, Memory, PC, InstructionHandler, CustomError>
51    for Zve64xInstruction<Reg>
52where
53    Reg: Register,
54{
55    #[inline(always)]
56    fn execute(
57        self,
58        Rs1Rs2OperandValues {
59            rs1_value,
60            rs2_value,
61        }: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>,
62        regs: &mut Regs,
63        ext_state: &mut ExtState,
64        memory: &mut Memory,
65        program_counter: &mut PC,
66        _system_instruction_handler: &mut InstructionHandler,
67    ) -> Result<
68        ControlFlow<(), (Self::Reg, <Self::Reg as Register>::Type)>,
69        ExecutionError<Reg::Type, CustomError>,
70    > {
71        Ok(ControlFlow::Continue(Default::default()))
72    }
73}