test/compiler/6340864/TestIntVect.java

Tue, 23 Oct 2012 13:06:37 -0700

author
kvn
date
Tue, 23 Oct 2012 13:06:37 -0700
changeset 4204
b2c669fd8114
parent 4001
006050192a5a
child 6876
710a3c8b516e
permissions
-rw-r--r--

8001183: incorrect results of char vectors right shift operaiton
Summary: do vector right shift operation for small int types only after loads
Reviewed-by: jrose, dlong

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

mercurial