diff options
| -rw-r--r-- | test/arch/x86/unit/mn_getset128.py | 52 | ||||
| -rwxr-xr-x | test/arch/x86/unit/mn_pcmpeq.py | 32 | ||||
| -rwxr-xr-x | test/test_all.py | 1 |
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", |