about summary refs log tree commit diff stats
path: root/test/arch/x86/unit/mn_getset128.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/arch/x86/unit/mn_getset128.py')
-rw-r--r--test/arch/x86/unit/mn_getset128.py52
1 files changed, 52 insertions, 0 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,
+    ]]