Skip to main content

ab_riscv_primitives/instructions/rv64/zk/
zkn.rs

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