Skip to main content

ab_riscv_interpreter/rv64/zk/
zbkc.rs

1//! Zbkc extension (subset of Zbc extension)
2
3use crate::rv64::Rv64InterpreterState;
4#[cfg(any(miri, not(all(target_arch = "riscv64", target_feature = "zbc"))))]
5use crate::rv64::b::zbc::clmul_internal;
6use crate::{ExecutableInstruction, ExecutionError};
7use ab_riscv_macros::instruction_execution;
8use ab_riscv_primitives::instruction::rv64::zk::zbkc::Rv64ZbkcInstruction;
9use ab_riscv_primitives::registers::Register;
10use core::ops::ControlFlow;
11
12#[instruction_execution]
13impl<Reg, Memory, PC, InstructionHandler, CustomError>
14    ExecutableInstruction<
15        Rv64InterpreterState<Reg, Memory, PC, InstructionHandler, CustomError>,
16        CustomError,
17    > for Rv64ZbkcInstruction<Reg>
18where
19    Reg: Register<Type = u64>,
20    [(); Reg::N]:,
21{
22    #[inline(always)]
23    fn execute(
24        self,
25        state: &mut Rv64InterpreterState<Reg, Memory, PC, InstructionHandler, CustomError>,
26    ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, Self, CustomError>> {
27        Ok(ControlFlow::Continue(()))
28    }
29}