mirror of
https://github.com/powdr-labs/powdr.git
synced 2026-01-10 10:58:05 -05:00
Keep only A as generic on chips (#3271)
This commit is contained in:
committed by
GitHub
parent
f081b3b749
commit
18935c07f7
@@ -44,20 +44,20 @@ use powdr_autoprecompiles::{
|
||||
};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
pub struct PowdrChip<F: PrimeField32, A: Adapter> {
|
||||
pub struct PowdrChip<A: Adapter<Field: PrimeField32>> {
|
||||
pub name: String,
|
||||
pub opcode: PowdrOpcode,
|
||||
/// An "executor" for this chip, based on the original instructions in the basic block
|
||||
pub executor: PowdrExecutor<F>,
|
||||
pub air: Arc<PowdrAir<F>>,
|
||||
pub executor: PowdrExecutor<A::Field>,
|
||||
pub air: Arc<PowdrAir<A::Field>>,
|
||||
_marker: std::marker::PhantomData<A>,
|
||||
}
|
||||
|
||||
impl<F: PrimeField32, A: Adapter> PowdrChip<F, A> {
|
||||
impl<A: Adapter<Field: PrimeField32>> PowdrChip<A> {
|
||||
pub(crate) fn new(
|
||||
precompile: PowdrPrecompile<F>,
|
||||
original_airs: OriginalAirs<F>,
|
||||
memory: Arc<Mutex<OfflineMemory<F>>>,
|
||||
precompile: PowdrPrecompile<A::Field>,
|
||||
original_airs: OriginalAirs<A::Field>,
|
||||
memory: Arc<Mutex<OfflineMemory<A::Field>>>,
|
||||
base_config: ExtendedVmConfig,
|
||||
periphery: PowdrPeripheryInstances,
|
||||
) -> Self {
|
||||
@@ -77,11 +77,11 @@ impl<F: PrimeField32, A: Adapter> PowdrChip<F, A> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<F: PrimeField32, A: Adapter> InstructionExecutor<F> for PowdrChip<F, A> {
|
||||
impl<A: Adapter<Field: PrimeField32>> InstructionExecutor<A::Field> for PowdrChip<A> {
|
||||
fn execute(
|
||||
&mut self,
|
||||
memory: &mut MemoryController<F>,
|
||||
instruction: &Instruction<F>,
|
||||
memory: &mut MemoryController<A::Field>,
|
||||
instruction: &Instruction<A::Field>,
|
||||
from_state: ExecutionState<u32>,
|
||||
) -> ExecutionResult<ExecutionState<u32>> {
|
||||
let &Instruction { opcode, .. } = instruction;
|
||||
@@ -97,7 +97,7 @@ impl<F: PrimeField32, A: Adapter> InstructionExecutor<F> for PowdrChip<F, A> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<F: PrimeField32, A: Adapter> ChipUsageGetter for PowdrChip<F, A> {
|
||||
impl<A: Adapter<Field: PrimeField32>> ChipUsageGetter for PowdrChip<A> {
|
||||
fn air_name(&self) -> String {
|
||||
format!("powdr_air_for_opcode_{}", self.opcode.global_opcode()).to_string()
|
||||
}
|
||||
@@ -110,7 +110,7 @@ impl<F: PrimeField32, A: Adapter> ChipUsageGetter for PowdrChip<F, A> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<SC: StarkGenericConfig, A> Chip<SC> for PowdrChip<Val<SC>, A>
|
||||
impl<SC: StarkGenericConfig, A: Adapter<Field = Val<SC>>> Chip<SC> for PowdrChip<A>
|
||||
where
|
||||
Val<SC>: PrimeField32,
|
||||
A: Adapter<
|
||||
|
||||
@@ -37,22 +37,21 @@ use powdr_autoprecompiles::Apc;
|
||||
|
||||
use super::air::PlonkAir;
|
||||
|
||||
pub struct PlonkChip<F: PrimeField32, A: Adapter> {
|
||||
pub struct PlonkChip<A: Adapter<Field: PrimeField32>> {
|
||||
name: String,
|
||||
opcode: PowdrOpcode,
|
||||
air: Arc<PlonkAir<F>>,
|
||||
executor: PowdrExecutor<F>,
|
||||
apc: Arc<Apc<F, Instr<F>>>,
|
||||
air: Arc<PlonkAir<A::Field>>,
|
||||
executor: PowdrExecutor<A::Field>,
|
||||
apc: Arc<Apc<A::Field, Instr<A::Field>>>,
|
||||
bus_map: BusMap,
|
||||
_marker: std::marker::PhantomData<A>,
|
||||
}
|
||||
|
||||
impl<F: PrimeField32, A: Adapter> PlonkChip<F, A> {
|
||||
impl<A: Adapter<Field: PrimeField32>> PlonkChip<A> {
|
||||
#[allow(dead_code)]
|
||||
pub(crate) fn new(
|
||||
precompile: PowdrPrecompile<F>,
|
||||
original_airs: OriginalAirs<F>,
|
||||
memory: Arc<Mutex<OfflineMemory<F>>>,
|
||||
precompile: PowdrPrecompile<A::Field>,
|
||||
original_airs: OriginalAirs<A::Field>,
|
||||
memory: Arc<Mutex<OfflineMemory<A::Field>>>,
|
||||
base_config: ExtendedVmConfig,
|
||||
periphery: PowdrPeripheryInstances,
|
||||
bus_map: BusMap,
|
||||
@@ -76,16 +75,15 @@ impl<F: PrimeField32, A: Adapter> PlonkChip<F, A> {
|
||||
executor,
|
||||
bus_map,
|
||||
apc,
|
||||
_marker: std::marker::PhantomData,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<F: PrimeField32, A: Adapter> InstructionExecutor<F> for PlonkChip<F, A> {
|
||||
impl<A: Adapter<Field: PrimeField32>> InstructionExecutor<A::Field> for PlonkChip<A> {
|
||||
fn execute(
|
||||
&mut self,
|
||||
memory: &mut MemoryController<F>,
|
||||
instruction: &Instruction<F>,
|
||||
memory: &mut MemoryController<A::Field>,
|
||||
instruction: &Instruction<A::Field>,
|
||||
from_state: ExecutionState<u32>,
|
||||
) -> ExecutionResult<ExecutionState<u32>> {
|
||||
let &Instruction { opcode, .. } = instruction;
|
||||
@@ -101,7 +99,7 @@ impl<F: PrimeField32, A: Adapter> InstructionExecutor<F> for PlonkChip<F, A> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<F: PrimeField32, A: Adapter> ChipUsageGetter for PlonkChip<F, A> {
|
||||
impl<A: Adapter<Field: PrimeField32>> ChipUsageGetter for PlonkChip<A> {
|
||||
fn air_name(&self) -> String {
|
||||
format!("powdr_plonk_air_for_opcode_{}", self.opcode.global_opcode()).to_string()
|
||||
}
|
||||
@@ -114,7 +112,7 @@ impl<F: PrimeField32, A: Adapter> ChipUsageGetter for PlonkChip<F, A> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<SC: StarkGenericConfig, A> Chip<SC> for PlonkChip<Val<SC>, A>
|
||||
impl<SC: StarkGenericConfig, A: Adapter<Field = Val<SC>>> Chip<SC> for PlonkChip<A>
|
||||
where
|
||||
Val<SC>: PrimeField32,
|
||||
A: Adapter<
|
||||
|
||||
@@ -100,8 +100,8 @@ pub enum PowdrExecutor<
|
||||
AirId = String,
|
||||
> + 'static,
|
||||
> {
|
||||
Powdr(PowdrChip<F, A>),
|
||||
Plonk(PlonkChip<F, A>),
|
||||
Powdr(PowdrChip<A>),
|
||||
Plonk(PlonkChip<A>),
|
||||
}
|
||||
|
||||
impl<F: PrimeField32, A> PowdrExecutor<F, A>
|
||||
|
||||
Reference in New Issue
Block a user