diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/arch/x86/arch.py | 15 | ||||
| -rw-r--r-- | test/expression/expr_cmp.py | 107 | ||||
| -rwxr-xr-x | test/test_all.py | 1 |
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") |