Wed, 22 Jan 2014 12:37:28 -0800
Added tag jdk8u5-b05 for changeset b90de55aca30
1 /*
2 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
25 /**
26 * @test
27 * @bug 6340864
28 * @summary Implement vectorization optimizations in hotspot-server
29 *
30 * @run main/othervm/timeout=400 -Xbatch -Xmx64m TestIntVect
31 */
33 public class TestIntVect {
34 private static final int ARRLEN = 997;
35 private static final int ITERS = 11000;
36 private static final int ADD_INIT = Integer.MAX_VALUE-500;
37 private static final int BIT_MASK = 0xEC80F731;
38 private static final int VALUE = 15;
39 private static final int SHIFT = 32;
41 public static void main(String args[]) {
42 System.out.println("Testing Integer vectors");
43 int errn = test();
44 if (errn > 0) {
45 System.err.println("FAILED: " + errn + " errors");
46 System.exit(97);
47 }
48 System.out.println("PASSED");
49 }
51 static int test() {
52 int[] a0 = new int[ARRLEN];
53 int[] a1 = new int[ARRLEN];
54 int[] a2 = new int[ARRLEN];
55 int[] a3 = new int[ARRLEN];
56 int[] a4 = new int[ARRLEN];
57 long[] p2 = new long[ARRLEN/2];
58 // Initialize
59 int gold_sum = 0;
60 for (int i=0; i<ARRLEN; i++) {
61 int val = (int)(ADD_INIT+i);
62 gold_sum += val;
63 a1[i] = val;
64 a2[i] = (int)VALUE;
65 a3[i] = (int)-VALUE;
66 a4[i] = (int)BIT_MASK;
67 }
68 System.out.println("Warmup");
69 for (int i=0; i<ITERS; i++) {
70 test_sum(a1);
71 test_addc(a0, a1);
72 test_addv(a0, a1, (int)VALUE);
73 test_adda(a0, a1, a2);
74 test_subc(a0, a1);
75 test_subv(a0, a1, (int)VALUE);
76 test_suba(a0, a1, a2);
78 test_mulc(a0, a1);
79 test_mulv(a0, a1, (int)VALUE);
80 test_mula(a0, a1, a2);
81 test_divc(a0, a1);
82 test_divv(a0, a1, (int)VALUE);
83 test_diva(a0, a1, a2);
84 test_mulc_n(a0, a1);
85 test_mulv(a0, a1, (int)-VALUE);
86 test_mula(a0, a1, a3);
87 test_divc_n(a0, a1);
88 test_divv(a0, a1, (int)-VALUE);
89 test_diva(a0, a1, a3);
91 test_andc(a0, a1);
92 test_andv(a0, a1, (int)BIT_MASK);
93 test_anda(a0, a1, a4);
94 test_orc(a0, a1);
95 test_orv(a0, a1, (int)BIT_MASK);
96 test_ora(a0, a1, a4);
97 test_xorc(a0, a1);
98 test_xorv(a0, a1, (int)BIT_MASK);
99 test_xora(a0, a1, a4);
101 test_sllc(a0, a1);
102 test_sllv(a0, a1, VALUE);
103 test_srlc(a0, a1);
104 test_srlv(a0, a1, VALUE);
105 test_srac(a0, a1);
106 test_srav(a0, a1, VALUE);
108 test_sllc_n(a0, a1);
109 test_sllv(a0, a1, -VALUE);
110 test_srlc_n(a0, a1);
111 test_srlv(a0, a1, -VALUE);
112 test_srac_n(a0, a1);
113 test_srav(a0, a1, -VALUE);
115 test_sllc_o(a0, a1);
116 test_sllv(a0, a1, SHIFT);
117 test_srlc_o(a0, a1);
118 test_srlv(a0, a1, SHIFT);
119 test_srac_o(a0, a1);
120 test_srav(a0, a1, SHIFT);
122 test_sllc_on(a0, a1);
123 test_sllv(a0, a1, -SHIFT);
124 test_srlc_on(a0, a1);
125 test_srlv(a0, a1, -SHIFT);
126 test_srac_on(a0, a1);
127 test_srav(a0, a1, -SHIFT);
129 test_sllc_add(a0, a1);
130 test_sllv_add(a0, a1, ADD_INIT);
131 test_srlc_add(a0, a1);
132 test_srlv_add(a0, a1, ADD_INIT);
133 test_srac_add(a0, a1);
134 test_srav_add(a0, a1, ADD_INIT);
136 test_sllc_and(a0, a1);
137 test_sllv_and(a0, a1, BIT_MASK);
138 test_srlc_and(a0, a1);
139 test_srlv_and(a0, a1, BIT_MASK);
140 test_srac_and(a0, a1);
141 test_srav_and(a0, a1, BIT_MASK);
143 test_pack2(p2, a1);
144 test_unpack2(a0, p2);
145 test_pack2_swap(p2, a1);
146 test_unpack2_swap(a0, p2);
147 }
148 // Test and verify results
149 System.out.println("Verification");
150 int errn = 0;
151 {
152 int sum = test_sum(a1);
153 if (sum != gold_sum) {
154 System.err.println("test_sum: " + sum + " != " + gold_sum);
155 errn++;
156 }
158 test_addc(a0, a1);
159 for (int i=0; i<ARRLEN; i++) {
160 errn += verify("test_addc: ", i, a0[i], (int)((int)(ADD_INIT+i)+VALUE));
161 }
162 test_addv(a0, a1, (int)VALUE);
163 for (int i=0; i<ARRLEN; i++) {
164 errn += verify("test_addv: ", i, a0[i], (int)((int)(ADD_INIT+i)+VALUE));
165 }
166 test_adda(a0, a1, a2);
167 for (int i=0; i<ARRLEN; i++) {
168 errn += verify("test_adda: ", i, a0[i], (int)((int)(ADD_INIT+i)+VALUE));
169 }
171 test_subc(a0, a1);
172 for (int i=0; i<ARRLEN; i++) {
173 errn += verify("test_subc: ", i, a0[i], (int)((int)(ADD_INIT+i)-VALUE));
174 }
175 test_subv(a0, a1, (int)VALUE);
176 for (int i=0; i<ARRLEN; i++) {
177 errn += verify("test_subv: ", i, a0[i], (int)((int)(ADD_INIT+i)-VALUE));
178 }
179 test_suba(a0, a1, a2);
180 for (int i=0; i<ARRLEN; i++) {
181 errn += verify("test_suba: ", i, a0[i], (int)((int)(ADD_INIT+i)-VALUE));
182 }
184 test_mulc(a0, a1);
185 for (int i=0; i<ARRLEN; i++) {
186 errn += verify("test_mulc: ", i, a0[i], (int)((int)(ADD_INIT+i)*VALUE));
187 }
188 test_mulv(a0, a1, (int)VALUE);
189 for (int i=0; i<ARRLEN; i++) {
190 errn += verify("test_mulv: ", i, a0[i], (int)((int)(ADD_INIT+i)*VALUE));
191 }
192 test_mula(a0, a1, a2);
193 for (int i=0; i<ARRLEN; i++) {
194 errn += verify("test_mula: ", i, a0[i], (int)((int)(ADD_INIT+i)*VALUE));
195 }
197 test_divc(a0, a1);
198 for (int i=0; i<ARRLEN; i++) {
199 errn += verify("test_divc: ", i, a0[i], (int)((int)(ADD_INIT+i)/VALUE));
200 }
201 test_divv(a0, a1, (int)VALUE);
202 for (int i=0; i<ARRLEN; i++) {
203 errn += verify("test_divv: ", i, a0[i], (int)((int)(ADD_INIT+i)/VALUE));
204 }
205 test_diva(a0, a1, a2);
206 for (int i=0; i<ARRLEN; i++) {
207 errn += verify("test_diva: ", i, a0[i], (int)((int)(ADD_INIT+i)/VALUE));
208 }
210 test_mulc_n(a0, a1);
211 for (int i=0; i<ARRLEN; i++) {
212 errn += verify("test_mulc_n: ", i, a0[i], (int)((int)(ADD_INIT+i)*(-VALUE)));
213 }
214 test_mulv(a0, a1, (int)-VALUE);
215 for (int i=0; i<ARRLEN; i++) {
216 errn += verify("test_mulv_n: ", i, a0[i], (int)((int)(ADD_INIT+i)*(-VALUE)));
217 }
218 test_mula(a0, a1, a3);
219 for (int i=0; i<ARRLEN; i++) {
220 errn += verify("test_mula_n: ", i, a0[i], (int)((int)(ADD_INIT+i)*(-VALUE)));
221 }
223 test_divc_n(a0, a1);
224 for (int i=0; i<ARRLEN; i++) {
225 errn += verify("test_divc_n: ", i, a0[i], (int)((int)(ADD_INIT+i)/(-VALUE)));
226 }
227 test_divv(a0, a1, (int)-VALUE);
228 for (int i=0; i<ARRLEN; i++) {
229 errn += verify("test_divv_n: ", i, a0[i], (int)((int)(ADD_INIT+i)/(-VALUE)));
230 }
231 test_diva(a0, a1, a3);
232 for (int i=0; i<ARRLEN; i++) {
233 errn += verify("test_diva_n: ", i, a0[i], (int)((int)(ADD_INIT+i)/(-VALUE)));
234 }
236 test_andc(a0, a1);
237 for (int i=0; i<ARRLEN; i++) {
238 errn += verify("test_andc: ", i, a0[i], (int)((int)(ADD_INIT+i)&BIT_MASK));
239 }
240 test_andv(a0, a1, (int)BIT_MASK);
241 for (int i=0; i<ARRLEN; i++) {
242 errn += verify("test_andv: ", i, a0[i], (int)((int)(ADD_INIT+i)&BIT_MASK));
243 }
244 test_anda(a0, a1, a4);
245 for (int i=0; i<ARRLEN; i++) {
246 errn += verify("test_anda: ", i, a0[i], (int)((int)(ADD_INIT+i)&BIT_MASK));
247 }
249 test_orc(a0, a1);
250 for (int i=0; i<ARRLEN; i++) {
251 errn += verify("test_orc: ", i, a0[i], (int)((int)(ADD_INIT+i)|BIT_MASK));
252 }
253 test_orv(a0, a1, (int)BIT_MASK);
254 for (int i=0; i<ARRLEN; i++) {
255 errn += verify("test_orv: ", i, a0[i], (int)((int)(ADD_INIT+i)|BIT_MASK));
256 }
257 test_ora(a0, a1, a4);
258 for (int i=0; i<ARRLEN; i++) {
259 errn += verify("test_ora: ", i, a0[i], (int)((int)(ADD_INIT+i)|BIT_MASK));
260 }
262 test_xorc(a0, a1);
263 for (int i=0; i<ARRLEN; i++) {
264 errn += verify("test_xorc: ", i, a0[i], (int)((int)(ADD_INIT+i)^BIT_MASK));
265 }
266 test_xorv(a0, a1, (int)BIT_MASK);
267 for (int i=0; i<ARRLEN; i++) {
268 errn += verify("test_xorv: ", i, a0[i], (int)((int)(ADD_INIT+i)^BIT_MASK));
269 }
270 test_xora(a0, a1, a4);
271 for (int i=0; i<ARRLEN; i++) {
272 errn += verify("test_xora: ", i, a0[i], (int)((int)(ADD_INIT+i)^BIT_MASK));
273 }
275 test_sllc(a0, a1);
276 for (int i=0; i<ARRLEN; i++) {
277 errn += verify("test_sllc: ", i, a0[i], (int)((int)(ADD_INIT+i)<<VALUE));
278 }
279 test_sllv(a0, a1, VALUE);
280 for (int i=0; i<ARRLEN; i++) {
281 errn += verify("test_sllv: ", i, a0[i], (int)((int)(ADD_INIT+i)<<VALUE));
282 }
284 test_srlc(a0, a1);
285 for (int i=0; i<ARRLEN; i++) {
286 errn += verify("test_srlc: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>VALUE));
287 }
288 test_srlv(a0, a1, VALUE);
289 for (int i=0; i<ARRLEN; i++) {
290 errn += verify("test_srlv: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>VALUE));
291 }
293 test_srac(a0, a1);
294 for (int i=0; i<ARRLEN; i++) {
295 errn += verify("test_srac: ", i, a0[i], (int)((int)(ADD_INIT+i)>>VALUE));
296 }
297 test_srav(a0, a1, VALUE);
298 for (int i=0; i<ARRLEN; i++) {
299 errn += verify("test_srav: ", i, a0[i], (int)((int)(ADD_INIT+i)>>VALUE));
300 }
302 test_sllc_n(a0, a1);
303 for (int i=0; i<ARRLEN; i++) {
304 errn += verify("test_sllc_n: ", i, a0[i], (int)((int)(ADD_INIT+i)<<(-VALUE)));
305 }
306 test_sllv(a0, a1, -VALUE);
307 for (int i=0; i<ARRLEN; i++) {
308 errn += verify("test_sllv_n: ", i, a0[i], (int)((int)(ADD_INIT+i)<<(-VALUE)));
309 }
311 test_srlc_n(a0, a1);
312 for (int i=0; i<ARRLEN; i++) {
313 errn += verify("test_srlc_n: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>(-VALUE)));
314 }
315 test_srlv(a0, a1, -VALUE);
316 for (int i=0; i<ARRLEN; i++) {
317 errn += verify("test_srlv_n: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>(-VALUE)));
318 }
320 test_srac_n(a0, a1);
321 for (int i=0; i<ARRLEN; i++) {
322 errn += verify("test_srac_n: ", i, a0[i], (int)((int)(ADD_INIT+i)>>(-VALUE)));
323 }
324 test_srav(a0, a1, -VALUE);
325 for (int i=0; i<ARRLEN; i++) {
326 errn += verify("test_srav_n: ", i, a0[i], (int)((int)(ADD_INIT+i)>>(-VALUE)));
327 }
329 test_sllc_o(a0, a1);
330 for (int i=0; i<ARRLEN; i++) {
331 errn += verify("test_sllc_o: ", i, a0[i], (int)((int)(ADD_INIT+i)<<SHIFT));
332 }
333 test_sllv(a0, a1, SHIFT);
334 for (int i=0; i<ARRLEN; i++) {
335 errn += verify("test_sllv_o: ", i, a0[i], (int)((int)(ADD_INIT+i)<<SHIFT));
336 }
338 test_srlc_o(a0, a1);
339 for (int i=0; i<ARRLEN; i++) {
340 errn += verify("test_srlc_o: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>SHIFT));
341 }
342 test_srlv(a0, a1, SHIFT);
343 for (int i=0; i<ARRLEN; i++) {
344 errn += verify("test_srlv_o: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>SHIFT));
345 }
347 test_srac_o(a0, a1);
348 for (int i=0; i<ARRLEN; i++) {
349 errn += verify("test_srac_o: ", i, a0[i], (int)((int)(ADD_INIT+i)>>SHIFT));
350 }
351 test_srav(a0, a1, SHIFT);
352 for (int i=0; i<ARRLEN; i++) {
353 errn += verify("test_srav_o: ", i, a0[i], (int)((int)(ADD_INIT+i)>>SHIFT));
354 }
356 test_sllc_on(a0, a1);
357 for (int i=0; i<ARRLEN; i++) {
358 errn += verify("test_sllc_on: ", i, a0[i], (int)((int)(ADD_INIT+i)<<(-SHIFT)));
359 }
360 test_sllv(a0, a1, -SHIFT);
361 for (int i=0; i<ARRLEN; i++) {
362 errn += verify("test_sllv_on: ", i, a0[i], (int)((int)(ADD_INIT+i)<<(-SHIFT)));
363 }
365 test_srlc_on(a0, a1);
366 for (int i=0; i<ARRLEN; i++) {
367 errn += verify("test_srlc_on: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>(-SHIFT)));
368 }
369 test_srlv(a0, a1, -SHIFT);
370 for (int i=0; i<ARRLEN; i++) {
371 errn += verify("test_srlv_on: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>(-SHIFT)));
372 }
374 test_srac_on(a0, a1);
375 for (int i=0; i<ARRLEN; i++) {
376 errn += verify("test_srac_on: ", i, a0[i], (int)((int)(ADD_INIT+i)>>(-SHIFT)));
377 }
378 test_srav(a0, a1, -SHIFT);
379 for (int i=0; i<ARRLEN; i++) {
380 errn += verify("test_srav_on: ", i, a0[i], (int)((int)(ADD_INIT+i)>>(-SHIFT)));
381 }
383 test_sllc_add(a0, a1);
384 for (int i=0; i<ARRLEN; i++) {
385 errn += verify("test_sllc_add: ", i, a0[i], (int)(((int)(ADD_INIT+i) + ADD_INIT)<<VALUE));
386 }
387 test_sllv_add(a0, a1, ADD_INIT);
388 for (int i=0; i<ARRLEN; i++) {
389 errn += verify("test_sllv_add: ", i, a0[i], (int)(((int)(ADD_INIT+i) + ADD_INIT)<<VALUE));
390 }
392 test_srlc_add(a0, a1);
393 for (int i=0; i<ARRLEN; i++) {
394 errn += verify("test_srlc_add: ", i, a0[i], (int)(((int)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
395 }
396 test_srlv_add(a0, a1, ADD_INIT);
397 for (int i=0; i<ARRLEN; i++) {
398 errn += verify("test_srlv_add: ", i, a0[i], (int)(((int)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
399 }
401 test_srac_add(a0, a1);
402 for (int i=0; i<ARRLEN; i++) {
403 errn += verify("test_srac_add: ", i, a0[i], (int)(((int)(ADD_INIT+i) + ADD_INIT)>>VALUE));
404 }
405 test_srav_add(a0, a1, ADD_INIT);
406 for (int i=0; i<ARRLEN; i++) {
407 errn += verify("test_srav_add: ", i, a0[i], (int)(((int)(ADD_INIT+i) + ADD_INIT)>>VALUE));
408 }
410 test_sllc_and(a0, a1);
411 for (int i=0; i<ARRLEN; i++) {
412 errn += verify("test_sllc_and: ", i, a0[i], (int)(((int)(ADD_INIT+i) & BIT_MASK)<<VALUE));
413 }
414 test_sllv_and(a0, a1, BIT_MASK);
415 for (int i=0; i<ARRLEN; i++) {
416 errn += verify("test_sllv_and: ", i, a0[i], (int)(((int)(ADD_INIT+i) & BIT_MASK)<<VALUE));
417 }
419 test_srlc_and(a0, a1);
420 for (int i=0; i<ARRLEN; i++) {
421 errn += verify("test_srlc_and: ", i, a0[i], (int)(((int)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
422 }
423 test_srlv_and(a0, a1, BIT_MASK);
424 for (int i=0; i<ARRLEN; i++) {
425 errn += verify("test_srlv_and: ", i, a0[i], (int)(((int)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
426 }
428 test_srac_and(a0, a1);
429 for (int i=0; i<ARRLEN; i++) {
430 errn += verify("test_srac_and: ", i, a0[i], (int)(((int)(ADD_INIT+i) & BIT_MASK)>>VALUE));
431 }
432 test_srav_and(a0, a1, BIT_MASK);
433 for (int i=0; i<ARRLEN; i++) {
434 errn += verify("test_srav_and: ", i, a0[i], (int)(((int)(ADD_INIT+i) & BIT_MASK)>>VALUE));
435 }
437 test_pack2(p2, a1);
438 for (int i=0; i<ARRLEN/2; i++) {
439 errn += verify("test_pack2: ", i, p2[i], ((long)(ADD_INIT+2*i) & 0xFFFFFFFFl) | ((long)(ADD_INIT+2*i+1) << 32));
440 }
441 for (int i=0; i<ARRLEN; i++) {
442 a0[i] = -1;
443 }
444 test_unpack2(a0, p2);
445 for (int i=0; i<(ARRLEN&(-2)); i++) {
446 errn += verify("test_unpack2: ", i, a0[i], (ADD_INIT+i));
447 }
449 test_pack2_swap(p2, a1);
450 for (int i=0; i<ARRLEN/2; i++) {
451 errn += verify("test_pack2_swap: ", i, p2[i], ((long)(ADD_INIT+2*i+1) & 0xFFFFFFFFl) | ((long)(ADD_INIT+2*i) << 32));
452 }
453 for (int i=0; i<ARRLEN; i++) {
454 a0[i] = -1;
455 }
456 test_unpack2_swap(a0, p2);
457 for (int i=0; i<(ARRLEN&(-2)); i++) {
458 errn += verify("test_unpack2_swap: ", i, a0[i], (ADD_INIT+i));
459 }
461 }
463 if (errn > 0)
464 return errn;
466 System.out.println("Time");
467 long start, end;
469 start = System.currentTimeMillis();
470 for (int i=0; i<ITERS; i++) {
471 test_sum(a1);
472 }
473 end = System.currentTimeMillis();
474 System.out.println("test_sum: " + (end - start));
476 start = System.currentTimeMillis();
477 for (int i=0; i<ITERS; i++) {
478 test_addc(a0, a1);
479 }
480 end = System.currentTimeMillis();
481 System.out.println("test_addc: " + (end - start));
482 start = System.currentTimeMillis();
483 for (int i=0; i<ITERS; i++) {
484 test_addv(a0, a1, (int)VALUE);
485 }
486 end = System.currentTimeMillis();
487 System.out.println("test_addv: " + (end - start));
488 start = System.currentTimeMillis();
489 for (int i=0; i<ITERS; i++) {
490 test_adda(a0, a1, a2);
491 }
492 end = System.currentTimeMillis();
493 System.out.println("test_adda: " + (end - start));
495 start = System.currentTimeMillis();
496 for (int i=0; i<ITERS; i++) {
497 test_subc(a0, a1);
498 }
499 end = System.currentTimeMillis();
500 System.out.println("test_subc: " + (end - start));
501 start = System.currentTimeMillis();
502 for (int i=0; i<ITERS; i++) {
503 test_subv(a0, a1, (int)VALUE);
504 }
505 end = System.currentTimeMillis();
506 System.out.println("test_subv: " + (end - start));
507 start = System.currentTimeMillis();
508 for (int i=0; i<ITERS; i++) {
509 test_suba(a0, a1, a2);
510 }
511 end = System.currentTimeMillis();
512 System.out.println("test_suba: " + (end - start));
514 start = System.currentTimeMillis();
515 for (int i=0; i<ITERS; i++) {
516 test_mulc(a0, a1);
517 }
518 end = System.currentTimeMillis();
519 System.out.println("test_mulc: " + (end - start));
520 start = System.currentTimeMillis();
521 for (int i=0; i<ITERS; i++) {
522 test_mulv(a0, a1, (int)VALUE);
523 }
524 end = System.currentTimeMillis();
525 System.out.println("test_mulv: " + (end - start));
526 start = System.currentTimeMillis();
527 for (int i=0; i<ITERS; i++) {
528 test_mula(a0, a1, a2);
529 }
530 end = System.currentTimeMillis();
531 System.out.println("test_mula: " + (end - start));
533 start = System.currentTimeMillis();
534 for (int i=0; i<ITERS; i++) {
535 test_divc(a0, a1);
536 }
537 end = System.currentTimeMillis();
538 System.out.println("test_divc: " + (end - start));
539 start = System.currentTimeMillis();
540 for (int i=0; i<ITERS; i++) {
541 test_divv(a0, a1, (int)VALUE);
542 }
543 end = System.currentTimeMillis();
544 System.out.println("test_divv: " + (end - start));
545 start = System.currentTimeMillis();
546 for (int i=0; i<ITERS; i++) {
547 test_diva(a0, a1, a2);
548 }
549 end = System.currentTimeMillis();
550 System.out.println("test_diva: " + (end - start));
552 start = System.currentTimeMillis();
553 for (int i=0; i<ITERS; i++) {
554 test_mulc_n(a0, a1);
555 }
556 end = System.currentTimeMillis();
557 System.out.println("test_mulc_n: " + (end - start));
558 start = System.currentTimeMillis();
559 for (int i=0; i<ITERS; i++) {
560 test_mulv(a0, a1, (int)-VALUE);
561 }
562 end = System.currentTimeMillis();
563 System.out.println("test_mulv_n: " + (end - start));
564 start = System.currentTimeMillis();
565 for (int i=0; i<ITERS; i++) {
566 test_mula(a0, a1, a3);
567 }
568 end = System.currentTimeMillis();
569 System.out.println("test_mula_n: " + (end - start));
571 start = System.currentTimeMillis();
572 for (int i=0; i<ITERS; i++) {
573 test_divc_n(a0, a1);
574 }
575 end = System.currentTimeMillis();
576 System.out.println("test_divc_n: " + (end - start));
577 start = System.currentTimeMillis();
578 for (int i=0; i<ITERS; i++) {
579 test_divv(a0, a1, (int)-VALUE);
580 }
581 end = System.currentTimeMillis();
582 System.out.println("test_divv_n: " + (end - start));
583 start = System.currentTimeMillis();
584 for (int i=0; i<ITERS; i++) {
585 test_diva(a0, a1, a3);
586 }
587 end = System.currentTimeMillis();
588 System.out.println("test_diva_n: " + (end - start));
590 start = System.currentTimeMillis();
591 for (int i=0; i<ITERS; i++) {
592 test_andc(a0, a1);
593 }
594 end = System.currentTimeMillis();
595 System.out.println("test_andc: " + (end - start));
596 start = System.currentTimeMillis();
597 for (int i=0; i<ITERS; i++) {
598 test_andv(a0, a1, (int)BIT_MASK);
599 }
600 end = System.currentTimeMillis();
601 System.out.println("test_andv: " + (end - start));
602 start = System.currentTimeMillis();
603 for (int i=0; i<ITERS; i++) {
604 test_anda(a0, a1, a4);
605 }
606 end = System.currentTimeMillis();
607 System.out.println("test_anda: " + (end - start));
609 start = System.currentTimeMillis();
610 for (int i=0; i<ITERS; i++) {
611 test_orc(a0, a1);
612 }
613 end = System.currentTimeMillis();
614 System.out.println("test_orc: " + (end - start));
615 start = System.currentTimeMillis();
616 for (int i=0; i<ITERS; i++) {
617 test_orv(a0, a1, (int)BIT_MASK);
618 }
619 end = System.currentTimeMillis();
620 System.out.println("test_orv: " + (end - start));
621 start = System.currentTimeMillis();
622 for (int i=0; i<ITERS; i++) {
623 test_ora(a0, a1, a4);
624 }
625 end = System.currentTimeMillis();
626 System.out.println("test_ora: " + (end - start));
628 start = System.currentTimeMillis();
629 for (int i=0; i<ITERS; i++) {
630 test_xorc(a0, a1);
631 }
632 end = System.currentTimeMillis();
633 System.out.println("test_xorc: " + (end - start));
634 start = System.currentTimeMillis();
635 for (int i=0; i<ITERS; i++) {
636 test_xorv(a0, a1, (int)BIT_MASK);
637 }
638 end = System.currentTimeMillis();
639 System.out.println("test_xorv: " + (end - start));
640 start = System.currentTimeMillis();
641 for (int i=0; i<ITERS; i++) {
642 test_xora(a0, a1, a4);
643 }
644 end = System.currentTimeMillis();
645 System.out.println("test_xora: " + (end - start));
647 start = System.currentTimeMillis();
648 for (int i=0; i<ITERS; i++) {
649 test_sllc(a0, a1);
650 }
651 end = System.currentTimeMillis();
652 System.out.println("test_sllc: " + (end - start));
653 start = System.currentTimeMillis();
654 for (int i=0; i<ITERS; i++) {
655 test_sllv(a0, a1, VALUE);
656 }
657 end = System.currentTimeMillis();
658 System.out.println("test_sllv: " + (end - start));
660 start = System.currentTimeMillis();
661 for (int i=0; i<ITERS; i++) {
662 test_srlc(a0, a1);
663 }
664 end = System.currentTimeMillis();
665 System.out.println("test_srlc: " + (end - start));
666 start = System.currentTimeMillis();
667 for (int i=0; i<ITERS; i++) {
668 test_srlv(a0, a1, VALUE);
669 }
670 end = System.currentTimeMillis();
671 System.out.println("test_srlv: " + (end - start));
673 start = System.currentTimeMillis();
674 for (int i=0; i<ITERS; i++) {
675 test_srac(a0, a1);
676 }
677 end = System.currentTimeMillis();
678 System.out.println("test_srac: " + (end - start));
679 start = System.currentTimeMillis();
680 for (int i=0; i<ITERS; i++) {
681 test_srav(a0, a1, VALUE);
682 }
683 end = System.currentTimeMillis();
684 System.out.println("test_srav: " + (end - start));
686 start = System.currentTimeMillis();
687 for (int i=0; i<ITERS; i++) {
688 test_sllc_n(a0, a1);
689 }
690 end = System.currentTimeMillis();
691 System.out.println("test_sllc_n: " + (end - start));
692 start = System.currentTimeMillis();
693 for (int i=0; i<ITERS; i++) {
694 test_sllv(a0, a1, -VALUE);
695 }
696 end = System.currentTimeMillis();
697 System.out.println("test_sllv_n: " + (end - start));
699 start = System.currentTimeMillis();
700 for (int i=0; i<ITERS; i++) {
701 test_srlc_n(a0, a1);
702 }
703 end = System.currentTimeMillis();
704 System.out.println("test_srlc_n: " + (end - start));
705 start = System.currentTimeMillis();
706 for (int i=0; i<ITERS; i++) {
707 test_srlv(a0, a1, -VALUE);
708 }
709 end = System.currentTimeMillis();
710 System.out.println("test_srlv_n: " + (end - start));
712 start = System.currentTimeMillis();
713 for (int i=0; i<ITERS; i++) {
714 test_srac_n(a0, a1);
715 }
716 end = System.currentTimeMillis();
717 System.out.println("test_srac_n: " + (end - start));
718 start = System.currentTimeMillis();
719 for (int i=0; i<ITERS; i++) {
720 test_srav(a0, a1, -VALUE);
721 }
722 end = System.currentTimeMillis();
723 System.out.println("test_srav_n: " + (end - start));
725 start = System.currentTimeMillis();
726 for (int i=0; i<ITERS; i++) {
727 test_sllc_o(a0, a1);
728 }
729 end = System.currentTimeMillis();
730 System.out.println("test_sllc_o: " + (end - start));
731 start = System.currentTimeMillis();
732 for (int i=0; i<ITERS; i++) {
733 test_sllv(a0, a1, SHIFT);
734 }
735 end = System.currentTimeMillis();
736 System.out.println("test_sllv_o: " + (end - start));
738 start = System.currentTimeMillis();
739 for (int i=0; i<ITERS; i++) {
740 test_srlc_o(a0, a1);
741 }
742 end = System.currentTimeMillis();
743 System.out.println("test_srlc_o: " + (end - start));
744 start = System.currentTimeMillis();
745 for (int i=0; i<ITERS; i++) {
746 test_srlv(a0, a1, SHIFT);
747 }
748 end = System.currentTimeMillis();
749 System.out.println("test_srlv_o: " + (end - start));
751 start = System.currentTimeMillis();
752 for (int i=0; i<ITERS; i++) {
753 test_srac_o(a0, a1);
754 }
755 end = System.currentTimeMillis();
756 System.out.println("test_srac_o: " + (end - start));
757 start = System.currentTimeMillis();
758 for (int i=0; i<ITERS; i++) {
759 test_srav(a0, a1, SHIFT);
760 }
761 end = System.currentTimeMillis();
762 System.out.println("test_srav_o: " + (end - start));
764 start = System.currentTimeMillis();
765 for (int i=0; i<ITERS; i++) {
766 test_sllc_on(a0, a1);
767 }
768 end = System.currentTimeMillis();
769 System.out.println("test_sllc_on: " + (end - start));
770 start = System.currentTimeMillis();
771 for (int i=0; i<ITERS; i++) {
772 test_sllv(a0, a1, -SHIFT);
773 }
774 end = System.currentTimeMillis();
775 System.out.println("test_sllv_on: " + (end - start));
777 start = System.currentTimeMillis();
778 for (int i=0; i<ITERS; i++) {
779 test_srlc_on(a0, a1);
780 }
781 end = System.currentTimeMillis();
782 System.out.println("test_srlc_on: " + (end - start));
783 start = System.currentTimeMillis();
784 for (int i=0; i<ITERS; i++) {
785 test_srlv(a0, a1, -SHIFT);
786 }
787 end = System.currentTimeMillis();
788 System.out.println("test_srlv_on: " + (end - start));
790 start = System.currentTimeMillis();
791 for (int i=0; i<ITERS; i++) {
792 test_srac_on(a0, a1);
793 }
794 end = System.currentTimeMillis();
795 System.out.println("test_srac_on: " + (end - start));
796 start = System.currentTimeMillis();
797 for (int i=0; i<ITERS; i++) {
798 test_srav(a0, a1, -SHIFT);
799 }
800 end = System.currentTimeMillis();
801 System.out.println("test_srav_on: " + (end - start));
803 start = System.currentTimeMillis();
804 for (int i=0; i<ITERS; i++) {
805 test_sllc_add(a0, a1);
806 }
807 end = System.currentTimeMillis();
808 System.out.println("test_sllc_add: " + (end - start));
809 start = System.currentTimeMillis();
810 for (int i=0; i<ITERS; i++) {
811 test_sllv_add(a0, a1, ADD_INIT);
812 }
813 end = System.currentTimeMillis();
814 System.out.println("test_sllv_add: " + (end - start));
816 start = System.currentTimeMillis();
817 for (int i=0; i<ITERS; i++) {
818 test_srlc_add(a0, a1);
819 }
820 end = System.currentTimeMillis();
821 System.out.println("test_srlc_add: " + (end - start));
822 start = System.currentTimeMillis();
823 for (int i=0; i<ITERS; i++) {
824 test_srlv_add(a0, a1, ADD_INIT);
825 }
826 end = System.currentTimeMillis();
827 System.out.println("test_srlv_add: " + (end - start));
829 start = System.currentTimeMillis();
830 for (int i=0; i<ITERS; i++) {
831 test_srac_add(a0, a1);
832 }
833 end = System.currentTimeMillis();
834 System.out.println("test_srac_add: " + (end - start));
835 start = System.currentTimeMillis();
836 for (int i=0; i<ITERS; i++) {
837 test_srav_add(a0, a1, ADD_INIT);
838 }
839 end = System.currentTimeMillis();
840 System.out.println("test_srav_add: " + (end - start));
842 start = System.currentTimeMillis();
843 for (int i=0; i<ITERS; i++) {
844 test_sllc_and(a0, a1);
845 }
846 end = System.currentTimeMillis();
847 System.out.println("test_sllc_and: " + (end - start));
848 start = System.currentTimeMillis();
849 for (int i=0; i<ITERS; i++) {
850 test_sllv_and(a0, a1, BIT_MASK);
851 }
852 end = System.currentTimeMillis();
853 System.out.println("test_sllv_and: " + (end - start));
855 start = System.currentTimeMillis();
856 for (int i=0; i<ITERS; i++) {
857 test_srlc_and(a0, a1);
858 }
859 end = System.currentTimeMillis();
860 System.out.println("test_srlc_and: " + (end - start));
861 start = System.currentTimeMillis();
862 for (int i=0; i<ITERS; i++) {
863 test_srlv_and(a0, a1, BIT_MASK);
864 }
865 end = System.currentTimeMillis();
866 System.out.println("test_srlv_and: " + (end - start));
868 start = System.currentTimeMillis();
869 for (int i=0; i<ITERS; i++) {
870 test_srac_and(a0, a1);
871 }
872 end = System.currentTimeMillis();
873 System.out.println("test_srac_and: " + (end - start));
874 start = System.currentTimeMillis();
875 for (int i=0; i<ITERS; i++) {
876 test_srav_and(a0, a1, BIT_MASK);
877 }
878 end = System.currentTimeMillis();
879 System.out.println("test_srav_and: " + (end - start));
881 start = System.currentTimeMillis();
882 for (int i=0; i<ITERS; i++) {
883 test_pack2(p2, a1);
884 }
885 end = System.currentTimeMillis();
886 System.out.println("test_pack2: " + (end - start));
887 start = System.currentTimeMillis();
888 for (int i=0; i<ITERS; i++) {
889 test_unpack2(a0, p2);
890 }
891 end = System.currentTimeMillis();
892 System.out.println("test_unpack2: " + (end - start));
893 start = System.currentTimeMillis();
894 for (int i=0; i<ITERS; i++) {
895 test_pack2_swap(p2, a1);
896 }
897 end = System.currentTimeMillis();
898 System.out.println("test_pack2_swap: " + (end - start));
899 start = System.currentTimeMillis();
900 for (int i=0; i<ITERS; i++) {
901 test_unpack2_swap(a0, p2);
902 }
903 end = System.currentTimeMillis();
904 System.out.println("test_unpack2_swap: " + (end - start));
906 return errn;
907 }
909 static int test_sum(int[] a1) {
910 int sum = 0;
911 for (int i = 0; i < a1.length; i+=1) {
912 sum += a1[i];
913 }
914 return sum;
915 }
917 static void test_addc(int[] a0, int[] a1) {
918 for (int i = 0; i < a0.length; i+=1) {
919 a0[i] = (int)(a1[i]+VALUE);
920 }
921 }
922 static void test_addv(int[] a0, int[] a1, int b) {
923 for (int i = 0; i < a0.length; i+=1) {
924 a0[i] = (int)(a1[i]+b);
925 }
926 }
927 static void test_adda(int[] a0, int[] a1, int[] a2) {
928 for (int i = 0; i < a0.length; i+=1) {
929 a0[i] = (int)(a1[i]+a2[i]);
930 }
931 }
933 static void test_subc(int[] a0, int[] a1) {
934 for (int i = 0; i < a0.length; i+=1) {
935 a0[i] = (int)(a1[i]-VALUE);
936 }
937 }
938 static void test_subv(int[] a0, int[] a1, int b) {
939 for (int i = 0; i < a0.length; i+=1) {
940 a0[i] = (int)(a1[i]-b);
941 }
942 }
943 static void test_suba(int[] a0, int[] a1, int[] a2) {
944 for (int i = 0; i < a0.length; i+=1) {
945 a0[i] = (int)(a1[i]-a2[i]);
946 }
947 }
949 static void test_mulc(int[] a0, int[] a1) {
950 for (int i = 0; i < a0.length; i+=1) {
951 a0[i] = (int)(a1[i]*VALUE);
952 }
953 }
954 static void test_mulc_n(int[] a0, int[] a1) {
955 for (int i = 0; i < a0.length; i+=1) {
956 a0[i] = (int)(a1[i]*(-VALUE));
957 }
958 }
959 static void test_mulv(int[] a0, int[] a1, int b) {
960 for (int i = 0; i < a0.length; i+=1) {
961 a0[i] = (int)(a1[i]*b);
962 }
963 }
964 static void test_mula(int[] a0, int[] a1, int[] a2) {
965 for (int i = 0; i < a0.length; i+=1) {
966 a0[i] = (int)(a1[i]*a2[i]);
967 }
968 }
970 static void test_divc(int[] a0, int[] a1) {
971 for (int i = 0; i < a0.length; i+=1) {
972 a0[i] = (int)(a1[i]/VALUE);
973 }
974 }
975 static void test_divc_n(int[] a0, int[] a1) {
976 for (int i = 0; i < a0.length; i+=1) {
977 a0[i] = (int)(a1[i]/(-VALUE));
978 }
979 }
980 static void test_divv(int[] a0, int[] a1, int b) {
981 for (int i = 0; i < a0.length; i+=1) {
982 a0[i] = (int)(a1[i]/b);
983 }
984 }
985 static void test_diva(int[] a0, int[] a1, int[] a2) {
986 for (int i = 0; i < a0.length; i+=1) {
987 a0[i] = (int)(a1[i]/a2[i]);
988 }
989 }
991 static void test_andc(int[] a0, int[] a1) {
992 for (int i = 0; i < a0.length; i+=1) {
993 a0[i] = (int)(a1[i]&BIT_MASK);
994 }
995 }
996 static void test_andv(int[] a0, int[] a1, int b) {
997 for (int i = 0; i < a0.length; i+=1) {
998 a0[i] = (int)(a1[i]&b);
999 }
1000 }
1001 static void test_anda(int[] a0, int[] a1, int[] a2) {
1002 for (int i = 0; i < a0.length; i+=1) {
1003 a0[i] = (int)(a1[i]&a2[i]);
1004 }
1005 }
1007 static void test_orc(int[] a0, int[] a1) {
1008 for (int i = 0; i < a0.length; i+=1) {
1009 a0[i] = (int)(a1[i]|BIT_MASK);
1010 }
1011 }
1012 static void test_orv(int[] a0, int[] a1, int b) {
1013 for (int i = 0; i < a0.length; i+=1) {
1014 a0[i] = (int)(a1[i]|b);
1015 }
1016 }
1017 static void test_ora(int[] a0, int[] a1, int[] a2) {
1018 for (int i = 0; i < a0.length; i+=1) {
1019 a0[i] = (int)(a1[i]|a2[i]);
1020 }
1021 }
1023 static void test_xorc(int[] a0, int[] a1) {
1024 for (int i = 0; i < a0.length; i+=1) {
1025 a0[i] = (int)(a1[i]^BIT_MASK);
1026 }
1027 }
1028 static void test_xorv(int[] a0, int[] a1, int b) {
1029 for (int i = 0; i < a0.length; i+=1) {
1030 a0[i] = (int)(a1[i]^b);
1031 }
1032 }
1033 static void test_xora(int[] a0, int[] a1, int[] a2) {
1034 for (int i = 0; i < a0.length; i+=1) {
1035 a0[i] = (int)(a1[i]^a2[i]);
1036 }
1037 }
1039 static void test_sllc(int[] a0, int[] a1) {
1040 for (int i = 0; i < a0.length; i+=1) {
1041 a0[i] = (int)(a1[i]<<VALUE);
1042 }
1043 }
1044 static void test_sllc_n(int[] a0, int[] a1) {
1045 for (int i = 0; i < a0.length; i+=1) {
1046 a0[i] = (int)(a1[i]<<(-VALUE));
1047 }
1048 }
1049 static void test_sllc_o(int[] a0, int[] a1) {
1050 for (int i = 0; i < a0.length; i+=1) {
1051 a0[i] = (int)(a1[i]<<SHIFT);
1052 }
1053 }
1054 static void test_sllc_on(int[] a0, int[] a1) {
1055 for (int i = 0; i < a0.length; i+=1) {
1056 a0[i] = (int)(a1[i]<<(-SHIFT));
1057 }
1058 }
1059 static void test_sllv(int[] a0, int[] a1, int b) {
1060 for (int i = 0; i < a0.length; i+=1) {
1061 a0[i] = (int)(a1[i]<<b);
1062 }
1063 }
1064 static void test_sllc_add(int[] a0, int[] a1) {
1065 for (int i = 0; i < a0.length; i+=1) {
1066 a0[i] = (int)((a1[i] + ADD_INIT)<<VALUE);
1067 }
1068 }
1069 static void test_sllv_add(int[] a0, int[] a1, int b) {
1070 for (int i = 0; i < a0.length; i+=1) {
1071 a0[i] = (int)((a1[i] + b)<<VALUE);
1072 }
1073 }
1074 static void test_sllc_and(int[] a0, int[] a1) {
1075 for (int i = 0; i < a0.length; i+=1) {
1076 a0[i] = (int)((a1[i] & BIT_MASK)<<VALUE);
1077 }
1078 }
1079 static void test_sllv_and(int[] a0, int[] a1, int b) {
1080 for (int i = 0; i < a0.length; i+=1) {
1081 a0[i] = (int)((a1[i] & b)<<VALUE);
1082 }
1083 }
1085 static void test_srlc(int[] a0, int[] a1) {
1086 for (int i = 0; i < a0.length; i+=1) {
1087 a0[i] = (int)(a1[i]>>>VALUE);
1088 }
1089 }
1090 static void test_srlc_n(int[] a0, int[] a1) {
1091 for (int i = 0; i < a0.length; i+=1) {
1092 a0[i] = (int)(a1[i]>>>(-VALUE));
1093 }
1094 }
1095 static void test_srlc_o(int[] a0, int[] a1) {
1096 for (int i = 0; i < a0.length; i+=1) {
1097 a0[i] = (int)(a1[i]>>>SHIFT);
1098 }
1099 }
1100 static void test_srlc_on(int[] a0, int[] a1) {
1101 for (int i = 0; i < a0.length; i+=1) {
1102 a0[i] = (int)(a1[i]>>>(-SHIFT));
1103 }
1104 }
1105 static void test_srlv(int[] a0, int[] a1, int b) {
1106 for (int i = 0; i < a0.length; i+=1) {
1107 a0[i] = (int)(a1[i]>>>b);
1108 }
1109 }
1110 static void test_srlc_add(int[] a0, int[] a1) {
1111 for (int i = 0; i < a0.length; i+=1) {
1112 a0[i] = (int)((a1[i] + ADD_INIT)>>>VALUE);
1113 }
1114 }
1115 static void test_srlv_add(int[] a0, int[] a1, int b) {
1116 for (int i = 0; i < a0.length; i+=1) {
1117 a0[i] = (int)((a1[i] + b)>>>VALUE);
1118 }
1119 }
1120 static void test_srlc_and(int[] a0, int[] a1) {
1121 for (int i = 0; i < a0.length; i+=1) {
1122 a0[i] = (int)((a1[i] & BIT_MASK)>>>VALUE);
1123 }
1124 }
1125 static void test_srlv_and(int[] a0, int[] a1, int b) {
1126 for (int i = 0; i < a0.length; i+=1) {
1127 a0[i] = (int)((a1[i] & b)>>>VALUE);
1128 }
1129 }
1131 static void test_srac(int[] a0, int[] a1) {
1132 for (int i = 0; i < a0.length; i+=1) {
1133 a0[i] = (int)(a1[i]>>VALUE);
1134 }
1135 }
1136 static void test_srac_n(int[] a0, int[] a1) {
1137 for (int i = 0; i < a0.length; i+=1) {
1138 a0[i] = (int)(a1[i]>>(-VALUE));
1139 }
1140 }
1141 static void test_srac_o(int[] a0, int[] a1) {
1142 for (int i = 0; i < a0.length; i+=1) {
1143 a0[i] = (int)(a1[i]>>SHIFT);
1144 }
1145 }
1146 static void test_srac_on(int[] a0, int[] a1) {
1147 for (int i = 0; i < a0.length; i+=1) {
1148 a0[i] = (int)(a1[i]>>(-SHIFT));
1149 }
1150 }
1151 static void test_srav(int[] a0, int[] a1, int b) {
1152 for (int i = 0; i < a0.length; i+=1) {
1153 a0[i] = (int)(a1[i]>>b);
1154 }
1155 }
1156 static void test_srac_add(int[] a0, int[] a1) {
1157 for (int i = 0; i < a0.length; i+=1) {
1158 a0[i] = (int)((a1[i] + ADD_INIT)>>VALUE);
1159 }
1160 }
1161 static void test_srav_add(int[] a0, int[] a1, int b) {
1162 for (int i = 0; i < a0.length; i+=1) {
1163 a0[i] = (int)((a1[i] + b)>>VALUE);
1164 }
1165 }
1166 static void test_srac_and(int[] a0, int[] a1) {
1167 for (int i = 0; i < a0.length; i+=1) {
1168 a0[i] = (int)((a1[i] & BIT_MASK)>>VALUE);
1169 }
1170 }
1171 static void test_srav_and(int[] a0, int[] a1, int b) {
1172 for (int i = 0; i < a0.length; i+=1) {
1173 a0[i] = (int)((a1[i] & b)>>VALUE);
1174 }
1175 }
1177 static void test_pack2(long[] p2, int[] a1) {
1178 if (p2.length*2 > a1.length) return;
1179 for (int i = 0; i < p2.length; i+=1) {
1180 long l0 = (long)a1[i*2+0];
1181 long l1 = (long)a1[i*2+1];
1182 p2[i] = (l1 << 32) | (l0 & 0xFFFFFFFFl);
1183 }
1184 }
1185 static void test_unpack2(int[] a0, long[] p2) {
1186 if (p2.length*2 > a0.length) return;
1187 for (int i = 0; i < p2.length; i+=1) {
1188 long l = p2[i];
1189 a0[i*2+0] = (int)(l & 0xFFFFFFFFl);
1190 a0[i*2+1] = (int)(l >> 32);
1191 }
1192 }
1193 static void test_pack2_swap(long[] p2, int[] a1) {
1194 if (p2.length*2 > a1.length) return;
1195 for (int i = 0; i < p2.length; i+=1) {
1196 long l0 = (long)a1[i*2+0];
1197 long l1 = (long)a1[i*2+1];
1198 p2[i] = (l0 << 32) | (l1 & 0xFFFFFFFFl);
1199 }
1200 }
1201 static void test_unpack2_swap(int[] a0, long[] p2) {
1202 if (p2.length*2 > a0.length) return;
1203 for (int i = 0; i < p2.length; i+=1) {
1204 long l = p2[i];
1205 a0[i*2+0] = (int)(l >> 32);
1206 a0[i*2+1] = (int)(l & 0xFFFFFFFFl);
1207 }
1208 }
1210 static int verify(String text, int i, int elem, int val) {
1211 if (elem != val) {
1212 System.err.println(text + "[" + i + "] = " + elem + " != " + val);
1213 return 1;
1214 }
1215 return 0;
1216 }
1218 static int verify(String text, int i, long elem, long val) {
1219 if (elem != val) {
1220 System.err.println(text + "[" + i + "] = " + Long.toHexString(elem) + " != " + Long.toHexString(val));
1221 return 1;
1222 }
1223 return 0;
1224 }
1225 }