Statistics
| Branch: | Revision:

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

History | View | Annotate | Download (3.8 kB)

1 7d890b40 Max Filippov
.include "macros.inc"
2 7d890b40 Max Filippov
3 7d890b40 Max Filippov
test_suite shift
4 7d890b40 Max Filippov
5 7d890b40 Max Filippov
.macro test_shift prefix, dst, src, v, imm
6 7d890b40 Max Filippov
    \prefix\()_set \dst, \src, \v, \imm
7 7d890b40 Max Filippov
    \prefix\()_ver \dst, \v, \imm
8 7d890b40 Max Filippov
.endm
9 7d890b40 Max Filippov
10 7d890b40 Max Filippov
.macro test_shift_sd prefix, v, imm
11 7d890b40 Max Filippov
    test_shift \prefix, a3, a2, \v, \imm
12 7d890b40 Max Filippov
    test_shift \prefix, a2, a2, \v, \imm
13 7d890b40 Max Filippov
.endm
14 7d890b40 Max Filippov
15 7d890b40 Max Filippov
.macro tests_imm_shift prefix, v
16 7d890b40 Max Filippov
    test_shift_sd \prefix, \v, 1
17 7d890b40 Max Filippov
    test_shift_sd \prefix, \v, 2
18 7d890b40 Max Filippov
    test_shift_sd \prefix, \v, 7
19 7d890b40 Max Filippov
    test_shift_sd \prefix, \v, 8
20 7d890b40 Max Filippov
    test_shift_sd \prefix, \v, 15
21 7d890b40 Max Filippov
    test_shift_sd \prefix, \v, 16
22 7d890b40 Max Filippov
    test_shift_sd \prefix, \v, 31
23 7d890b40 Max Filippov
.endm
24 7d890b40 Max Filippov
25 7d890b40 Max Filippov
.macro tests_shift prefix, v
26 7d890b40 Max Filippov
    test_shift_sd \prefix, \v, 0
27 7d890b40 Max Filippov
    tests_imm_shift \prefix, \v
28 7d890b40 Max Filippov
    test_shift_sd \prefix, \v, 32
29 7d890b40 Max Filippov
.endm
30 7d890b40 Max Filippov
31 7d890b40 Max Filippov
32 7d890b40 Max Filippov
.macro slli_set dst, src, v, imm
33 7d890b40 Max Filippov
    movi    \src, \v
34 7d890b40 Max Filippov
    slli    \dst, \src, \imm
35 7d890b40 Max Filippov
.endm
36 7d890b40 Max Filippov
37 7d890b40 Max Filippov
.macro slli_ver dst, v, imm
38 7d890b40 Max Filippov
    mov     a2, \dst
39 7d890b40 Max Filippov
    movi    a3, ((\v) << (\imm)) & 0xffffffff
40 7d890b40 Max Filippov
    assert  eq, a2, a3
41 7d890b40 Max Filippov
.endm
42 7d890b40 Max Filippov
43 7d890b40 Max Filippov
test slli
44 7d890b40 Max Filippov
    tests_imm_shift slli, 0xa3c51249
45 7d890b40 Max Filippov
test_end
46 7d890b40 Max Filippov
47 7d890b40 Max Filippov
48 7d890b40 Max Filippov
.macro srai_set dst, src, v, imm
49 7d890b40 Max Filippov
    movi    \src, \v
50 7d890b40 Max Filippov
    srai    \dst, \src, \imm
51 7d890b40 Max Filippov
.endm
52 7d890b40 Max Filippov
53 7d890b40 Max Filippov
.macro srai_ver dst, v, imm
54 7d890b40 Max Filippov
    mov     a2, \dst
55 7d890b40 Max Filippov
    .if (\imm)
56 7d890b40 Max Filippov
    movi    a3, (((\v) >> (\imm)) & 0xffffffff) | \
57 7d890b40 Max Filippov
                ~((((\v) & 0x80000000) >> ((\imm) - 1)) - 1)
58 7d890b40 Max Filippov
    .else
59 7d890b40 Max Filippov
    movi    a3, \v
60 7d890b40 Max Filippov
    .endif
61 7d890b40 Max Filippov
    assert  eq, a2, a3
62 7d890b40 Max Filippov
.endm
63 7d890b40 Max Filippov
64 7d890b40 Max Filippov
test srai
65 7d890b40 Max Filippov
    tests_imm_shift srai, 0x49a3c512
