2 #include "arm-neon-ref.h"
3 #include "compute-ref-data.h"
5 /* Expected results with input=0. */
6 VECT_VAR_DECL(expected_0
,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
8 VECT_VAR_DECL(expected_0
,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
9 VECT_VAR_DECL(expected_0
,int,32,2) [] = { 0x0, 0x0 };
10 VECT_VAR_DECL(expected_0
,int,64,1) [] = { 0x0 };
11 VECT_VAR_DECL(expected_0
,uint
,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
13 VECT_VAR_DECL(expected_0
,uint
,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
14 VECT_VAR_DECL(expected_0
,uint
,32,2) [] = { 0x0, 0x0 };
15 VECT_VAR_DECL(expected_0
,uint
,64,1) [] = { 0x0 };
16 VECT_VAR_DECL(expected_0
,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
20 VECT_VAR_DECL(expected_0
,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
22 VECT_VAR_DECL(expected_0
,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
23 VECT_VAR_DECL(expected_0
,int,64,2) [] = { 0x0, 0x0 };
24 VECT_VAR_DECL(expected_0
,uint
,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
28 VECT_VAR_DECL(expected_0
,uint
,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
30 VECT_VAR_DECL(expected_0
,uint
,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
31 VECT_VAR_DECL(expected_0
,uint
,64,2) [] = { 0x0, 0x0 };
33 /* Expected results with input=0 and negative shift amount. */
34 VECT_VAR_DECL(expected_0_sh_neg
,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
36 VECT_VAR_DECL(expected_0_sh_neg
,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
37 VECT_VAR_DECL(expected_0_sh_neg
,int,32,2) [] = { 0x0, 0x0 };
38 VECT_VAR_DECL(expected_0_sh_neg
,int,64,1) [] = { 0x0 };
39 VECT_VAR_DECL(expected_0_sh_neg
,uint
,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
41 VECT_VAR_DECL(expected_0_sh_neg
,uint
,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
42 VECT_VAR_DECL(expected_0_sh_neg
,uint
,32,2) [] = { 0x0, 0x0 };
43 VECT_VAR_DECL(expected_0_sh_neg
,uint
,64,1) [] = { 0x0 };
44 VECT_VAR_DECL(expected_0_sh_neg
,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
48 VECT_VAR_DECL(expected_0_sh_neg
,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
50 VECT_VAR_DECL(expected_0_sh_neg
,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
51 VECT_VAR_DECL(expected_0_sh_neg
,int,64,2) [] = { 0x0, 0x0 };
52 VECT_VAR_DECL(expected_0_sh_neg
,uint
,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
56 VECT_VAR_DECL(expected_0_sh_neg
,uint
,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
58 VECT_VAR_DECL(expected_0_sh_neg
,uint
,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
59 VECT_VAR_DECL(expected_0_sh_neg
,uint
,64,2) [] = { 0x0, 0x0 };
61 /* Expected results. */
62 VECT_VAR_DECL(expected
,int,8,8) [] = { 0xe0, 0xe2, 0xe4, 0xe6,
63 0xe8, 0xea, 0xec, 0xee };
64 VECT_VAR_DECL(expected
,int,16,4) [] = { 0xff80, 0xff88, 0xff90, 0xff98 };
65 VECT_VAR_DECL(expected
,int,32,2) [] = { 0xfffff000, 0xfffff100 };
66 VECT_VAR_DECL(expected
,int,64,1) [] = { 0xfffffffffffffffe };
67 VECT_VAR_DECL(expected
,uint
,8,8) [] = { 0xe0, 0xe2, 0xe4, 0xe6,
68 0xe8, 0xea, 0xec, 0xee };
69 VECT_VAR_DECL(expected
,uint
,16,4) [] = { 0xff80, 0xff88, 0xff90, 0xff98 };
70 VECT_VAR_DECL(expected
,uint
,32,2) [] = { 0xfffff000, 0xfffff100 };
71 VECT_VAR_DECL(expected
,uint
,64,1) [] = { 0x1ffffffffffffffe };
72 VECT_VAR_DECL(expected
,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
76 VECT_VAR_DECL(expected
,int,16,8) [] = { 0x0, 0x1000, 0x2000, 0x3000,
77 0x4000, 0x5000, 0x6000, 0x7000 };
78 VECT_VAR_DECL(expected
,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
79 VECT_VAR_DECL(expected
,int,64,2) [] = { 0x0, 0x8000000000000000 };
80 VECT_VAR_DECL(expected
,uint
,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
84 VECT_VAR_DECL(expected
,uint
,16,8) [] = { 0x0, 0x1000, 0x2000, 0x3000,
85 0x4000, 0x5000, 0x6000, 0x7000 };
86 VECT_VAR_DECL(expected
,uint
,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
87 VECT_VAR_DECL(expected
,uint
,64,2) [] = { 0x0, 0x8000000000000000 };
89 /* Expected results with negative shift amount. */
90 VECT_VAR_DECL(expected_sh_neg
,int,8,8) [] = { 0xf8, 0xf9, 0xf9, 0xfa,
91 0xfa, 0xfb, 0xfb, 0xfc };
92 VECT_VAR_DECL(expected_sh_neg
,int,16,4) [] = { 0xfffc, 0xfffc, 0xfffd, 0xfffd };
93 VECT_VAR_DECL(expected_sh_neg
,int,32,2) [] = { 0xfffffffe, 0xfffffffe };
94 VECT_VAR_DECL(expected_sh_neg
,int,64,1) [] = { 0xffffffffffffffff };
95 VECT_VAR_DECL(expected_sh_neg
,uint
,8,8) [] = { 0x78, 0x79, 0x79, 0x7a,
96 0x7a, 0x7b, 0x7b, 0x7c };
97 VECT_VAR_DECL(expected_sh_neg
,uint
,16,4) [] = { 0x3ffc, 0x3ffc, 0x3ffd, 0x3ffd };
98 VECT_VAR_DECL(expected_sh_neg
,uint
,32,2) [] = { 0x1ffffffe, 0x1ffffffe };
99 VECT_VAR_DECL(expected_sh_neg
,uint
,64,1) [] = { 0xfffffffffffffff };
100 VECT_VAR_DECL(expected_sh_neg
,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
103 0x0, 0x0, 0x0, 0x0 };
104 VECT_VAR_DECL(expected_sh_neg
,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
105 0x0, 0x0, 0x0, 0x0 };
106 VECT_VAR_DECL(expected_sh_neg
,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
107 VECT_VAR_DECL(expected_sh_neg
,int,64,2) [] = { 0x0, 0x0 };
108 VECT_VAR_DECL(expected_sh_neg
,uint
,8,16) [] = { 0x2, 0x2, 0x2, 0x2,
111 0x2, 0x2, 0x2, 0x2 };
112 VECT_VAR_DECL(expected_sh_neg
,uint
,16,8) [] = { 0x20, 0x20, 0x20, 0x20,
113 0x20, 0x20, 0x20, 0x20 };
114 VECT_VAR_DECL(expected_sh_neg
,uint
,32,4) [] = { 0x80000, 0x80000,
116 VECT_VAR_DECL(expected_sh_neg
,uint
,64,2) [] = { 0x100000000000, 0x100000000000 };
118 /* Expected results with max input value shifted by -1 to test
120 VECT_VAR_DECL(expected_max_sh_minus1
,int,8,8) [] = { 0x40, 0x40, 0x40, 0x40,
121 0x40, 0x40, 0x40, 0x40 };
122 VECT_VAR_DECL(expected_max_sh_minus1
,int,16,4) [] = { 0x4000, 0x4000,
124 VECT_VAR_DECL(expected_max_sh_minus1
,int,32,2) [] = { 0x40000000, 0x40000000 };
125 VECT_VAR_DECL(expected_max_sh_minus1
,int,64,1) [] = { 0x4000000000000000 };
126 VECT_VAR_DECL(expected_max_sh_minus1
,uint
,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
127 0x80, 0x80, 0x80, 0x80 };
128 VECT_VAR_DECL(expected_max_sh_minus1
,uint
,16,4) [] = { 0x8000, 0x8000,
130 VECT_VAR_DECL(expected_max_sh_minus1
,uint
,32,2) [] = { 0x80000000, 0x80000000 };
131 VECT_VAR_DECL(expected_max_sh_minus1
,uint
,64,1) [] = { 0x8000000000000000 };
132 VECT_VAR_DECL(expected_max_sh_minus1
,int,8,16) [] = { 0x40, 0x40, 0x40, 0x40,
133 0x40, 0x40, 0x40, 0x40,
134 0x40, 0x40, 0x40, 0x40,
135 0x40, 0x40, 0x40, 0x40 };
136 VECT_VAR_DECL(expected_max_sh_minus1
,int,16,8) [] = { 0x4000, 0x4000,
140 VECT_VAR_DECL(expected_max_sh_minus1
,int,32,4) [] = { 0x40000000, 0x40000000,
141 0x40000000, 0x40000000 };
142 VECT_VAR_DECL(expected_max_sh_minus1
,int,64,2) [] = { 0x4000000000000000,
143 0x4000000000000000 };
144 VECT_VAR_DECL(expected_max_sh_minus1
,uint
,8,16) [] = { 0x80, 0x80, 0x80, 0x80,
145 0x80, 0x80, 0x80, 0x80,
146 0x80, 0x80, 0x80, 0x80,
147 0x80, 0x80, 0x80, 0x80 };
148 VECT_VAR_DECL(expected_max_sh_minus1
,uint
,16,8) [] = { 0x8000, 0x8000,
152 VECT_VAR_DECL(expected_max_sh_minus1
,uint
,32,4) [] = { 0x80000000, 0x80000000,
153 0x80000000, 0x80000000 };
154 VECT_VAR_DECL(expected_max_sh_minus1
,uint
,64,2) [] = { 0x8000000000000000,
155 0x8000000000000000 };
157 /* Expected results with max input value shifted by -3 to test
159 VECT_VAR_DECL(expected_max_sh_minus3
,int,8,8) [] = { 0x10, 0x10, 0x10, 0x10,
160 0x10, 0x10, 0x10, 0x10 };
161 VECT_VAR_DECL(expected_max_sh_minus3
,int,16,4) [] = { 0x1000, 0x1000,
163 VECT_VAR_DECL(expected_max_sh_minus3
,int,32,2) [] = { 0x10000000, 0x10000000 };
164 VECT_VAR_DECL(expected_max_sh_minus3
,int,64,1) [] = { 0x1000000000000000 };
165 VECT_VAR_DECL(expected_max_sh_minus3
,uint
,8,8) [] = { 0x20, 0x20, 0x20, 0x20,
166 0x20, 0x20, 0x20, 0x20 };
167 VECT_VAR_DECL(expected_max_sh_minus3
,uint
,16,4) [] = { 0x2000, 0x2000,
169 VECT_VAR_DECL(expected_max_sh_minus3
,uint
,32,2) [] = { 0x20000000, 0x20000000 };
170 VECT_VAR_DECL(expected_max_sh_minus3
,uint
,64,1) [] = { 0x2000000000000000 };
171 VECT_VAR_DECL(expected_max_sh_minus3
,int,8,16) [] = { 0x10, 0x10, 0x10, 0x10,
172 0x10, 0x10, 0x10, 0x10,
173 0x10, 0x10, 0x10, 0x10,
174 0x10, 0x10, 0x10, 0x10 };
175 VECT_VAR_DECL(expected_max_sh_minus3
,int,16,8) [] = { 0x1000, 0x1000,
179 VECT_VAR_DECL(expected_max_sh_minus3
,int,32,4) [] = { 0x10000000, 0x10000000,
180 0x10000000, 0x10000000 };
181 VECT_VAR_DECL(expected_max_sh_minus3
,int,64,2) [] = { 0x1000000000000000,
182 0x1000000000000000 };
183 VECT_VAR_DECL(expected_max_sh_minus3
,uint
,8,16) [] = { 0x20, 0x20, 0x20, 0x20,
184 0x20, 0x20, 0x20, 0x20,
185 0x20, 0x20, 0x20, 0x20,
186 0x20, 0x20, 0x20, 0x20 };
187 VECT_VAR_DECL(expected_max_sh_minus3
,uint
,16,8) [] = { 0x2000, 0x2000,
191 VECT_VAR_DECL(expected_max_sh_minus3
,uint
,32,4) [] = { 0x20000000, 0x20000000,
192 0x20000000, 0x20000000 };
193 VECT_VAR_DECL(expected_max_sh_minus3
,uint
,64,2) [] = { 0x2000000000000000,
194 0x2000000000000000 };
196 /* Expected results with negative shift by vector width. */
197 VECT_VAR_DECL(expected_max_sh_minus_width
,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
198 0x0, 0x0, 0x0, 0x0 };
199 VECT_VAR_DECL(expected_max_sh_minus_width
,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
200 VECT_VAR_DECL(expected_max_sh_minus_width
,int,32,2) [] = { 0x0, 0x0 };
201 VECT_VAR_DECL(expected_max_sh_minus_width
,int,64,1) [] = { 0x0 };
202 VECT_VAR_DECL(expected_max_sh_minus_width
,uint
,8,8) [] = { 0x1, 0x1, 0x1, 0x1,
203 0x1, 0x1, 0x1, 0x1 };
204 VECT_VAR_DECL(expected_max_sh_minus_width
,uint
,16,4) [] = { 0x1, 0x1, 0x1, 0x1 };
205 VECT_VAR_DECL(expected_max_sh_minus_width
,uint
,32,2) [] = { 0x1, 0x1 };
206 VECT_VAR_DECL(expected_max_sh_minus_width
,uint
,64,1) [] = { 0x1 };
207 VECT_VAR_DECL(expected_max_sh_minus_width
,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
210 0x0, 0x0, 0x0, 0x0 };
211 VECT_VAR_DECL(expected_max_sh_minus_width
,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
212 0x0, 0x0, 0x0, 0x0 };
213 VECT_VAR_DECL(expected_max_sh_minus_width
,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
214 VECT_VAR_DECL(expected_max_sh_minus_width
,int,64,2) [] = { 0x0, 0x0 };
215 VECT_VAR_DECL(expected_max_sh_minus_width
,uint
,8,16) [] = { 0x1, 0x1, 0x1, 0x1,
218 0x1, 0x1, 0x1, 0x1 };
219 VECT_VAR_DECL(expected_max_sh_minus_width
,uint
,16,8) [] = { 0x1, 0x1, 0x1, 0x1,
220 0x1, 0x1, 0x1, 0x1 };
221 VECT_VAR_DECL(expected_max_sh_minus_width
,uint
,32,4) [] = { 0x1, 0x1, 0x1, 0x1 };
222 VECT_VAR_DECL(expected_max_sh_minus_width
,uint
,64,2) [] = { 0x1, 0x1 };
224 /* Expected results with large shift amount. */
225 VECT_VAR_DECL(expected_max_sh_large
,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
226 0x0, 0x0, 0x0, 0x0 };
227 VECT_VAR_DECL(expected_max_sh_large
,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
228 VECT_VAR_DECL(expected_max_sh_large
,int,32,2) [] = { 0x0, 0x0 };
229 VECT_VAR_DECL(expected_max_sh_large
,int,64,1) [] = { 0x0 };
230 VECT_VAR_DECL(expected_max_sh_large
,uint
,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
231 0x0, 0x0, 0x0, 0x0 };
232 VECT_VAR_DECL(expected_max_sh_large
,uint
,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
233 VECT_VAR_DECL(expected_max_sh_large
,uint
,32,2) [] = { 0x0, 0x0 };
234 VECT_VAR_DECL(expected_max_sh_large
,uint
,64,1) [] = { 0x0 };
235 VECT_VAR_DECL(expected_max_sh_large
,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
238 0x0, 0x0, 0x0, 0x0 };
239 VECT_VAR_DECL(expected_max_sh_large
,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
240 0x0, 0x0, 0x0, 0x0 };
241 VECT_VAR_DECL(expected_max_sh_large
,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
242 VECT_VAR_DECL(expected_max_sh_large
,int,64,2) [] = { 0x0, 0x0 };
243 VECT_VAR_DECL(expected_max_sh_large
,uint
,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
246 0x0, 0x0, 0x0, 0x0 };
247 VECT_VAR_DECL(expected_max_sh_large
,uint
,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
248 0x0, 0x0, 0x0, 0x0 };
249 VECT_VAR_DECL(expected_max_sh_large
,uint
,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
250 VECT_VAR_DECL(expected_max_sh_large
,uint
,64,2) [] = { 0x0, 0x0 };
252 /* Expected results with large negative shift amount. */
253 VECT_VAR_DECL(expected_max_sh_large_neg
,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
254 0x0, 0x0, 0x0, 0x0 };
255 VECT_VAR_DECL(expected_max_sh_large_neg
,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
256 VECT_VAR_DECL(expected_max_sh_large_neg
,int,32,2) [] = { 0x0, 0x0 };
257 VECT_VAR_DECL(expected_max_sh_large_neg
,int,64,1) [] = { 0x0 };
258 VECT_VAR_DECL(expected_max_sh_large_neg
,uint
,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
259 0x0, 0x0, 0x0, 0x0 };
260 VECT_VAR_DECL(expected_max_sh_large_neg
,uint
,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
261 VECT_VAR_DECL(expected_max_sh_large_neg
,uint
,32,2) [] = { 0x0, 0x0 };
262 VECT_VAR_DECL(expected_max_sh_large_neg
,uint
,64,1) [] = { 0x0 };
263 VECT_VAR_DECL(expected_max_sh_large_neg
,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
266 0x0, 0x0, 0x0, 0x0 };
267 VECT_VAR_DECL(expected_max_sh_large_neg
,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
268 0x0, 0x0, 0x0, 0x0 };
269 VECT_VAR_DECL(expected_max_sh_large_neg
,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
270 VECT_VAR_DECL(expected_max_sh_large_neg
,int,64,2) [] = { 0x0, 0x0 };
271 VECT_VAR_DECL(expected_max_sh_large_neg
,uint
,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
274 0x0, 0x0, 0x0, 0x0 };
275 VECT_VAR_DECL(expected_max_sh_large_neg
,uint
,16,8) [] = { 0x1, 0x1, 0x1, 0x1,
276 0x1, 0x1, 0x1, 0x1 };
277 VECT_VAR_DECL(expected_max_sh_large_neg
,uint
,32,4) [] = { 0x1, 0x1, 0x1, 0x1 };
278 VECT_VAR_DECL(expected_max_sh_large_neg
,uint
,64,2) [] = { 0x1, 0x1 };
280 #define TEST_MSG "VRSHL/VRSHLQ"
281 void exec_vrshl (void)
283 /* Basic test: v3=vrshl(v1,v2), then store the result. */
284 #define TEST_VRSHL(T3, Q, T1, T2, W, N) \
285 VECT_VAR(vector_res, T1, W, N) = \
286 vrshl##Q##_##T2##W(VECT_VAR(vector, T1, W, N), \
287 VECT_VAR(vector_shift, T3, W, N)); \
288 vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N))
290 DECL_VARIABLE_ALL_VARIANTS(vector
);
291 DECL_VARIABLE_ALL_VARIANTS(vector_res
);
293 DECL_VARIABLE_SIGNED_VARIANTS(vector_shift
);
297 /* Fill input vector with 0, to check behavior on limits. */
298 VDUP(vector
, , int, s
, 8, 8, 0);
299 VDUP(vector
, , int, s
, 16, 4, 0);
300 VDUP(vector
, , int, s
, 32, 2, 0);
301 VDUP(vector
, , int, s
, 64, 1, 0);
302 VDUP(vector
, , uint
, u
, 8, 8, 0);
303 VDUP(vector
, , uint
, u
, 16, 4, 0);
304 VDUP(vector
, , uint
, u
, 32, 2, 0);
305 VDUP(vector
, , uint
, u
, 64, 1, 0);
306 VDUP(vector
, q
, int, s
, 8, 16, 0);
307 VDUP(vector
, q
, int, s
, 16, 8, 0);
308 VDUP(vector
, q
, int, s
, 32, 4, 0);
309 VDUP(vector
, q
, int, s
, 64, 2, 0);
310 VDUP(vector
, q
, uint
, u
, 8, 16, 0);
311 VDUP(vector
, q
, uint
, u
, 16, 8, 0);
312 VDUP(vector
, q
, uint
, u
, 32, 4, 0);
313 VDUP(vector
, q
, uint
, u
, 64, 2, 0);
315 /* Choose init value arbitrarily, will be used as shift amount. */
316 /* Use values equal to one-less-than the type width to check
317 behavior on limits. */
318 VDUP(vector_shift
, , int, s
, 8, 8, 7);
319 VDUP(vector_shift
, , int, s
, 16, 4, 15);
320 VDUP(vector_shift
, , int, s
, 32, 2, 31);
321 VDUP(vector_shift
, , int, s
, 64, 1, 63);
322 VDUP(vector_shift
, q
, int, s
, 8, 16, 7);
323 VDUP(vector_shift
, q
, int, s
, 16, 8, 15);
324 VDUP(vector_shift
, q
, int, s
, 32, 4, 31);
325 VDUP(vector_shift
, q
, int, s
, 64, 2, 63);
327 TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL
, int);
329 #define CMT " (with input = 0)"
330 CHECK(TEST_MSG
, int, 8, 8, PRIx8
, expected_0
, CMT
);
331 CHECK(TEST_MSG
, int, 16, 4, PRIx16
, expected_0
, CMT
);
332 CHECK(TEST_MSG
, int, 32, 2, PRIx32
, expected_0
, CMT
);
333 CHECK(TEST_MSG
, int, 64, 1, PRIx64
, expected_0
, CMT
);
334 CHECK(TEST_MSG
, uint
, 8, 8, PRIx8
, expected_0
, CMT
);
335 CHECK(TEST_MSG
, uint
, 16, 4, PRIx16
, expected_0
, CMT
);
336 CHECK(TEST_MSG
, uint
, 32, 2, PRIx32
, expected_0
, CMT
);
337 CHECK(TEST_MSG
, uint
, 64, 1, PRIx64
, expected_0
, CMT
);
338 CHECK(TEST_MSG
, int, 8, 16, PRIx8
, expected_0
, CMT
);
339 CHECK(TEST_MSG
, int, 16, 8, PRIx16
, expected_0
, CMT
);
340 CHECK(TEST_MSG
, int, 32, 4, PRIx32
, expected_0
, CMT
);
341 CHECK(TEST_MSG
, int, 64, 2, PRIx64
, expected_0
, CMT
);
342 CHECK(TEST_MSG
, uint
, 8, 16, PRIx8
, expected_0
, CMT
);
343 CHECK(TEST_MSG
, uint
, 16, 8, PRIx16
, expected_0
, CMT
);
344 CHECK(TEST_MSG
, uint
, 32, 4, PRIx32
, expected_0
, CMT
);
345 CHECK(TEST_MSG
, uint
, 64, 2, PRIx64
, expected_0
, CMT
);
348 /* Use negative shift amounts. */
349 VDUP(vector_shift
, , int, s
, 8, 8, -1);
350 VDUP(vector_shift
, , int, s
, 16, 4, -2);
351 VDUP(vector_shift
, , int, s
, 32, 2, -3);
352 VDUP(vector_shift
, , int, s
, 64, 1, -4);
353 VDUP(vector_shift
, q
, int, s
, 8, 16, -7);
354 VDUP(vector_shift
, q
, int, s
, 16, 8, -11);
355 VDUP(vector_shift
, q
, int, s
, 32, 4, -13);
356 VDUP(vector_shift
, q
, int, s
, 64, 2, -20);
358 TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL
, int);
361 #define CMT " (input 0 and negative shift amount)"
362 CHECK(TEST_MSG
, int, 8, 8, PRIx8
, expected_0_sh_neg
, CMT
);
363 CHECK(TEST_MSG
, int, 16, 4, PRIx16
, expected_0_sh_neg
, CMT
);
364 CHECK(TEST_MSG
, int, 32, 2, PRIx32
, expected_0_sh_neg
, CMT
);
365 CHECK(TEST_MSG
, int, 64, 1, PRIx64
, expected_0_sh_neg
, CMT
);
366 CHECK(TEST_MSG
, uint
, 8, 8, PRIx8
, expected_0_sh_neg
, CMT
);
367 CHECK(TEST_MSG
, uint
, 16, 4, PRIx16
, expected_0_sh_neg
, CMT
);
368 CHECK(TEST_MSG
, uint
, 32, 2, PRIx32
, expected_0_sh_neg
, CMT
);
369 CHECK(TEST_MSG
, uint
, 64, 1, PRIx64
, expected_0_sh_neg
, CMT
);
370 CHECK(TEST_MSG
, int, 8, 16, PRIx8
, expected_0_sh_neg
, CMT
);
371 CHECK(TEST_MSG
, int, 16, 8, PRIx16
, expected_0_sh_neg
, CMT
);
372 CHECK(TEST_MSG
, int, 32, 4, PRIx32
, expected_0_sh_neg
, CMT
);
373 CHECK(TEST_MSG
, int, 64, 2, PRIx64
, expected_0_sh_neg
, CMT
);
374 CHECK(TEST_MSG
, uint
, 8, 16, PRIx8
, expected_0_sh_neg
, CMT
);
375 CHECK(TEST_MSG
, uint
, 16, 8, PRIx16
, expected_0_sh_neg
, CMT
);
376 CHECK(TEST_MSG
, uint
, 32, 4, PRIx32
, expected_0_sh_neg
, CMT
);
377 CHECK(TEST_MSG
, uint
, 64, 2, PRIx64
, expected_0_sh_neg
, CMT
);
380 /* Test again, with predefined input values. */
381 TEST_MACRO_ALL_VARIANTS_2_5(VLOAD
, vector
, buffer
);
383 /* Choose init value arbitrarily, will be used as shift amount. */
384 VDUP(vector_shift
, , int, s
, 8, 8, 1);
385 VDUP(vector_shift
, , int, s
, 16, 4, 3);
386 VDUP(vector_shift
, , int, s
, 32, 2, 8);
387 VDUP(vector_shift
, , int, s
, 64, 1, -3);
388 VDUP(vector_shift
, q
, int, s
, 8, 16, 10);
389 VDUP(vector_shift
, q
, int, s
, 16, 8, 12);
390 VDUP(vector_shift
, q
, int, s
, 32, 4, 32);
391 VDUP(vector_shift
, q
, int, s
, 64, 2, 63);
393 TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL
, int);
397 CHECK(TEST_MSG
, int, 8, 8, PRIx8
, expected
, CMT
);
398 CHECK(TEST_MSG
, int, 16, 4, PRIx16
, expected
, CMT
);
399 CHECK(TEST_MSG
, int, 32, 2, PRIx32
, expected
, CMT
);
400 CHECK(TEST_MSG
, int, 64, 1, PRIx64
, expected
, CMT
);
401 CHECK(TEST_MSG
, uint
, 8, 8, PRIx8
, expected
, CMT
);
402 CHECK(TEST_MSG
, uint
, 16, 4, PRIx16
, expected
, CMT
);
403 CHECK(TEST_MSG
, uint
, 32, 2, PRIx32
, expected
, CMT
);
404 CHECK(TEST_MSG
, uint
, 64, 1, PRIx64
, expected
, CMT
);
405 CHECK(TEST_MSG
, int, 8, 16, PRIx8
, expected
, CMT
);
406 CHECK(TEST_MSG
, int, 16, 8, PRIx16
, expected
, CMT
);
407 CHECK(TEST_MSG
, int, 32, 4, PRIx32
, expected
, CMT
);
408 CHECK(TEST_MSG
, int, 64, 2, PRIx64
, expected
, CMT
);
409 CHECK(TEST_MSG
, uint
, 8, 16, PRIx8
, expected
, CMT
);
410 CHECK(TEST_MSG
, uint
, 16, 8, PRIx16
, expected
, CMT
);
411 CHECK(TEST_MSG
, uint
, 32, 4, PRIx32
, expected
, CMT
);
412 CHECK(TEST_MSG
, uint
, 64, 2, PRIx64
, expected
, CMT
);
415 /* Use negative shift amounts. */
416 VDUP(vector_shift
, , int, s
, 8, 8, -1);
417 VDUP(vector_shift
, , int, s
, 16, 4, -2);
418 VDUP(vector_shift
, , int, s
, 32, 2, -3);
419 VDUP(vector_shift
, , int, s
, 64, 1, -4);
420 VDUP(vector_shift
, q
, int, s
, 8, 16, -7);
421 VDUP(vector_shift
, q
, int, s
, 16, 8, -11);
422 VDUP(vector_shift
, q
, int, s
, 32, 4, -13);
423 VDUP(vector_shift
, q
, int, s
, 64, 2, -20);
425 TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL
, int);
428 #define CMT " (negative shift amount)"
429 CHECK(TEST_MSG
, int, 8, 8, PRIx8
, expected_sh_neg
, CMT
);
430 CHECK(TEST_MSG
, int, 16, 4, PRIx16
, expected_sh_neg
, CMT
);
431 CHECK(TEST_MSG
, int, 32, 2, PRIx32
, expected_sh_neg
, CMT
);
432 CHECK(TEST_MSG
, int, 64, 1, PRIx64
, expected_sh_neg
, CMT
);
433 CHECK(TEST_MSG
, uint
, 8, 8, PRIx8
, expected_sh_neg
, CMT
);
434 CHECK(TEST_MSG
, uint
, 16, 4, PRIx16
, expected_sh_neg
, CMT
);
435 CHECK(TEST_MSG
, uint
, 32, 2, PRIx32
, expected_sh_neg
, CMT
);
436 CHECK(TEST_MSG
, uint
, 64, 1, PRIx64
, expected_sh_neg
, CMT
);
437 CHECK(TEST_MSG
, int, 8, 16, PRIx8
, expected_sh_neg
, CMT
);
438 CHECK(TEST_MSG
, int, 16, 8, PRIx16
, expected_sh_neg
, CMT
);
439 CHECK(TEST_MSG
, int, 32, 4, PRIx32
, expected_sh_neg
, CMT
);
440 CHECK(TEST_MSG
, int, 64, 2, PRIx64
, expected_sh_neg
, CMT
);
441 CHECK(TEST_MSG
, uint
, 8, 16, PRIx8
, expected_sh_neg
, CMT
);
442 CHECK(TEST_MSG
, uint
, 16, 8, PRIx16
, expected_sh_neg
, CMT
);
443 CHECK(TEST_MSG
, uint
, 32, 4, PRIx32
, expected_sh_neg
, CMT
);
444 CHECK(TEST_MSG
, uint
, 64, 2, PRIx64
, expected_sh_neg
, CMT
);
446 /* Fill input vector with max value, to check behavior on limits. */
447 VDUP(vector
, , int, s
, 8, 8, 0x7F);
448 VDUP(vector
, , int, s
, 16, 4, 0x7FFF);
449 VDUP(vector
, , int, s
, 32, 2, 0x7FFFFFFF);
450 VDUP(vector
, , int, s
, 64, 1, 0x7FFFFFFFFFFFFFFFLL
);
451 VDUP(vector
, , uint
, u
, 8, 8, 0xFF);
452 VDUP(vector
, , uint
, u
, 16, 4, 0xFFFF);
453 VDUP(vector
, , uint
, u
, 32, 2, 0xFFFFFFFF);
454 VDUP(vector
, , uint
, u
, 64, 1, 0xFFFFFFFFFFFFFFFFULL
);
455 VDUP(vector
, q
, int, s
, 8, 16, 0x7F);
456 VDUP(vector
, q
, int, s
, 16, 8, 0x7FFF);
457 VDUP(vector
, q
, int, s
, 32, 4, 0x7FFFFFFF);
458 VDUP(vector
, q
, int, s
, 64, 2, 0x7FFFFFFFFFFFFFFFLL
);
459 VDUP(vector
, q
, uint
, u
, 8, 16, 0xFF);
460 VDUP(vector
, q
, uint
, u
, 16, 8, 0xFFFF);
461 VDUP(vector
, q
, uint
, u
, 32, 4, 0xFFFFFFFF);
462 VDUP(vector
, q
, uint
, u
, 64, 2, 0xFFFFFFFFFFFFFFFFULL
);
464 /* Use -1 shift amount to check overflow with round_const. */
465 VDUP(vector_shift
, , int, s
, 8, 8, -1);
466 VDUP(vector_shift
, , int, s
, 16, 4, -1);
467 VDUP(vector_shift
, , int, s
, 32, 2, -1);
468 VDUP(vector_shift
, , int, s
, 64, 1, -1);
469 VDUP(vector_shift
, q
, int, s
, 8, 16, -1);
470 VDUP(vector_shift
, q
, int, s
, 16, 8, -1);
471 VDUP(vector_shift
, q
, int, s
, 32, 4, -1);
472 VDUP(vector_shift
, q
, int, s
, 64, 2, -1);
474 TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL
, int);
477 #define CMT " (max input, shift by -1)"
478 CHECK(TEST_MSG
, int, 8, 8, PRIx8
, expected_max_sh_minus1
, CMT
);
479 CHECK(TEST_MSG
, int, 16, 4, PRIx16
, expected_max_sh_minus1
, CMT
);
480 CHECK(TEST_MSG
, int, 32, 2, PRIx32
, expected_max_sh_minus1
, CMT
);
481 CHECK(TEST_MSG
, int, 64, 1, PRIx64
, expected_max_sh_minus1
, CMT
);
482 CHECK(TEST_MSG
, uint
, 8, 8, PRIx8
, expected_max_sh_minus1
, CMT
);
483 CHECK(TEST_MSG
, uint
, 16, 4, PRIx16
, expected_max_sh_minus1
, CMT
);
484 CHECK(TEST_MSG
, uint
, 32, 2, PRIx32
, expected_max_sh_minus1
, CMT
);
485 CHECK(TEST_MSG
, uint
, 64, 1, PRIx64
, expected_max_sh_minus1
, CMT
);
486 CHECK(TEST_MSG
, int, 8, 16, PRIx8
, expected_max_sh_minus1
, CMT
);
487 CHECK(TEST_MSG
, int, 16, 8, PRIx16
, expected_max_sh_minus1
, CMT
);
488 CHECK(TEST_MSG
, int, 32, 4, PRIx32
, expected_max_sh_minus1
, CMT
);
489 CHECK(TEST_MSG
, int, 64, 2, PRIx64
, expected_max_sh_minus1
, CMT
);
490 CHECK(TEST_MSG
, uint
, 8, 16, PRIx8
, expected_max_sh_minus1
, CMT
);
491 CHECK(TEST_MSG
, uint
, 16, 8, PRIx16
, expected_max_sh_minus1
, CMT
);
492 CHECK(TEST_MSG
, uint
, 32, 4, PRIx32
, expected_max_sh_minus1
, CMT
);
493 CHECK(TEST_MSG
, uint
, 64, 2, PRIx64
, expected_max_sh_minus1
, CMT
);
495 /* Use -3 shift amount to check overflow with round_const. */
496 VDUP(vector_shift
, , int, s
, 8, 8, -3);
497 VDUP(vector_shift
, , int, s
, 16, 4, -3);
498 VDUP(vector_shift
, , int, s
, 32, 2, -3);
499 VDUP(vector_shift
, , int, s
, 64, 1, -3);
500 VDUP(vector_shift
, q
, int, s
, 8, 16, -3);
501 VDUP(vector_shift
, q
, int, s
, 16, 8, -3);
502 VDUP(vector_shift
, q
, int, s
, 32, 4, -3);
503 VDUP(vector_shift
, q
, int, s
, 64, 2, -3);
505 TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL
, int);
508 #define CMT " (check rounding constant: max input, shift by -3)"
509 CHECK(TEST_MSG
, int, 8, 8, PRIx8
, expected_max_sh_minus3
, CMT
);
510 CHECK(TEST_MSG
, int, 16, 4, PRIx16
, expected_max_sh_minus3
, CMT
);
511 CHECK(TEST_MSG
, int, 32, 2, PRIx32
, expected_max_sh_minus3
, CMT
);
512 CHECK(TEST_MSG
, int, 64, 1, PRIx64
, expected_max_sh_minus3
, CMT
);
513 CHECK(TEST_MSG
, uint
, 8, 8, PRIx8
, expected_max_sh_minus3
, CMT
);
514 CHECK(TEST_MSG
, uint
, 16, 4, PRIx16
, expected_max_sh_minus3
, CMT
);
515 CHECK(TEST_MSG
, uint
, 32, 2, PRIx32
, expected_max_sh_minus3
, CMT
);
516 CHECK(TEST_MSG
, uint
, 64, 1, PRIx64
, expected_max_sh_minus3
, CMT
);
517 CHECK(TEST_MSG
, int, 8, 16, PRIx8
, expected_max_sh_minus3
, CMT
);
518 CHECK(TEST_MSG
, int, 16, 8, PRIx16
, expected_max_sh_minus3
, CMT
);
519 CHECK(TEST_MSG
, int, 32, 4, PRIx32
, expected_max_sh_minus3
, CMT
);
520 CHECK(TEST_MSG
, int, 64, 2, PRIx64
, expected_max_sh_minus3
, CMT
);
521 CHECK(TEST_MSG
, uint
, 8, 16, PRIx8
, expected_max_sh_minus3
, CMT
);
522 CHECK(TEST_MSG
, uint
, 16, 8, PRIx16
, expected_max_sh_minus3
, CMT
);
523 CHECK(TEST_MSG
, uint
, 32, 4, PRIx32
, expected_max_sh_minus3
, CMT
);
524 CHECK(TEST_MSG
, uint
, 64, 2, PRIx64
, expected_max_sh_minus3
, CMT
);
527 /* Use negative shift amount as large as input vector width. */
528 VDUP(vector_shift
, , int, s
, 8, 8, -8);
529 VDUP(vector_shift
, , int, s
, 16, 4, -16);
530 VDUP(vector_shift
, , int, s
, 32, 2, -32);
531 VDUP(vector_shift
, , int, s
, 64, 1, -64);
532 VDUP(vector_shift
, q
, int, s
, 8, 16, -8);
533 VDUP(vector_shift
, q
, int, s
, 16, 8, -16);
534 VDUP(vector_shift
, q
, int, s
, 32, 4, -32);
535 VDUP(vector_shift
, q
, int, s
, 64, 2, -64);
537 TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL
, int);
540 #define CMT " (max input, right shift by vector width)"
541 CHECK(TEST_MSG
, int, 8, 8, PRIx8
, expected_max_sh_minus_width
, CMT
);
542 CHECK(TEST_MSG
, int, 16, 4, PRIx16
, expected_max_sh_minus_width
, CMT
);
543 CHECK(TEST_MSG
, int, 32, 2, PRIx32
, expected_max_sh_minus_width
, CMT
);
544 CHECK(TEST_MSG
, int, 64, 1, PRIx64
, expected_max_sh_minus_width
, CMT
);
545 CHECK(TEST_MSG
, uint
, 8, 8, PRIx8
, expected_max_sh_minus_width
, CMT
);
546 CHECK(TEST_MSG
, uint
, 16, 4, PRIx16
, expected_max_sh_minus_width
, CMT
);
547 CHECK(TEST_MSG
, uint
, 32, 2, PRIx32
, expected_max_sh_minus_width
, CMT
);
548 CHECK(TEST_MSG
, uint
, 64, 1, PRIx64
, expected_max_sh_minus_width
, CMT
);
549 CHECK(TEST_MSG
, int, 8, 16, PRIx8
, expected_max_sh_minus_width
, CMT
);
550 CHECK(TEST_MSG
, int, 16, 8, PRIx16
, expected_max_sh_minus_width
, CMT
);
551 CHECK(TEST_MSG
, int, 32, 4, PRIx32
, expected_max_sh_minus_width
, CMT
);
552 CHECK(TEST_MSG
, int, 64, 2, PRIx64
, expected_max_sh_minus_width
, CMT
);
553 CHECK(TEST_MSG
, uint
, 8, 16, PRIx8
, expected_max_sh_minus_width
, CMT
);
554 CHECK(TEST_MSG
, uint
, 16, 8, PRIx16
, expected_max_sh_minus_width
, CMT
);
555 CHECK(TEST_MSG
, uint
, 32, 4, PRIx32
, expected_max_sh_minus_width
, CMT
);
556 CHECK(TEST_MSG
, uint
, 64, 2, PRIx64
, expected_max_sh_minus_width
, CMT
);
559 /* Test large shift amount. */
560 VDUP(vector_shift
, , int, s
, 8, 8, 10);
561 VDUP(vector_shift
, , int, s
, 16, 4, 20);
562 VDUP(vector_shift
, , int, s
, 32, 2, 33);
563 VDUP(vector_shift
, , int, s
, 64, 1, 65);
564 VDUP(vector_shift
, q
, int, s
, 8, 16, 9);
565 VDUP(vector_shift
, q
, int, s
, 16, 8, 16);
566 VDUP(vector_shift
, q
, int, s
, 32, 4, 32);
567 VDUP(vector_shift
, q
, int, s
, 64, 2, 64);
569 TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL
, int);
572 #define CMT " (max input, large shift amount)"
573 CHECK(TEST_MSG
, int, 8, 8, PRIx8
, expected_max_sh_large
, CMT
);
574 CHECK(TEST_MSG
, int, 16, 4, PRIx16
, expected_max_sh_large
, CMT
);
575 CHECK(TEST_MSG
, int, 32, 2, PRIx32
, expected_max_sh_large
, CMT
);
576 CHECK(TEST_MSG
, int, 64, 1, PRIx64
, expected_max_sh_large
, CMT
);
577 CHECK(TEST_MSG
, uint
, 8, 8, PRIx8
, expected_max_sh_large
, CMT
);
578 CHECK(TEST_MSG
, uint
, 16, 4, PRIx16
, expected_max_sh_large
, CMT
);
579 CHECK(TEST_MSG
, uint
, 32, 2, PRIx32
, expected_max_sh_large
, CMT
);
580 CHECK(TEST_MSG
, uint
, 64, 1, PRIx64
, expected_max_sh_large
, CMT
);
581 CHECK(TEST_MSG
, int, 8, 16, PRIx8
, expected_max_sh_large
, CMT
);
582 CHECK(TEST_MSG
, int, 16, 8, PRIx16
, expected_max_sh_large
, CMT
);
583 CHECK(TEST_MSG
, int, 32, 4, PRIx32
, expected_max_sh_large
, CMT
);
584 CHECK(TEST_MSG
, int, 64, 2, PRIx64
, expected_max_sh_large
, CMT
);
585 CHECK(TEST_MSG
, uint
, 8, 16, PRIx8
, expected_max_sh_large
, CMT
);
586 CHECK(TEST_MSG
, uint
, 16, 8, PRIx16
, expected_max_sh_large
, CMT
);
587 CHECK(TEST_MSG
, uint
, 32, 4, PRIx32
, expected_max_sh_large
, CMT
);
588 CHECK(TEST_MSG
, uint
, 64, 2, PRIx64
, expected_max_sh_large
, CMT
);
591 /* Test large negative shift amount. */
592 VDUP(vector_shift
, , int, s
, 8, 8, -10);
593 VDUP(vector_shift
, , int, s
, 16, 4, -20);
594 VDUP(vector_shift
, , int, s
, 32, 2, -33);
595 VDUP(vector_shift
, , int, s
, 64, 1, -65);
596 VDUP(vector_shift
, q
, int, s
, 8, 16, -9);
597 VDUP(vector_shift
, q
, int, s
, 16, 8, -16);
598 VDUP(vector_shift
, q
, int, s
, 32, 4, -32);
599 VDUP(vector_shift
, q
, int, s
, 64, 2, -64);
601 TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL
, int);
604 #define CMT " (max input, large negative shift amount)"
605 CHECK(TEST_MSG
, int, 8, 8, PRIx8
, expected_max_sh_large_neg
, CMT
);
606 CHECK(TEST_MSG
, int, 16, 4, PRIx16
, expected_max_sh_large_neg
, CMT
);
607 CHECK(TEST_MSG
, int, 32, 2, PRIx32
, expected_max_sh_large_neg
, CMT
);
608 CHECK(TEST_MSG
, int, 64, 1, PRIx64
, expected_max_sh_large_neg
, CMT
);
609 CHECK(TEST_MSG
, uint
, 8, 8, PRIx8
, expected_max_sh_large_neg
, CMT
);
610 CHECK(TEST_MSG
, uint
, 16, 4, PRIx16
, expected_max_sh_large_neg
, CMT
);
611 CHECK(TEST_MSG
, uint
, 32, 2, PRIx32
, expected_max_sh_large_neg
, CMT
);
612 CHECK(TEST_MSG
, uint
, 64, 1, PRIx64
, expected_max_sh_large_neg
, CMT
);
613 CHECK(TEST_MSG
, int, 8, 16, PRIx8
, expected_max_sh_large_neg
, CMT
);
614 CHECK(TEST_MSG
, int, 16, 8, PRIx16
, expected_max_sh_large_neg
, CMT
);
615 CHECK(TEST_MSG
, int, 32, 4, PRIx32
, expected_max_sh_large_neg
, CMT
);
616 CHECK(TEST_MSG
, int, 64, 2, PRIx64
, expected_max_sh_large_neg
, CMT
);
617 CHECK(TEST_MSG
, uint
, 8, 16, PRIx8
, expected_max_sh_large_neg
, CMT
);
618 CHECK(TEST_MSG
, uint
, 16, 8, PRIx16
, expected_max_sh_large_neg
, CMT
);
619 CHECK(TEST_MSG
, uint
, 32, 4, PRIx32
, expected_max_sh_large_neg
, CMT
);
620 CHECK(TEST_MSG
, uint
, 64, 2, PRIx64
, expected_max_sh_large_neg
, CMT
);