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 
24 /**
25  * @test
26  * @bug 6340864
27  * @summary Implement vectorization optimizations in hotspot-server
28  *
29  * @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m compiler.c2.cr6340864.TestLongVect
30  * @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m -XX:MaxVectorSize=8 compiler.c2.cr6340864.TestLongVect
31  * @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m -XX:MaxVectorSize=16 compiler.c2.cr6340864.TestLongVect
32  * @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m -XX:MaxVectorSize=32 compiler.c2.cr6340864.TestLongVect
33  * @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m -XX:+IgnoreUnrecognizedVMOptions -XX:UseAVX=3 compiler.c2.cr6340864.TestLongVect
34  */
35 
36 package compiler.c2.cr6340864;
37 
38 public class TestLongVect {
39   private static final int ARRLEN = 997;
40   private static final int ITERS  = 11000;
41   private static final long ADD_INIT = Long.MAX_VALUE-500;
42   private static final long BIT_MASK = 0xEC80F731EC80F731L;
43   private static final int VALUE = 31;
44   private static final int SHIFT = 64;
45 
main(String args[])46   public static void main(String args[]) {
47     System.out.println("Testing Long vectors");
48     int errn = test();
49     if (errn > 0) {
50       System.err.println("FAILED: " + errn + " errors");
51       System.exit(97);
52     }
53     System.out.println("PASSED");
54   }
55 
test()56   static int test() {
57     long[] a0 = new long[ARRLEN];
58     long[] a1 = new long[ARRLEN];
59     long[] a2 = new long[ARRLEN];
60     long[] a3 = new long[ARRLEN];
61     long[] a4 = new long[ARRLEN];
62     // Initialize
63     long gold_sum = 0;
64     for (int i=0; i<ARRLEN; i++) {
65       long val = (long)(ADD_INIT+i);
66       gold_sum += val;
67       a1[i] = val;
68       a2[i] = (long)VALUE;
69       a3[i] = (long)-VALUE;
70       a4[i] = (long)BIT_MASK;
71     }
72     System.out.println("Warmup");
73     for (int i=0; i<ITERS; i++) {
74       test_sum(a1);
75       test_addc(a0, a1);
76       test_addv(a0, a1, (long)VALUE);
77       test_adda(a0, a1, a2);
78       test_subc(a0, a1);
79       test_subv(a0, a1, (long)VALUE);
80       test_suba(a0, a1, a2);
81 
82       test_mulc(a0, a1);
83       test_mulv(a0, a1, (long)VALUE);
84       test_mula(a0, a1, a2);
85       test_divc(a0, a1);
86       test_divv(a0, a1, (long)VALUE);
87       test_diva(a0, a1, a2);
88       test_mulc_n(a0, a1);
89       test_mulv(a0, a1, (long)-VALUE);
90       test_mula(a0, a1, a3);
91       test_divc_n(a0, a1);
92       test_divv(a0, a1, (long)-VALUE);
93       test_diva(a0, a1, a3);
94 
95       test_andc(a0, a1);
96       test_andv(a0, a1, (long)BIT_MASK);
97       test_anda(a0, a1, a4);
98       test_orc(a0, a1);
99       test_orv(a0, a1, (long)BIT_MASK);
100       test_ora(a0, a1, a4);
101       test_xorc(a0, a1);
102       test_xorv(a0, a1, (long)BIT_MASK);
103       test_xora(a0, a1, a4);
104 
105       test_sllc(a0, a1);
106       test_sllv(a0, a1, VALUE);
107       test_srlc(a0, a1);
108       test_srlv(a0, a1, VALUE);
109       test_srac(a0, a1);
110       test_srav(a0, a1, VALUE);
111 
112       test_sllc_n(a0, a1);
113       test_sllv(a0, a1, -VALUE);
114       test_srlc_n(a0, a1);
115       test_srlv(a0, a1, -VALUE);
116       test_srac_n(a0, a1);
117       test_srav(a0, a1, -VALUE);
118 
119       test_sllc_o(a0, a1);
120       test_sllv(a0, a1, SHIFT);
121       test_srlc_o(a0, a1);
122       test_srlv(a0, a1, SHIFT);
123       test_srac_o(a0, a1);
124       test_srav(a0, a1, SHIFT);
125 
126       test_sllc_on(a0, a1);
127       test_sllv(a0, a1, -SHIFT);
128       test_srlc_on(a0, a1);
129       test_srlv(a0, a1, -SHIFT);
130       test_srac_on(a0, a1);
131       test_srav(a0, a1, -SHIFT);
132 
133       test_sllc_add(a0, a1);
134       test_sllv_add(a0, a1, ADD_INIT);
135       test_srlc_add(a0, a1);
136       test_srlv_add(a0, a1, ADD_INIT);
137       test_srac_add(a0, a1);
138       test_srav_add(a0, a1, ADD_INIT);
139 
140       test_sllc_and(a0, a1);
141       test_sllv_and(a0, a1, BIT_MASK);
142       test_srlc_and(a0, a1);
143       test_srlv_and(a0, a1, BIT_MASK);
144       test_srac_and(a0, a1);
145       test_srav_and(a0, a1, BIT_MASK);
146     }
147     // Test and verify results
148     System.out.println("Verification");
149     int errn = 0;
150     {
151       long sum = test_sum(a1);
152       if (sum != gold_sum) {
153         System.err.println("test_sum:  " + sum + " != " + gold_sum);
154         errn++;
155       }
156 
157       test_addc(a0, a1);
158       for (int i=0; i<ARRLEN; i++) {
159         errn += verify("test_addc: ", i, a0[i], (long)((long)(ADD_INIT+i)+VALUE));
160       }
161       test_addv(a0, a1, (long)VALUE);
162       for (int i=0; i<ARRLEN; i++) {
163         errn += verify("test_addv: ", i, a0[i], (long)((long)(ADD_INIT+i)+VALUE));
164       }
165       test_adda(a0, a1, a2);
166       for (int i=0; i<ARRLEN; i++) {
167         errn += verify("test_adda: ", i, a0[i], (long)((long)(ADD_INIT+i)+VALUE));
168       }
169 
170       test_subc(a0, a1);
171       for (int i=0; i<ARRLEN; i++) {
172         errn += verify("test_subc: ", i, a0[i], (long)((long)(ADD_INIT+i)-VALUE));
173       }
174       test_subv(a0, a1, (long)VALUE);
175       for (int i=0; i<ARRLEN; i++) {
176         errn += verify("test_subv: ", i, a0[i], (long)((long)(ADD_INIT+i)-VALUE));
177       }
178       test_suba(a0, a1, a2);
179       for (int i=0; i<ARRLEN; i++) {
180         errn += verify("test_suba: ", i, a0[i], (long)((long)(ADD_INIT+i)-VALUE));
181       }
182 
183       test_mulc(a0, a1);
184       for (int i=0; i<ARRLEN; i++) {
185         errn += verify("test_mulc: ", i, a0[i], (long)((long)(ADD_INIT+i)*VALUE));
186       }
187       test_mulv(a0, a1, (long)VALUE);
188       for (int i=0; i<ARRLEN; i++) {
189         errn += verify("test_mulv: ", i, a0[i], (long)((long)(ADD_INIT+i)*VALUE));
190       }
191       test_mula(a0, a1, a2);
192       for (int i=0; i<ARRLEN; i++) {
193         errn += verify("test_mula: ", i, a0[i], (long)((long)(ADD_INIT+i)*VALUE));
194       }
195 
196       test_divc(a0, a1);
197       for (int i=0; i<ARRLEN; i++) {
198         errn += verify("test_divc: ", i, a0[i], (long)((long)(ADD_INIT+i)/VALUE));
199       }
200       test_divv(a0, a1, (long)VALUE);
201       for (int i=0; i<ARRLEN; i++) {
202         errn += verify("test_divv: ", i, a0[i], (long)((long)(ADD_INIT+i)/VALUE));
203       }
204       test_diva(a0, a1, a2);
205       for (int i=0; i<ARRLEN; i++) {
206         errn += verify("test_diva: ", i, a0[i], (long)((long)(ADD_INIT+i)/VALUE));
207       }
208 
209       test_mulc_n(a0, a1);
210       for (int i=0; i<ARRLEN; i++) {
211         errn += verify("test_mulc_n: ", i, a0[i], (long)((long)(ADD_INIT+i)*(-VALUE)));
212       }
213       test_mulv(a0, a1, (long)-VALUE);
214       for (int i=0; i<ARRLEN; i++) {
215         errn += verify("test_mulv_n: ", i, a0[i], (long)((long)(ADD_INIT+i)*(-VALUE)));
216       }
217       test_mula(a0, a1, a3);
218       for (int i=0; i<ARRLEN; i++) {
219         errn += verify("test_mula_n: ", i, a0[i], (long)((long)(ADD_INIT+i)*(-VALUE)));
220       }
221 
222       test_divc_n(a0, a1);
223       for (int i=0; i<ARRLEN; i++) {
224         errn += verify("test_divc_n: ", i, a0[i], (long)((long)(ADD_INIT+i)/(-VALUE)));
225       }
226       test_divv(a0, a1, (long)-VALUE);
227       for (int i=0; i<ARRLEN; i++) {
228         errn += verify("test_divv_n: ", i, a0[i], (long)((long)(ADD_INIT+i)/(-VALUE)));
229       }
230       test_diva(a0, a1, a3);
231       for (int i=0; i<ARRLEN; i++) {
232         errn += verify("test_diva_n: ", i, a0[i], (long)((long)(ADD_INIT+i)/(-VALUE)));
233       }
234 
235       test_andc(a0, a1);
236       for (int i=0; i<ARRLEN; i++) {
237         errn += verify("test_andc: ", i, a0[i], (long)((long)(ADD_INIT+i)&BIT_MASK));
238       }
239       test_andv(a0, a1, (long)BIT_MASK);
240       for (int i=0; i<ARRLEN; i++) {
241         errn += verify("test_andv: ", i, a0[i], (long)((long)(ADD_INIT+i)&BIT_MASK));
242       }
243       test_anda(a0, a1, a4);
244       for (int i=0; i<ARRLEN; i++) {
245         errn += verify("test_anda: ", i, a0[i], (long)((long)(ADD_INIT+i)&BIT_MASK));
246       }
247 
248       test_orc(a0, a1);
249       for (int i=0; i<ARRLEN; i++) {
250         errn += verify("test_orc: ", i, a0[i], (long)((long)(ADD_INIT+i)|BIT_MASK));
251       }
252       test_orv(a0, a1, (long)BIT_MASK);
253       for (int i=0; i<ARRLEN; i++) {
254         errn += verify("test_orv: ", i, a0[i], (long)((long)(ADD_INIT+i)|BIT_MASK));
255       }
256       test_ora(a0, a1, a4);
257       for (int i=0; i<ARRLEN; i++) {
258         errn += verify("test_ora: ", i, a0[i], (long)((long)(ADD_INIT+i)|BIT_MASK));
259       }
260 
261       test_xorc(a0, a1);
262       for (int i=0; i<ARRLEN; i++) {
263         errn += verify("test_xorc: ", i, a0[i], (long)((long)(ADD_INIT+i)^BIT_MASK));
264       }
265       test_xorv(a0, a1, (long)BIT_MASK);
266       for (int i=0; i<ARRLEN; i++) {
267         errn += verify("test_xorv: ", i, a0[i], (long)((long)(ADD_INIT+i)^BIT_MASK));
268       }
269       test_xora(a0, a1, a4);
270       for (int i=0; i<ARRLEN; i++) {
271         errn += verify("test_xora: ", i, a0[i], (long)((long)(ADD_INIT+i)^BIT_MASK));
272       }
273 
274       test_sllc(a0, a1);
275       for (int i=0; i<ARRLEN; i++) {
276         errn += verify("test_sllc: ", i, a0[i], (long)((long)(ADD_INIT+i)<<VALUE));
277       }
278       test_sllv(a0, a1, VALUE);
279       for (int i=0; i<ARRLEN; i++) {
280         errn += verify("test_sllv: ", i, a0[i], (long)((long)(ADD_INIT+i)<<VALUE));
281       }
282 
283       test_srlc(a0, a1);
284       for (int i=0; i<ARRLEN; i++) {
285         errn += verify("test_srlc: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>VALUE));
286       }
287       test_srlv(a0, a1, VALUE);
288       for (int i=0; i<ARRLEN; i++) {
289         errn += verify("test_srlv: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>VALUE));
290       }
291 
292       test_srac(a0, a1);
293       for (int i=0; i<ARRLEN; i++) {
294         errn += verify("test_srac: ", i, a0[i], (long)((long)(ADD_INIT+i)>>VALUE));
295       }
296       test_srav(a0, a1, VALUE);
297       for (int i=0; i<ARRLEN; i++) {
298         errn += verify("test_srav: ", i, a0[i], (long)((long)(ADD_INIT+i)>>VALUE));
299       }
300 
301       test_sllc_n(a0, a1);
302       for (int i=0; i<ARRLEN; i++) {
303         errn += verify("test_sllc_n: ", i, a0[i], (long)((long)(ADD_INIT+i)<<(-VALUE)));
304       }
305       test_sllv(a0, a1, -VALUE);
306       for (int i=0; i<ARRLEN; i++) {
307         errn += verify("test_sllv_n: ", i, a0[i], (long)((long)(ADD_INIT+i)<<(-VALUE)));
308       }
309 
310       test_srlc_n(a0, a1);
311       for (int i=0; i<ARRLEN; i++) {
312         errn += verify("test_srlc_n: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>(-VALUE)));
313       }
314       test_srlv(a0, a1, -VALUE);
315       for (int i=0; i<ARRLEN; i++) {
316         errn += verify("test_srlv_n: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>(-VALUE)));
317       }
318 
319       test_srac_n(a0, a1);
320       for (int i=0; i<ARRLEN; i++) {
321         errn += verify("test_srac_n: ", i, a0[i], (long)((long)(ADD_INIT+i)>>(-VALUE)));
322       }
323       test_srav(a0, a1, -VALUE);
324       for (int i=0; i<ARRLEN; i++) {
325         errn += verify("test_srav_n: ", i, a0[i], (long)((long)(ADD_INIT+i)>>(-VALUE)));
326       }
327 
328       test_sllc_o(a0, a1);
329       for (int i=0; i<ARRLEN; i++) {
330         errn += verify("test_sllc_o: ", i, a0[i], (long)((long)(ADD_INIT+i)<<SHIFT));
331       }
332       test_sllv(a0, a1, SHIFT);
333       for (int i=0; i<ARRLEN; i++) {
334         errn += verify("test_sllv_o: ", i, a0[i], (long)((long)(ADD_INIT+i)<<SHIFT));
335       }
336 
337       test_srlc_o(a0, a1);
338       for (int i=0; i<ARRLEN; i++) {
339         errn += verify("test_srlc_o: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>SHIFT));
340       }
341       test_srlv(a0, a1, SHIFT);
342       for (int i=0; i<ARRLEN; i++) {
343         errn += verify("test_srlv_o: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>SHIFT));
344       }
345 
346       test_srac_o(a0, a1);
347       for (int i=0; i<ARRLEN; i++) {
348         errn += verify("test_srac_o: ", i, a0[i], (long)((long)(ADD_INIT+i)>>SHIFT));
349       }
350       test_srav(a0, a1, SHIFT);
351       for (int i=0; i<ARRLEN; i++) {
352         errn += verify("test_srav_o: ", i, a0[i], (long)((long)(ADD_INIT+i)>>SHIFT));
353       }
354 
355       test_sllc_on(a0, a1);
356       for (int i=0; i<ARRLEN; i++) {
357         errn += verify("test_sllc_on: ", i, a0[i], (long)((long)(ADD_INIT+i)<<(-SHIFT)));
358       }
359       test_sllv(a0, a1, -SHIFT);
360       for (int i=0; i<ARRLEN; i++) {
361         errn += verify("test_sllv_on: ", i, a0[i], (long)((long)(ADD_INIT+i)<<(-SHIFT)));
362       }
363 
364       test_srlc_on(a0, a1);
365       for (int i=0; i<ARRLEN; i++) {
366         errn += verify("test_srlc_on: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>(-SHIFT)));
367       }
368       test_srlv(a0, a1, -SHIFT);
369       for (int i=0; i<ARRLEN; i++) {
370         errn += verify("test_srlv_on: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>(-SHIFT)));
371       }
372 
373       test_srac_on(a0, a1);
374       for (int i=0; i<ARRLEN; i++) {
375         errn += verify("test_srac_on: ", i, a0[i], (long)((long)(ADD_INIT+i)>>(-SHIFT)));
376       }
377       test_srav(a0, a1, -SHIFT);
378       for (int i=0; i<ARRLEN; i++) {
379         errn += verify("test_srav_on: ", i, a0[i], (long)((long)(ADD_INIT+i)>>(-SHIFT)));
380       }
381 
382       test_sllc_add(a0, a1);
383       for (int i=0; i<ARRLEN; i++) {
384         errn += verify("test_sllc_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)<<VALUE));
385       }
386       test_sllv_add(a0, a1, ADD_INIT);
387       for (int i=0; i<ARRLEN; i++) {
388         errn += verify("test_sllv_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)<<VALUE));
389       }
390 
391       test_srlc_add(a0, a1);
392       for (int i=0; i<ARRLEN; i++) {
393         errn += verify("test_srlc_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
394       }
395       test_srlv_add(a0, a1, ADD_INIT);
396       for (int i=0; i<ARRLEN; i++) {
397         errn += verify("test_srlv_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
398       }
399 
400       test_srac_add(a0, a1);
401       for (int i=0; i<ARRLEN; i++) {
402         errn += verify("test_srac_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>VALUE));
403       }
404       test_srav_add(a0, a1, ADD_INIT);
405       for (int i=0; i<ARRLEN; i++) {
406         errn += verify("test_srav_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>VALUE));
407       }
408 
409       test_sllc_and(a0, a1);
410       for (int i=0; i<ARRLEN; i++) {
411         errn += verify("test_sllc_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)<<VALUE));
412       }
413       test_sllv_and(a0, a1, BIT_MASK);
414       for (int i=0; i<ARRLEN; i++) {
415         errn += verify("test_sllv_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)<<VALUE));
416       }
417 
418       test_srlc_and(a0, a1);
419       for (int i=0; i<ARRLEN; i++) {
420         errn += verify("test_srlc_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
421       }
422       test_srlv_and(a0, a1, BIT_MASK);
423       for (int i=0; i<ARRLEN; i++) {
424         errn += verify("test_srlv_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
425       }
426 
427       test_srac_and(a0, a1);
428       for (int i=0; i<ARRLEN; i++) {
429         errn += verify("test_srac_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>VALUE));
430       }
431       test_srav_and(a0, a1, BIT_MASK);
432       for (int i=0; i<ARRLEN; i++) {
433         errn += verify("test_srav_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>VALUE));
434       }
435 
436     }
437 
438     if (errn > 0)
439       return errn;
440 
441     System.out.println("Time");
442     long start, end;
443 
444     start = System.currentTimeMillis();
445     for (int i=0; i<ITERS; i++) {
446       test_sum(a1);
447     }
448     end = System.currentTimeMillis();
449     System.out.println("test_sum: " + (end - start));
450 
451     start = System.currentTimeMillis();
452     for (int i=0; i<ITERS; i++) {
453       test_addc(a0, a1);
454     }
455     end = System.currentTimeMillis();
456     System.out.println("test_addc: " + (end - start));
457     start = System.currentTimeMillis();
458     for (int i=0; i<ITERS; i++) {
459       test_addv(a0, a1, (long)VALUE);
460     }
461     end = System.currentTimeMillis();
462     System.out.println("test_addv: " + (end - start));
463     start = System.currentTimeMillis();
464     for (int i=0; i<ITERS; i++) {
465       test_adda(a0, a1, a2);
466     }
467     end = System.currentTimeMillis();
468     System.out.println("test_adda: " + (end - start));
469 
470     start = System.currentTimeMillis();
471     for (int i=0; i<ITERS; i++) {
472       test_subc(a0, a1);
473     }
474     end = System.currentTimeMillis();
475     System.out.println("test_subc: " + (end - start));
476     start = System.currentTimeMillis();
477     for (int i=0; i<ITERS; i++) {
478       test_subv(a0, a1, (long)VALUE);
479     }
480     end = System.currentTimeMillis();
481     System.out.println("test_subv: " + (end - start));
482     start = System.currentTimeMillis();
483     for (int i=0; i<ITERS; i++) {
484       test_suba(a0, a1, a2);
485     }
486     end = System.currentTimeMillis();
487     System.out.println("test_suba: " + (end - start));
488 
489     start = System.currentTimeMillis();
490     for (int i=0; i<ITERS; i++) {
491       test_mulc(a0, a1);
492     }
493     end = System.currentTimeMillis();
494     System.out.println("test_mulc: " + (end - start));
495     start = System.currentTimeMillis();
496     for (int i=0; i<ITERS; i++) {
497       test_mulv(a0, a1, (long)VALUE);
498     }
499     end = System.currentTimeMillis();
500     System.out.println("test_mulv: " + (end - start));
501     start = System.currentTimeMillis();
502     for (int i=0; i<ITERS; i++) {
503       test_mula(a0, a1, a2);
504     }
505     end = System.currentTimeMillis();
506     System.out.println("test_mula: " + (end - start));
507 
508     start = System.currentTimeMillis();
509     for (int i=0; i<ITERS; i++) {
510       test_divc(a0, a1);
511     }
512     end = System.currentTimeMillis();
513     System.out.println("test_divc: " + (end - start));
514     start = System.currentTimeMillis();
515     for (int i=0; i<ITERS; i++) {
516       test_divv(a0, a1, (long)VALUE);
517     }
518     end = System.currentTimeMillis();
519     System.out.println("test_divv: " + (end - start));
520     start = System.currentTimeMillis();
521     for (int i=0; i<ITERS; i++) {
522       test_diva(a0, a1, a2);
523     }
524     end = System.currentTimeMillis();
525     System.out.println("test_diva: " + (end - start));
526 
527     start = System.currentTimeMillis();
528     for (int i=0; i<ITERS; i++) {
529       test_mulc_n(a0, a1);
530     }
531     end = System.currentTimeMillis();
532     System.out.println("test_mulc_n: " + (end - start));
533     start = System.currentTimeMillis();
534     for (int i=0; i<ITERS; i++) {
535       test_mulv(a0, a1, (long)-VALUE);
536     }
537     end = System.currentTimeMillis();
538     System.out.println("test_mulv_n: " + (end - start));
539     start = System.currentTimeMillis();
540     for (int i=0; i<ITERS; i++) {
541       test_mula(a0, a1, a3);
542     }
543     end = System.currentTimeMillis();
544     System.out.println("test_mula_n: " + (end - start));
545 
546     start = System.currentTimeMillis();
547     for (int i=0; i<ITERS; i++) {
548       test_divc_n(a0, a1);
549     }
550     end = System.currentTimeMillis();
551     System.out.println("test_divc_n: " + (end - start));
552     start = System.currentTimeMillis();
553     for (int i=0; i<ITERS; i++) {
554       test_divv(a0, a1, (long)-VALUE);
555     }
556     end = System.currentTimeMillis();
557     System.out.println("test_divv_n: " + (end - start));
558     start = System.currentTimeMillis();
559     for (int i=0; i<ITERS; i++) {
560       test_diva(a0, a1, a3);
561     }
562     end = System.currentTimeMillis();
563     System.out.println("test_diva_n: " + (end - start));
564 
565     start = System.currentTimeMillis();
566     for (int i=0; i<ITERS; i++) {
567       test_andc(a0, a1);
568     }
569     end = System.currentTimeMillis();
570     System.out.println("test_andc: " + (end - start));
571     start = System.currentTimeMillis();
572     for (int i=0; i<ITERS; i++) {
573       test_andv(a0, a1, (long)BIT_MASK);
574     }
575     end = System.currentTimeMillis();
576     System.out.println("test_andv: " + (end - start));
577     start = System.currentTimeMillis();
578     for (int i=0; i<ITERS; i++) {
579       test_anda(a0, a1, a4);
580     }
581     end = System.currentTimeMillis();
582     System.out.println("test_anda: " + (end - start));
583 
584     start = System.currentTimeMillis();
585     for (int i=0; i<ITERS; i++) {
586       test_orc(a0, a1);
587     }
588     end = System.currentTimeMillis();
589     System.out.println("test_orc: " + (end - start));
590     start = System.currentTimeMillis();
591     for (int i=0; i<ITERS; i++) {
592       test_orv(a0, a1, (long)BIT_MASK);
593     }
594     end = System.currentTimeMillis();
595     System.out.println("test_orv: " + (end - start));
596     start = System.currentTimeMillis();
597     for (int i=0; i<ITERS; i++) {
598       test_ora(a0, a1, a4);
599     }
600     end = System.currentTimeMillis();
601     System.out.println("test_ora: " + (end - start));
602 
603     start = System.currentTimeMillis();
604     for (int i=0; i<ITERS; i++) {
605       test_xorc(a0, a1);
606     }
607     end = System.currentTimeMillis();
608     System.out.println("test_xorc: " + (end - start));
609     start = System.currentTimeMillis();
610     for (int i=0; i<ITERS; i++) {
611       test_xorv(a0, a1, (long)BIT_MASK);
612     }
613     end = System.currentTimeMillis();
614     System.out.println("test_xorv: " + (end - start));
615     start = System.currentTimeMillis();
616     for (int i=0; i<ITERS; i++) {
617       test_xora(a0, a1, a4);
618     }
619     end = System.currentTimeMillis();
620     System.out.println("test_xora: " + (end - start));
621 
622     start = System.currentTimeMillis();
623     for (int i=0; i<ITERS; i++) {
624       test_sllc(a0, a1);
625     }
626     end = System.currentTimeMillis();
627     System.out.println("test_sllc: " + (end - start));
628     start = System.currentTimeMillis();
629     for (int i=0; i<ITERS; i++) {
630       test_sllv(a0, a1, VALUE);
631     }
632     end = System.currentTimeMillis();
633     System.out.println("test_sllv: " + (end - start));
634 
635     start = System.currentTimeMillis();
636     for (int i=0; i<ITERS; i++) {
637       test_srlc(a0, a1);
638     }
639     end = System.currentTimeMillis();
640     System.out.println("test_srlc: " + (end - start));
641     start = System.currentTimeMillis();
642     for (int i=0; i<ITERS; i++) {
643       test_srlv(a0, a1, VALUE);
644     }
645     end = System.currentTimeMillis();
646     System.out.println("test_srlv: " + (end - start));
647 
648     start = System.currentTimeMillis();
649     for (int i=0; i<ITERS; i++) {
650       test_srac(a0, a1);
651     }
652     end = System.currentTimeMillis();
653     System.out.println("test_srac: " + (end - start));
654     start = System.currentTimeMillis();
655     for (int i=0; i<ITERS; i++) {
656       test_srav(a0, a1, VALUE);
657     }
658     end = System.currentTimeMillis();
659     System.out.println("test_srav: " + (end - start));
660 
661     start = System.currentTimeMillis();
662     for (int i=0; i<ITERS; i++) {
663       test_sllc_n(a0, a1);
664     }
665     end = System.currentTimeMillis();
666     System.out.println("test_sllc_n: " + (end - start));
667     start = System.currentTimeMillis();
668     for (int i=0; i<ITERS; i++) {
669       test_sllv(a0, a1, -VALUE);
670     }
671     end = System.currentTimeMillis();
672     System.out.println("test_sllv_n: " + (end - start));
673 
674     start = System.currentTimeMillis();
675     for (int i=0; i<ITERS; i++) {
676       test_srlc_n(a0, a1);
677     }
678     end = System.currentTimeMillis();
679     System.out.println("test_srlc_n: " + (end - start));
680     start = System.currentTimeMillis();
681     for (int i=0; i<ITERS; i++) {
682       test_srlv(a0, a1, -VALUE);
683     }
684     end = System.currentTimeMillis();
685     System.out.println("test_srlv_n: " + (end - start));
686 
687     start = System.currentTimeMillis();
688     for (int i=0; i<ITERS; i++) {
689       test_srac_n(a0, a1);
690     }
691     end = System.currentTimeMillis();
692     System.out.println("test_srac_n: " + (end - start));
693     start = System.currentTimeMillis();
694     for (int i=0; i<ITERS; i++) {
695       test_srav(a0, a1, -VALUE);
696     }
697     end = System.currentTimeMillis();
698     System.out.println("test_srav_n: " + (end - start));
699 
700     start = System.currentTimeMillis();
701     for (int i=0; i<ITERS; i++) {
702       test_sllc_o(a0, a1);
703     }
704     end = System.currentTimeMillis();
705     System.out.println("test_sllc_o: " + (end - start));
706     start = System.currentTimeMillis();
707     for (int i=0; i<ITERS; i++) {
708       test_sllv(a0, a1, SHIFT);
709     }
710     end = System.currentTimeMillis();
711     System.out.println("test_sllv_o: " + (end - start));
712 
713     start = System.currentTimeMillis();
714     for (int i=0; i<ITERS; i++) {
715       test_srlc_o(a0, a1);
716     }
717     end = System.currentTimeMillis();
718     System.out.println("test_srlc_o: " + (end - start));
719     start = System.currentTimeMillis();
720     for (int i=0; i<ITERS; i++) {
721       test_srlv(a0, a1, SHIFT);
722     }
723     end = System.currentTimeMillis();
724     System.out.println("test_srlv_o: " + (end - start));
725 
726     start = System.currentTimeMillis();
727     for (int i=0; i<ITERS; i++) {
728       test_srac_o(a0, a1);
729     }
730     end = System.currentTimeMillis();
731     System.out.println("test_srac_o: " + (end - start));
732     start = System.currentTimeMillis();
733     for (int i=0; i<ITERS; i++) {
734       test_srav(a0, a1, SHIFT);
735     }
736     end = System.currentTimeMillis();
737     System.out.println("test_srav_o: " + (end - start));
738 
739     start = System.currentTimeMillis();
740     for (int i=0; i<ITERS; i++) {
741       test_sllc_on(a0, a1);
742     }
743     end = System.currentTimeMillis();
744     System.out.println("test_sllc_on: " + (end - start));
745     start = System.currentTimeMillis();
746     for (int i=0; i<ITERS; i++) {
747       test_sllv(a0, a1, -SHIFT);
748     }
749     end = System.currentTimeMillis();
750     System.out.println("test_sllv_on: " + (end - start));
751 
752     start = System.currentTimeMillis();
753     for (int i=0; i<ITERS; i++) {
754       test_srlc_on(a0, a1);
755     }
756     end = System.currentTimeMillis();
757     System.out.println("test_srlc_on: " + (end - start));
758     start = System.currentTimeMillis();
759     for (int i=0; i<ITERS; i++) {
760       test_srlv(a0, a1, -SHIFT);
761     }
762     end = System.currentTimeMillis();
763     System.out.println("test_srlv_on: " + (end - start));
764 
765     start = System.currentTimeMillis();
766     for (int i=0; i<ITERS; i++) {
767       test_srac_on(a0, a1);
768     }
769     end = System.currentTimeMillis();
770     System.out.println("test_srac_on: " + (end - start));
771     start = System.currentTimeMillis();
772     for (int i=0; i<ITERS; i++) {
773       test_srav(a0, a1, -SHIFT);
774     }
775     end = System.currentTimeMillis();
776     System.out.println("test_srav_on: " + (end - start));
777 
778     start = System.currentTimeMillis();
779     for (int i=0; i<ITERS; i++) {
780       test_sllc_add(a0, a1);
781     }
782     end = System.currentTimeMillis();
783     System.out.println("test_sllc_add: " + (end - start));
784     start = System.currentTimeMillis();
785     for (int i=0; i<ITERS; i++) {
786       test_sllv_add(a0, a1, ADD_INIT);
787     }
788     end = System.currentTimeMillis();
789     System.out.println("test_sllv_add: " + (end - start));
790 
791     start = System.currentTimeMillis();
792     for (int i=0; i<ITERS; i++) {
793       test_srlc_add(a0, a1);
794     }
795     end = System.currentTimeMillis();
796     System.out.println("test_srlc_add: " + (end - start));
797     start = System.currentTimeMillis();
798     for (int i=0; i<ITERS; i++) {
799       test_srlv_add(a0, a1, ADD_INIT);
800     }
801     end = System.currentTimeMillis();
802     System.out.println("test_srlv_add: " + (end - start));
803 
804     start = System.currentTimeMillis();
805     for (int i=0; i<ITERS; i++) {
806       test_srac_add(a0, a1);
807     }
808     end = System.currentTimeMillis();
809     System.out.println("test_srac_add: " + (end - start));
810     start = System.currentTimeMillis();
811     for (int i=0; i<ITERS; i++) {
812       test_srav_add(a0, a1, ADD_INIT);
813     }
814     end = System.currentTimeMillis();
815     System.out.println("test_srav_add: " + (end - start));
816 
817     start = System.currentTimeMillis();
818     for (int i=0; i<ITERS; i++) {
819       test_sllc_and(a0, a1);
820     }
821     end = System.currentTimeMillis();
822     System.out.println("test_sllc_and: " + (end - start));
823     start = System.currentTimeMillis();
824     for (int i=0; i<ITERS; i++) {
825       test_sllv_and(a0, a1, BIT_MASK);
826     }
827     end = System.currentTimeMillis();
828     System.out.println("test_sllv_and: " + (end - start));
829 
830     start = System.currentTimeMillis();
831     for (int i=0; i<ITERS; i++) {
832       test_srlc_and(a0, a1);
833     }
834     end = System.currentTimeMillis();
835     System.out.println("test_srlc_and: " + (end - start));
836     start = System.currentTimeMillis();
837     for (int i=0; i<ITERS; i++) {
838       test_srlv_and(a0, a1, BIT_MASK);
839     }
840     end = System.currentTimeMillis();
841     System.out.println("test_srlv_and: " + (end - start));
842 
843     start = System.currentTimeMillis();
844     for (int i=0; i<ITERS; i++) {
845       test_srac_and(a0, a1);
846     }
847     end = System.currentTimeMillis();
848     System.out.println("test_srac_and: " + (end - start));
849     start = System.currentTimeMillis();
850     for (int i=0; i<ITERS; i++) {
851       test_srav_and(a0, a1, BIT_MASK);
852     }
853     end = System.currentTimeMillis();
854     System.out.println("test_srav_and: " + (end - start));
855 
856     return errn;
857   }
858 
test_sum(long[] a1)859   static long test_sum(long[] a1) {
860     long sum = 0;
861     for (int i = 0; i < a1.length; i+=1) {
862       sum += a1[i];
863     }
864     return sum;
865   }
866 
test_addc(long[] a0, long[] a1)867   static void test_addc(long[] a0, long[] a1) {
868     for (int i = 0; i < a0.length; i+=1) {
869       a0[i] = (long)(a1[i]+VALUE);
870     }
871   }
test_addv(long[] a0, long[] a1, long b)872   static void test_addv(long[] a0, long[] a1, long b) {
873     for (int i = 0; i < a0.length; i+=1) {
874       a0[i] = (long)(a1[i]+b);
875     }
876   }
test_adda(long[] a0, long[] a1, long[] a2)877   static void test_adda(long[] a0, long[] a1, long[] a2) {
878     for (int i = 0; i < a0.length; i+=1) {
879       a0[i] = (long)(a1[i]+a2[i]);
880     }
881   }
882 
test_subc(long[] a0, long[] a1)883   static void test_subc(long[] a0, long[] a1) {
884     for (int i = 0; i < a0.length; i+=1) {
885       a0[i] = (long)(a1[i]-VALUE);
886     }
887   }
test_subv(long[] a0, long[] a1, long b)888   static void test_subv(long[] a0, long[] a1, long b) {
889     for (int i = 0; i < a0.length; i+=1) {
890       a0[i] = (long)(a1[i]-b);
891     }
892   }
test_suba(long[] a0, long[] a1, long[] a2)893   static void test_suba(long[] a0, long[] a1, long[] a2) {
894     for (int i = 0; i < a0.length; i+=1) {
895       a0[i] = (long)(a1[i]-a2[i]);
896     }
897   }
898 
test_mulc(long[] a0, long[] a1)899   static void test_mulc(long[] a0, long[] a1) {
900     for (int i = 0; i < a0.length; i+=1) {
901       a0[i] = (long)(a1[i]*VALUE);
902     }
903   }
test_mulc_n(long[] a0, long[] a1)904   static void test_mulc_n(long[] a0, long[] a1) {
905     for (int i = 0; i < a0.length; i+=1) {
906       a0[i] = (long)(a1[i]*(-VALUE));
907     }
908   }
test_mulv(long[] a0, long[] a1, long b)909   static void test_mulv(long[] a0, long[] a1, long b) {
910     for (int i = 0; i < a0.length; i+=1) {
911       a0[i] = (long)(a1[i]*b);
912     }
913   }
test_mula(long[] a0, long[] a1, long[] a2)914   static void test_mula(long[] a0, long[] a1, long[] a2) {
915     for (int i = 0; i < a0.length; i+=1) {
916       a0[i] = (long)(a1[i]*a2[i]);
917     }
918   }
919 
test_divc(long[] a0, long[] a1)920   static void test_divc(long[] a0, long[] a1) {
921     for (int i = 0; i < a0.length; i+=1) {
922       a0[i] = (long)(a1[i]/VALUE);
923     }
924   }
test_divc_n(long[] a0, long[] a1)925   static void test_divc_n(long[] a0, long[] a1) {
926     for (int i = 0; i < a0.length; i+=1) {
927       a0[i] = (long)(a1[i]/(-VALUE));
928     }
929   }
test_divv(long[] a0, long[] a1, long b)930   static void test_divv(long[] a0, long[] a1, long b) {
931     for (int i = 0; i < a0.length; i+=1) {
932       a0[i] = (long)(a1[i]/b);
933     }
934   }
test_diva(long[] a0, long[] a1, long[] a2)935   static void test_diva(long[] a0, long[] a1, long[] a2) {
936     for (int i = 0; i < a0.length; i+=1) {
937       a0[i] = (long)(a1[i]/a2[i]);
938     }
939   }
940 
test_andc(long[] a0, long[] a1)941   static void test_andc(long[] a0, long[] a1) {
942     for (int i = 0; i < a0.length; i+=1) {
943       a0[i] = (long)(a1[i]&BIT_MASK);
944     }
945   }
test_andv(long[] a0, long[] a1, long b)946   static void test_andv(long[] a0, long[] a1, long b) {
947     for (int i = 0; i < a0.length; i+=1) {
948       a0[i] = (long)(a1[i]&b);
949     }
950   }
test_anda(long[] a0, long[] a1, long[] a2)951   static void test_anda(long[] a0, long[] a1, long[] a2) {
952     for (int i = 0; i < a0.length; i+=1) {
953       a0[i] = (long)(a1[i]&a2[i]);
954     }
955   }
956 
test_orc(long[] a0, long[] a1)957   static void test_orc(long[] a0, long[] a1) {
958     for (int i = 0; i < a0.length; i+=1) {
959       a0[i] = (long)(a1[i]|BIT_MASK);
960     }
961   }
test_orv(long[] a0, long[] a1, long b)962   static void test_orv(long[] a0, long[] a1, long b) {
963     for (int i = 0; i < a0.length; i+=1) {
964       a0[i] = (long)(a1[i]|b);
965     }
966   }
test_ora(long[] a0, long[] a1, long[] a2)967   static void test_ora(long[] a0, long[] a1, long[] a2) {
968     for (int i = 0; i < a0.length; i+=1) {
969       a0[i] = (long)(a1[i]|a2[i]);
970     }
971   }
972 
test_xorc(long[] a0, long[] a1)973   static void test_xorc(long[] a0, long[] a1) {
974     for (int i = 0; i < a0.length; i+=1) {
975       a0[i] = (long)(a1[i]^BIT_MASK);
976     }
977   }
test_xorv(long[] a0, long[] a1, long b)978   static void test_xorv(long[] a0, long[] a1, long b) {
979     for (int i = 0; i < a0.length; i+=1) {
980       a0[i] = (long)(a1[i]^b);
981     }
982   }
test_xora(long[] a0, long[] a1, long[] a2)983   static void test_xora(long[] a0, long[] a1, long[] a2) {
984     for (int i = 0; i < a0.length; i+=1) {
985       a0[i] = (long)(a1[i]^a2[i]);
986     }
987   }
988 
test_sllc(long[] a0, long[] a1)989   static void test_sllc(long[] a0, long[] a1) {
990     for (int i = 0; i < a0.length; i+=1) {
991       a0[i] = (long)(a1[i]<<VALUE);
992     }
993   }
test_sllc_n(long[] a0, long[] a1)994   static void test_sllc_n(long[] a0, long[] a1) {
995     for (int i = 0; i < a0.length; i+=1) {
996       a0[i] = (long)(a1[i]<<(-VALUE));
997     }
998   }
test_sllc_o(long[] a0, long[] a1)999   static void test_sllc_o(long[] a0, long[] a1) {
1000     for (int i = 0; i < a0.length; i+=1) {
1001       a0[i] = (long)(a1[i]<<SHIFT);
1002     }
1003   }
test_sllc_on(long[] a0, long[] a1)1004   static void test_sllc_on(long[] a0, long[] a1) {
1005     for (int i = 0; i < a0.length; i+=1) {
1006       a0[i] = (long)(a1[i]<<(-SHIFT));
1007     }
1008   }
test_sllv(long[] a0, long[] a1, int b)1009   static void test_sllv(long[] a0, long[] a1, int b) {
1010     for (int i = 0; i < a0.length; i+=1) {
1011       a0[i] = (long)(a1[i]<<b);
1012     }
1013   }
test_sllc_add(long[] a0, long[] a1)1014   static void test_sllc_add(long[] a0, long[] a1) {
1015     for (int i = 0; i < a0.length; i+=1) {
1016       a0[i] = (long)((a1[i] + ADD_INIT)<<VALUE);
1017     }
1018   }
test_sllv_add(long[] a0, long[] a1, long b)1019   static void test_sllv_add(long[] a0, long[] a1, long b) {
1020     for (int i = 0; i < a0.length; i+=1) {
1021       a0[i] = (long)((a1[i] + b)<<VALUE);
1022     }
1023   }
test_sllc_and(long[] a0, long[] a1)1024   static void test_sllc_and(long[] a0, long[] a1) {
1025     for (int i = 0; i < a0.length; i+=1) {
1026       a0[i] = (long)((a1[i] & BIT_MASK)<<VALUE);
1027     }
1028   }
test_sllv_and(long[] a0, long[] a1, long b)1029   static void test_sllv_and(long[] a0, long[] a1, long b) {
1030     for (int i = 0; i < a0.length; i+=1) {
1031       a0[i] = (long)((a1[i] & b)<<VALUE);
1032     }
1033   }
1034 
test_srlc(long[] a0, long[] a1)1035   static void test_srlc(long[] a0, long[] a1) {
1036     for (int i = 0; i < a0.length; i+=1) {
1037       a0[i] = (long)(a1[i]>>>VALUE);
1038     }
1039   }
test_srlc_n(long[] a0, long[] a1)1040   static void test_srlc_n(long[] a0, long[] a1) {
1041     for (int i = 0; i < a0.length; i+=1) {
1042       a0[i] = (long)(a1[i]>>>(-VALUE));
1043     }
1044   }
test_srlc_o(long[] a0, long[] a1)1045   static void test_srlc_o(long[] a0, long[] a1) {
1046     for (int i = 0; i < a0.length; i+=1) {
1047       a0[i] = (long)(a1[i]>>>SHIFT);
1048     }
1049   }
test_srlc_on(long[] a0, long[] a1)1050   static void test_srlc_on(long[] a0, long[] a1) {
1051     for (int i = 0; i < a0.length; i+=1) {
1052       a0[i] = (long)(a1[i]>>>(-SHIFT));
1053     }
1054   }
test_srlv(long[] a0, long[] a1, int b)1055   static void test_srlv(long[] a0, long[] a1, int b) {
1056     for (int i = 0; i < a0.length; i+=1) {
1057       a0[i] = (long)(a1[i]>>>b);
1058     }
1059   }
test_srlc_add(long[] a0, long[] a1)1060   static void test_srlc_add(long[] a0, long[] a1) {
1061     for (int i = 0; i < a0.length; i+=1) {
1062       a0[i] = (long)((a1[i] + ADD_INIT)>>>VALUE);
1063     }
1064   }
test_srlv_add(long[] a0, long[] a1, long b)1065   static void test_srlv_add(long[] a0, long[] a1, long b) {
1066     for (int i = 0; i < a0.length; i+=1) {
1067       a0[i] = (long)((a1[i] + b)>>>VALUE);
1068     }
1069   }
test_srlc_and(long[] a0, long[] a1)1070   static void test_srlc_and(long[] a0, long[] a1) {
1071     for (int i = 0; i < a0.length; i+=1) {
1072       a0[i] = (long)((a1[i] & BIT_MASK)>>>VALUE);
1073     }
1074   }
test_srlv_and(long[] a0, long[] a1, long b)1075   static void test_srlv_and(long[] a0, long[] a1, long b) {
1076     for (int i = 0; i < a0.length; i+=1) {
1077       a0[i] = (long)((a1[i] & b)>>>VALUE);
1078     }
1079   }
1080 
test_srac(long[] a0, long[] a1)1081   static void test_srac(long[] a0, long[] a1) {
1082     for (int i = 0; i < a0.length; i+=1) {
1083       a0[i] = (long)(a1[i]>>VALUE);
1084     }
1085   }
test_srac_n(long[] a0, long[] a1)1086   static void test_srac_n(long[] a0, long[] a1) {
1087     for (int i = 0; i < a0.length; i+=1) {
1088       a0[i] = (long)(a1[i]>>(-VALUE));
1089     }
1090   }
test_srac_o(long[] a0, long[] a1)1091   static void test_srac_o(long[] a0, long[] a1) {
1092     for (int i = 0; i < a0.length; i+=1) {
1093       a0[i] = (long)(a1[i]>>SHIFT);
1094     }
1095   }
test_srac_on(long[] a0, long[] a1)1096   static void test_srac_on(long[] a0, long[] a1) {
1097     for (int i = 0; i < a0.length; i+=1) {
1098       a0[i] = (long)(a1[i]>>(-SHIFT));
1099     }
1100   }
test_srav(long[] a0, long[] a1, int b)1101   static void test_srav(long[] a0, long[] a1, int b) {
1102     for (int i = 0; i < a0.length; i+=1) {
1103       a0[i] = (long)(a1[i]>>b);
1104     }
1105   }
test_srac_add(long[] a0, long[] a1)1106   static void test_srac_add(long[] a0, long[] a1) {
1107     for (int i = 0; i < a0.length; i+=1) {
1108       a0[i] = (long)((a1[i] + ADD_INIT)>>VALUE);
1109     }
1110   }
test_srav_add(long[] a0, long[] a1, long b)1111   static void test_srav_add(long[] a0, long[] a1, long b) {
1112     for (int i = 0; i < a0.length; i+=1) {
1113       a0[i] = (long)((a1[i] + b)>>VALUE);
1114     }
1115   }
test_srac_and(long[] a0, long[] a1)1116   static void test_srac_and(long[] a0, long[] a1) {
1117     for (int i = 0; i < a0.length; i+=1) {
1118       a0[i] = (long)((a1[i] & BIT_MASK)>>VALUE);
1119     }
1120   }
test_srav_and(long[] a0, long[] a1, long b)1121   static void test_srav_and(long[] a0, long[] a1, long b) {
1122     for (int i = 0; i < a0.length; i+=1) {
1123       a0[i] = (long)((a1[i] & b)>>VALUE);
1124     }
1125   }
1126 
verify(String text, int i, long elem, long val)1127   static int verify(String text, int i, long elem, long val) {
1128     if (elem != val) {
1129       System.err.println(text + "[" + i + "] = " + elem + " != " + val);
1130       return 1;
1131     }
1132     return 0;
1133   }
1134 }
1135