ab_riscv_primitives/instructions/v/
zvexx.rs1#[doc(hidden)]
4pub mod arith;
5#[doc(hidden)]
6pub mod carry;
7#[doc(hidden)]
8pub mod config;
9#[doc(hidden)]
10pub mod fixed_point;
11#[doc(hidden)]
12pub mod load;
13#[doc(hidden)]
14pub mod mask;
15#[doc(hidden)]
16pub mod muldiv;
17#[doc(hidden)]
18pub mod perm;
19#[doc(hidden)]
20pub mod reduction;
21#[doc(hidden)]
22pub mod store;
23#[doc(hidden)]
24pub mod widen_narrow;
25
26use crate::instructions::Instruction;
27use crate::instructions::v::Eew;
28use crate::instructions::v::zvexx::arith::ZveXxArithInstruction;
29use crate::instructions::v::zvexx::carry::ZveXxCarryInstruction;
30use crate::instructions::v::zvexx::config::ZveXxConfigInstruction;
31use crate::instructions::v::zvexx::fixed_point::ZveXxFixedPointInstruction;
32use crate::instructions::v::zvexx::load::{LoadStoreNreg, Nf, SegVmNf, ZveXxLoadInstruction};
33use crate::instructions::v::zvexx::mask::ZveXxMaskInstruction;
34use crate::instructions::v::zvexx::muldiv::ZveXxMulDivInstruction;
35use crate::instructions::v::zvexx::perm::ZveXxPermInstruction;
36use crate::instructions::v::zvexx::reduction::ZveXxReductionInstruction;
37use crate::instructions::v::zvexx::store::ZveXxStoreInstruction;
38use crate::instructions::v::zvexx::widen_narrow::ZveXxWidenNarrowInstruction;
39use crate::instructions::zicsr::ZicsrInstruction;
40use crate::registers::general_purpose::Register;
41use crate::registers::vector::VReg;
42use ab_riscv_macros::instruction;
43use core::fmt;
44
45#[instruction(
51 inherit = [
52 ZveXxConfigInstruction,
53 ZveXxLoadInstruction,
54 ZveXxStoreInstruction,
55 ZveXxArithInstruction,
56 ZveXxCarryInstruction,
57 ZveXxMulDivInstruction,
58 ZveXxWidenNarrowInstruction,
59 ZveXxFixedPointInstruction,
60 ZveXxMaskInstruction,
61 ZveXxReductionInstruction,
62 ZveXxPermInstruction,
63 ZicsrInstruction,
64 ],
65)]
66#[derive(Debug, Clone, Copy, PartialEq, Eq)]
67pub enum ZveXxInstruction<Reg> {}
68
69#[instruction]
70const impl<Reg> Instruction for ZveXxInstruction<Reg>
71where
72 Reg: [const] Register,
73{
74 type Reg = Reg;
75
76 #[inline(always)]
77 #[cfg_attr(feature = "no-panic", no_panic_const::no_panic(const))]
78 fn try_decode(instruction: u32) -> Option<Self> {
79 None
80 }
81
82 #[inline(always)]
83 fn alignment() -> u8 {
84 align_of::<u32>() as u8
85 }
86
87 #[inline(always)]
88 fn size(&self) -> u8 {
89 size_of::<u32>() as u8
90 }
91}
92
93#[instruction]
94impl<Reg> fmt::Display for ZveXxInstruction<Reg>
95where
96 Reg: fmt::Display + Copy,
97{
98 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
99 match self {}
100 }
101}