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, ExecutionError, ProgramCounter, RegisterFile,
29    VirtualMemory,
30};
31use ab_riscv_macros::instruction_execution;
32use ab_riscv_primitives::prelude::*;
33use core::fmt;
34use core::ops::ControlFlow;
35
36#[instruction_execution]
37impl<Reg, Regs, ExtState, Memory, PC, InstructionHandler, CustomError>
38    ExecutableInstruction<Regs, ExtState, Memory, PC, InstructionHandler, CustomError>
39    for Zve64xInstruction<Reg>
40where
41    Reg: Register,
42{
43    #[inline(always)]
44    fn execute(
45        self,
46        regs: &mut Regs,
47        ext_state: &mut ExtState,
48        memory: &mut Memory,
49        program_counter: &mut PC,
50        _system_instruction_handler: &mut InstructionHandler,
51    ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>> {
52        Ok(ControlFlow::Continue(()))
53    }
54}