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