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 7200264
  28  * @summary 7192963 changes disabled shift vectors
  29  *
  30  * @run shell Test7200264.sh
  31  */
  32 
  33 /*
  34  * Copy of test/compiler/6340864/TestIntVect.java without performance tests.
  35  */
  36 public class TestIntVect {
  37   private static final int ARRLEN = 997;
  38   private static final int ITERS  = 11000;
  39   private static final int ADD_INIT = Integer.MAX_VALUE-500;
  40   private static final int BIT_MASK = 0xEC80F731;
  41   private static final int VALUE = 15;
  42   private static final int SHIFT = 32;
  43 
  44   public static void main(String args[]) {
  45     System.out.println("Testing Integer vectors");
  46     int errn = test();
  47     if (errn > 0) {
  48       System.err.println("FAILED: " + errn + " errors");
  49       System.exit(97);
  50     }
  51     System.out.println("PASSED");
  52   }
  53 
  54   static int test() {
  55     int[] a0 = new int[ARRLEN];
  56     int[] a1 = new int[ARRLEN];
  57     int[] a2 = new int[ARRLEN];
  58     int[] a3 = new int[ARRLEN];
  59     int[] a4 = new int[ARRLEN];
  60     long[] p2 = new long[ARRLEN/2];
  61     // Initialize
  62     int gold_sum = 0;
  63     for (int i=0; i<ARRLEN; i++) {
  64       int val = (int)(ADD_INIT+i);
  65       gold_sum += val;
  66       a1[i] = val;
  67       a2[i] = (int)VALUE;
  68       a3[i] = (int)-VALUE;
  69       a4[i] = (int)BIT_MASK;
  70     }
  71     System.out.println("Warmup");
  72     for (int i=0; i<ITERS; i++) {
  73       test_sum(a1);
  74       test_addc(a0, a1);
  75       test_addv(a0, a1, (int)VALUE);
  76       test_adda(a0, a1, a2);
  77       test_subc(a0, a1);
  78       test_subv(a0, a1, (int)VALUE);
  79       test_suba(a0, a1, a2);
  80       test_mulc(a0, a1);
  81       test_mulv(a0, a1, (int)VALUE);
  82       test_mula(a0, a1, a2);
  83       test_divc(a0, a1);
  84       test_divv(a0, a1, (int)VALUE);
  85       test_diva(a0, a1, a2);
  86       test_mulc_n(a0, a1);
  87       test_mulv(a0, a1, (int)-VALUE);
  88       test_mula(a0, a1, a3);
  89       test_divc_n(a0, a1);
  90       test_divv(a0, a1, (int)-VALUE);
  91       test_diva(a0, a1, a3);
  92       test_andc(a0, a1);
  93       test_andv(a0, a1, (int)BIT_MASK);
  94       test_anda(a0, a1, a4);
  95       test_orc(a0, a1);
  96       test_orv(a0, a1, (int)BIT_MASK);
  97       test_ora(a0, a1, a4);
  98       test_xorc(a0, a1);
  99       test_xorv(a0, a1, (int)BIT_MASK);
 100       test_xora(a0, a1, a4);
 101       test_sllc(a0, a1);
 102       test_sllv(a0, a1, VALUE);
 103       test_srlc(a0, a1);
 104       test_srlv(a0, a1, VALUE);
 105       test_srac(a0, a1);
 106       test_srav(a0, a1, VALUE);
 107       test_sllc_n(a0, a1);
 108       test_sllv(a0, a1, -VALUE);
 109       test_srlc_n(a0, a1);
 110       test_srlv(a0, a1, -VALUE);
 111       test_srac_n(a0, a1);
 112       test_srav(a0, a1, -VALUE);
 113       test_sllc_o(a0, a1);
 114       test_sllv(a0, a1, SHIFT);
 115       test_srlc_o(a0, a1);
 116       test_srlv(a0, a1, SHIFT);
 117       test_srac_o(a0, a1);
 118       test_srav(a0, a1, SHIFT);
 119       test_sllc_on(a0, a1);
 120       test_sllv(a0, a1, -SHIFT);
 121       test_srlc_on(a0, a1);
 122       test_srlv(a0, a1, -SHIFT);
 123       test_srac_on(a0, a1);
 124       test_srav(a0, a1, -SHIFT);
 125       test_pack2(p2, a1);
 126       test_unpack2(a0, p2);
 127       test_pack2_swap(p2, a1);
 128       test_unpack2_swap(a0, p2);
 129     }
 130     // Test and verify results
 131     System.out.println("Verification");
 132     int errn = 0;
 133     {
 134       int sum = test_sum(a1);
 135       if (sum != gold_sum) {
 136         System.err.println("test_sum:  " + sum + " != " + gold_sum);
 137         errn++;
 138       }
 139 
 140       test_addc(a0, a1);
 141       for (int i=0; i<ARRLEN; i++) {
 142         errn += verify("test_addc: ", i, a0[i], (int)((int)(ADD_INIT+i)+VALUE));
 143       }
 144       test_addv(a0, a1, (int)VALUE);
 145       for (int i=0; i<ARRLEN; i++) {
 146         errn += verify("test_addv: ", i, a0[i], (int)((int)(ADD_INIT+i)+VALUE));
 147       }
 148       test_adda(a0, a1, a2);
 149       for (int i=0; i<ARRLEN; i++) {
 150         errn += verify("test_adda: ", i, a0[i], (int)((int)(ADD_INIT+i)+VALUE));
 151       }
 152 
 153       test_subc(a0, a1);
 154       for (int i=0; i<ARRLEN; i++) {
 155         errn += verify("test_subc: ", i, a0[i], (int)((int)(ADD_INIT+i)-VALUE));
 156       }
 157       test_subv(a0, a1, (int)VALUE);
 158       for (int i=0; i<ARRLEN; i++) {
 159         errn += verify("test_subv: ", i, a0[i], (int)((int)(ADD_INIT+i)-VALUE));
 160       }
 161       test_suba(a0, a1, a2);
 162       for (int i=0; i<ARRLEN; i++) {
 163         errn += verify("test_suba: ", i, a0[i], (int)((int)(ADD_INIT+i)-VALUE));
 164       }
 165 
 166       test_mulc(a0, a1);
 167       for (int i=0; i<ARRLEN; i++) {
 168         errn += verify("test_mulc: ", i, a0[i], (int)((int)(ADD_INIT+i)*VALUE));
 169       }
 170       test_mulv(a0, a1, (int)VALUE);
 171       for (int i=0; i<ARRLEN; i++) {
 172         errn += verify("test_mulv: ", i, a0[i], (int)((int)(ADD_INIT+i)*VALUE));
 173       }
 174       test_mula(a0, a1, a2);
 175       for (int i=0; i<ARRLEN; i++) {
 176         errn += verify("test_mula: ", i, a0[i], (int)((int)(ADD_INIT+i)*VALUE));
 177       }
 178 
 179       test_divc(a0, a1);
 180       for (int i=0; i<ARRLEN; i++) {
 181         errn += verify("test_divc: ", i, a0[i], (int)((int)(ADD_INIT+i)/VALUE));
 182       }
 183       test_divv(a0, a1, (int)VALUE);
 184       for (int i=0; i<ARRLEN; i++) {
 185         errn += verify("test_divv: ", i, a0[i], (int)((int)(ADD_INIT+i)/VALUE));
 186       }
 187       test_diva(a0, a1, a2);
 188       for (int i=0; i<ARRLEN; i++) {
 189         errn += verify("test_diva: ", i, a0[i], (int)((int)(ADD_INIT+i)/VALUE));
 190       }
 191 
 192       test_mulc_n(a0, a1);
 193       for (int i=0; i<ARRLEN; i++) {
 194         errn += verify("test_mulc_n: ", i, a0[i], (int)((int)(ADD_INIT+i)*(-VALUE)));
 195       }
 196       test_mulv(a0, a1, (int)-VALUE);
 197       for (int i=0; i<ARRLEN; i++) {
 198         errn += verify("test_mulv_n: ", i, a0[i], (int)((int)(ADD_INIT+i)*(-VALUE)));
 199       }
 200       test_mula(a0, a1, a3);
 201       for (int i=0; i<ARRLEN; i++) {
 202         errn += verify("test_mula_n: ", i, a0[i], (int)((int)(ADD_INIT+i)*(-VALUE)));
 203       }
 204 
 205       test_divc_n(a0, a1);
 206       for (int i=0; i<ARRLEN; i++) {
 207         errn += verify("test_divc_n: ", i, a0[i], (int)((int)(ADD_INIT+i)/(-VALUE)));
 208       }
 209       test_divv(a0, a1, (int)-VALUE);
 210       for (int i=0; i<ARRLEN; i++) {
 211         errn += verify("test_divv_n: ", i, a0[i], (int)((int)(ADD_INIT+i)/(-VALUE)));
 212       }
 213       test_diva(a0, a1, a3);
 214       for (int i=0; i<ARRLEN; i++) {
 215         errn += verify("test_diva_n: ", i, a0[i], (int)((int)(ADD_INIT+i)/(-VALUE)));
 216       }
 217 
 218       test_andc(a0, a1);
 219       for (int i=0; i<ARRLEN; i++) {
 220         errn += verify("test_andc: ", i, a0[i], (int)((int)(ADD_INIT+i)&BIT_MASK));
 221       }
 222       test_andv(a0, a1, (int)BIT_MASK);
 223       for (int i=0; i<ARRLEN; i++) {
 224         errn += verify("test_andv: ", i, a0[i], (int)((int)(ADD_INIT+i)&BIT_MASK));
 225       }
 226       test_anda(a0, a1, a4);
 227       for (int i=0; i<ARRLEN; i++) {
 228         errn += verify("test_anda: ", i, a0[i], (int)((int)(ADD_INIT+i)&BIT_MASK));
 229       }
 230 
 231       test_orc(a0, a1);
 232       for (int i=0; i<ARRLEN; i++) {
 233         errn += verify("test_orc: ", i, a0[i], (int)((int)(ADD_INIT+i)|BIT_MASK));
 234       }
 235       test_orv(a0, a1, (int)BIT_MASK);
 236       for (int i=0; i<ARRLEN; i++) {
 237         errn += verify("test_orv: ", i, a0[i], (int)((int)(ADD_INIT+i)|BIT_MASK));
 238       }
 239       test_ora(a0, a1, a4);
 240       for (int i=0; i<ARRLEN; i++) {
 241         errn += verify("test_ora: ", i, a0[i], (int)((int)(ADD_INIT+i)|BIT_MASK));
 242       }
 243 
 244       test_xorc(a0, a1);
 245       for (int i=0; i<ARRLEN; i++) {
 246         errn += verify("test_xorc: ", i, a0[i], (int)((int)(ADD_INIT+i)^BIT_MASK));
 247       }
 248       test_xorv(a0, a1, (int)BIT_MASK);
 249       for (int i=0; i<ARRLEN; i++) {
 250         errn += verify("test_xorv: ", i, a0[i], (int)((int)(ADD_INIT+i)^BIT_MASK));
 251       }
 252       test_xora(a0, a1, a4);
 253       for (int i=0; i<ARRLEN; i++) {
 254         errn += verify("test_xora: ", i, a0[i], (int)((int)(ADD_INIT+i)^BIT_MASK));
 255       }
 256 
 257       test_sllc(a0, a1);
 258       for (int i=0; i<ARRLEN; i++) {
 259         errn += verify("test_sllc: ", i, a0[i], (int)((int)(ADD_INIT+i)<<VALUE));
 260       }
 261       test_sllv(a0, a1, VALUE);
 262       for (int i=0; i<ARRLEN; i++) {
 263         errn += verify("test_sllv: ", i, a0[i], (int)((int)(ADD_INIT+i)<<VALUE));
 264       }
 265 
 266       test_srlc(a0, a1);
 267       for (int i=0; i<ARRLEN; i++) {
 268         errn += verify("test_srlc: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>VALUE));
 269       }
 270       test_srlv(a0, a1, VALUE);
 271       for (int i=0; i<ARRLEN; i++) {
 272         errn += verify("test_srlv: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>VALUE));
 273       }
 274 
 275       test_srac(a0, a1);
 276       for (int i=0; i<ARRLEN; i++) {
 277         errn += verify("test_srac: ", i, a0[i], (int)((int)(ADD_INIT+i)>>VALUE));
 278       }
 279       test_srav(a0, a1, VALUE);
 280       for (int i=0; i<ARRLEN; i++) {
 281         errn += verify("test_srav: ", i, a0[i], (int)((int)(ADD_INIT+i)>>VALUE));
 282       }
 283 
 284       test_sllc_n(a0, a1);
 285       for (int i=0; i<ARRLEN; i++) {
 286         errn += verify("test_sllc_n: ", i, a0[i], (int)((int)(ADD_INIT+i)<<(-VALUE)));
 287       }
 288       test_sllv(a0, a1, -VALUE);
 289       for (int i=0; i<ARRLEN; i++) {
 290         errn += verify("test_sllv_n: ", i, a0[i], (int)((int)(ADD_INIT+i)<<(-VALUE)));
 291       }
 292 
 293       test_srlc_n(a0, a1);
 294       for (int i=0; i<ARRLEN; i++) {
 295         errn += verify("test_srlc_n: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>(-VALUE)));
 296       }
 297       test_srlv(a0, a1, -VALUE);
 298       for (int i=0; i<ARRLEN; i++) {
 299         errn += verify("test_srlv_n: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>(-VALUE)));
 300       }
 301 
 302       test_srac_n(a0, a1);
 303       for (int i=0; i<ARRLEN; i++) {
 304         errn += verify("test_srac_n: ", i, a0[i], (int)((int)(ADD_INIT+i)>>(-VALUE)));
 305       }
 306       test_srav(a0, a1, -VALUE);
 307       for (int i=0; i<ARRLEN; i++) {
 308         errn += verify("test_srav_n: ", i, a0[i], (int)((int)(ADD_INIT+i)>>(-VALUE)));
 309       }
 310 
 311       test_sllc_o(a0, a1);
 312       for (int i=0; i<ARRLEN; i++) {
 313         errn += verify("test_sllc_o: ", i, a0[i], (int)((int)(ADD_INIT+i)<<SHIFT));
 314       }
 315       test_sllv(a0, a1, SHIFT);
 316       for (int i=0; i<ARRLEN; i++) {
 317         errn += verify("test_sllv_o: ", i, a0[i], (int)((int)(ADD_INIT+i)<<SHIFT));
 318       }
 319 
 320       test_srlc_o(a0, a1);
 321       for (int i=0; i<ARRLEN; i++) {
 322         errn += verify("test_srlc_o: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>SHIFT));
 323       }
 324       test_srlv(a0, a1, SHIFT);
 325       for (int i=0; i<ARRLEN; i++) {
 326         errn += verify("test_srlv_o: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>SHIFT));
 327       }
 328 
 329       test_srac_o(a0, a1);
 330       for (int i=0; i<ARRLEN; i++) {
 331         errn += verify("test_srac_o: ", i, a0[i], (int)((int)(ADD_INIT+i)>>SHIFT));
 332       }
 333       test_srav(a0, a1, SHIFT);
 334       for (int i=0; i<ARRLEN; i++) {
 335         errn += verify("test_srav_o: ", i, a0[i], (int)((int)(ADD_INIT+i)>>SHIFT));
 336       }
 337 
 338       test_sllc_on(a0, a1);
 339       for (int i=0; i<ARRLEN; i++) {
 340         errn += verify("test_sllc_on: ", i, a0[i], (int)((int)(ADD_INIT+i)<<(-SHIFT)));
 341       }
 342       test_sllv(a0, a1, -SHIFT);
 343       for (int i=0; i<ARRLEN; i++) {
 344         errn += verify("test_sllv_on: ", i, a0[i], (int)((int)(ADD_INIT+i)<<(-SHIFT)));
 345       }
 346 
 347       test_srlc_on(a0, a1);
 348       for (int i=0; i<ARRLEN; i++) {
 349         errn += verify("test_srlc_on: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>(-SHIFT)));
 350       }
 351       test_srlv(a0, a1, -SHIFT);
 352       for (int i=0; i<ARRLEN; i++) {
 353         errn += verify("test_srlv_on: ", i, a0[i], (int)((int)(ADD_INIT+i)>>>(-SHIFT)));
 354       }
 355 
 356       test_srac_on(a0, a1);
 357       for (int i=0; i<ARRLEN; i++) {
 358         errn += verify("test_srac_on: ", i, a0[i], (int)((int)(ADD_INIT+i)>>(-SHIFT)));
 359       }
 360       test_srav(a0, a1, -SHIFT);
 361       for (int i=0; i<ARRLEN; i++) {
 362         errn += verify("test_srav_on: ", i, a0[i], (int)((int)(ADD_INIT+i)>>(-SHIFT)));
 363       }
 364 
 365       test_pack2(p2, a1);
 366       for (int i=0; i<ARRLEN/2; i++) {
 367         errn += verify("test_pack2: ", i, p2[i], ((long)(ADD_INIT+2*i) & 0xFFFFFFFFl) | ((long)(ADD_INIT+2*i+1) << 32));
 368       }
 369       for (int i=0; i<ARRLEN; i++) {
 370         a0[i] = -1;
 371       }
 372       test_unpack2(a0, p2);
 373       for (int i=0; i<(ARRLEN&(-2)); i++) {
 374         errn += verify("test_unpack2: ", i, a0[i], (ADD_INIT+i));
 375       }
 376 
 377       test_pack2_swap(p2, a1);
 378       for (int i=0; i<ARRLEN/2; i++) {
 379         errn += verify("test_pack2_swap: ", i, p2[i], ((long)(ADD_INIT+2*i+1) & 0xFFFFFFFFl) | ((long)(ADD_INIT+2*i) << 32));
 380       }
 381       for (int i=0; i<ARRLEN; i++) {
 382         a0[i] = -1;
 383       }
 384       test_unpack2_swap(a0, p2);
 385       for (int i=0; i<(ARRLEN&(-2)); i++) {
 386         errn += verify("test_unpack2_swap: ", i, a0[i], (ADD_INIT+i));
 387       }
 388 
 389     }
 390 
 391     return errn;
 392   }
 393 
 394   static int test_sum(int[] a1) {
 395     int sum = 0;
 396     for (int i = 0; i < a1.length; i+=1) {
 397       sum += a1[i];
 398     }
 399     return sum;
 400   }
 401 
 402   static void test_addc(int[] a0, int[] a1) {
 403     for (int i = 0; i < a0.length; i+=1) {
 404       a0[i] = (int)(a1[i]+VALUE);
 405     }
 406   }
 407   static void test_addv(int[] a0, int[] a1, int b) {
 408     for (int i = 0; i < a0.length; i+=1) {
 409       a0[i] = (int)(a1[i]+b);
 410     }
 411   }
 412   static void test_adda(int[] a0, int[] a1, int[] a2) {
 413     for (int i = 0; i < a0.length; i+=1) {
 414       a0[i] = (int)(a1[i]+a2[i]);
 415     }
 416   }
 417 
 418   static void test_subc(int[] a0, int[] a1) {
 419     for (int i = 0; i < a0.length; i+=1) {
 420       a0[i] = (int)(a1[i]-VALUE);
 421     }
 422   }
 423   static void test_subv(int[] a0, int[] a1, int b) {
 424     for (int i = 0; i < a0.length; i+=1) {
 425       a0[i] = (int)(a1[i]-b);
 426     }
 427   }
 428   static void test_suba(int[] a0, int[] a1, int[] a2) {
 429     for (int i = 0; i < a0.length; i+=1) {
 430       a0[i] = (int)(a1[i]-a2[i]);
 431     }
 432   }
 433 
 434   static void test_mulc(int[] a0, int[] a1) {
 435     for (int i = 0; i < a0.length; i+=1) {
 436       a0[i] = (int)(a1[i]*VALUE);
 437     }
 438   }
 439   static void test_mulc_n(int[] a0, int[] a1) {
 440     for (int i = 0; i < a0.length; i+=1) {
 441       a0[i] = (int)(a1[i]*(-VALUE));
 442     }
 443   }
 444   static void test_mulv(int[] a0, int[] a1, int b) {
 445     for (int i = 0; i < a0.length; i+=1) {
 446       a0[i] = (int)(a1[i]*b);
 447     }
 448   }
 449   static void test_mula(int[] a0, int[] a1, int[] a2) {
 450     for (int i = 0; i < a0.length; i+=1) {
 451       a0[i] = (int)(a1[i]*a2[i]);
 452     }
 453   }
 454 
 455   static void test_divc(int[] a0, int[] a1) {
 456     for (int i = 0; i < a0.length; i+=1) {
 457       a0[i] = (int)(a1[i]/VALUE);
 458     }
 459   }
 460   static void test_divc_n(int[] a0, int[] a1) {
 461     for (int i = 0; i < a0.length; i+=1) {
 462       a0[i] = (int)(a1[i]/(-VALUE));
 463     }
 464   }
 465   static void test_divv(int[] a0, int[] a1, int b) {
 466     for (int i = 0; i < a0.length; i+=1) {
 467       a0[i] = (int)(a1[i]/b);
 468     }
 469   }
 470   static void test_diva(int[] a0, int[] a1, int[] a2) {
 471     for (int i = 0; i < a0.length; i+=1) {
 472       a0[i] = (int)(a1[i]/a2[i]);
 473     }
 474   }
 475 
 476   static void test_andc(int[] a0, int[] a1) {
 477     for (int i = 0; i < a0.length; i+=1) {
 478       a0[i] = (int)(a1[i]&BIT_MASK);
 479     }
 480   }
 481   static void test_andv(int[] a0, int[] a1, int b) {
 482     for (int i = 0; i < a0.length; i+=1) {
 483       a0[i] = (int)(a1[i]&b);
 484     }
 485   }
 486   static void test_anda(int[] a0, int[] a1, int[] a2) {
 487     for (int i = 0; i < a0.length; i+=1) {
 488       a0[i] = (int)(a1[i]&a2[i]);
 489     }
 490   }
 491 
 492   static void test_orc(int[] a0, int[] a1) {
 493     for (int i = 0; i < a0.length; i+=1) {
 494       a0[i] = (int)(a1[i]|BIT_MASK);
 495     }
 496   }
 497   static void test_orv(int[] a0, int[] a1, int b) {
 498     for (int i = 0; i < a0.length; i+=1) {
 499       a0[i] = (int)(a1[i]|b);
 500     }
 501   }
 502   static void test_ora(int[] a0, int[] a1, int[] a2) {
 503     for (int i = 0; i < a0.length; i+=1) {
 504       a0[i] = (int)(a1[i]|a2[i]);
 505     }
 506   }
 507 
 508   static void test_xorc(int[] a0, int[] a1) {
 509     for (int i = 0; i < a0.length; i+=1) {
 510       a0[i] = (int)(a1[i]^BIT_MASK);
 511     }
 512   }
 513   static void test_xorv(int[] a0, int[] a1, int b) {
 514     for (int i = 0; i < a0.length; i+=1) {
 515       a0[i] = (int)(a1[i]^b);
 516     }
 517   }
 518   static void test_xora(int[] a0, int[] a1, int[] a2) {
 519     for (int i = 0; i < a0.length; i+=1) {
 520       a0[i] = (int)(a1[i]^a2[i]);
 521     }
 522   }
 523 
 524   static void test_sllc(int[] a0, int[] a1) {
 525     for (int i = 0; i < a0.length; i+=1) {
 526       a0[i] = (int)(a1[i]<<VALUE);
 527     }
 528   }
 529   static void test_sllc_n(int[] a0, int[] a1) {
 530     for (int i = 0; i < a0.length; i+=1) {
 531       a0[i] = (int)(a1[i]<<(-VALUE));
 532     }
 533   }
 534   static void test_sllc_o(int[] a0, int[] a1) {
 535     for (int i = 0; i < a0.length; i+=1) {
 536       a0[i] = (int)(a1[i]<<SHIFT);
 537     }
 538   }
 539   static void test_sllc_on(int[] a0, int[] a1) {
 540     for (int i = 0; i < a0.length; i+=1) {
 541       a0[i] = (int)(a1[i]<<(-SHIFT));
 542     }
 543   }
 544   static void test_sllv(int[] a0, int[] a1, int b) {
 545     for (int i = 0; i < a0.length; i+=1) {
 546       a0[i] = (int)(a1[i]<<b);
 547     }
 548   }
 549 
 550   static void test_srlc(int[] a0, int[] a1) {
 551     for (int i = 0; i < a0.length; i+=1) {
 552       a0[i] = (int)(a1[i]>>>VALUE);
 553     }
 554   }
 555   static void test_srlc_n(int[] a0, int[] a1) {
 556     for (int i = 0; i < a0.length; i+=1) {
 557       a0[i] = (int)(a1[i]>>>(-VALUE));
 558     }
 559   }
 560   static void test_srlc_o(int[] a0, int[] a1) {
 561     for (int i = 0; i < a0.length; i+=1) {
 562       a0[i] = (int)(a1[i]>>>SHIFT);
 563     }
 564   }
 565   static void test_srlc_on(int[] a0, int[] a1) {
 566     for (int i = 0; i < a0.length; i+=1) {
 567       a0[i] = (int)(a1[i]>>>(-SHIFT));
 568     }
 569   }
 570   static void test_srlv(int[] a0, int[] a1, int b) {
 571     for (int i = 0; i < a0.length; i+=1) {
 572       a0[i] = (int)(a1[i]>>>b);
 573     }
 574   }
 575 
 576   static void test_srac(int[] a0, int[] a1) {
 577     for (int i = 0; i < a0.length; i+=1) {
 578       a0[i] = (int)(a1[i]>>VALUE);
 579     }
 580   }
 581   static void test_srac_n(int[] a0, int[] a1) {
 582     for (int i = 0; i < a0.length; i+=1) {
 583       a0[i] = (int)(a1[i]>>(-VALUE));
 584     }
 585   }
 586   static void test_srac_o(int[] a0, int[] a1) {
 587     for (int i = 0; i < a0.length; i+=1) {
 588       a0[i] = (int)(a1[i]>>SHIFT);
 589     }
 590   }
 591   static void test_srac_on(int[] a0, int[] a1) {
 592     for (int i = 0; i < a0.length; i+=1) {
 593       a0[i] = (int)(a1[i]>>(-SHIFT));
 594     }
 595   }
 596   static void test_srav(int[] a0, int[] a1, int b) {
 597     for (int i = 0; i < a0.length; i+=1) {
 598       a0[i] = (int)(a1[i]>>b);
 599     }
 600   }
 601 
 602   static void test_pack2(long[] p2, int[] a1) {
 603     if (p2.length*2 > a1.length) return;
 604     for (int i = 0; i < p2.length; i+=1) {
 605       long l0 = (long)a1[i*2+0];
 606       long l1 = (long)a1[i*2+1];
 607       p2[i] = (l1 << 32) | (l0 & 0xFFFFFFFFl);
 608     }
 609   }
 610   static void test_unpack2(int[] a0, long[] p2) {
 611     if (p2.length*2 > a0.length) return;
 612     for (int i = 0; i < p2.length; i+=1) {
 613       long l = p2[i];
 614       a0[i*2+0] = (int)(l & 0xFFFFFFFFl);
 615       a0[i*2+1] = (int)(l >> 32);
 616     }
 617   }
 618   static void test_pack2_swap(long[] p2, int[] a1) {
 619     if (p2.length*2 > a1.length) return;
 620     for (int i = 0; i < p2.length; i+=1) {
 621       long l0 = (long)a1[i*2+0];
 622       long l1 = (long)a1[i*2+1];
 623       p2[i] = (l0 << 32) | (l1 & 0xFFFFFFFFl);
 624     }
 625   }
 626   static void test_unpack2_swap(int[] a0, long[] p2) {
 627     if (p2.length*2 > a0.length) return;
 628     for (int i = 0; i < p2.length; i+=1) {
 629       long l = p2[i];
 630       a0[i*2+0] = (int)(l >> 32);
 631       a0[i*2+1] = (int)(l & 0xFFFFFFFFl);
 632     }
 633   }
 634 
 635   static int verify(String text, int i, int elem, int val) {
 636     if (elem != val) {
 637       System.err.println(text + "[" + i + "] = " + elem + " != " + val);
 638       return 1;
 639     }
 640     return 0;
 641   }
 642 
 643   static int verify(String text, int i, long elem, long val) {
 644     if (elem != val) {
 645       System.err.println(text + "[" + i + "] = " + Long.toHexString(elem) + " != " + Long.toHexString(val));
 646       return 1;
 647     }
 648     return 0;
 649   }
 650 }