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 |