Skip to content

Commit d39f68c

Browse files
Add_all_cairo_stwo_layout
1 parent 3de653d commit d39f68c

File tree

5 files changed

+97
-0
lines changed

5 files changed

+97
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
## Cairo-VM Changelog
22

33
#### Upcoming Changes
4+
* feat: adding `all_cairo_stwo` layout to vm [#1957](https://github.com/lambdaclass/cairo-vm/pull/1957)
45

56
#### [2.0.0] - 2025-02-26
67

vm/src/types/instance_definitions/builtins_instance_def.rs

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,28 @@ impl BuiltinsInstanceDef {
179179
}
180180
}
181181

182+
pub(crate) fn all_cairo_stwo() -> BuiltinsInstanceDef {
183+
BuiltinsInstanceDef {
184+
output: true,
185+
pedersen: Some(PedersenInstanceDef::new(Some(256))),
186+
range_check: Some(RangeCheckInstanceDef::default()),
187+
ecdsa: None,
188+
bitwise: Some(BitwiseInstanceDef::new(Some(16))),
189+
ec_op: None,
190+
keccak: None,
191+
poseidon: Some(PoseidonInstanceDef::new(Some(256))),
192+
range_check96: Some(RangeCheckInstanceDef::new(Some(8))),
193+
#[cfg(feature = "mod_builtin")]
194+
add_mod: Some(ModInstanceDef::new(Some(128), 1, 96)),
195+
#[cfg(feature = "mod_builtin")]
196+
mul_mod: Some(ModInstanceDef::new(Some(256), 1, 96)),
197+
#[cfg(not(feature = "mod_builtin"))]
198+
add_mod: None,
199+
#[cfg(not(feature = "mod_builtin"))]
200+
mul_mod: None,
201+
}
202+
}
203+
182204
pub(crate) fn all_solidity() -> BuiltinsInstanceDef {
183205
BuiltinsInstanceDef {
184206
output: true,
@@ -377,6 +399,27 @@ mod tests {
377399
assert!(builtins.poseidon.is_some());
378400
}
379401

402+
#[test]
403+
fn get_builtins_all_cairo_stwo() {
404+
let builtins = BuiltinsInstanceDef::all_cairo_stwo();
405+
assert!(builtins.output);
406+
assert!(builtins.pedersen.is_some());
407+
assert!(builtins.range_check.is_some());
408+
assert!(builtins.ecdsa.is_none());
409+
assert!(builtins.bitwise.is_some());
410+
assert!(builtins.ec_op.is_none());
411+
assert!(builtins.keccak.is_none());
412+
assert!(builtins.poseidon.is_some());
413+
#[cfg(feature = "mod_builtin")]
414+
assert!(builtins.add_mod.is_some());
415+
#[cfg(feature = "mod_builtin")]
416+
assert!(builtins.mul_mod.is_some());
417+
#[cfg(not(feature = "mod_builtin"))]
418+
assert!(builtins.add_mod.is_none());
419+
#[cfg(not(feature = "mod_builtin"))]
420+
assert!(builtins.mul_mod.is_none());
421+
}
422+
380423
#[test]
381424
fn get_builtins_all_solidity() {
382425
let builtins = BuiltinsInstanceDef::all_solidity();

vm/src/types/layout.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,18 @@ impl CairoLayout {
132132
}
133133
}
134134

135+
pub(crate) fn all_cairo_stwo_instance() -> CairoLayout {
136+
CairoLayout {
137+
name: LayoutName::all_cairo_stwo,
138+
rc_units: 4,
139+
cpu_component_step: DEFAULT_CPU_COMPONENT_STEP,
140+
memory_units_per_step: DEFAULT_MEMORY_UNITS_PER_STEP,
141+
builtins: BuiltinsInstanceDef::all_cairo_stwo(),
142+
public_memory_fraction: 8,
143+
diluted_pool_instance_def: Some(DilutedPoolInstanceDef::default()),
144+
}
145+
}
146+
135147
pub(crate) fn all_solidity_instance() -> CairoLayout {
136148
CairoLayout {
137149
name: LayoutName::all_solidity,
@@ -456,6 +468,20 @@ mod tests {
456468
);
457469
}
458470

471+
#[test]
472+
fn get_all_cairo_stwo_instance() {
473+
let layout = CairoLayout::all_cairo_stwo_instance();
474+
let builtins = BuiltinsInstanceDef::all_cairo_stwo();
475+
assert_eq!(layout.name, LayoutName::all_cairo_stwo);
476+
assert_eq!(layout.rc_units, 4);
477+
assert_eq!(layout.builtins, builtins);
478+
assert_eq!(layout.public_memory_fraction, 8);
479+
assert_eq!(
480+
layout.diluted_pool_instance_def,
481+
Some(DilutedPoolInstanceDef::default())
482+
);
483+
}
484+
459485
#[test]
460486
fn get_all_solidity_instance() {
461487
let layout = CairoLayout::all_solidity_instance();

vm/src/types/layout_name.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ pub enum LayoutName {
2121
all_solidity,
2222
all_cairo,
2323
dynamic,
24+
all_cairo_stwo,
2425
}
2526

2627
impl LayoutName {
@@ -37,6 +38,7 @@ impl LayoutName {
3738
LayoutName::all_solidity => "all_solidity",
3839
LayoutName::all_cairo => "all_cairo",
3940
LayoutName::dynamic => "dynamic",
41+
LayoutName::all_cairo_stwo => "all_cairo_stwo",
4042
}
4143
}
4244
}
@@ -62,6 +64,7 @@ impl ValueEnum for LayoutName {
6264
Self::all_solidity,
6365
Self::all_cairo,
6466
Self::dynamic,
67+
Self::all_cairo_stwo,
6568
]
6669
}
6770

vm/src/vm/runners/cairo_runner.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ impl CairoRunner {
188188
LayoutName::recursive_large_output => CairoLayout::recursive_large_output_instance(),
189189
LayoutName::recursive_with_poseidon => CairoLayout::recursive_with_poseidon(),
190190
LayoutName::all_cairo => CairoLayout::all_cairo_instance(),
191+
LayoutName::all_cairo_stwo => CairoLayout::all_cairo_stwo_instance(),
191192
LayoutName::all_solidity => CairoLayout::all_solidity_instance(),
192193
LayoutName::dynamic => {
193194
let params =
@@ -3407,6 +3408,29 @@ mod tests {
34073408
);
34083409
}
34093410

3411+
#[test]
3412+
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
3413+
fn run_empty_recursive_with_poseidon() {
3414+
let program = program!();
3415+
let mut cairo_runner =
3416+
cairo_runner!(&program, LayoutName::recursive_with_poseidon, false, true);
3417+
assert_matches!(
3418+
cairo_runner.initialize(false),
3419+
Err(RunnerError::MissingMain)
3420+
);
3421+
}
3422+
3423+
#[test]
3424+
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
3425+
fn run_empty_all_cairo_stwo() {
3426+
let program = program!();
3427+
let mut cairo_runner = cairo_runner!(&program, LayoutName::all_cairo_stwo, false, true);
3428+
assert_matches!(
3429+
cairo_runner.initialize(false),
3430+
Err(RunnerError::MissingMain)
3431+
);
3432+
}
3433+
34103434
#[test]
34113435
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
34123436
/*Program used:

0 commit comments

Comments
 (0)