From 437f57a862751f7ae9aa28587379311924989f9a Mon Sep 17 00:00:00 2001 From: Robin Salen Date: Fri, 11 Aug 2023 09:23:58 -0400 Subject: [PATCH] Fix logic CTL --- evm/src/cpu/cpu_stark.rs | 4 +++- evm/src/keccak_sponge/keccak_sponge_stark.rs | 3 +-- evm/src/logic.rs | 9 +++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/evm/src/cpu/cpu_stark.rs b/evm/src/cpu/cpu_stark.rs index 883b6043..d54cf625 100644 --- a/evm/src/cpu/cpu_stark.rs +++ b/evm/src/cpu/cpu_stark.rs @@ -83,7 +83,9 @@ fn ctl_data_ternops(ops: &[usize], is_shift: bool) -> Vec> { } pub fn ctl_data_logic() -> Vec> { - ctl_data_binops(&[COL_MAP.op.and_or, COL_MAP.op.xor]) + let mut res = vec![Column::le_bits(COL_MAP.opcode_bits)]; + res.extend(ctl_data_binops(&[])); + res } pub fn ctl_filter_logic() -> Column { diff --git a/evm/src/keccak_sponge/keccak_sponge_stark.rs b/evm/src/keccak_sponge/keccak_sponge_stark.rs index c8cbbd48..32d3a555 100644 --- a/evm/src/keccak_sponge/keccak_sponge_stark.rs +++ b/evm/src/keccak_sponge/keccak_sponge_stark.rs @@ -103,8 +103,7 @@ pub(crate) fn ctl_looking_logic(i: usize) -> Vec> { let cols = KECCAK_SPONGE_COL_MAP; let mut res = vec![ - Column::zero(), // is_and_or - Column::one(), // is_xor + Column::constant(F::from_canonical_u8(0x18)), // is_xor ]; // Input 0 contains some of the sponge's original rate chunks. If this is the last CTL, we won't diff --git a/evm/src/logic.rs b/evm/src/logic.rs index 0c069762..3695503b 100644 --- a/evm/src/logic.rs +++ b/evm/src/logic.rs @@ -52,10 +52,11 @@ pub(crate) mod columns { } pub fn ctl_data() -> Vec> { - let mut res = vec![ - Column::sum([columns::IS_AND, columns::IS_OR]), - Column::single(columns::IS_XOR), - ]; + let mut res = vec![Column::linear_combination([ + (columns::IS_AND, F::from_canonical_u8(0x16)), + (columns::IS_OR, F::from_canonical_u8(0x17)), + (columns::IS_XOR, F::from_canonical_u8(0x18)), + ])]; res.extend(columns::limb_bit_cols_for_input(columns::INPUT0).map(Column::le_bits)); res.extend(columns::limb_bit_cols_for_input(columns::INPUT1).map(Column::le_bits)); res.extend(columns::RESULT.map(Column::single));