Skip to main content

ab_riscv_primitives/instructions/v/
zve64x.rs

1//! Zve64x extension (Vector Extension for Embedded Processors, ELEN=64, integer-only)
2
3#[doc(hidden)]
4pub mod arith;
5#[doc(hidden)]
6pub mod config;
7#[doc(hidden)]
8pub mod fixed_point;
9#[doc(hidden)]
10pub mod load;
11#[doc(hidden)]
12pub mod mask;
13#[doc(hidden)]
14pub mod muldiv;
15#[doc(hidden)]
16pub mod perm;
17#[doc(hidden)]
18pub mod reduction;
19#[doc(hidden)]
20pub mod store;
21#[doc(hidden)]
22pub mod widen_narrow;
23
24use crate::instructions::Instruction;
25use crate::instructions::v::Eew;
26use crate::instructions::v::zve64x::arith::Zve64xArithInstruction;
27use crate::instructions::v::zve64x::config::Zve64xConfigInstruction;
28use crate::instructions::v::zve64x::fixed_point::Zve64xFixedPointInstruction;
29use crate::instructions::v::zve64x::load::Zve64xLoadInstruction;
30use crate::instructions::v::zve64x::mask::Zve64xMaskInstruction;
31use crate::instructions::v::zve64x::muldiv::Zve64xMulDivInstruction;
32use crate::instructions::v::zve64x::perm::Zve64xPermInstruction;
33use crate::instructions::v::zve64x::reduction::Zve64xReductionInstruction;
34use crate::instructions::v::zve64x::store::Zve64xStoreInstruction;
35use crate::instructions::v::zve64x::widen_narrow::Zve64xWidenNarrowInstruction;
36use crate::instructions::zicsr::ZicsrInstruction;
37use crate::registers::general_purpose::Register;
38use crate::registers::vector::VReg;
39use ab_riscv_macros::instruction;
40use core::fmt;
41
42/// RISC-V Zve64x instruction
43#[instruction(
44    ignore = [PhantomZve64xReduction],
45    inherit = [
46        Zve64xConfigInstruction,
47        Zve64xLoadInstruction,
48        Zve64xStoreInstruction,
49        Zve64xArithInstruction,
50        Zve64xMulDivInstruction,
51        Zve64xWidenNarrowInstruction,
52        Zve64xFixedPointInstruction,
53        Zve64xMaskInstruction,
54        Zve64xReductionInstruction,
55        Zve64xPermInstruction,
56        ZicsrInstruction,
57    ],
58)]
59#[derive(Debug, Clone, Copy, PartialEq, Eq)]
60pub enum Zve64xInstruction<Reg> {}
61
62#[instruction]
63impl<Reg> const Instruction for Zve64xInstruction<Reg>
64where
65    Reg: [const] Register,
66{
67    type Reg = Reg;
68
69    #[inline(always)]
70    fn try_decode(instruction: u32) -> Option<Self> {
71        None
72    }
73
74    #[inline(always)]
75    fn alignment() -> u8 {
76        size_of::<u32>() as u8
77    }
78
79    #[inline(always)]
80    fn size(&self) -> u8 {
81        size_of::<u32>() as u8
82    }
83}
84
85#[instruction]
86impl<Reg> fmt::Display for Zve64xInstruction<Reg>
87where
88    Reg: fmt::Display + Copy,
89{
90    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
91        match self {}
92    }
93}