|
22 | 22 | tags = ["sort","input", "output", "bad", "constraint", "zero", |
23 | 23 | "one", "ones", "constd", "consth", "const", "state", |
24 | 24 | "init", "next", "slice", "ite", "implies", "iff", |
25 | | - "add", "sub", "mul", "sdiv", "udiv", "smod", "sll", |
26 | | - "srl", "sra", "and", "or", "xor", "concat", |
| 25 | + "add", "sub", "mul", "sdiv", "udiv", "smod", |
| 26 | + "srem", "urem", "sll", "srl", "sra", "and", |
| 27 | + "or", "xor", "concat", |
27 | 28 | # Unary operations |
28 | 29 | "not", "inc", "dec", "neg", "redor", "redxor", "redand", |
29 | 30 | "eq", "neq", "ugt", "sgt", "ugte", "sgte", "ult", |
@@ -119,8 +120,9 @@ def serialize(self) -> str: |
119 | 120 |
|
120 | 121 |
|
121 | 122 | class Output(Instruction): |
122 | | - def __init__(self, lid: int, out: Instruction): |
| 123 | + def __init__(self, lid: int, out: Instruction, name: str): |
123 | 124 | super().__init__(lid, "output", [out]) |
| 125 | + self.name = name |
124 | 126 |
|
125 | 127 | ## Unary Instructions ## |
126 | 128 |
|
@@ -285,6 +287,14 @@ class Smod(Instruction): |
285 | 287 | def __init__(self, lid: int, sort: Sort, op1: Instruction, op2: Instruction): |
286 | 288 | super().__init__(lid, "smod", [sort, op1, op2]) |
287 | 289 |
|
| 290 | +class Srem(Instruction): |
| 291 | + def __init__(self, lid: int, sort: Sort, op1: Instruction, op2: Instruction): |
| 292 | + super().__init__(lid, "srem", [sort, op1, op2]) |
| 293 | + |
| 294 | +class Urem(Instruction): |
| 295 | + def __init__(self, lid: int, sort: Sort, op1: Instruction, op2: Instruction): |
| 296 | + super().__init__(lid, "urem", [sort, op1, op2]) |
| 297 | + |
288 | 298 | class Sll(Instruction): |
289 | 299 | def __init__(self, lid: int, sort: Sort, op1: Instruction, op2: Instruction): |
290 | 300 | super().__init__(lid, "sll", [sort, op1, op2]) |
|
0 commit comments