66 7d890b40 Max Filippov
    tests_imm_shift srai, 0xa3c51249
67 7d890b40 Max Filippov
test_end
68 7d890b40 Max Filippov
69 7d890b40 Max Filippov
70 7d890b40 Max Filippov
.macro srli_set dst, src, v, imm
71 7d890b40 Max Filippov
    movi    \src, \v
72 7d890b40 Max Filippov
    srli    \dst, \src, \imm
73 7d890b40 Max Filippov
.endm
74 7d890b40 Max Filippov
75 7d890b40 Max Filippov
.macro srli_ver dst, v, imm
76 7d890b40 Max Filippov
    mov     a2, \dst
77 7d890b40 Max Filippov
    movi    a3, (((\v) >> (\imm)) & 0xffffffff)
78 7d890b40 Max Filippov
    assert  eq, a2, a3
79 7d890b40 Max Filippov
.endm
80 7d890b40 Max Filippov
81 7d890b40 Max Filippov
test srli
82 7d890b40 Max Filippov
    tests_imm_shift srli, 0x49a3c512
83 7d890b40 Max Filippov
    tests_imm_shift srli, 0xa3c51249
84 7d890b40 Max Filippov
test_end
85 7d890b40 Max Filippov
86 7d890b40 Max Filippov
87 7d890b40 Max Filippov
.macro sll_set dst, src, v, imm
88 7d890b40 Max Filippov
    movi    a2, \imm
89 7d890b40 Max Filippov
    ssl     a2
90 7d890b40 Max Filippov
    movi    \src, \v
91 7d890b40 Max Filippov
    sll     \dst, \src
92 7d890b40 Max Filippov
.endm
93 7d890b40 Max Filippov
94 7d890b40 Max Filippov
.macro sll_sar_set dst, src, v, imm
95 7d890b40 Max Filippov
    movi    a2, 32 - \imm
96 7d890b40 Max Filippov
    wsr     a2, sar
97 7d890b40 Max Filippov
    movi    \src, \v
98 7d890b40 Max Filippov
    sll     \dst, \src
99 7d890b40 Max Filippov
.endm
100 7d890b40 Max Filippov
101 7d890b40 Max Filippov
.macro sll_ver dst, v, imm
102 7d890b40 Max Filippov
    slli_ver \dst, \v, (\imm) & 0x1f
103 7d890b40 Max Filippov
.endm
104 7d890b40 Max Filippov
105 7d890b40 Max Filippov
.macro sll_sar_ver dst, v, imm
106 7d890b40 Max Filippov
    slli_ver \dst, \v, \imm
107 7d890b40 Max Filippov
.endm
108 7d890b40 Max Filippov
109 7d890b40 Max Filippov
test sll
110 7d890b40 Max Filippov
    tests_shift sll, 0xa3c51249
111 7d890b40 Max Filippov
    tests_shift sll_sar, 0xa3c51249
112 7d890b40 Max Filippov
test_end
113 7d890b40 Max Filippov
114 7d890b40 Max Filippov
115 7d890b40 Max Filippov
.macro srl_set dst, src, v, imm
116 7d890b40 Max Filippov
    movi    a2, \imm
117 7d890b40 Max Filippov
    ssr     a2
118 7d890b40 Max Filippov
    movi    \src, \v
119 7d890b40 Max Filippov
    srl     \dst, \src
120 7d890b40 Max Filippov
.endm
121 7d890b40 Max Filippov
122 7d890b40 Max Filippov
.macro srl_sar_set dst, src, v, imm
123 7d890b40 Max Filippov
    movi    a2, \imm
124 7d890b40 Max Filippov
    wsr     a2, sar
125 7d890b40 Max Filippov
    movi    \src, \v
126 7d890b40 Max Filippov
    srl     \dst, \src
127 7d890b40 Max Filippov
.endm
128 7d890b40 Max Filippov
129 7d890b40 Max Filippov
.macro srl_ver dst, v, imm
130 7d890b40 Max Filippov
    srli_ver \dst, \v, (\imm) & 0x1f
131 7d890b40 Max Filippov
.endm
132 7d890b40 Max Filippov
133 7d890b40 Max Filippov
.macro srl_sar_ver dst, v, imm
134 7d890b40 Max Filippov
    srli_ver \dst, \v, \imm
135 7d890b40 Max Filippov
.endm
136 7d890b40 Max Filippov
137 7d890b40 Max Filippov
test srl
138 7d890b40 Max Filippov
    tests_shift srl, 0xa3c51249
