about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--test/arch/x86/unit/mn_getset128.py52
-rwxr-xr-xtest/arch/x86/unit/mn_pcmpeq.py32
-rwxr-xr-xtest/test_all.py1
3 files changed, 83 insertions, 2 deletions
diff --git a/test/arch/x86/unit/mn_getset128.py b/test/arch/x86/unit/mn_getset128.py
new file mode 100644
index 00000000..a084d663
--- /dev/null
+++ b/test/arch/x86/unit/mn_getset128.py
@@ -0,0 +1,52 @@
+#! /usr/bin/env python2
+
+import sys
+
+from asm_test import Asm_Test_32
+
+
+class Test_get_set_128(Asm_Test_32):
+    TXT = '''
+    main:
+       MOVD       XMM0, ESI
+       MOVD       XMM1, EDI
+       PCMPEQQ    XMM0, XMM1
+       JZ         ret
+       MOV        EAX, 1
+
+       PUSH       0x11112222
+       PUSH       0x33334444
+       PUSH       0x55556666
+       PUSH       0x77778888
+       MOVAPS     XMM2, XMMWORD PTR [ESP]
+       ADD        ESP, 0x10
+    ret:
+       RET
+    '''
+
+    def prepare(self):
+        val = 1
+        self.myjit.cpu.ESI = 0x11223344
+        self.myjit.cpu.EDI = 0x11223345
+        self.myjit.cpu.XMM0 = val
+
+        # Check 128 get / set
+        assert self.myjit.cpu.XMM0 == val
+        assert self.myjit.cpu.get_gpreg()['XMM0'] == val
+
+    def check(self):
+        assert self.myjit.cpu.XMM0 == 0xffffffffffffffff0000000000000000L
+        assert self.myjit.cpu.XMM1 == 0x11223345
+
+        # Check 128 get / set
+        assert self.myjit.cpu.get_gpreg()['XMM0'] == 0xffffffffffffffff0000000000000000L
+        assert self.myjit.cpu.get_gpreg()['XMM1'] == 0x11223345
+
+        assert self.myjit.cpu.get_gpreg()['XMM2'] == 0x11112222333344445555666677778888L
+        assert self.myjit.cpu.get_gpreg()['XMM2'] == 0x11112222333344445555666677778888L
+
+
+if __name__ == "__main__":
+    [test(*sys.argv[1:])() for test in [
+        Test_get_set_128,
+    ]]
diff --git a/test/arch/x86/unit/mn_pcmpeq.py b/test/arch/x86/unit/mn_pcmpeq.py
index 22760db4..e934d6b5 100755
--- a/test/arch/x86/unit/mn_pcmpeq.py
+++ b/test/arch/x86/unit/mn_pcmpeq.py
@@ -4,6 +4,7 @@ import sys
 
 from asm_test import Asm_Test_32
 
+
 class Test_PCMPEQB(Asm_Test_32):
     TXT = '''
     main:
@@ -42,7 +43,6 @@ class Test_PCMPEQW(Asm_Test_32):
         assert self.myjit.cpu.MM1 == 0xFFFF0000FFFF0000
 
 
-
 class Test_PCMPEQD(Asm_Test_32):
     TXT = '''
     main:
@@ -62,5 +62,33 @@ class Test_PCMPEQD(Asm_Test_32):
         assert self.myjit.cpu.MM1 == 0x00000000FFFFFFFF
 
 
+class Test_PCMPEQQ(Asm_Test_32):
+    TXT = '''
+    main:
+       MOVD       XMM0, ESI
+       MOVD       XMM1, EDI
+       PCMPEQQ    XMM0, XMM1
+       JZ         ret
+       MOV        EAX, 1
+    ret:
+       RET
+    '''
+
+    def prepare(self):
+        val = 1
+        self.myjit.cpu.ESI = 0x11223344
+        self.myjit.cpu.EDI = 0x11223345
+        self.myjit.cpu.XMM0 = val
+
+    def check(self):
+        assert self.myjit.cpu.XMM0 == 0xffffffffffffffff0000000000000000L
+        assert self.myjit.cpu.XMM1 == 0x11223345
+
+
 if __name__ == "__main__":
-    [test(*sys.argv[1:])() for test in [Test_PCMPEQB, Test_PCMPEQW, Test_PCMPEQD]]
+    [test(*sys.argv[1:])() for test in [
+        Test_PCMPEQB,
+        Test_PCMPEQW,
+        Test_PCMPEQD,
+        Test_PCMPEQQ,
+    ]]
diff --git a/test/test_all.py b/test/test_all.py
index d1ccb19f..77dd04cf 100755
--- a/test/test_all.py
+++ b/test/test_all.py
@@ -88,6 +88,7 @@ for script in ["x86/sem.py",
                "x86/unit/mn_cpuid.py",
                "x86/unit/mn_div.py",
                "x86/unit/test_asm_x86_64.py",
+               "x86/unit/mn_getset128.py",
                "arm/arch.py",
                "arm/sem.py",
                "aarch64/unit/mn_ubfm.py",