comparison test/compiler/7119644/TestBooleanVect.java @ 6179:8c92982cbbc4

7119644: Increase superword's vector size up to 256 bits Summary: Increase vector size up to 256-bits for YMM AVX registers on x86. Reviewed-by: never, twisti, roland
author kvn
date Fri, 15 Jun 2012 01:25:19 -0700
parents
children
comparison
equal deleted inserted replaced
6146:eba1d5bce9e8 6179:8c92982cbbc4
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 /**
26 * @test
27 * @bug 7119644
28 * @summary Increase superword's vector size up to 256 bits
29 *
30 * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestBooleanVect
31 */
32
33 public class TestBooleanVect {
34 private static final int ARRLEN = 997;
35 private static final int ITERS = 11000;
36 private static final int OFFSET = 3;
37 private static final int SCALE = 2;
38 private static final int ALIGN_OFF = 8;
39 private static final int UNALIGN_OFF = 5;
40
41 public static void main(String args[]) {
42 System.out.println("Testing Boolean 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 }
50
51 static int test() {
52 boolean[] a1 = new boolean[ARRLEN];
53 boolean[] a2 = new boolean[ARRLEN];
54 System.out.println("Warmup");
55 for (int i=0; i<ITERS; i++) {
56 test_ci(a1);
57 test_vi(a2, true);
58 test_cp(a1, a2);
59 test_2ci(a1, a2);
60 test_2vi(a1, a2, true, true);
61 test_ci_neg(a1);
62 test_vi_neg(a2, true);
63 test_cp_neg(a1, a2);
64 test_2ci_neg(a1, a2);
65 test_2vi_neg(a1, a2, true, true);
66 test_ci_oppos(a1);
67 test_vi_oppos(a2, true);
68 test_cp_oppos(a1, a2);
69 test_2ci_oppos(a1, a2);
70 test_2vi_oppos(a1, a2, true, true);
71 test_ci_off(a1);
72 test_vi_off(a2, true);
73 test_cp_off(a1, a2);
74 test_2ci_off(a1, a2);
75 test_2vi_off(a1, a2, true, true);
76 test_ci_inv(a1, OFFSET);
77 test_vi_inv(a2, true, OFFSET);
78 test_cp_inv(a1, a2, OFFSET);
79 test_2ci_inv(a1, a2, OFFSET);
80 test_2vi_inv(a1, a2, true, true, OFFSET);
81 test_ci_scl(a1);
82 test_vi_scl(a2, true);
83 test_cp_scl(a1, a2);
84 test_2ci_scl(a1, a2);
85 test_2vi_scl(a1, a2, true, true);
86 test_cp_alndst(a1, a2);
87 test_cp_alnsrc(a1, a2);
88 test_2ci_aln(a1, a2);
89 test_2vi_aln(a1, a2, true, true);
90 test_cp_unalndst(a1, a2);
91 test_cp_unalnsrc(a1, a2);
92 test_2ci_unaln(a1, a2);
93 test_2vi_unaln(a1, a2, true, true);
94 }
95 // Initialize
96 for (int i=0; i<ARRLEN; i++) {
97 a1[i] = false;
98 a2[i] = false;
99 }
100 // Test and verify results
101 System.out.println("Verification");
102 int errn = 0;
103 {
104 test_ci(a1);
105 for (int i=0; i<ARRLEN; i++) {
106 errn += verify("test_ci: a1", i, a1[i], false);
107 }
108 test_vi(a2, true);
109 for (int i=0; i<ARRLEN; i++) {
110 errn += verify("test_vi: a2", i, a2[i], true);
111 }
112 test_cp(a1, a2);
113 for (int i=0; i<ARRLEN; i++) {
114 errn += verify("test_cp: a1", i, a1[i], true);
115 }
116 test_2ci(a1, a2);
117 for (int i=0; i<ARRLEN; i++) {
118 errn += verify("test_2ci: a1", i, a1[i], false);
119 errn += verify("test_2ci: a2", i, a2[i], false);
120 }
121 test_2vi(a1, a2, true, true);
122 for (int i=0; i<ARRLEN; i++) {
123 errn += verify("test_2vi: a1", i, a1[i], true);
124 errn += verify("test_2vi: a2", i, a2[i], true);
125 }
126 // Reset for negative stride
127 for (int i=0; i<ARRLEN; i++) {
128 a1[i] = false;
129 a2[i] = false;
130 }
131 test_ci_neg(a1);
132 for (int i=0; i<ARRLEN; i++) {
133 errn += verify("test_ci_neg: a1", i, a1[i], false);
134 }
135 test_vi_neg(a2, true);
136 for (int i=0; i<ARRLEN; i++) {
137 errn += verify("test_vi_neg: a2", i, a2[i], true);
138 }
139 test_cp_neg(a1, a2);
140 for (int i=0; i<ARRLEN; i++) {
141 errn += verify("test_cp_neg: a1", i, a1[i], true);
142 }
143 test_2ci_neg(a1, a2);
144 for (int i=0; i<ARRLEN; i++) {
145 errn += verify("test_2ci_neg: a1", i, a1[i], false);
146 errn += verify("test_2ci_neg: a2", i, a2[i], false);
147 }
148 test_2vi_neg(a1, a2, true, true);
149 for (int i=0; i<ARRLEN; i++) {
150 errn += verify("test_2vi_neg: a1", i, a1[i], true);
151 errn += verify("test_2vi_neg: a2", i, a2[i], true);
152 }
153 // Reset for opposite stride
154 for (int i=0; i<ARRLEN; i++) {
155 a1[i] = false;
156 a2[i] = false;
157 }
158 test_ci_oppos(a1);
159 for (int i=0; i<ARRLEN; i++) {
160 errn += verify("test_ci_oppos: a1", i, a1[i], false);
161 }
162 test_vi_oppos(a2, true);
163 for (int i=0; i<ARRLEN; i++) {
164 errn += verify("test_vi_oppos: a2", i, a2[i], true);
165 }
166 test_cp_oppos(a1, a2);
167 for (int i=0; i<ARRLEN; i++) {
168 errn += verify("test_cp_oppos: a1", i, a1[i], true);
169 }
170 test_2ci_oppos(a1, a2);
171 for (int i=0; i<ARRLEN; i++) {
172 errn += verify("test_2ci_oppos: a1", i, a1[i], false);
173 errn += verify("test_2ci_oppos: a2", i, a2[i], false);
174 }
175 test_2vi_oppos(a1, a2, true, true);
176 for (int i=0; i<ARRLEN; i++) {
177 errn += verify("test_2vi_oppos: a1", i, a1[i], true);
178 errn += verify("test_2vi_oppos: a2", i, a2[i], true);
179 }
180 // Reset for indexing with offset
181 for (int i=0; i<ARRLEN; i++) {
182 a1[i] = false;
183 a2[i] = false;
184 }
185 test_ci_off(a1);
186 for (int i=OFFSET; i<ARRLEN; i++) {
187 errn += verify("test_ci_off: a1", i, a1[i], false);
188 }
189 test_vi_off(a2, true);
190 for (int i=OFFSET; i<ARRLEN; i++) {
191 errn += verify("test_vi_off: a2", i, a2[i], true);
192 }
193 test_cp_off(a1, a2);
194 for (int i=OFFSET; i<ARRLEN; i++) {
195 errn += verify("test_cp_off: a1", i, a1[i], true);
196 }
197 test_2ci_off(a1, a2);
198 for (int i=OFFSET; i<ARRLEN; i++) {
199 errn += verify("test_2ci_off: a1", i, a1[i], false);
200 errn += verify("test_2ci_off: a2", i, a2[i], false);
201 }
202 test_2vi_off(a1, a2, true, true);
203 for (int i=OFFSET; i<ARRLEN; i++) {
204 errn += verify("test_2vi_off: a1", i, a1[i], true);
205 errn += verify("test_2vi_off: a2", i, a2[i], true);
206 }
207 for (int i=0; i<OFFSET; i++) {
208 errn += verify("test_2vi_off: a1", i, a1[i], false);
209 errn += verify("test_2vi_off: a2", i, a2[i], false);
210 }
211 // Reset for indexing with invariant offset
212 for (int i=0; i<ARRLEN; i++) {
213 a1[i] = false;
214 a2[i] = false;
215 }
216 test_ci_inv(a1, OFFSET);
217 for (int i=OFFSET; i<ARRLEN; i++) {
218 errn += verify("test_ci_inv: a1", i, a1[i], false);
219 }
220 test_vi_inv(a2, true, OFFSET);
221 for (int i=OFFSET; i<ARRLEN; i++) {
222 errn += verify("test_vi_inv: a2", i, a2[i], true);
223 }
224 test_cp_inv(a1, a2, OFFSET);
225 for (int i=OFFSET; i<ARRLEN; i++) {
226 errn += verify("test_cp_inv: a1", i, a1[i], true);
227 }
228 test_2ci_inv(a1, a2, OFFSET);
229 for (int i=OFFSET; i<ARRLEN; i++) {
230 errn += verify("test_2ci_inv: a1", i, a1[i], false);
231 errn += verify("test_2ci_inv: a2", i, a2[i], false);
232 }
233 test_2vi_inv(a1, a2, true, true, OFFSET);
234 for (int i=OFFSET; i<ARRLEN; i++) {
235 errn += verify("test_2vi_inv: a1", i, a1[i], true);
236 errn += verify("test_2vi_inv: a2", i, a2[i], true);
237 }
238 for (int i=0; i<OFFSET; i++) {
239 errn += verify("test_2vi_inv: a1", i, a1[i], false);
240 errn += verify("test_2vi_inv: a2", i, a2[i], false);
241 }
242 // Reset for indexing with scale
243 for (int i=0; i<ARRLEN; i++) {
244 a1[i] = true;
245 a2[i] = false;
246 }
247 test_ci_scl(a1);
248 for (int i=0; i<ARRLEN; i++) {
249 boolean val = (i%SCALE != 0);
250 errn += verify("test_ci_scl: a1", i, a1[i], val);
251 }
252 test_vi_scl(a2, true);
253 for (int i=0; i<ARRLEN; i++) {
254 boolean val = (i%SCALE == 0);
255 errn += verify("test_vi_scl: a2", i, a2[i], val);
256 }
257 test_cp_scl(a1, a2);
258 for (int i=0; i<ARRLEN; i++) {
259 errn += verify("test_cp_scl: a1", i, a1[i], true);
260 }
261 test_2ci_scl(a1, a2);
262 for (int i=0; i<ARRLEN; i++) {
263 if (i%SCALE != 0) {
264 errn += verify("test_2ci_scl: a1", i, a1[i], true);
265 } else if (i*SCALE < ARRLEN) {
266 errn += verify("test_2ci_scl: a1", i*SCALE, a1[i*SCALE], false);
267 }
268 if (i%SCALE != 0) {
269 errn += verify("test_2ci_scl: a2", i, a2[i], false);
270 } else if (i*SCALE < ARRLEN) {
271 errn += verify("test_2ci_scl: a2", i*SCALE, a2[i*SCALE], false);
272 }
273 }
274 test_2vi_scl(a1, a2, false, true);
275 for (int i=0; i<ARRLEN; i++) {
276 if (i%SCALE != 0) {
277 errn += verify("test_2vi_scl: a1", i, a1[i], true);
278 } else if (i*SCALE < ARRLEN) {
279 errn += verify("test_2vi_scl: a1", i*SCALE, a1[i*SCALE], false);
280 }
281 if (i%SCALE != 0) {
282 errn += verify("test_2vi_scl: a2", i, a2[i], false);
283 } else if (i*SCALE < ARRLEN) {
284 errn += verify("test_2vi_scl: a2", i*SCALE, a2[i*SCALE], true);
285 }
286 }
287 // Reset for 2 arrays with relative aligned offset
288 for (int i=0; i<ARRLEN; i++) {
289 a1[i] = false;
290 a2[i] = false;
291 }
292 test_vi(a2, true);
293 test_cp_alndst(a1, a2);
294 for (int i=0; i<ALIGN_OFF; i++) {
295 errn += verify("test_cp_alndst: a1", i, a1[i], false);
296 }
297 for (int i=ALIGN_OFF; i<ARRLEN; i++) {
298 errn += verify("test_cp_alndst: a1", i, a1[i], true);
299 }
300 test_vi(a2, false);
301 test_cp_alnsrc(a1, a2);
302 for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
303 errn += verify("test_cp_alnsrc: a1", i, a1[i], false);
304 }
305 for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
306 errn += verify("test_cp_alnsrc: a1", i, a1[i], true);
307 }
308 for (int i=0; i<ARRLEN; i++) {
309 a1[i] = false;
310 a2[i] = false;
311 }
312 test_2ci_aln(a1, a2);
313 for (int i=0; i<ALIGN_OFF; i++) {
314 errn += verify("test_2ci_aln: a1", i, a1[i], false);
315 }
316 for (int i=ALIGN_OFF; i<ARRLEN; i++) {
317 errn += verify("test_2ci_aln: a1", i, a1[i], false);
318 }
319 for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
320 errn += verify("test_2ci_aln: a2", i, a2[i], false);
321 }
322 for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
323 errn += verify("test_2ci_aln: a2", i, a2[i], false);
324 }
325 for (int i=0; i<ARRLEN; i++) {
326 a1[i] = false;
327 a2[i] = false;
328 }
329 test_2vi_aln(a1, a2, true, true);
330 for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
331 errn += verify("test_2vi_aln: a1", i, a1[i], true);
332 }
333 for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
334 errn += verify("test_2vi_aln: a1", i, a1[i], false);
335 }
336 for (int i=0; i<ALIGN_OFF; i++) {
337 errn += verify("test_2vi_aln: a2", i, a2[i], false);
338 }
339 for (int i=ALIGN_OFF; i<ARRLEN; i++) {
340 errn += verify("test_2vi_aln: a2", i, a2[i], true);
341 }
342
343 // Reset for 2 arrays with relative unaligned offset
344 for (int i=0; i<ARRLEN; i++) {
345 a1[i] = false;
346 a2[i] = false;
347 }
348 test_vi(a2, true);
349 test_cp_unalndst(a1, a2);
350 for (int i=0; i<UNALIGN_OFF; i++) {
351 errn += verify("test_cp_unalndst: a1", i, a1[i], false);
352 }
353 for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
354 errn += verify("test_cp_unalndst: a1", i, a1[i], true);
355 }
356 test_vi(a2, false);
357 test_cp_unalnsrc(a1, a2);
358 for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
359 errn += verify("test_cp_unalnsrc: a1", i, a1[i], false);
360 }
361 for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
362 errn += verify("test_cp_unalnsrc: a1", i, a1[i], true);
363 }
364 for (int i=0; i<ARRLEN; i++) {
365 a1[i] = false;
366 a2[i] = false;
367 }
368 test_2ci_unaln(a1, a2);
369 for (int i=0; i<UNALIGN_OFF; i++) {
370 errn += verify("test_2ci_unaln: a1", i, a1[i], false);
371 }
372 for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
373 errn += verify("test_2ci_unaln: a1", i, a1[i], false);
374 }
375 for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
376 errn += verify("test_2ci_unaln: a2", i, a2[i], false);
377 }
378 for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
379 errn += verify("test_2ci_unaln: a2", i, a2[i], false);
380 }
381 for (int i=0; i<ARRLEN; i++) {
382 a1[i] = false;
383 a2[i] = false;
384 }
385 test_2vi_unaln(a1, a2, true, true);
386 for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
387 errn += verify("test_2vi_unaln: a1", i, a1[i], true);
388 }
389 for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
390 errn += verify("test_2vi_unaln: a1", i, a1[i], false);
391 }
392 for (int i=0; i<UNALIGN_OFF; i++) {
393 errn += verify("test_2vi_unaln: a2", i, a2[i], false);
394 }
395 for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
396 errn += verify("test_2vi_unaln: a2", i, a2[i], true);
397 }
398
399 // Reset for aligned overlap initialization
400 for (int i=0; i<ALIGN_OFF; i++) {
401 a1[i] = (i > 0);
402 }
403 for (int i=ALIGN_OFF; i<ARRLEN; i++) {
404 a1[i] = false;
405 }
406 test_cp_alndst(a1, a1);
407 for (int i=0; i<ARRLEN; i++) {
408 boolean v = (i%ALIGN_OFF > 0);
409 errn += verify("test_cp_alndst_overlap: a1", i, a1[i], v);
410 }
411 for (int i=0; i<ALIGN_OFF; i++) {
412 a1[i+ALIGN_OFF] = false;
413 }
414 test_cp_alnsrc(a1, a1);
415 for (int i=0; i<ALIGN_OFF; i++) {
416 errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], false);
417 }
418 for (int i=ALIGN_OFF; i<ARRLEN; i++) {
419 boolean v = (i%ALIGN_OFF > 0);
420 errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], v);
421 }
422 for (int i=0; i<ARRLEN; i++) {
423 a1[i] = false;
424 }
425 test_2ci_aln(a1, a1);
426 for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
427 errn += verify("test_2ci_aln_overlap: a1", i, a1[i], false);
428 }
429 for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
430 errn += verify("test_2ci_aln_overlap: a1", i, a1[i], false);
431 }
432 for (int i=0; i<ARRLEN; i++) {
433 a1[i] = false;
434 }
435 test_2vi_aln(a1, a1, true, true);
436 for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
437 errn += verify("test_2vi_aln_overlap: a1", i, a1[i], true);
438 }
439 for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
440 errn += verify("test_2vi_aln_overlap: a1", i, a1[i], true);
441 }
442
443 // Reset for unaligned overlap initialization
444 for (int i=0; i<UNALIGN_OFF; i++) {
445 a1[i] = (i > 0);
446 }
447 for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
448 a1[i] = false;
449 }
450 test_cp_unalndst(a1, a1);
451 for (int i=0; i<ARRLEN; i++) {
452 boolean v = (i%UNALIGN_OFF > 0);
453 errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], v);
454 }
455 for (int i=0; i<UNALIGN_OFF; i++) {
456 a1[i+UNALIGN_OFF] = false;
457 }
458 test_cp_unalnsrc(a1, a1);
459 for (int i=0; i<UNALIGN_OFF; i++) {
460 errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], false);
461 }
462 for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
463 boolean v = (i%UNALIGN_OFF > 0);
464 errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], v);
465 }
466 for (int i=0; i<ARRLEN; i++) {
467 a1[i] = false;
468 }
469 test_2ci_unaln(a1, a1);
470 for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
471 errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], false);
472 }
473 for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
474 errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], false);
475 }
476 for (int i=0; i<ARRLEN; i++) {
477 a1[i] = false;
478 }
479 test_2vi_unaln(a1, a1, true, true);
480 for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
481 errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], true);
482 }
483 for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
484 errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], true);
485 }
486
487 }
488
489 if (errn > 0)
490 return errn;
491
492 System.out.println("Time");
493 long start, end;
494 start = System.currentTimeMillis();
495 for (int i=0; i<ITERS; i++) {
496 test_ci(a1);
497 }
498 end = System.currentTimeMillis();
499 System.out.println("test_ci: " + (end - start));
500 start = System.currentTimeMillis();
501 for (int i=0; i<ITERS; i++) {
502 test_vi(a2, true);
503 }
504 end = System.currentTimeMillis();
505 System.out.println("test_vi: " + (end - start));
506 start = System.currentTimeMillis();
507 for (int i=0; i<ITERS; i++) {
508 test_cp(a1, a2);
509 }
510 end = System.currentTimeMillis();
511 System.out.println("test_cp: " + (end - start));
512 start = System.currentTimeMillis();
513 for (int i=0; i<ITERS; i++) {
514 test_2ci(a1, a2);
515 }
516 end = System.currentTimeMillis();
517 System.out.println("test_2ci: " + (end - start));
518 start = System.currentTimeMillis();
519 for (int i=0; i<ITERS; i++) {
520 test_2vi(a1, a2, true, true);
521 }
522 end = System.currentTimeMillis();
523 System.out.println("test_2vi: " + (end - start));
524
525 start = System.currentTimeMillis();
526 for (int i=0; i<ITERS; i++) {
527 test_ci_neg(a1);
528 }
529 end = System.currentTimeMillis();
530 System.out.println("test_ci_neg: " + (end - start));
531 start = System.currentTimeMillis();
532 for (int i=0; i<ITERS; i++) {
533 test_vi_neg(a2, true);
534 }
535 end = System.currentTimeMillis();
536 System.out.println("test_vi_neg: " + (end - start));
537 start = System.currentTimeMillis();
538 for (int i=0; i<ITERS; i++) {
539 test_cp_neg(a1, a2);
540 }
541 end = System.currentTimeMillis();
542 System.out.println("test_cp_neg: " + (end - start));
543 start = System.currentTimeMillis();
544 for (int i=0; i<ITERS; i++) {
545 test_2ci_neg(a1, a2);
546 }
547 end = System.currentTimeMillis();
548 System.out.println("test_2ci_neg: " + (end - start));
549 start = System.currentTimeMillis();
550 for (int i=0; i<ITERS; i++) {
551 test_2vi_neg(a1, a2, true, true);
552 }
553 end = System.currentTimeMillis();
554 System.out.println("test_2vi_neg: " + (end - start));
555
556 start = System.currentTimeMillis();
557 for (int i=0; i<ITERS; i++) {
558 test_ci_oppos(a1);
559 }
560 end = System.currentTimeMillis();
561 System.out.println("test_ci_oppos: " + (end - start));
562 start = System.currentTimeMillis();
563 for (int i=0; i<ITERS; i++) {
564 test_vi_oppos(a2, true);
565 }
566 end = System.currentTimeMillis();
567 System.out.println("test_vi_oppos: " + (end - start));
568 start = System.currentTimeMillis();
569 for (int i=0; i<ITERS; i++) {
570 test_cp_oppos(a1, a2);
571 }
572 end = System.currentTimeMillis();
573 System.out.println("test_cp_oppos: " + (end - start));
574 start = System.currentTimeMillis();
575 for (int i=0; i<ITERS; i++) {
576 test_2ci_oppos(a1, a2);
577 }
578 end = System.currentTimeMillis();
579 System.out.println("test_2ci_oppos: " + (end - start));
580 start = System.currentTimeMillis();
581 for (int i=0; i<ITERS; i++) {
582 test_2vi_oppos(a1, a2, true, true);
583 }
584 end = System.currentTimeMillis();
585 System.out.println("test_2vi_oppos: " + (end - start));
586
587 start = System.currentTimeMillis();
588 for (int i=0; i<ITERS; i++) {
589 test_ci_off(a1);
590 }
591 end = System.currentTimeMillis();
592 System.out.println("test_ci_off: " + (end - start));
593 start = System.currentTimeMillis();
594 for (int i=0; i<ITERS; i++) {
595 test_vi_off(a2, true);
596 }
597 end = System.currentTimeMillis();
598 System.out.println("test_vi_off: " + (end - start));
599 start = System.currentTimeMillis();
600 for (int i=0; i<ITERS; i++) {
601 test_cp_off(a1, a2);
602 }
603 end = System.currentTimeMillis();
604 System.out.println("test_cp_off: " + (end - start));
605 start = System.currentTimeMillis();
606 for (int i=0; i<ITERS; i++) {
607 test_2ci_off(a1, a2);
608 }
609 end = System.currentTimeMillis();
610 System.out.println("test_2ci_off: " + (end - start));
611 start = System.currentTimeMillis();
612 for (int i=0; i<ITERS; i++) {
613 test_2vi_off(a1, a2, true, true);
614 }
615 end = System.currentTimeMillis();
616 System.out.println("test_2vi_off: " + (end - start));
617
618 start = System.currentTimeMillis();
619 for (int i=0; i<ITERS; i++) {
620 test_ci_inv(a1, OFFSET);
621 }
622 end = System.currentTimeMillis();
623 System.out.println("test_ci_inv: " + (end - start));
624 start = System.currentTimeMillis();
625 for (int i=0; i<ITERS; i++) {
626 test_vi_inv(a2, true, OFFSET);
627 }
628 end = System.currentTimeMillis();
629 System.out.println("test_vi_inv: " + (end - start));
630 start = System.currentTimeMillis();
631 for (int i=0; i<ITERS; i++) {
632 test_cp_inv(a1, a2, OFFSET);
633 }
634 end = System.currentTimeMillis();
635 System.out.println("test_cp_inv: " + (end - start));
636 start = System.currentTimeMillis();
637 for (int i=0; i<ITERS; i++) {
638 test_2ci_inv(a1, a2, OFFSET);
639 }
640 end = System.currentTimeMillis();
641 System.out.println("test_2ci_inv: " + (end - start));
642 start = System.currentTimeMillis();
643 for (int i=0; i<ITERS; i++) {
644 test_2vi_inv(a1, a2, true, true, OFFSET);
645 }
646 end = System.currentTimeMillis();
647 System.out.println("test_2vi_inv: " + (end - start));
648
649 start = System.currentTimeMillis();
650 for (int i=0; i<ITERS; i++) {
651 test_ci_scl(a1);
652 }
653 end = System.currentTimeMillis();
654 System.out.println("test_ci_scl: " + (end - start));
655 start = System.currentTimeMillis();
656 for (int i=0; i<ITERS; i++) {
657 test_vi_scl(a2, true);
658 }
659 end = System.currentTimeMillis();
660 System.out.println("test_vi_scl: " + (end - start));
661 start = System.currentTimeMillis();
662 for (int i=0; i<ITERS; i++) {
663 test_cp_scl(a1, a2);
664 }
665 end = System.currentTimeMillis();
666 System.out.println("test_cp_scl: " + (end - start));
667 start = System.currentTimeMillis();
668 for (int i=0; i<ITERS; i++) {
669 test_2ci_scl(a1, a2);
670 }
671 end = System.currentTimeMillis();
672 System.out.println("test_2ci_scl: " + (end - start));
673 start = System.currentTimeMillis();
674 for (int i=0; i<ITERS; i++) {
675 test_2vi_scl(a1, a2, true, true);
676 }
677 end = System.currentTimeMillis();
678 System.out.println("test_2vi_scl: " + (end - start));
679
680 start = System.currentTimeMillis();
681 for (int i=0; i<ITERS; i++) {
682 test_cp_alndst(a1, a2);
683 }
684 end = System.currentTimeMillis();
685 System.out.println("test_cp_alndst: " + (end - start));
686 start = System.currentTimeMillis();
687 for (int i=0; i<ITERS; i++) {
688 test_cp_alnsrc(a1, a2);
689 }
690 end = System.currentTimeMillis();
691 System.out.println("test_cp_alnsrc: " + (end - start));
692 start = System.currentTimeMillis();
693 for (int i=0; i<ITERS; i++) {
694 test_2ci_aln(a1, a2);
695 }
696 end = System.currentTimeMillis();
697 System.out.println("test_2ci_aln: " + (end - start));
698 start = System.currentTimeMillis();
699 for (int i=0; i<ITERS; i++) {
700 test_2vi_aln(a1, a2, true, true);
701 }
702 end = System.currentTimeMillis();
703 System.out.println("test_2vi_aln: " + (end - start));
704
705 start = System.currentTimeMillis();
706 for (int i=0; i<ITERS; i++) {
707 test_cp_unalndst(a1, a2);
708 }
709 end = System.currentTimeMillis();
710 System.out.println("test_cp_unalndst: " + (end - start));
711 start = System.currentTimeMillis();
712 for (int i=0; i<ITERS; i++) {
713 test_cp_unalnsrc(a1, a2);
714 }
715 end = System.currentTimeMillis();
716 System.out.println("test_cp_unalnsrc: " + (end - start));
717 start = System.currentTimeMillis();
718 for (int i=0; i<ITERS; i++) {
719 test_2ci_unaln(a1, a2);
720 }
721 end = System.currentTimeMillis();
722 System.out.println("test_2ci_unaln: " + (end - start));
723 start = System.currentTimeMillis();
724 for (int i=0; i<ITERS; i++) {
725 test_2vi_unaln(a1, a2, true, true);
726 }
727 end = System.currentTimeMillis();
728 System.out.println("test_2vi_unaln: " + (end - start));
729
730 return errn;
731 }
732
733 static void test_ci(boolean[] a) {
734 for (int i = 0; i < a.length; i+=1) {
735 a[i] = false;
736 }
737 }
738 static void test_vi(boolean[] a, boolean b) {
739 for (int i = 0; i < a.length; i+=1) {
740 a[i] = b;
741 }
742 }
743 static void test_cp(boolean[] a, boolean[] b) {
744 for (int i = 0; i < a.length; i+=1) {
745 a[i] = b[i];
746 }
747 }
748 static void test_2ci(boolean[] a, boolean[] b) {
749 for (int i = 0; i < a.length; i+=1) {
750 a[i] = false;
751 b[i] = false;
752 }
753 }
754 static void test_2vi(boolean[] a, boolean[] b, boolean c, boolean d) {
755 for (int i = 0; i < a.length; i+=1) {
756 a[i] = c;
757 b[i] = d;
758 }
759 }
760 static void test_ci_neg(boolean[] a) {
761 for (int i = a.length-1; i >= 0; i-=1) {
762 a[i] = false;
763 }
764 }
765 static void test_vi_neg(boolean[] a, boolean b) {
766 for (int i = a.length-1; i >= 0; i-=1) {
767 a[i] = b;
768 }
769 }
770 static void test_cp_neg(boolean[] a, boolean[] b) {
771 for (int i = a.length-1; i >= 0; i-=1) {
772 a[i] = b[i];
773 }
774 }
775 static void test_2ci_neg(boolean[] a, boolean[] b) {
776 for (int i = a.length-1; i >= 0; i-=1) {
777 a[i] = false;
778 b[i] = false;
779 }
780 }
781 static void test_2vi_neg(boolean[] a, boolean[] b, boolean c, boolean d) {
782 for (int i = a.length-1; i >= 0; i-=1) {
783 a[i] = c;
784 b[i] = d;
785 }
786 }
787 static void test_ci_oppos(boolean[] a) {
788 int limit = a.length-1;
789 for (int i = 0; i < a.length; i+=1) {
790 a[limit-i] = false;
791 }
792 }
793 static void test_vi_oppos(boolean[] a, boolean b) {
794 int limit = a.length-1;
795 for (int i = limit; i >= 0; i-=1) {
796 a[limit-i] = b;
797 }
798 }
799 static void test_cp_oppos(boolean[] a, boolean[] b) {
800 int limit = a.length-1;
801 for (int i = 0; i < a.length; i+=1) {
802 a[i] = b[limit-i];
803 }
804 }
805 static void test_2ci_oppos(boolean[] a, boolean[] b) {
806 int limit = a.length-1;
807 for (int i = 0; i < a.length; i+=1) {
808 a[limit-i] = false;
809 b[i] = false;
810 }
811 }
812 static void test_2vi_oppos(boolean[] a, boolean[] b, boolean c, boolean d) {
813 int limit = a.length-1;
814 for (int i = limit; i >= 0; i-=1) {
815 a[i] = c;
816 b[limit-i] = d;
817 }
818 }
819 static void test_ci_off(boolean[] a) {
820 for (int i = 0; i < a.length-OFFSET; i+=1) {
821 a[i+OFFSET] = false;
822 }
823 }
824 static void test_vi_off(boolean[] a, boolean b) {
825 for (int i = 0; i < a.length-OFFSET; i+=1) {
826 a[i+OFFSET] = b;
827 }
828 }
829 static void test_cp_off(boolean[] a, boolean[] b) {
830 for (int i = 0; i < a.length-OFFSET; i+=1) {
831 a[i+OFFSET] = b[i+OFFSET];
832 }
833 }
834 static void test_2ci_off(boolean[] a, boolean[] b) {
835 for (int i = 0; i < a.length-OFFSET; i+=1) {
836 a[i+OFFSET] = false;
837 b[i+OFFSET] = false;
838 }
839 }
840 static void test_2vi_off(boolean[] a, boolean[] b, boolean c, boolean d) {
841 for (int i = 0; i < a.length-OFFSET; i+=1) {
842 a[i+OFFSET] = c;
843 b[i+OFFSET] = d;
844 }
845 }
846 static void test_ci_inv(boolean[] a, int k) {
847 for (int i = 0; i < a.length-k; i+=1) {
848 a[i+k] = false;
849 }
850 }
851 static void test_vi_inv(boolean[] a, boolean b, int k) {
852 for (int i = 0; i < a.length-k; i+=1) {
853 a[i+k] = b;
854 }
855 }
856 static void test_cp_inv(boolean[] a, boolean[] b, int k) {
857 for (int i = 0; i < a.length-k; i+=1) {
858 a[i+k] = b[i+k];
859 }
860 }
861 static void test_2ci_inv(boolean[] a, boolean[] b, int k) {
862 for (int i = 0; i < a.length-k; i+=1) {
863 a[i+k] = false;
864 b[i+k] = false;
865 }
866 }
867 static void test_2vi_inv(boolean[] a, boolean[] b, boolean c, boolean d, int k) {
868 for (int i = 0; i < a.length-k; i+=1) {
869 a[i+k] = c;
870 b[i+k] = d;
871 }
872 }
873 static void test_ci_scl(boolean[] a) {
874 for (int i = 0; i*SCALE < a.length; i+=1) {
875 a[i*SCALE] = false;
876 }
877 }
878 static void test_vi_scl(boolean[] a, boolean b) {
879 for (int i = 0; i*SCALE < a.length; i+=1) {
880 a[i*SCALE] = b;
881 }
882 }
883 static void test_cp_scl(boolean[] a, boolean[] b) {
884 for (int i = 0; i*SCALE < a.length; i+=1) {
885 a[i*SCALE] = b[i*SCALE];
886 }
887 }
888 static void test_2ci_scl(boolean[] a, boolean[] b) {
889 for (int i = 0; i*SCALE < a.length; i+=1) {
890 a[i*SCALE] = false;
891 b[i*SCALE] = false;
892 }
893 }
894 static void test_2vi_scl(boolean[] a, boolean[] b, boolean c, boolean d) {
895 for (int i = 0; i*SCALE < a.length; i+=1) {
896 a[i*SCALE] = c;
897 b[i*SCALE] = d;
898 }
899 }
900 static void test_cp_alndst(boolean[] a, boolean[] b) {
901 for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
902 a[i+ALIGN_OFF] = b[i];
903 }
904 }
905 static void test_cp_alnsrc(boolean[] a, boolean[] b) {
906 for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
907 a[i] = b[i+ALIGN_OFF];
908 }
909 }
910 static void test_2ci_aln(boolean[] a, boolean[] b) {
911 for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
912 a[i+ALIGN_OFF] = false;
913 b[i] = false;
914 }
915 }
916 static void test_2vi_aln(boolean[] a, boolean[] b, boolean c, boolean d) {
917 for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {
918 a[i] = c;
919 b[i+ALIGN_OFF] = d;
920 }
921 }
922 static void test_cp_unalndst(boolean[] a, boolean[] b) {
923 for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
924 a[i+UNALIGN_OFF] = b[i];
925 }
926 }
927 static void test_cp_unalnsrc(boolean[] a, boolean[] b) {
928 for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
929 a[i] = b[i+UNALIGN_OFF];
930 }
931 }
932 static void test_2ci_unaln(boolean[] a, boolean[] b) {
933 for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
934 a[i+UNALIGN_OFF] = false;
935 b[i] = false;
936 }
937 }
938 static void test_2vi_unaln(boolean[] a, boolean[] b, boolean c, boolean d) {
939 for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {
940 a[i] = c;
941 b[i+UNALIGN_OFF] = d;
942 }
943 }
944
945 static int verify(String text, int i, boolean elem, boolean val) {
946 if (elem != val) {
947 System.err.println(text + "[" + i + "] = " + elem + " != " + val);
948 return 1;
949 }
950 return 0;
951 }
952 }