139 7d890b40 Max Filippov
    tests_shift srl_sar, 0xa3c51249
140 7d890b40 Max Filippov
    tests_shift srl, 0x49a3c512
141 7d890b40 Max Filippov
    tests_shift srl_sar, 0x49a3c512
142 7d890b40 Max Filippov
test_end
143 7d890b40 Max Filippov
144 7d890b40 Max Filippov
145 7d890b40 Max Filippov
.macro sra_set dst, src, v, imm
146 7d890b40 Max Filippov
    movi    a2, \imm
147 7d890b40 Max Filippov
    ssr     a2
148 7d890b40 Max Filippov
    movi    \src, \v
149 7d890b40 Max Filippov
    sra     \dst, \src
150 7d890b40 Max Filippov
.endm
151 7d890b40 Max Filippov
152 7d890b40 Max Filippov
.macro sra_sar_set dst, src, v, imm
153 7d890b40 Max Filippov
    movi    a2, \imm
154 7d890b40 Max Filippov
    wsr     a2, sar
155 7d890b40 Max Filippov
    movi    \src, \v
156 7d890b40 Max Filippov
    sra     \dst, \src
157 7d890b40 Max Filippov
.endm
158 7d890b40 Max Filippov
159 7d890b40 Max Filippov
.macro sra_ver dst, v, imm
160 7d890b40 Max Filippov
    srai_ver \dst, \v, (\imm) & 0x1f
161 7d890b40 Max Filippov
.endm
162 7d890b40 Max Filippov
163 7d890b40 Max Filippov
.macro sra_sar_ver dst, v, imm
164 7d890b40 Max Filippov
    srai_ver \dst, \v, \imm
165 7d890b40 Max Filippov
.endm
166 7d890b40 Max Filippov
167 7d890b40 Max Filippov
test sra
168 7d890b40 Max Filippov
    tests_shift sra, 0xa3c51249
169 7d890b40 Max Filippov
    tests_shift sra_sar, 0xa3c51249
170 7d890b40 Max Filippov
    tests_shift sra, 0x49a3c512
171 7d890b40 Max Filippov
    tests_shift sra_sar, 0x49a3c512
172 7d890b40 Max Filippov
test_end
173 7d890b40 Max Filippov
174 7d890b40 Max Filippov
175 7d890b40 Max Filippov
.macro src_set dst, src, v, imm
176 7d890b40 Max Filippov
    movi    a2, \imm
177 7d890b40 Max Filippov
    ssr     a2
178 7d890b40 Max Filippov
    movi    \src, (\v) & 0xffffffff
179 7d890b40 Max Filippov
    movi    a4, (\v) >> 32
180 7d890b40 Max Filippov
    src     \dst, a4, \src
181 7d890b40 Max Filippov
.endm
182 7d890b40 Max Filippov
183 7d890b40 Max Filippov
.macro src_sar_set dst, src, v, imm
184 7d890b40 Max Filippov
    movi    a2, \imm
185 7d890b40 Max Filippov
    wsr     a2, sar
186 7d890b40 Max Filippov
    movi    \src, (\v) & 0xffffffff
187 7d890b40 Max Filippov
    movi    a4, (\v) >> 32
188 7d890b40 Max Filippov
    src     \dst, a4, \src
189 7d890b40 Max Filippov
.endm
190 7d890b40 Max Filippov
191 7d890b40 Max Filippov
.macro src_ver dst, v, imm
192 7d890b40 Max Filippov
    src_sar_ver \dst, \v, (\imm) & 0x1f
193 7d890b40 Max Filippov
.endm
194 7d890b40 Max Filippov
195 7d890b40 Max Filippov
.macro src_sar_ver dst, v, imm
196 7d890b40 Max Filippov
    mov     a2, \dst
197 7d890b40 Max Filippov
    movi    a3, ((\v) >> (\imm)) & 0xffffffff
198 7d890b40 Max Filippov
    assert  eq, a2, a3
199 7d890b40 Max Filippov
.endm
200 7d890b40 Max Filippov
201 7d890b40 Max Filippov
test src
202 7d890b40 Max Filippov
    tests_shift src, 0xa3c51249215c3a94
203 7d890b40 Max Filippov
    tests_shift src_sar, 0xa3c51249215c3a94
204 7d890b40 Max Filippov
test_end
205 7d890b40 Max Filippov
206 7d890b40 Max Filippov
test_suite_end