Skip to main content

ab_riscv_primitives/instructions/rv32/zk/
zkn.rs

1//! RV32 Zkn extension
2
3pub mod zknd;
4pub mod zkne;
5pub mod zknh;
6
7use crate::instructions::Instruction;
8use crate::instructions::rv32::b::zbb::Rv32ZbbInstruction;
9use crate::instructions::rv32::b::zbc::Rv32ZbcInstruction;
10use crate::instructions::rv32::zk::zbkb::Rv32ZbkbInstruction;
11use crate::instructions::rv32::zk::zbkc::Rv32ZbkcInstruction;
12use crate::instructions::rv32::zk::zbkx::Rv32ZbkxInstruction;
13use crate::instructions::rv32::zk::zkn::zknd::{Rv32AesBs, Rv32ZkndInstruction};
14use crate::instructions::rv32::zk::zkn::zkne::Rv32ZkneInstruction;
15use crate::instructions::rv32::zk::zkn::zknh::Rv32ZknhInstruction;
16use crate::registers::general_purpose::Register;
17use ab_riscv_macros::instruction;
18use core::fmt;
19
20/// RISC-V RV32 Zkn (Zbkb + Zbkc + Zbkx + Zknd + Zkne + Zknh) instruction
21#[instruction(
22    inherit = [
23        Rv32ZbkbInstruction,
24        Rv32ZbkcInstruction,
25        Rv32ZbkxInstruction,
26        Rv32ZkndInstruction,
27        Rv32ZkneInstruction,
28        Rv32ZknhInstruction,
29    ]
30)]
31#[derive(Debug, Clone, Copy)]
32#[derive_const(PartialEq, Eq)]
33pub enum Rv32ZknInstruction<Reg> {}
34
35#[instruction]
36const impl<Reg> Instruction for Rv32ZknInstruction<Reg>
37where
38    Reg: [const] Register<Type = u32>,
39{
40    type Reg = Reg;
41
42    #[inline(always)]
43    #[cfg_attr(feature = "no-panic", no_panic_const::no_panic(const))]
44    fn try_decode(instruction: u32) -> Option<Self> {
45        None
46    }
47
48    #[inline(always)]
49    fn alignment() -> u8 {
50        align_of::<u32>() as u8
51    }
52
53    #[inline(always)]
54    fn size(&self) -> u8 {
55        size_of::<u32>() as u8
56    }
57}
58
59#[instruction]
60impl<Reg> fmt::Display for Rv32ZknInstruction<Reg>
61where
62    Reg: fmt::Display + Copy,
63{
64    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
65        match self {}
66    }
67}