about summary refs log tree commit diff stats
path: root/test/arch/x86/unit/mn_getset128.py
blob: f20f452ebedb9492813468f356098102585d059e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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 == 0xffffffffffffffff0000000000000000
        assert self.myjit.cpu.XMM1 == 0x11223345

        # Check 128 get / set
        assert self.myjit.cpu.get_gpreg()['XMM0'] == 0xffffffffffffffff0000000000000000
        assert self.myjit.cpu.get_gpreg()['XMM1'] == 0x11223345

        assert self.myjit.cpu.get_gpreg()['XMM2'] == 0x11112222333344445555666677778888
        assert self.myjit.cpu.get_gpreg()['XMM2'] == 0x11112222333344445555666677778888


if __name__ == "__main__":
    [test(*sys.argv[1:])() for test in [
        Test_get_set_128,
    ]]