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/x86/arch.py15
-rw-r--r--test/expression/expr_cmp.py107
-rwxr-xr-xtest/test_all.py1
3 files changed, 123 insertions, 0 deletions
diff --git a/test/arch/x86/arch.py b/test/arch/x86/arch.py
index 0472e714..76e5a5eb 100644
--- a/test/arch/x86/arch.py
+++ b/test/arch/x86/arch.py
@@ -2793,6 +2793,12 @@ reg_tests = [
     (m64, "00000000    PCMPGTD    XMM3, XMM0",
      "660f66d8"),
 
+    (m32, "00000000    PCMPEQQ    XMM0, XMM5",
+    "660f3829C5"),
+    (m32, "00000000    PCMPGTQ    XMM0, XMM5",
+    "660f3837C5"),
+
+
     (m32, "00000000    PUNPCKHBW  MM2, QWORD PTR [EDX]",
     "0F6812"),
     (m32, "00000000    PUNPCKHBW  XMM2, XMMWORD PTR [EDX]",
@@ -2939,6 +2945,15 @@ reg_tests = [
     (m64, "00000000    SHUFPD     XMM0, XMM6, 0x44",
      "660fc6c644"),
 
+    (m32, "00000000    AESENC     XMM1, XMM2",
+     "660f38dcca"),
+    (m32, "00000000    AESDEC     XMM1, XMM2",
+     "660f38deca"),
+
+    (m32, "00000000    AESENCLAST XMM1, XMM2",
+     "660f38ddca"),
+    (m32, "00000000    AESDECLAST XMM1, XMM2",
+     "660f38dfca"),
 
 ]
 
diff --git a/test/expression/expr_cmp.py b/test/expression/expr_cmp.py
new file mode 100644
index 00000000..b238151d
--- /dev/null
+++ b/test/expression/expr_cmp.py
@@ -0,0 +1,107 @@
+#
+# Expression comparison regression tests  #
+#
+from pdb import pm
+from miasm2.expression.expression import ExprInt, expr_is_unsigned_greater,\
+    expr_is_unsigned_greater_or_equal, expr_is_unsigned_lower,\
+    expr_is_unsigned_lower_or_equal, expr_is_signed_greater,\
+    expr_is_signed_greater_or_equal, expr_is_signed_lower, \
+    expr_is_signed_lower_or_equal, expr_is_equal, expr_is_not_equal
+from miasm2.expression.simplifications import expr_simp
+
+int_0 = ExprInt(0, 32)
+int_1 = ExprInt(1, 32)
+int_m1 = ExprInt(-1, 32)
+int_m2 = ExprInt(-2, 32)
+
+b0 = ExprInt(0, 1)
+b1 = ExprInt(1, 1)
+
+tests = [
+    # unsigned
+    (b1, expr_is_unsigned_greater, int_1, int_0),
+    (b1, expr_is_unsigned_lower, int_0, int_1),
+
+    (b0, expr_is_unsigned_greater, int_0, int_1),
+    (b0, expr_is_unsigned_lower, int_1, int_0),
+
+    (b1, expr_is_unsigned_greater_or_equal, int_1, int_0),
+    (b1, expr_is_unsigned_lower_or_equal, int_0, int_1),
+
+    (b0, expr_is_unsigned_greater_or_equal, int_0, int_1),
+    (b0, expr_is_unsigned_lower_or_equal, int_1, int_0),
+
+    (b1, expr_is_unsigned_greater_or_equal, int_1, int_1),
+    (b1, expr_is_unsigned_lower_or_equal, int_1, int_1),
+
+    (b1, expr_is_unsigned_greater, int_m1, int_0),
+    (b1, expr_is_unsigned_lower, int_0, int_m1),
+
+    (b0, expr_is_unsigned_greater, int_0, int_m1),
+    (b0, expr_is_unsigned_lower, int_m1, int_0),
+
+
+    # signed
+    (b1, expr_is_signed_greater, int_1, int_0),
+    (b1, expr_is_signed_lower, int_0, int_1),
+
+    (b0, expr_is_signed_greater, int_0, int_1),
+    (b0, expr_is_signed_lower, int_1, int_0),
+
+    (b1, expr_is_signed_greater_or_equal, int_1, int_0),
+    (b1, expr_is_signed_lower_or_equal, int_0, int_1),
+
+    (b0, expr_is_signed_greater_or_equal, int_0, int_1),
+    (b0, expr_is_signed_lower_or_equal, int_1, int_0),
+
+    (b1, expr_is_signed_greater_or_equal, int_1, int_1),
+    (b1, expr_is_signed_lower_or_equal, int_1, int_1),
+
+    (b0, expr_is_signed_greater, int_m1, int_0),
+    (b0, expr_is_signed_lower, int_0, int_m1),
+
+    (b1, expr_is_signed_greater, int_0, int_m1),
+    (b1, expr_is_signed_lower, int_m1, int_0),
+
+
+    # greater lesser, neg
+    (b1, expr_is_signed_greater, int_1, int_m1),
+    (b1, expr_is_signed_lower, int_m1, int_1),
+
+    (b0, expr_is_signed_greater, int_m1, int_1),
+    (b0, expr_is_signed_lower, int_1, int_m1),
+
+    (b1, expr_is_signed_greater_or_equal, int_1, int_m1),
+    (b1, expr_is_signed_lower_or_equal, int_m1, int_1),
+
+    (b0, expr_is_signed_greater_or_equal, int_m1, int_1),
+    (b0, expr_is_signed_lower_or_equal, int_1, int_m1),
+
+    (b1, expr_is_signed_greater_or_equal, int_m1, int_m1),
+    (b1, expr_is_signed_lower_or_equal, int_m1, int_m1),
+
+
+    (b1, expr_is_signed_greater, int_m1, int_m2),
+    (b1, expr_is_signed_lower, int_m2, int_m1),
+
+    (b0, expr_is_signed_greater, int_m2, int_m1),
+    (b0, expr_is_signed_lower, int_m1, int_m2),
+
+    (b1, expr_is_signed_greater_or_equal, int_m1, int_m2),
+    (b1, expr_is_signed_lower_or_equal, int_m2, int_m1),
+
+    (b0, expr_is_signed_greater_or_equal, int_m2, int_m1),
+    (b0, expr_is_signed_lower_or_equal, int_m1, int_m2),
+
+    # eq/neq
+    (b1, expr_is_equal, int_1, int_1),
+    (b1, expr_is_not_equal, int_0, int_1),
+
+    (b0, expr_is_equal, int_1, int_0),
+    (b0, expr_is_not_equal, int_0, int_0),
+
+
+]
+
+for result, func, arg1, arg2 in tests:
+    assert result == expr_simp(func(arg1, arg2))
diff --git a/test/test_all.py b/test/test_all.py
index 99b0094e..30408ee2 100755
--- a/test/test_all.py
+++ b/test/test_all.py
@@ -245,6 +245,7 @@ for script in ["modint.py",
                "expression_helper.py",
                "expr_pickle.py",
                "parser.py",
+               "expr_cmp.py",
                ]:
     testset += RegressionTest([script], base_dir="expression")