pub trait Hal {
type Elem: Elem + RootsOfUnity;
type ExtElem: ExtElem<SubElem = Self::Elem>;
type BufferDigest: Buffer<Digest>;
type BufferElem: Buffer<Self::Elem>;
type BufferExtElem: Buffer<Self::ExtElem>;
type BufferU32: Buffer<u32>;
const CHECK_SIZE: usize = _;
Show 21 methods
fn alloc_digest(&self, name: &'static str, size: usize) -> Self::BufferDigest;
fn alloc_elem(&self, name: &'static str, size: usize) -> Self::BufferElem;
fn alloc_extelem(
&self,
name: &'static str,
size: usize
) -> Self::BufferExtElem;
fn alloc_u32(&self, name: &'static str, size: usize) -> Self::BufferU32;
fn copy_from_digest(
&self,
name: &'static str,
slice: &[Digest]
) -> Self::BufferDigest;
fn copy_from_elem(
&self,
name: &'static str,
slice: &[Self::Elem]
) -> Self::BufferElem;
fn copy_from_extelem(
&self,
name: &'static str,
slice: &[Self::ExtElem]
) -> Self::BufferExtElem;
fn copy_from_u32(&self, name: &'static str, slice: &[u32]) -> Self::BufferU32;
fn batch_expand(
&self,
output: &Self::BufferElem,
input: &Self::BufferElem,
count: usize
);
fn batch_evaluate_ntt(
&self,
io: &Self::BufferElem,
count: usize,
expand_bits: usize
);
fn batch_interpolate_ntt(&self, io: &Self::BufferElem, count: usize);
fn batch_bit_reverse(&self, io: &Self::BufferElem, count: usize);
fn batch_evaluate_any(
&self,
coeffs: &Self::BufferElem,
poly_count: usize,
which: &Self::BufferU32,
xs: &Self::BufferExtElem,
out: &Self::BufferExtElem
);
fn zk_shift(&self, io: &Self::BufferElem, count: usize);
fn mix_poly_coeffs(
&self,
out: &Self::BufferExtElem,
mix_start: &Self::ExtElem,
mix: &Self::ExtElem,
input: &Self::BufferElem,
combos: &Self::BufferU32,
input_size: usize,
count: usize
);
fn eltwise_add_elem(
&self,
output: &Self::BufferElem,
input1: &Self::BufferElem,
input2: &Self::BufferElem
);
fn eltwise_sum_extelem(
&self,
output: &Self::BufferElem,
input: &Self::BufferExtElem
);
fn eltwise_copy_elem(
&self,
output: &Self::BufferElem,
input: &Self::BufferElem
);
fn fri_fold(
&self,
output: &Self::BufferElem,
input: &Self::BufferElem,
mix: &Self::ExtElem
);
fn sha_rows(&self, output: &Self::BufferDigest, matrix: &Self::BufferElem);
fn sha_fold(
&self,
io: &Self::BufferDigest,
input_size: usize,
output_size: usize
);
}