diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/arch/aarch64/arch.py | 20 | ||||
| -rw-r--r-- | test/expression/simplifications.py | 176 | ||||
| -rwxr-xr-x | test/test_all.py | 5 |
3 files changed, 199 insertions, 2 deletions
diff --git a/test/arch/aarch64/arch.py b/test/arch/aarch64/arch.py index cba175e6..46a4514b 100644 --- a/test/arch/aarch64/arch.py +++ b/test/arch/aarch64/arch.py @@ -7,6 +7,7 @@ from miasm2.core.locationdb import LocationDB loc_db = LocationDB() reg_tests_aarch64 = [ + ("XXXXXXXX MOV W1, WZR", "E1031F2A"), ("XXXXXXXX TST W5, W3", @@ -1794,6 +1795,25 @@ reg_tests_aarch64 = [ ("XXXXXXXX ORR X8, 0x0, 0x1000100010001", "E88300B2"), + + ("XXXXXXXX CASP X0, X2, [X4]", + "827C2048"), + ("XXXXXXXX CASPL X0, X2, [X4]", + "82FC2048"), + ("XXXXXXXX CASPA X0, X2, [X4]", + "827C6048"), + ("XXXXXXXX CASPAL X0, X2, [X4]", + "82FC6048"), + + ("XXXXXXXX CASP W0, W2, [X4]", + "827C2008"), + ("XXXXXXXX CASPL W0, W2, [X4]", + "82FC2008"), + ("XXXXXXXX CASPA W0, W2, [X4]", + "827C6008"), + ("XXXXXXXX CASPAL W0, W2, [X4]", + "82FC6008"), + ] diff --git a/test/expression/simplifications.py b/test/expression/simplifications.py index cc3606e4..5bca3fa9 100644 --- a/test/expression/simplifications.py +++ b/test/expression/simplifications.py @@ -446,6 +446,9 @@ to_test = [(ExprInt(1, 32) - ExprInt(1, 32), ExprInt(0, 32)), (ExprOp("signExt_16", ExprInt(0x8, 8)), ExprInt(0x8, 16)), (ExprOp("signExt_16", ExprInt(-0x8, 8)), ExprInt(-0x8, 16)), + (ExprCond(a8.zeroExtend(32), a, b), ExprCond(a8, a, b)), + + (- (i2*a), a * im2), (a + a, a * i2), (ExprOp('+', a, a), a * i2), @@ -516,6 +519,179 @@ to_test = [ (ExprOp(TOK_EQUAL, a8.zeroExtend(32), b8.zeroExtend(32)), ExprOp(TOK_EQUAL, a8, b8)), (ExprOp(TOK_EQUAL, a8.signExtend(32), b8.signExtend(32)), ExprOp(TOK_EQUAL, a8, b8)), + (ExprOp(TOK_INF_EQUAL_SIGNED, a8.zeroExtend(32), i0), ExprOp(TOK_EQUAL, a8, ExprInt(0, 8))), + + ((a8.zeroExtend(32) + b8.zeroExtend(32) + ExprInt(1, 32))[0:8], a8 + b8 + ExprInt(1, 8)), + + (ExprCond(a8.zeroExtend(32), a, b), ExprCond(a8, a, b)), + (ExprCond(a8.signExtend(32), a, b), ExprCond(a8, a, b)), + + + ( + ExprOp( + TOK_EQUAL, + a8.zeroExtend(32) & b8.zeroExtend(32) & ExprInt(0x12, 32), + i1 + ), + ExprOp( + TOK_EQUAL, + a8 & b8 & ExprInt(0x12, 8), + ExprInt(1, 8) + ) + ), + + ( + ExprCond( + ExprOp( + TOK_EQUAL, + a & b & ExprInt(0x80, 32), + ExprInt(0x80, 32) + ), a, b + ), + ExprCond(a & b & ExprInt(0x80, 32), a, b) + ), + + + + ( + ExprCond( + a8.zeroExtend(32) & b8.zeroExtend(32) & ExprInt(0x12, 32), + a, b + ), + ExprCond( + a8 & b8 & ExprInt(0x12, 8), + a, b + ), + ), + + + (a8.zeroExtend(32)[:8], a8), + (a.zeroExtend(64)[:32], a), + (a.zeroExtend(64)[:8], a[:8]), + (a8.zeroExtend(32)[:16], a8.zeroExtend(16)), + + ( + ExprCond( + a & ExprInt(0x80000000, 32), + a, b + ), + ExprCond( + ExprOp(TOK_INF_SIGNED, a, ExprInt(0, 32) ), + a, b + ) + ), + + + + ( + ExprCond( + a8.signExtend(32) & ExprInt(0x80000000, 32), + a, b + ), + ExprCond( + ExprOp(TOK_INF_SIGNED, a8, ExprInt(0, 8) ), + a, b + ) + ), + + + ( + ExprCond( + ExprOp(TOK_INF_SIGNED, a8.signExtend(32), ExprInt(0x10, 32) ), + a, b + ), + ExprCond( + ExprOp(TOK_INF_SIGNED, a8, ExprInt(0x10, 8) ), + a, b + ) + ), + + ( + ExprCond( + ExprOp(TOK_INF_SIGNED, a8.signExtend(32), ExprInt(-0x10, 32) ), + a, b + ), + ExprCond( + ExprOp(TOK_INF_SIGNED, a8, ExprInt(-0x10, 8) ), + a, b + ) + ), + + + ( + ExprCond( + ExprOp(TOK_INF_UNSIGNED, a8.zeroExtend(32), ExprInt(0x10, 32) ), + a, b + ), + ExprCond( + ExprOp(TOK_INF_UNSIGNED, a8, ExprInt(0x10, 8) ), + a, b + ) + ), + + + + ( + ExprCond( + ExprOp(TOK_INF_SIGNED, a8.signExtend(32), ExprInt(0x200, 32) ), + a, b + ), + a + ), + + + ( + ExprCond( + ExprOp(TOK_INF_UNSIGNED, a8.zeroExtend(32), ExprInt(0x200, 32) ), + a, b + ), + a + ), + + + + ( + ExprCond( + ExprOp(TOK_INF_SIGNED, a8.zeroExtend(32), ExprInt(0x10, 32) ), + a, b + ), + ExprCond( + ExprOp(TOK_INF_UNSIGNED, a8, ExprInt(0x10, 8) ), + a, b + ) + ), + + ( + ExprCond( + ExprOp(TOK_INF_EQUAL_SIGNED, a8.zeroExtend(32), ExprInt(0x10, 32) ), + a, b + ), + ExprCond( + ExprOp(TOK_INF_EQUAL_UNSIGNED, a8, ExprInt(0x10, 8) ), + a, b + ) + ), + + + ( + ExprCond( + ExprOp(TOK_INF_SIGNED, a8.zeroExtend(32), ExprInt(-1, 32) ), + a, b + ), + b + ), + + ( + ExprCond( + ExprOp(TOK_INF_EQUAL_SIGNED, a8.zeroExtend(32), ExprInt(-1, 32) ), + a, b + ), + b + ), + + + (a8.zeroExtend(32)[2:5], a8[2:5]), + ] for e_input, e_check in to_test: diff --git a/test/test_all.py b/test/test_all.py index 4b97ffba..f3bcc477 100755 --- a/test/test_all.py +++ b/test/test_all.py @@ -21,6 +21,7 @@ TAGS = {"regression": "REGRESSION", # Regression tests "long": "LONG", # Very time consumming tests "llvm": "LLVM", # LLVM dependency is required "gcc": "GCC", # GCC based tests + "python": "PYTHON", # Python jitted tests "z3": "Z3", # Z3 dependency is needed "qemu": "QEMU", # QEMU tests (several tests) "cparser": "CPARSER", # pycparser is needed @@ -109,7 +110,7 @@ for script in ["x86/sem.py", continue testset += ArchUnitTest(script, jitter, base_dir="arch", tags=tags) -testset += ArchUnitTest("x86/unit/access_xmm.py", "python", base_dir="arch") +testset += ArchUnitTest("x86/unit/access_xmm.py", "python", base_dir="arch", tags=[TAGS["python"]]) ### QEMU regression tests class QEMUTest(RegressionTest): @@ -750,7 +751,7 @@ class ExampleJitterNoPython(ExampleJitter): for jitter in ExampleJitter.jitter_engines: # Take 5 min on a Core i5 - tags = {"python": [TAGS["long"]], + tags = {"python": [TAGS["long"], TAGS["python"]], "llvm": [TAGS["llvm"]], "gcc": [TAGS["gcc"]], } |