Statistics
| Branch: | Revision:

root / tests / tcg / xtensa / test_shift.S @ c09015dd

History | View | Annotate | Download (3.8 kB)

1
.include "macros.inc"
2

    
3
test_suite shift
4

    
5
.macro test_shift prefix, dst, src, v, imm
6
    \prefix\()_set \dst, \src, \v, \imm
7
    \prefix\()_ver \dst, \v, \imm
8
.endm
9

    
10
.macro test_shift_sd prefix, v, imm
11
    test_shift \prefix, a3, a2, \v, \imm
12
    test_shift \prefix, a2, a2, \v, \imm
13
.endm
14

    
15
.macro tests_imm_shift prefix, v
16
    test_shift_sd \prefix, \v, 1
17
    test_shift_sd \prefix, \v, 2
18
    test_shift_sd \prefix, \v, 7
19
    test_shift_sd \prefix, \v, 8
20
    test_shift_sd \prefix, \v, 15
21
    test_shift_sd \prefix, \v, 16
22
    test_shift_sd \prefix, \v, 31
23
.endm
24

    
25
.macro tests_shift prefix, v
26
    test_shift_sd \prefix, \v, 0
27
    tests_imm_shift \prefix, \v
28
    test_shift_sd \prefix, \v, 32
29
.endm
30

    
31

    
32
.macro slli_set dst, src, v, imm
33
    movi    \src, \v
34
    slli    \dst, \src, \imm
35
.endm
36

    
37
.macro slli_ver dst, v, imm
38
    mov     a2, \dst
39
    movi    a3, ((\v) << (\imm)) & 0xffffffff
40
    assert  eq, a2, a3
41
.endm
42

    
43
test slli
44
    tests_imm_shift slli, 0xa3c51249
45
test_end
46

    
47

    
48
.macro srai_set dst, src, v, imm
49
    movi    \src, \v
50
    srai    \dst, \src, \imm
51
.endm
52

    
53
.macro srai_ver dst, v, imm
54
    mov     a2, \dst
55
    .if (\imm)
56
    movi    a3, (((\v) >> (\imm)) & 0xffffffff) | \
57
                ~((((\v) & 0x80000000) >> ((\imm) - 1)) - 1)
58
    .else
59
    movi    a3, \v
60
    .endif
61
    assert  eq, a2, a3
62
.endm
63

    
64
test srai
65
    tests_imm_shift srai, 0x49a3c512
66
    tests_imm_shift srai, 0xa3c51249
67
test_end
68

    
69

    
70
.macro srli_set dst, src, v, imm
71
    movi    \src, \v
72
    srli    \dst, \src, \imm
73
.endm
74

    
75
.macro srli_ver dst, v, imm
76
    mov     a2, \dst
77
    movi    a3, (((\v) >> (\imm)) & 0xffffffff)
78
    assert  eq, a2, a3
79
.endm
80

    
81
test srli
82
    tests_imm_shift srli, 0x49a3c512
83
    tests_imm_shift srli, 0xa3c51249
84
test_end
85

    
86

    
87
.macro sll_set dst, src, v, imm
88
    movi    a2, \imm
89
    ssl     a2
90
    movi    \src, \v
91
    sll     \dst, \src
92
.endm
93

    
94
.macro sll_sar_set dst, src, v, imm
95
    movi    a2, 32 - \imm
96
    wsr     a2, sar
97
    movi    \src, \v
98
    sll     \dst, \src
99
.endm
100

    
101
.macro sll_ver dst, v, imm
102
    slli_ver \dst, \v, (\imm) & 0x1f
103
.endm
104

    
105
.macro sll_sar_ver dst, v, imm
106
    slli_ver \dst, \v, \imm
107
.endm
108

    
109
test sll
110
    tests_shift sll, 0xa3c51249
111
    tests_shift sll_sar, 0xa3c51249
112
test_end
113

    
114

    
115
.macro srl_set dst, src, v, imm
116
    movi    a2, \imm
117
    ssr     a2
118
    movi    \src, \v
119
    srl     \dst, \src
120
.endm
121

    
122
.macro srl_sar_set dst, src, v, imm
123
    movi    a2, \imm
124
    wsr     a2, sar
125
    movi    \src, \v
126
    srl     \dst, \src
127
.endm
128

    
129
.macro srl_ver dst, v, imm
130
    srli_ver \dst, \v, (\imm) & 0x1f
131
.endm
132

    
133
.macro srl_sar_ver dst, v, imm
134
    srli_ver \dst, \v, \imm
135
.endm
136

    
137
test srl
138
    tests_shift srl, 0xa3c51249
139
    tests_shift srl_sar, 0xa3c51249
140
    tests_shift srl, 0x49a3c512
141
    tests_shift srl_sar, 0x49a3c512
142
test_end
143

    
144

    
145
.macro sra_set dst, src, v, imm
146
    movi    a2, \imm
147
    ssr     a2
148
    movi    \src, \v
149
    sra     \dst, \src
150
.endm
151

    
152
.macro sra_sar_set dst, src, v, imm
153
    movi    a2, \imm
154
    wsr     a2, sar
155
    movi    \src, \v
156
    sra     \dst, \src
157
.endm
158

    
159
.macro sra_ver dst, v, imm
160
    srai_ver \dst, \v, (\imm) & 0x1f
161
.endm
162

    
163
.macro sra_sar_ver dst, v, imm
164
    srai_ver \dst, \v, \imm
165
.endm
166

    
167
test sra
168
    tests_shift sra, 0xa3c51249
169
    tests_shift sra_sar, 0xa3c51249
170
    tests_shift sra, 0x49a3c512
171
    tests_shift sra_sar, 0x49a3c512
172
test_end
173

    
174

    
175
.macro src_set dst, src, v, imm
176
    movi    a2, \imm
177
    ssr     a2
178
    movi    \src, (\v) & 0xffffffff
179
    movi    a4, (\v) >> 32
180
    src     \dst, a4, \src
181
.endm
182

    
183
.macro src_sar_set dst, src, v, imm
184
    movi    a2, \imm
185
    wsr     a2, sar
186
    movi    \src, (\v) & 0xffffffff
187
    movi    a4, (\v) >> 32
188
    src     \dst, a4, \src
189
.endm
190

    
191
.macro src_ver dst, v, imm
192
    src_sar_ver \dst, \v, (\imm) & 0x1f
193
.endm
194

    
195
.macro src_sar_ver dst, v, imm
196
    mov     a2, \dst
197
    movi    a3, ((\v) >> (\imm)) & 0xffffffff
198
    assert  eq, a2, a3
199
.endm
200

    
201
test src
202
    tests_shift src, 0xa3c51249215c3a94
203
    tests_shift src_sar, 0xa3c51249215c3a94
204
test_end
205

    
206
test_suite_end