Skip to content

Commit

Permalink
Fix bug due to operator ordering
Browse files Browse the repository at this point in the history
The statement A + 3 > 8 seems to be parsed as A + (3 > 8) after the
translaction by zkAsm intrepreter, so adding parenthesis to disambiguate
this.
  • Loading branch information
aborg-dev committed Feb 6, 2024
1 parent 087fda6 commit 2f5bc55
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 26 deletions.
2 changes: 1 addition & 1 deletion cranelift/codegen/src/isa/zkasm/inst/emit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -732,7 +732,7 @@ impl MachInstEmit for Inst {

// Handle the case when write spans two slots.
put_string(
&format!("${{ (A + {width} > 8) ? (A + {width} - 8) : 0 }} => A\n"),
&format!("${{ ((A + {width}) > 8) ? (A + {width} - 8) : 0 }} => A\n"),
sink,
);
put_string(
Expand Down
46 changes: 23 additions & 23 deletions cranelift/zkasm_data/benchmarks/sha256/generated/from_rust.zkasm
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ function_1:
${ (E) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
16n => B ;; LoadConst32
Expand All @@ -80,7 +80,7 @@ function_1:
${ (E) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
8n => B ;; LoadConst32
Expand All @@ -106,7 +106,7 @@ function_1:
${ (E) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
50n => B ;; LoadConst32
Expand All @@ -122,7 +122,7 @@ function_1:
${ (E) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
58n => B ;; LoadConst32
Expand All @@ -138,7 +138,7 @@ function_1:
${ (E) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
66n => B ;; LoadConst32
Expand All @@ -154,7 +154,7 @@ function_1:
${ (E) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
74n => B ;; LoadConst32
Expand All @@ -170,7 +170,7 @@ function_1:
${ (E) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
82n => B ;; LoadConst32
Expand All @@ -186,7 +186,7 @@ function_1:
${ (E) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
88n => B ;; LoadConst32
Expand All @@ -202,7 +202,7 @@ function_1:
${ (E) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
1n => C ;; LoadConst32
Expand All @@ -214,7 +214,7 @@ function_1:
${ C & ((1 << 8) - 1) } => C
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 8) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 1 > 8) ? (A + 1 - 8) : 0 } => A
${ ((A + 1) > 8) ? (A + 1 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
0n => C ;; LoadConst64
Expand All @@ -224,7 +224,7 @@ function_1:
${ (E + 32) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
0n => C ;; LoadConst64
Expand All @@ -234,7 +234,7 @@ function_1:
${ (E + 42) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
32856n => C ;; LoadConst32
Expand All @@ -245,7 +245,7 @@ function_1:
${ C & ((1 << 16) - 1) } => C
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 16) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 2 > 8) ? (A + 2 - 8) : 0 } => A
${ ((A + 2) > 8) ? (A + 2 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
0n => B ;; LoadConst32
Expand All @@ -264,7 +264,7 @@ function_1:
${ (E) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
96n => B ;; LoadConst32
Expand All @@ -280,7 +280,7 @@ function_1:
${ (E) / 8 } => E
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 64) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 8 > 8) ? (A + 8 - 8) : 0 } => A
${ ((A + 8) > 8) ? (A + 8 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
40n => B ;; LoadConst32
Expand Down Expand Up @@ -27969,7 +27969,7 @@ label_2_7:
${ C & ((1 << 32) - 1) } => C
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 32) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 4 > 8) ? (A + 4 - 8) : 0 } => A
${ ((A + 4) > 8) ? (A + 4 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
0n => A ;; LoadConst32
Expand All @@ -27980,7 +27980,7 @@ label_2_7:
${ C & ((1 << 32) - 1) } => C
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 32) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 4 > 8) ? (A + 4 - 8) : 0 } => A
${ ((A + 4) > 8) ? (A + 4 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
0n => A ;; LoadConst32
Expand All @@ -27991,7 +27991,7 @@ label_2_7:
${ C & ((1 << 32) - 1) } => C
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 32) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 4 > 8) ? (A + 4 - 8) : 0 } => A
${ ((A + 4) > 8) ? (A + 4 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
0n => A ;; LoadConst32
Expand All @@ -28002,7 +28002,7 @@ label_2_7:
${ C & ((1 << 32) - 1) } => C
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 32) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 4 > 8) ? (A + 4 - 8) : 0 } => A
${ ((A + 4) > 8) ? (A + 4 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
0n => A ;; LoadConst32
Expand All @@ -28013,7 +28013,7 @@ label_2_7:
${ C & ((1 << 32) - 1) } => C
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 32) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 4 > 8) ? (A + 4 - 8) : 0 } => A
${ ((A + 4) > 8) ? (A + 4 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
0n => A ;; LoadConst32
Expand All @@ -28024,7 +28024,7 @@ label_2_7:
${ C & ((1 << 32) - 1) } => C
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 32) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 4 > 8) ? (A + 4 - 8) : 0 } => A
${ ((A + 4) > 8) ? (A + 4 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
0n => A ;; LoadConst32
Expand All @@ -28035,7 +28035,7 @@ label_2_7:
${ C & ((1 << 32) - 1) } => C
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 32) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 4 > 8) ? (A + 4 - 8) : 0 } => A
${ ((A + 4) > 8) ? (A + 4 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
0n => A ;; LoadConst32
Expand All @@ -28046,7 +28046,7 @@ label_2_7:
${ B & ((1 << 32) - 1) } => B
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 32) - 1) << (8 * A))) | (B << (8 * A)) } :MSTORE(MEM:E)
${ (A + 4 > 8) ? (A + 4 - 8) : 0 } => A
${ ((A + 4) > 8) ? (A + 4 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (B & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
SP + 1182 => SP
Expand Down
4 changes: 2 additions & 2 deletions cranelift/zkasm_data/generated/memory.zkasm
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ function_1:
${ C & ((1 << 32) - 1) } => C
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 32) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 4 > 8) ? (A + 4 - 8) : 0 } => A
${ ((A + 4) > 8) ? (A + 4 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
8n => B ;; LoadConst32
Expand All @@ -32,7 +32,7 @@ function_1:
${ C & ((1 << 32) - 1) } => C
$ => D :MLOAD(MEM:E)
${ (D & ~(((1 << 32) - 1) << (8 * A))) | (C << (8 * A)) } :MSTORE(MEM:E)
${ (A + 4 > 8) ? (A + 4 - 8) : 0 } => A
${ ((A + 4) > 8) ? (A + 4 - 8) : 0 } => A
$ => D :MLOAD(MEM:E + 1)
${ (D & ~((1 << (8 * A)) - 1)) | (C & ((1 << (8 * A)) - 1)) } :MSTORE(MEM:E + 1)
0n => B ;; LoadConst32
Expand Down

0 comments on commit 2f5bc55

Please sign in to comment.