Skip to content

Commit 68da4b5

Browse files
committed
fix: auipc range check pc_limbs[3] to 6-bits
The order of enumerate and skip was wrong, causing the if statement to not trigger.
1 parent f41640c commit 68da4b5

File tree

1 file changed

+3
-2
lines changed
  • extensions/rv32im/circuit/src/auipc

1 file changed

+3
-2
lines changed

extensions/rv32im/circuit/src/auipc/core.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,9 @@ where
129129
need_range_check.push(limb.into());
130130
}
131131

132+
assert_eq!(pc_limbs.len(), RV32_REGISTER_NUM_LIMBS);
132133
// pc_limbs[0] is already range checked through rd_data[0]
133-
for (i, limb) in pc_limbs.iter().skip(1).enumerate() {
134+
for (i, limb) in pc_limbs.iter().enumerate().skip(1) {
134135
if i == pc_limbs.len() - 1 {
135136
// Range check the most significant limb of pc to be in [0, 2^{PC_BITS-(RV32_REGISTER_NUM_LIMBS-1)*RV32_CELL_BITS})
136137
need_range_check.push(
@@ -242,7 +243,7 @@ where
242243
need_range_check.push(limb);
243244
}
244245

245-
for (i, limb) in pc_limbs.iter().skip(1).enumerate() {
246+
for (i, limb) in pc_limbs.iter().enumerate().skip(1) {
246247
if i == pc_limbs.len() - 1 {
247248
need_range_check.push((*limb) << (pc_limbs.len() * RV32_CELL_BITS - PC_BITS));
248249
} else {

0 commit comments

Comments
 (0)