about summary refs log tree commit diff stats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/arch/aarch64/arch.py20
-rw-r--r--test/expression/simplifications.py176
-rwxr-xr-xtest/test_all.py5
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"]],
             }