ab_riscv_interpreter/v/
zvexx.rs1pub mod arith;
4pub mod carry;
5pub mod config;
6pub mod fixed_point;
7pub mod load;
8pub mod mask;
9pub mod muldiv;
10pub mod perm;
11pub mod reduction;
12pub mod store;
13pub mod widen_narrow;
14pub mod zvexx_helpers;
15
16use crate::v::vector_registers::{VectorRegisters, VectorRegistersExt};
17use crate::v::zvexx::arith::zvexx_arith_helpers;
18use crate::v::zvexx::carry::zvexx_carry_helpers;
19use crate::v::zvexx::config::zvexx_config_helpers;
20use crate::v::zvexx::fixed_point::zvexx_fixed_point_helpers;
21use crate::v::zvexx::load::zvexx_load_helpers;
22use crate::v::zvexx::mask::zvexx_mask_helpers;
23use crate::v::zvexx::muldiv::zvexx_muldiv_helpers;
24use crate::v::zvexx::perm::zvexx_perm_helpers;
25use crate::v::zvexx::reduction::zvexx_reduction_helpers;
26use crate::v::zvexx::store::zvexx_store_helpers;
27use crate::v::zvexx::widen_narrow::zvexx_widen_narrow_helpers;
28use crate::zicsr::zicsr_helpers;
29use crate::{
30 CsrError, Csrs, ExecutableInstruction, ExecutableInstructionCsr, ExecutableInstructionOperands,
31 ExecutionError, ExecutionResult, FetchInstructionResult, InstructionFetcher,
32 OpaqueThreadedExecutionResult, PackedAddress, ProgramCounter, RegisterFile,
33 Rs1Rs2OperandValues, Rs1Rs2Operands, ThreadedExecutableInstruction, ThreadedExecutionResult,
34 VirtualMemory,
35};
36use ab_riscv_macros::instruction_execution;
37use ab_riscv_primitives::prelude::*;
38
39#[instruction_execution]
40const impl<Reg, Hart> ExecutableInstructionOperands for ZveXxInstruction<Hart>
41where
42 Reg: Register,
43 Hart: VectorHartConfig<Reg = Reg>,
44{
45}
46
47#[instruction_execution]
48const impl<Reg, Hart, Env> ExecutableInstructionCsr<Env> for ZveXxInstruction<Hart>
49where
50 Reg: Register,
51 Hart: VectorHartConfig<Reg = Reg>,
52{
53}
54
55#[instruction_execution]
56impl<Reg, Hart, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC>
57 for ZveXxInstruction<Hart>
58where
59 Reg: Register,
60 Hart: VectorHartConfig<Reg = Reg>,
61{
62 #[inline(always)]
63 #[cfg_attr(feature = "no-panic", no_panic_const::no_panic)]
64 fn execute(
65 self,
66 Rs1Rs2OperandValues {
67 rs1_value,
68 rs2_value,
69 }: Rs1Rs2OperandValues<Reg::Type>,
70 _regs: &mut Regs,
71 env: &mut Env,
72 memory: &mut Memory,
73 program_counter: &PC,
74 ) -> ExecutionResult<Reg> {
75 ExecutionResult::ContinueNoWrite
76 }
77}