test/compiler/7200264/TestIntVect.java

Mon, 28 Jul 2014 15:06:38 -0700

author
fzhinkin
date
Mon, 28 Jul 2014 15:06:38 -0700
changeset 6997
dbb05f6d93c4
parent 0
f90c822e73f8
permissions
-rw-r--r--

8051344: JVM crashed in Compile::start() during method parsing w/ UseRTMDeopt turned on
Summary: call rtm_deopt() only if there were no compilation bailouts before.
Reviewed-by: kvn

     1 /*
     2  * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     8  *
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12  * version 2 for more details (a copy is included in the LICENSE file that
    13  * accompanied this code).
    14  *
    15  * You should have received a copy of the GNU General Public License version
    16  * 2 along with this work; if not, write to the Free Software Foundation,
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18  *
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20  * or visit www.oracle.com if you need additional information or have any
    21  * questions.
    22  *
    23  */
    25 /**
    26  * @test
    27  * @bug 7200264
    28  * @summary 7192963 changes disabled shift vectors
    29  *
    30  * @run shell Test7200264.sh
    31  */
    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;
    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   }
    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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   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       }
   389     }
   391     return errn;
   392   }
   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   }
   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   }
   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   }
   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   }
   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   }
   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   }
   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   }
   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   }
   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   }
   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   }
   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   }
   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   }
   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   }
   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 }

mercurial