@aztec/simulator 2.0.0-nightly.20250813 → 2.0.0-nightly.20250815
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/public/avm/opcodes/arithmetic.d.ts +13 -1
- package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/public/avm/opcodes/arithmetic.js +24 -0
- package/dest/public/avm/opcodes/bitwise.d.ts +0 -12
- package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/public/avm/opcodes/bitwise.js +1 -23
- package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/public/avm/opcodes/external_calls.js +1 -0
- package/package.json +15 -15
- package/src/public/avm/opcodes/arithmetic.ts +31 -0
- package/src/public/avm/opcodes/bitwise.ts +0 -26
- package/src/public/avm/opcodes/external_calls.ts +4 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AvmContext } from '../avm_context.js';
|
|
2
|
-
import { type Field, type MemoryValue, type TaggedMemoryInterface } from '../avm_memory_types.js';
|
|
2
|
+
import { type Field, type IntegralValue, type MemoryValue, type TaggedMemoryInterface } from '../avm_memory_types.js';
|
|
3
3
|
import { Opcode } from '../serialization/instruction_serialization.js';
|
|
4
4
|
import { ThreeOperandInstruction } from './instruction_impl.js';
|
|
5
5
|
export declare abstract class ThreeOperandArithmeticInstruction extends ThreeOperandInstruction {
|
|
@@ -34,4 +34,16 @@ export declare class FieldDiv extends ThreeOperandArithmeticInstruction {
|
|
|
34
34
|
protected compute(a: Field, b: Field): Field;
|
|
35
35
|
protected checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number): void;
|
|
36
36
|
}
|
|
37
|
+
export declare class Shl extends ThreeOperandArithmeticInstruction {
|
|
38
|
+
static readonly type: string;
|
|
39
|
+
static readonly opcode = Opcode.SHL_8;
|
|
40
|
+
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
41
|
+
protected checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number): void;
|
|
42
|
+
}
|
|
43
|
+
export declare class Shr extends ThreeOperandArithmeticInstruction {
|
|
44
|
+
static readonly type: string;
|
|
45
|
+
static readonly opcode = Opcode.SHR_8;
|
|
46
|
+
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
47
|
+
protected checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number): void;
|
|
48
|
+
}
|
|
37
49
|
//# sourceMappingURL=arithmetic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/arithmetic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,KAAK,KAAK,EACV,KAAK,WAAW,EAEhB,KAAK,qBAAqB,EAE3B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,8BAAsB,iCAAkC,SAAQ,uBAAuB;IACxE,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;IACvE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAGpF;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAEtC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;CAG/D;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAEtC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;CAG/D;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAEtC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;CAG/D;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAEtC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;cAQ3C,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI7F;AAED,qBAAa,QAAS,SAAQ,iCAAiC;IAC7D,MAAM,CAAC,IAAI,EAAE,MAAM,CAAU;IAC7B,MAAM,CAAC,QAAQ,CAAC,MAAM,iBAAiB;IAEvC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK;cAKzB,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI7F"}
|
|
1
|
+
{"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/arithmetic.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,3 +71,27 @@ export class FieldDiv extends ThreeOperandArithmeticInstruction {
|
|
|
71
71
|
memory.checkTag(TypeTag.FIELD, aOffset); // Follows that bOffset has also tag of type Field
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
+
export class Shl extends ThreeOperandArithmeticInstruction {
|
|
75
|
+
static type = 'SHL';
|
|
76
|
+
static opcode = Opcode.SHL_8;
|
|
77
|
+
compute(a, b) {
|
|
78
|
+
return a.shl(b);
|
|
79
|
+
}
|
|
80
|
+
// This override can be removed once Shifts are required to have the same tag on both operands.
|
|
81
|
+
checkTags(memory, aOffset, bOffset) {
|
|
82
|
+
TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset));
|
|
83
|
+
memory.checkTag(TypeTag.UINT8, bOffset);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export class Shr extends ThreeOperandArithmeticInstruction {
|
|
87
|
+
static type = 'SHR';
|
|
88
|
+
static opcode = Opcode.SHR_8;
|
|
89
|
+
compute(a, b) {
|
|
90
|
+
return a.shr(b);
|
|
91
|
+
}
|
|
92
|
+
// This override can be removed once Shifts are required to have the same tag on both operands.
|
|
93
|
+
checkTags(memory, aOffset, bOffset) {
|
|
94
|
+
TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset));
|
|
95
|
+
memory.checkTag(TypeTag.UINT8, bOffset);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -27,18 +27,6 @@ export declare class Xor extends ThreeOperandBitwiseInstruction {
|
|
|
27
27
|
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
28
28
|
protected getDynamicMultiplier(lhsTag: TypeTag): number;
|
|
29
29
|
}
|
|
30
|
-
export declare class Shl extends ThreeOperandBitwiseInstruction {
|
|
31
|
-
static readonly type: string;
|
|
32
|
-
static readonly opcode = Opcode.SHL_8;
|
|
33
|
-
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
34
|
-
protected checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number): void;
|
|
35
|
-
}
|
|
36
|
-
export declare class Shr extends ThreeOperandBitwiseInstruction {
|
|
37
|
-
static readonly type: string;
|
|
38
|
-
static readonly opcode = Opcode.SHR_8;
|
|
39
|
-
protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
|
|
40
|
-
protected checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number): void;
|
|
41
|
-
}
|
|
42
30
|
export declare class Not extends Instruction {
|
|
43
31
|
private indirect;
|
|
44
32
|
private srcOffset;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitwise.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/bitwise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,KAAK,aAAa,EAAgB,KAAK,qBAAqB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC/G,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,uBAAe,8BAA+B,SAAQ,uBAAuB;IAC9D,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;IAC7E,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAKnF,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAGzD;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;cAEnB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;cAI1D,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;CAGjE;AAED,qBAAa,EAAG,SAAQ,8BAA8B;IACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,eAAe;cAElB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;cAI1D,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;CAGjE;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;cAEnB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;cAI1D,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;CAGjE;AAED,qBAAa,GAAI,SAAQ,
|
|
1
|
+
{"version":3,"file":"bitwise.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/bitwise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,KAAK,aAAa,EAAgB,KAAK,qBAAqB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC/G,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,uBAAe,8BAA+B,SAAQ,uBAAuB;IAC9D,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;IAC7E,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAKnF,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAGzD;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;cAEnB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;cAI1D,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;CAGjE;AAED,qBAAa,EAAG,SAAQ,8BAA8B;IACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,eAAe;cAElB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;cAI1D,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;CAGjE;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;cAEnB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;cAI1D,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;CAGjE;AAED,qBAAa,GAAI,SAAQ,WAAW;IAQhC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IATnB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAEtC,MAAM,CAAC,QAAQ,CAAC,WAAW,gBAAgF;IAC3G,MAAM,CAAC,QAAQ,CAAC,YAAY,gBAAkF;gBAGpG,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM;IAKd,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBzD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getBitwiseDynamicGasMultiplier } from '../avm_gas.js';
|
|
2
|
-
import { TaggedMemory
|
|
2
|
+
import { TaggedMemory } from '../avm_memory_types.js';
|
|
3
3
|
import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
|
|
4
4
|
import { Addressing } from './addressing_mode.js';
|
|
5
5
|
import { Instruction } from './instruction.js';
|
|
@@ -61,28 +61,6 @@ export class Xor extends ThreeOperandBitwiseInstruction {
|
|
|
61
61
|
return getBitwiseDynamicGasMultiplier(lhsTag);
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
export class Shl extends ThreeOperandBitwiseInstruction {
|
|
65
|
-
static type = 'SHL';
|
|
66
|
-
static opcode = Opcode.SHL_8;
|
|
67
|
-
compute(a, b) {
|
|
68
|
-
return a.shl(b);
|
|
69
|
-
}
|
|
70
|
-
checkTags(memory, aOffset, bOffset) {
|
|
71
|
-
TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset));
|
|
72
|
-
memory.checkTag(TypeTag.UINT8, bOffset);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
export class Shr extends ThreeOperandBitwiseInstruction {
|
|
76
|
-
static type = 'SHR';
|
|
77
|
-
static opcode = Opcode.SHR_8;
|
|
78
|
-
compute(a, b) {
|
|
79
|
-
return a.shr(b);
|
|
80
|
-
}
|
|
81
|
-
checkTags(memory, aOffset, bOffset) {
|
|
82
|
-
TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset));
|
|
83
|
-
memory.checkTag(TypeTag.UINT8, bOffset);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
64
|
export class Not extends Instruction {
|
|
87
65
|
indirect;
|
|
88
66
|
srcOffset;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external_calls.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/external_calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,uBAAe,YAAa,SAAQ,WAAW;IAa3C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAhBpB,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAQvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM;IAKf,OAAO,CAAC,OAAO,EAAE,UAAU;IA6ExC,aAA6B,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC;CAC5D;AAED,qBAAa,IAAK,SAAQ,YAAY;IACpC,MAAM,CAAC,IAAI,EAAG,MAAM,CAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAe;IAE7C,IAAW,IAAI,WAEd;CACF;AAED,qBAAa,UAAW,SAAQ,YAAY;IAC1C,MAAM,CAAC,IAAI,EAAG,YAAY,CAAU;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAqB;IAEnD,IAAW,IAAI,iBAEd;CACF;AAED,qBAAa,WAAY,SAAQ,WAAW;IAWxC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IAXnB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAiB;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAsB;IAEpD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAIvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM;IAKd,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"external_calls.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/external_calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,uBAAe,YAAa,SAAQ,WAAW;IAa3C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,UAAU;IAhBpB,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAQvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM;IAKf,OAAO,CAAC,OAAO,EAAE,UAAU;IA6ExC,aAA6B,IAAI,IAAI,MAAM,GAAG,YAAY,CAAC;CAC5D;AAED,qBAAa,IAAK,SAAQ,YAAY;IACpC,MAAM,CAAC,IAAI,EAAG,MAAM,CAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAe;IAE7C,IAAW,IAAI,WAEd;CACF;AAED,qBAAa,UAAW,SAAQ,YAAY;IAC1C,MAAM,CAAC,IAAI,EAAG,YAAY,CAAU;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAqB;IAEnD,IAAW,IAAI,iBAEd;CACF;AAED,qBAAa,WAAY,SAAQ,WAAW;IAWxC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IAXnB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAiB;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAsB;IAEpD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAIvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM;IAKd,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBzD;AAED,qBAAa,MAAO,SAAQ,WAAW;IAYnC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IAbtB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAiB;IAE/C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAKvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM;IAKjB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxC,SAAS,IAAI,OAAO;CAGrC;AAED,qBAAa,MAAO,SAAQ,WAAW;IAkBnC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,YAAY;IAnBtB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAY;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAmB;IAEjD,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,CAKxC;IACF,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,CAKzC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM;IAKjB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBxC,SAAS,IAAI,OAAO;CAGrC"}
|
|
@@ -119,6 +119,7 @@ export class SuccessCopy extends Instruction {
|
|
|
119
119
|
async execute(context) {
|
|
120
120
|
const memory = context.machineState.memory;
|
|
121
121
|
const addressing = Addressing.fromWire(this.indirect);
|
|
122
|
+
context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
|
|
122
123
|
const operands = [
|
|
123
124
|
this.dstOffset
|
|
124
125
|
];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/simulator",
|
|
3
|
-
"version": "2.0.0-nightly.
|
|
3
|
+
"version": "2.0.0-nightly.20250815",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": "./dest/server.js",
|
|
@@ -63,25 +63,25 @@
|
|
|
63
63
|
]
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"@aztec/constants": "2.0.0-nightly.
|
|
67
|
-
"@aztec/foundation": "2.0.0-nightly.
|
|
68
|
-
"@aztec/noir-acvm_js": "2.0.0-nightly.
|
|
69
|
-
"@aztec/noir-noirc_abi": "2.0.0-nightly.
|
|
70
|
-
"@aztec/noir-protocol-circuits-types": "2.0.0-nightly.
|
|
71
|
-
"@aztec/noir-types": "2.0.0-nightly.
|
|
72
|
-
"@aztec/protocol-contracts": "2.0.0-nightly.
|
|
73
|
-
"@aztec/stdlib": "2.0.0-nightly.
|
|
74
|
-
"@aztec/telemetry-client": "2.0.0-nightly.
|
|
75
|
-
"@aztec/world-state": "2.0.0-nightly.
|
|
66
|
+
"@aztec/constants": "2.0.0-nightly.20250815",
|
|
67
|
+
"@aztec/foundation": "2.0.0-nightly.20250815",
|
|
68
|
+
"@aztec/noir-acvm_js": "2.0.0-nightly.20250815",
|
|
69
|
+
"@aztec/noir-noirc_abi": "2.0.0-nightly.20250815",
|
|
70
|
+
"@aztec/noir-protocol-circuits-types": "2.0.0-nightly.20250815",
|
|
71
|
+
"@aztec/noir-types": "2.0.0-nightly.20250815",
|
|
72
|
+
"@aztec/protocol-contracts": "2.0.0-nightly.20250815",
|
|
73
|
+
"@aztec/stdlib": "2.0.0-nightly.20250815",
|
|
74
|
+
"@aztec/telemetry-client": "2.0.0-nightly.20250815",
|
|
75
|
+
"@aztec/world-state": "2.0.0-nightly.20250815",
|
|
76
76
|
"lodash.clonedeep": "^4.5.0",
|
|
77
77
|
"lodash.merge": "^4.6.2",
|
|
78
78
|
"tslib": "^2.4.0"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@aztec/kv-store": "2.0.0-nightly.
|
|
82
|
-
"@aztec/merkle-tree": "2.0.0-nightly.
|
|
83
|
-
"@aztec/noir-contracts.js": "2.0.0-nightly.
|
|
84
|
-
"@aztec/noir-test-contracts.js": "2.0.0-nightly.
|
|
81
|
+
"@aztec/kv-store": "2.0.0-nightly.20250815",
|
|
82
|
+
"@aztec/merkle-tree": "2.0.0-nightly.20250815",
|
|
83
|
+
"@aztec/noir-contracts.js": "2.0.0-nightly.20250815",
|
|
84
|
+
"@aztec/noir-test-contracts.js": "2.0.0-nightly.20250815",
|
|
85
85
|
"@jest/globals": "^30.0.0",
|
|
86
86
|
"@types/jest": "^30.0.0",
|
|
87
87
|
"@types/lodash.clonedeep": "^4.5.7",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AvmContext } from '../avm_context.js';
|
|
2
2
|
import {
|
|
3
3
|
type Field,
|
|
4
|
+
type IntegralValue,
|
|
4
5
|
type MemoryValue,
|
|
5
6
|
TaggedMemory,
|
|
6
7
|
type TaggedMemoryInterface,
|
|
@@ -96,3 +97,33 @@ export class FieldDiv extends ThreeOperandArithmeticInstruction {
|
|
|
96
97
|
memory.checkTag(TypeTag.FIELD, aOffset); // Follows that bOffset has also tag of type Field
|
|
97
98
|
}
|
|
98
99
|
}
|
|
100
|
+
|
|
101
|
+
export class Shl extends ThreeOperandArithmeticInstruction {
|
|
102
|
+
static readonly type: string = 'SHL';
|
|
103
|
+
static readonly opcode = Opcode.SHL_8; // FIXME: needed for gas.
|
|
104
|
+
|
|
105
|
+
protected override compute(a: IntegralValue, b: IntegralValue): IntegralValue {
|
|
106
|
+
return a.shl(b);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// This override can be removed once Shifts are required to have the same tag on both operands.
|
|
110
|
+
protected override checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number) {
|
|
111
|
+
TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset));
|
|
112
|
+
memory.checkTag(TypeTag.UINT8, bOffset);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export class Shr extends ThreeOperandArithmeticInstruction {
|
|
117
|
+
static readonly type: string = 'SHR';
|
|
118
|
+
static readonly opcode = Opcode.SHR_8; // FIXME: needed for gas.
|
|
119
|
+
|
|
120
|
+
protected override compute(a: IntegralValue, b: IntegralValue): IntegralValue {
|
|
121
|
+
return a.shr(b);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// This override can be removed once Shifts are required to have the same tag on both operands.
|
|
125
|
+
protected override checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number) {
|
|
126
|
+
TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset));
|
|
127
|
+
memory.checkTag(TypeTag.UINT8, bOffset);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -79,32 +79,6 @@ export class Xor extends ThreeOperandBitwiseInstruction {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
export class Shl extends ThreeOperandBitwiseInstruction {
|
|
83
|
-
static readonly type: string = 'SHL';
|
|
84
|
-
static readonly opcode = Opcode.SHL_8; // FIXME: needed for gas.
|
|
85
|
-
|
|
86
|
-
protected override compute(a: IntegralValue, b: IntegralValue): IntegralValue {
|
|
87
|
-
return a.shl(b);
|
|
88
|
-
}
|
|
89
|
-
protected override checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number) {
|
|
90
|
-
TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset));
|
|
91
|
-
memory.checkTag(TypeTag.UINT8, bOffset);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export class Shr extends ThreeOperandBitwiseInstruction {
|
|
96
|
-
static readonly type: string = 'SHR';
|
|
97
|
-
static readonly opcode = Opcode.SHR_8; // FIXME: needed for gas.
|
|
98
|
-
|
|
99
|
-
protected override compute(a: IntegralValue, b: IntegralValue): IntegralValue {
|
|
100
|
-
return a.shr(b);
|
|
101
|
-
}
|
|
102
|
-
protected override checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number) {
|
|
103
|
-
TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset));
|
|
104
|
-
memory.checkTag(TypeTag.UINT8, bOffset);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
82
|
export class Not extends Instruction {
|
|
109
83
|
static readonly type: string = 'NOT';
|
|
110
84
|
static readonly opcode = Opcode.NOT_8;
|
|
@@ -147,6 +147,10 @@ export class SuccessCopy extends Instruction {
|
|
|
147
147
|
const memory = context.machineState.memory;
|
|
148
148
|
const addressing = Addressing.fromWire(this.indirect);
|
|
149
149
|
|
|
150
|
+
context.machineState.consumeGas(
|
|
151
|
+
this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
|
|
152
|
+
);
|
|
153
|
+
|
|
150
154
|
const operands = [this.dstOffset];
|
|
151
155
|
const [dstOffset] = addressing.resolve(operands, memory);
|
|
152
156
|
|