about summary refs log tree commit diff stats
path: root/test/arch/x86/unit/mn_rotsh.py
blob: eed1e88db160e412b322ddfa0032bab781454264 (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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
import sys
from asm_test import Asm_Test_64

class Test_ROR_0(Asm_Test_64):
    TXT = '''
main:
        MOV RAX, 0x8877665544332211
        ROR RAX, 0
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RAX == 0x8877665544332211


class Test_ROR_8(Asm_Test_64):
    TXT = '''
main:
        MOV RAX, 0x8877665544332211
        ROR RAX, 8
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RAX == 0x1188776655443322


class Test_ROR_X8(Asm_Test_64):
    TXT = '''
main:
        MOV RAX, 0x8877665544332211
        MOV CL, 16
        ROR RAX, CL
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RAX == 0x2211887766554433


class Test_SHR_0(Asm_Test_64):
    TXT = '''
main:
        MOV RAX, 0x8877665544332211
        SHR RAX, 0
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RAX == 0x8877665544332211


class Test_SHR_8(Asm_Test_64):
    TXT = '''
main:
        MOV RAX, 0x8877665544332211
        SHR RAX, 8
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RAX == 0x88776655443322


class Test_SHR_X8(Asm_Test_64):
    TXT = '''
main:
        MOV RAX, 0x8877665544332211
        MOV CL, 16
        SHR RAX, CL
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RAX == 0x887766554433



class Test_ROR_0_64_32(Asm_Test_64):
    TXT = '''
main:
        MOV RAX, 0x8877665544332211
        ROR EAX, 0
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RAX == 0x44332211


class Test_ROR_8_64_32(Asm_Test_64):
    TXT = '''
main:
        MOV RAX, 0x8877665544332211
        ROR EAX, 8
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RAX == 0x11443322


class Test_ROR_X8_64_32(Asm_Test_64):
    TXT = '''
main:
        MOV RAX, 0x8877665544332211
        MOV CL, 16
        ROR EAX, CL
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RAX == 0x22114433


class Test_SHR_0_64_32(Asm_Test_64):
    TXT = '''
main:
        MOV RAX, 0x8877665544332211
        SHR EAX, 0
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RAX == 0x44332211


class Test_SHR_8_64_32(Asm_Test_64):
    TXT = '''
main:
        MOV RAX, 0x8877665544332211
        SHR EAX, 8
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RAX == 0x443322


class Test_SHR_X8_64_32(Asm_Test_64):
    TXT = '''
main:
        MOV RAX, 0x8877665544332211
        MOV CL, 16
        SHR EAX, CL
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RAX == 0x4433



class Test_SHLD(Asm_Test_64):
    TXT = '''
main:
        MOV         RAX, 0x1234FDB512345678
        MOV         RDX, RAX
        MOV         RAX, 0x21AD96F921AD3D34
        MOV         RSI, RAX
        MOV         RAX, 0x0000000000000021
        MOV         RCX, RAX
        SHLD        EDX, ESI, CL
        RET
    '''
    def check(self):
        assert self.myjit.cpu.RDX == 0x000000002468ACF0


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

            Test_SHR_0,
            Test_SHR_8,
            Test_SHR_X8,

            Test_ROR_0_64_32,
            Test_ROR_8_64_32,
            Test_ROR_X8_64_32,

            Test_SHR_0_64_32,
            Test_SHR_8_64_32,
            Test_SHR_X8_64_32,

            Test_SHLD,
        ]
    ]