Path: blob/master/test/hotspot/jtreg/compiler/codegen/TestCharVect2.java
41149 views
/*1* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/**24* @test25* @bug 800118326* @summary incorrect results of char vectors right shift operation27*28* @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m compiler.codegen.TestCharVect229* @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m -XX:MaxVectorSize=8 compiler.codegen.TestCharVect230* @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m -XX:MaxVectorSize=16 compiler.codegen.TestCharVect231* @run main/othervm -Xbatch -XX:CompileCommand=exclude,*::test() -Xmx128m -XX:MaxVectorSize=32 compiler.codegen.TestCharVect232*/3334package compiler.codegen;3536public class TestCharVect2 {37private static final int ARRLEN = 997;38private static final int ITERS = 11000;39private static final int ADD_INIT = Character.MAX_VALUE-500;40private static final int BIT_MASK = 0xB731;41private static final int VALUE = 7;42private static final int SHIFT = 16;4344public static void main(String args[]) {45System.out.println("Testing Char vectors");46int errn = test();47if (errn > 0) {48System.err.println("FAILED: " + errn + " errors");49System.exit(97);50}51System.out.println("PASSED");52}5354static int test() {55char[] a0 = new char[ARRLEN];56char[] a1 = new char[ARRLEN];57short[] a2 = new short[ARRLEN];58short[] a3 = new short[ARRLEN];59short[] a4 = new short[ARRLEN];60int[] p2 = new int[ARRLEN/2];61long[] p4 = new long[ARRLEN/4];62// Initialize63int gold_sum = 0;64for (int i=0; i<ARRLEN; i++) {65char val = (char)(ADD_INIT+i);66gold_sum += val;67a1[i] = val;68a2[i] = VALUE;69a3[i] = -VALUE;70a4[i] = (short)BIT_MASK;71}72System.out.println("Warmup");73for (int i=0; i<ITERS; i++) {74test_sum(a1);75test_addc(a0, a1);76test_addv(a0, a1, (char)VALUE);77test_adda(a0, a1, a2);78test_subc(a0, a1);79test_subv(a0, a1, (char)VALUE);80test_suba(a0, a1, a2);8182test_mulc(a0, a1);83test_mulv(a0, a1, (char)VALUE);84test_mula(a0, a1, a2);85test_divc(a0, a1);86test_divv(a0, a1, VALUE);87test_diva(a0, a1, a2);88test_mulc_n(a0, a1);89test_mulv(a0, a1, (char)-VALUE);90test_mula(a0, a1, a3);91test_divc_n(a0, a1);92test_divv(a0, a1, -VALUE);93test_diva(a0, a1, a3);9495test_andc(a0, a1);96test_andv(a0, a1, (short)BIT_MASK);97test_anda(a0, a1, a4);98test_orc(a0, a1);99test_orv(a0, a1, (short)BIT_MASK);100test_ora(a0, a1, a4);101test_xorc(a0, a1);102test_xorv(a0, a1, (short)BIT_MASK);103test_xora(a0, a1, a4);104105test_sllc(a0, a1);106test_sllv(a0, a1, VALUE);107test_srlc(a0, a1);108test_srlv(a0, a1, VALUE);109test_srac(a0, a1);110test_srav(a0, a1, VALUE);111112test_sllc_n(a0, a1);113test_sllv(a0, a1, -VALUE);114test_srlc_n(a0, a1);115test_srlv(a0, a1, -VALUE);116test_srac_n(a0, a1);117test_srav(a0, a1, -VALUE);118119test_sllc_o(a0, a1);120test_sllv(a0, a1, SHIFT);121test_srlc_o(a0, a1);122test_srlv(a0, a1, SHIFT);123test_srac_o(a0, a1);124test_srav(a0, a1, SHIFT);125126test_sllc_on(a0, a1);127test_sllv(a0, a1, -SHIFT);128test_srlc_on(a0, a1);129test_srlv(a0, a1, -SHIFT);130test_srac_on(a0, a1);131test_srav(a0, a1, -SHIFT);132133test_sllc_add(a0, a1);134test_sllv_add(a0, a1, ADD_INIT);135test_srlc_add(a0, a1);136test_srlv_add(a0, a1, ADD_INIT);137test_srac_add(a0, a1);138test_srav_add(a0, a1, ADD_INIT);139140test_sllc_and(a0, a1);141test_sllv_and(a0, a1, BIT_MASK);142test_srlc_and(a0, a1);143test_srlv_and(a0, a1, BIT_MASK);144test_srac_and(a0, a1);145test_srav_and(a0, a1, BIT_MASK);146147test_pack2(p2, a1);148test_unpack2(a0, p2);149test_pack2_swap(p2, a1);150test_unpack2_swap(a0, p2);151test_pack4(p4, a1);152test_unpack4(a0, p4);153test_pack4_swap(p4, a1);154test_unpack4_swap(a0, p4);155}156// Test and verify results157System.out.println("Verification");158int errn = 0;159{160int sum = test_sum(a1);161if (sum != gold_sum) {162System.err.println("test_sum: " + sum + " != " + gold_sum);163errn++;164}165166test_addc(a0, a1);167for (int i=0; i<ARRLEN; i++) {168errn += verify("test_addc: ", i, a0[i], (char)((char)(ADD_INIT+i)+VALUE));169}170test_addv(a0, a1, (char)VALUE);171for (int i=0; i<ARRLEN; i++) {172errn += verify("test_addv: ", i, a0[i], (char)((char)(ADD_INIT+i)+VALUE));173}174test_adda(a0, a1, a2);175for (int i=0; i<ARRLEN; i++) {176errn += verify("test_adda: ", i, a0[i], (char)((char)(ADD_INIT+i)+VALUE));177}178179test_subc(a0, a1);180for (int i=0; i<ARRLEN; i++) {181errn += verify("test_subc: ", i, a0[i], (char)((char)(ADD_INIT+i)-VALUE));182}183test_subv(a0, a1, (char)VALUE);184for (int i=0; i<ARRLEN; i++) {185errn += verify("test_subv: ", i, a0[i], (char)((char)(ADD_INIT+i)-VALUE));186}187test_suba(a0, a1, a2);188for (int i=0; i<ARRLEN; i++) {189errn += verify("test_suba: ", i, a0[i], (char)((char)(ADD_INIT+i)-VALUE));190}191192test_mulc(a0, a1);193for (int i=0; i<ARRLEN; i++) {194errn += verify("test_mulc: ", i, a0[i], (char)((char)(ADD_INIT+i)*VALUE));195}196test_mulv(a0, a1, (char)VALUE);197for (int i=0; i<ARRLEN; i++) {198errn += verify("test_mulv: ", i, a0[i], (char)((char)(ADD_INIT+i)*VALUE));199}200test_mula(a0, a1, a2);201for (int i=0; i<ARRLEN; i++) {202errn += verify("test_mula: ", i, a0[i], (char)((char)(ADD_INIT+i)*VALUE));203}204205test_divc(a0, a1);206for (int i=0; i<ARRLEN; i++) {207errn += verify("test_divc: ", i, a0[i], (char)((char)(ADD_INIT+i)/VALUE));208}209test_divv(a0, a1, VALUE);210for (int i=0; i<ARRLEN; i++) {211errn += verify("test_divv: ", i, a0[i], (char)((char)(ADD_INIT+i)/VALUE));212}213test_diva(a0, a1, a2);214for (int i=0; i<ARRLEN; i++) {215errn += verify("test_diva: ", i, a0[i], (char)((char)(ADD_INIT+i)/VALUE));216}217218test_mulc_n(a0, a1);219for (int i=0; i<ARRLEN; i++) {220errn += verify("test_mulc_n: ", i, a0[i], (char)((char)(ADD_INIT+i)*(-VALUE)));221}222test_mulv(a0, a1, (char)-VALUE);223for (int i=0; i<ARRLEN; i++) {224errn += verify("test_mulv_n: ", i, a0[i], (char)((char)(ADD_INIT+i)*(-VALUE)));225}226test_mula(a0, a1, a3);227for (int i=0; i<ARRLEN; i++) {228errn += verify("test_mula_n: ", i, a0[i], (char)((char)(ADD_INIT+i)*(-VALUE)));229}230231test_divc_n(a0, a1);232for (int i=0; i<ARRLEN; i++) {233errn += verify("test_divc_n: ", i, a0[i], (char)((char)(ADD_INIT+i)/(-VALUE)));234}235test_divv(a0, a1, -VALUE);236for (int i=0; i<ARRLEN; i++) {237errn += verify("test_divv_n: ", i, a0[i], (char)((char)(ADD_INIT+i)/(-VALUE)));238}239test_diva(a0, a1, a3);240for (int i=0; i<ARRLEN; i++) {241errn += verify("test_diva_n: ", i, a0[i], (char)((char)(ADD_INIT+i)/(-VALUE)));242}243244test_andc(a0, a1);245for (int i=0; i<ARRLEN; i++) {246errn += verify("test_andc: ", i, a0[i], (char)((char)(ADD_INIT+i)&BIT_MASK));247}248test_andv(a0, a1, (short)BIT_MASK);249for (int i=0; i<ARRLEN; i++) {250errn += verify("test_andv: ", i, a0[i], (char)((char)(ADD_INIT+i)&BIT_MASK));251}252test_anda(a0, a1, a4);253for (int i=0; i<ARRLEN; i++) {254errn += verify("test_anda: ", i, a0[i], (char)((char)(ADD_INIT+i)&BIT_MASK));255}256257test_orc(a0, a1);258for (int i=0; i<ARRLEN; i++) {259errn += verify("test_orc: ", i, a0[i], (char)((char)(ADD_INIT+i)|BIT_MASK));260}261test_orv(a0, a1, (short)BIT_MASK);262for (int i=0; i<ARRLEN; i++) {263errn += verify("test_orv: ", i, a0[i], (char)((char)(ADD_INIT+i)|BIT_MASK));264}265test_ora(a0, a1, a4);266for (int i=0; i<ARRLEN; i++) {267errn += verify("test_ora: ", i, a0[i], (char)((char)(ADD_INIT+i)|BIT_MASK));268}269270test_xorc(a0, a1);271for (int i=0; i<ARRLEN; i++) {272errn += verify("test_xorc: ", i, a0[i], (char)((char)(ADD_INIT+i)^BIT_MASK));273}274test_xorv(a0, a1, (short)BIT_MASK);275for (int i=0; i<ARRLEN; i++) {276errn += verify("test_xorv: ", i, a0[i], (char)((char)(ADD_INIT+i)^BIT_MASK));277}278test_xora(a0, a1, a4);279for (int i=0; i<ARRLEN; i++) {280errn += verify("test_xora: ", i, a0[i], (char)((char)(ADD_INIT+i)^BIT_MASK));281}282283test_sllc(a0, a1);284for (int i=0; i<ARRLEN; i++) {285errn += verify("test_sllc: ", i, a0[i], (char)((char)(ADD_INIT+i)<<VALUE));286}287test_sllv(a0, a1, VALUE);288for (int i=0; i<ARRLEN; i++) {289errn += verify("test_sllv: ", i, a0[i], (char)((char)(ADD_INIT+i)<<VALUE));290}291292test_srlc(a0, a1);293for (int i=0; i<ARRLEN; i++) {294errn += verify("test_srlc: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>VALUE));295}296test_srlv(a0, a1, VALUE);297for (int i=0; i<ARRLEN; i++) {298errn += verify("test_srlv: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>VALUE));299}300301test_srac(a0, a1);302for (int i=0; i<ARRLEN; i++) {303errn += verify("test_srac: ", i, a0[i], (char)((char)(ADD_INIT+i)>>VALUE));304}305test_srav(a0, a1, VALUE);306for (int i=0; i<ARRLEN; i++) {307errn += verify("test_srav: ", i, a0[i], (char)((char)(ADD_INIT+i)>>VALUE));308}309310test_sllc_n(a0, a1);311for (int i=0; i<ARRLEN; i++) {312errn += verify("test_sllc_n: ", i, a0[i], (char)((char)(ADD_INIT+i)<<(-VALUE)));313}314test_sllv(a0, a1, -VALUE);315for (int i=0; i<ARRLEN; i++) {316errn += verify("test_sllv_n: ", i, a0[i], (char)((char)(ADD_INIT+i)<<(-VALUE)));317}318319test_srlc_n(a0, a1);320for (int i=0; i<ARRLEN; i++) {321errn += verify("test_srlc_n: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>(-VALUE)));322}323test_srlv(a0, a1, -VALUE);324for (int i=0; i<ARRLEN; i++) {325errn += verify("test_srlv_n: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>(-VALUE)));326}327328test_srac_n(a0, a1);329for (int i=0; i<ARRLEN; i++) {330errn += verify("test_srac_n: ", i, a0[i], (char)((char)(ADD_INIT+i)>>(-VALUE)));331}332test_srav(a0, a1, -VALUE);333for (int i=0; i<ARRLEN; i++) {334errn += verify("test_srav_n: ", i, a0[i], (char)((char)(ADD_INIT+i)>>(-VALUE)));335}336337test_sllc_o(a0, a1);338for (int i=0; i<ARRLEN; i++) {339errn += verify("test_sllc_o: ", i, a0[i], (char)((char)(ADD_INIT+i)<<SHIFT));340}341test_sllv(a0, a1, SHIFT);342for (int i=0; i<ARRLEN; i++) {343errn += verify("test_sllv_o: ", i, a0[i], (char)((char)(ADD_INIT+i)<<SHIFT));344}345346test_srlc_o(a0, a1);347for (int i=0; i<ARRLEN; i++) {348errn += verify("test_srlc_o: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>SHIFT));349}350test_srlv(a0, a1, SHIFT);351for (int i=0; i<ARRLEN; i++) {352errn += verify("test_srlv_o: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>SHIFT));353}354355test_srac_o(a0, a1);356for (int i=0; i<ARRLEN; i++) {357errn += verify("test_srac_o: ", i, a0[i], (char)((char)(ADD_INIT+i)>>SHIFT));358}359test_srav(a0, a1, SHIFT);360for (int i=0; i<ARRLEN; i++) {361errn += verify("test_srav_o: ", i, a0[i], (char)((char)(ADD_INIT+i)>>SHIFT));362}363364test_sllc_on(a0, a1);365for (int i=0; i<ARRLEN; i++) {366errn += verify("test_sllc_on: ", i, a0[i], (char)((char)(ADD_INIT+i)<<(-SHIFT)));367}368test_sllv(a0, a1, -SHIFT);369for (int i=0; i<ARRLEN; i++) {370errn += verify("test_sllv_on: ", i, a0[i], (char)((char)(ADD_INIT+i)<<(-SHIFT)));371}372373test_srlc_on(a0, a1);374for (int i=0; i<ARRLEN; i++) {375errn += verify("test_srlc_on: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>(-SHIFT)));376}377test_srlv(a0, a1, -SHIFT);378for (int i=0; i<ARRLEN; i++) {379errn += verify("test_srlv_on: ", i, a0[i], (char)((char)(ADD_INIT+i)>>>(-SHIFT)));380}381382test_srac_on(a0, a1);383for (int i=0; i<ARRLEN; i++) {384errn += verify("test_srac_on: ", i, a0[i], (char)((char)(ADD_INIT+i)>>(-SHIFT)));385}386test_srav(a0, a1, -SHIFT);387for (int i=0; i<ARRLEN; i++) {388errn += verify("test_srav_on: ", i, a0[i], (char)((char)(ADD_INIT+i)>>(-SHIFT)));389}390391test_sllc_add(a0, a1);392for (int i=0; i<ARRLEN; i++) {393errn += verify("test_sllc_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)<<VALUE));394}395test_sllv_add(a0, a1, ADD_INIT);396for (int i=0; i<ARRLEN; i++) {397errn += verify("test_sllv_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)<<VALUE));398}399400test_srlc_add(a0, a1);401for (int i=0; i<ARRLEN; i++) {402errn += verify("test_srlc_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)>>>VALUE));403}404test_srlv_add(a0, a1, ADD_INIT);405for (int i=0; i<ARRLEN; i++) {406errn += verify("test_srlv_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)>>>VALUE));407}408409test_srac_add(a0, a1);410for (int i=0; i<ARRLEN; i++) {411errn += verify("test_srac_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)>>VALUE));412}413test_srav_add(a0, a1, ADD_INIT);414for (int i=0; i<ARRLEN; i++) {415errn += verify("test_srav_add: ", i, a0[i], (char)(((char)(ADD_INIT+i) + ADD_INIT)>>VALUE));416}417418test_sllc_and(a0, a1);419for (int i=0; i<ARRLEN; i++) {420errn += verify("test_sllc_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)<<VALUE));421}422test_sllv_and(a0, a1, BIT_MASK);423for (int i=0; i<ARRLEN; i++) {424errn += verify("test_sllv_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)<<VALUE));425}426427test_srlc_and(a0, a1);428for (int i=0; i<ARRLEN; i++) {429errn += verify("test_srlc_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)>>>VALUE));430}431test_srlv_and(a0, a1, BIT_MASK);432for (int i=0; i<ARRLEN; i++) {433errn += verify("test_srlv_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)>>>VALUE));434}435436test_srac_and(a0, a1);437for (int i=0; i<ARRLEN; i++) {438errn += verify("test_srac_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)>>VALUE));439}440test_srav_and(a0, a1, BIT_MASK);441for (int i=0; i<ARRLEN; i++) {442errn += verify("test_srav_and: ", i, a0[i], (char)(((char)(ADD_INIT+i) & BIT_MASK)>>VALUE));443}444445test_pack2(p2, a1);446for (int i=0; i<ARRLEN/2; i++) {447errn += verify("test_pack2: ", i, p2[i], ((int)(ADD_INIT+2*i) & 0xFFFF) | ((int)(ADD_INIT+2*i+1) << 16));448}449for (int i=0; i<ARRLEN; i++) {450a0[i] = (char)-1;451}452test_unpack2(a0, p2);453for (int i=0; i<(ARRLEN&(-2)); i++) {454errn += verify("test_unpack2: ", i, a0[i], (char)(ADD_INIT+i));455}456457test_pack2_swap(p2, a1);458for (int i=0; i<ARRLEN/2; i++) {459errn += verify("test_pack2_swap: ", i, p2[i], ((int)(ADD_INIT+2*i+1) & 0xFFFF) | ((int)(ADD_INIT+2*i) << 16));460}461for (int i=0; i<ARRLEN; i++) {462a0[i] = (char)-1;463}464test_unpack2_swap(a0, p2);465for (int i=0; i<(ARRLEN&(-2)); i++) {466errn += verify("test_unpack2_swap: ", i, a0[i], (char)(ADD_INIT+i));467}468469test_pack4(p4, a1);470for (int i=0; i<ARRLEN/4; i++) {471errn += verify("test_pack4: ", i, p4[i], ((long)(ADD_INIT+4*i+0) & 0xFFFFl) |472(((long)(ADD_INIT+4*i+1) & 0xFFFFl) << 16) |473(((long)(ADD_INIT+4*i+2) & 0xFFFFl) << 32) |474(((long)(ADD_INIT+4*i+3) & 0xFFFFl) << 48));475}476for (int i=0; i<ARRLEN; i++) {477a0[i] = (char)-1;478}479test_unpack4(a0, p4);480for (int i=0; i<(ARRLEN&(-4)); i++) {481errn += verify("test_unpack4: ", i, a0[i], (char)(ADD_INIT+i));482}483484test_pack4_swap(p4, a1);485for (int i=0; i<ARRLEN/4; i++) {486errn += verify("test_pack4_swap: ", i, p4[i], ((long)(ADD_INIT+4*i+3) & 0xFFFFl) |487(((long)(ADD_INIT+4*i+2) & 0xFFFFl) << 16) |488(((long)(ADD_INIT+4*i+1) & 0xFFFFl) << 32) |489(((long)(ADD_INIT+4*i+0) & 0xFFFFl) << 48));490}491for (int i=0; i<ARRLEN; i++) {492a0[i] = (char)-1;493}494test_unpack4_swap(a0, p4);495for (int i=0; i<(ARRLEN&(-4)); i++) {496errn += verify("test_unpack4_swap: ", i, a0[i], (char)(ADD_INIT+i));497}498499}500501if (errn > 0)502return errn;503504System.out.println("Time");505long start, end;506507start = System.currentTimeMillis();508for (int i=0; i<ITERS; i++) {509test_sum(a1);510}511end = System.currentTimeMillis();512System.out.println("test_sum: " + (end - start));513514start = System.currentTimeMillis();515for (int i=0; i<ITERS; i++) {516test_addc(a0, a1);517}518end = System.currentTimeMillis();519System.out.println("test_addc: " + (end - start));520start = System.currentTimeMillis();521for (int i=0; i<ITERS; i++) {522test_addv(a0, a1, (char)VALUE);523}524end = System.currentTimeMillis();525System.out.println("test_addv: " + (end - start));526start = System.currentTimeMillis();527for (int i=0; i<ITERS; i++) {528test_adda(a0, a1, a2);529}530end = System.currentTimeMillis();531System.out.println("test_adda: " + (end - start));532533start = System.currentTimeMillis();534for (int i=0; i<ITERS; i++) {535test_subc(a0, a1);536}537end = System.currentTimeMillis();538System.out.println("test_subc: " + (end - start));539start = System.currentTimeMillis();540for (int i=0; i<ITERS; i++) {541test_subv(a0, a1, (char)VALUE);542}543end = System.currentTimeMillis();544System.out.println("test_subv: " + (end - start));545start = System.currentTimeMillis();546for (int i=0; i<ITERS; i++) {547test_suba(a0, a1, a2);548}549end = System.currentTimeMillis();550System.out.println("test_suba: " + (end - start));551552start = System.currentTimeMillis();553for (int i=0; i<ITERS; i++) {554test_mulc(a0, a1);555}556end = System.currentTimeMillis();557System.out.println("test_mulc: " + (end - start));558start = System.currentTimeMillis();559for (int i=0; i<ITERS; i++) {560test_mulv(a0, a1, (char)VALUE);561}562end = System.currentTimeMillis();563System.out.println("test_mulv: " + (end - start));564start = System.currentTimeMillis();565for (int i=0; i<ITERS; i++) {566test_mula(a0, a1, a2);567}568end = System.currentTimeMillis();569System.out.println("test_mula: " + (end - start));570571start = System.currentTimeMillis();572for (int i=0; i<ITERS; i++) {573test_divc(a0, a1);574}575end = System.currentTimeMillis();576System.out.println("test_divc: " + (end - start));577start = System.currentTimeMillis();578for (int i=0; i<ITERS; i++) {579test_divv(a0, a1, VALUE);580}581end = System.currentTimeMillis();582System.out.println("test_divv: " + (end - start));583start = System.currentTimeMillis();584for (int i=0; i<ITERS; i++) {585test_diva(a0, a1, a2);586}587end = System.currentTimeMillis();588System.out.println("test_diva: " + (end - start));589590start = System.currentTimeMillis();591for (int i=0; i<ITERS; i++) {592test_mulc_n(a0, a1);593}594end = System.currentTimeMillis();595System.out.println("test_mulc_n: " + (end - start));596start = System.currentTimeMillis();597for (int i=0; i<ITERS; i++) {598test_mulv(a0, a1, (char)-VALUE);599}600end = System.currentTimeMillis();601System.out.println("test_mulv_n: " + (end - start));602start = System.currentTimeMillis();603for (int i=0; i<ITERS; i++) {604test_mula(a0, a1, a3);605}606end = System.currentTimeMillis();607System.out.println("test_mula_n: " + (end - start));608609start = System.currentTimeMillis();610for (int i=0; i<ITERS; i++) {611test_divc_n(a0, a1);612}613end = System.currentTimeMillis();614System.out.println("test_divc_n: " + (end - start));615start = System.currentTimeMillis();616for (int i=0; i<ITERS; i++) {617test_divv(a0, a1, -VALUE);618}619end = System.currentTimeMillis();620System.out.println("test_divv_n: " + (end - start));621start = System.currentTimeMillis();622for (int i=0; i<ITERS; i++) {623test_diva(a0, a1, a3);624}625end = System.currentTimeMillis();626System.out.println("test_diva_n: " + (end - start));627628start = System.currentTimeMillis();629for (int i=0; i<ITERS; i++) {630test_andc(a0, a1);631}632end = System.currentTimeMillis();633System.out.println("test_andc: " + (end - start));634start = System.currentTimeMillis();635for (int i=0; i<ITERS; i++) {636test_andv(a0, a1, (short)BIT_MASK);637}638end = System.currentTimeMillis();639System.out.println("test_andv: " + (end - start));640start = System.currentTimeMillis();641for (int i=0; i<ITERS; i++) {642test_anda(a0, a1, a4);643}644end = System.currentTimeMillis();645System.out.println("test_anda: " + (end - start));646647start = System.currentTimeMillis();648for (int i=0; i<ITERS; i++) {649test_orc(a0, a1);650}651end = System.currentTimeMillis();652System.out.println("test_orc: " + (end - start));653start = System.currentTimeMillis();654for (int i=0; i<ITERS; i++) {655test_orv(a0, a1, (short)BIT_MASK);656}657end = System.currentTimeMillis();658System.out.println("test_orv: " + (end - start));659start = System.currentTimeMillis();660for (int i=0; i<ITERS; i++) {661test_ora(a0, a1, a4);662}663end = System.currentTimeMillis();664System.out.println("test_ora: " + (end - start));665666start = System.currentTimeMillis();667for (int i=0; i<ITERS; i++) {668test_xorc(a0, a1);669}670end = System.currentTimeMillis();671System.out.println("test_xorc: " + (end - start));672start = System.currentTimeMillis();673for (int i=0; i<ITERS; i++) {674test_xorv(a0, a1, (short)BIT_MASK);675}676end = System.currentTimeMillis();677System.out.println("test_xorv: " + (end - start));678start = System.currentTimeMillis();679for (int i=0; i<ITERS; i++) {680test_xora(a0, a1, a4);681}682end = System.currentTimeMillis();683System.out.println("test_xora: " + (end - start));684685start = System.currentTimeMillis();686for (int i=0; i<ITERS; i++) {687test_sllc(a0, a1);688}689end = System.currentTimeMillis();690System.out.println("test_sllc: " + (end - start));691start = System.currentTimeMillis();692for (int i=0; i<ITERS; i++) {693test_sllv(a0, a1, VALUE);694}695end = System.currentTimeMillis();696System.out.println("test_sllv: " + (end - start));697698start = System.currentTimeMillis();699for (int i=0; i<ITERS; i++) {700test_srlc(a0, a1);701}702end = System.currentTimeMillis();703System.out.println("test_srlc: " + (end - start));704start = System.currentTimeMillis();705for (int i=0; i<ITERS; i++) {706test_srlv(a0, a1, VALUE);707}708end = System.currentTimeMillis();709System.out.println("test_srlv: " + (end - start));710711start = System.currentTimeMillis();712for (int i=0; i<ITERS; i++) {713test_srac(a0, a1);714}715end = System.currentTimeMillis();716System.out.println("test_srac: " + (end - start));717start = System.currentTimeMillis();718for (int i=0; i<ITERS; i++) {719test_srav(a0, a1, VALUE);720}721end = System.currentTimeMillis();722System.out.println("test_srav: " + (end - start));723724start = System.currentTimeMillis();725for (int i=0; i<ITERS; i++) {726test_sllc_n(a0, a1);727}728end = System.currentTimeMillis();729System.out.println("test_sllc_n: " + (end - start));730start = System.currentTimeMillis();731for (int i=0; i<ITERS; i++) {732test_sllv(a0, a1, -VALUE);733}734end = System.currentTimeMillis();735System.out.println("test_sllv_n: " + (end - start));736737start = System.currentTimeMillis();738for (int i=0; i<ITERS; i++) {739test_srlc_n(a0, a1);740}741end = System.currentTimeMillis();742System.out.println("test_srlc_n: " + (end - start));743start = System.currentTimeMillis();744for (int i=0; i<ITERS; i++) {745test_srlv(a0, a1, -VALUE);746}747end = System.currentTimeMillis();748System.out.println("test_srlv_n: " + (end - start));749750start = System.currentTimeMillis();751for (int i=0; i<ITERS; i++) {752test_srac_n(a0, a1);753}754end = System.currentTimeMillis();755System.out.println("test_srac_n: " + (end - start));756start = System.currentTimeMillis();757for (int i=0; i<ITERS; i++) {758test_srav(a0, a1, -VALUE);759}760end = System.currentTimeMillis();761System.out.println("test_srav_n: " + (end - start));762763start = System.currentTimeMillis();764for (int i=0; i<ITERS; i++) {765test_sllc_o(a0, a1);766}767end = System.currentTimeMillis();768System.out.println("test_sllc_o: " + (end - start));769start = System.currentTimeMillis();770for (int i=0; i<ITERS; i++) {771test_sllv(a0, a1, SHIFT);772}773end = System.currentTimeMillis();774System.out.println("test_sllv_o: " + (end - start));775776start = System.currentTimeMillis();777for (int i=0; i<ITERS; i++) {778test_srlc_o(a0, a1);779}780end = System.currentTimeMillis();781System.out.println("test_srlc_o: " + (end - start));782start = System.currentTimeMillis();783for (int i=0; i<ITERS; i++) {784test_srlv(a0, a1, SHIFT);785}786end = System.currentTimeMillis();787System.out.println("test_srlv_o: " + (end - start));788789start = System.currentTimeMillis();790for (int i=0; i<ITERS; i++) {791test_srac_o(a0, a1);792}793end = System.currentTimeMillis();794System.out.println("test_srac_o: " + (end - start));795start = System.currentTimeMillis();796for (int i=0; i<ITERS; i++) {797test_srav(a0, a1, SHIFT);798}799end = System.currentTimeMillis();800System.out.println("test_srav_o: " + (end - start));801802start = System.currentTimeMillis();803for (int i=0; i<ITERS; i++) {804test_sllc_on(a0, a1);805}806end = System.currentTimeMillis();807System.out.println("test_sllc_on: " + (end - start));808start = System.currentTimeMillis();809for (int i=0; i<ITERS; i++) {810test_sllv(a0, a1, -SHIFT);811}812end = System.currentTimeMillis();813System.out.println("test_sllv_on: " + (end - start));814815start = System.currentTimeMillis();816for (int i=0; i<ITERS; i++) {817test_srlc_on(a0, a1);818}819end = System.currentTimeMillis();820System.out.println("test_srlc_on: " + (end - start));821start = System.currentTimeMillis();822for (int i=0; i<ITERS; i++) {823test_srlv(a0, a1, -SHIFT);824}825end = System.currentTimeMillis();826System.out.println("test_srlv_on: " + (end - start));827828start = System.currentTimeMillis();829for (int i=0; i<ITERS; i++) {830test_srac_on(a0, a1);831}832end = System.currentTimeMillis();833System.out.println("test_srac_on: " + (end - start));834start = System.currentTimeMillis();835for (int i=0; i<ITERS; i++) {836test_srav(a0, a1, -SHIFT);837}838end = System.currentTimeMillis();839System.out.println("test_srav_on: " + (end - start));840841start = System.currentTimeMillis();842for (int i=0; i<ITERS; i++) {843test_sllc_add(a0, a1);844}845end = System.currentTimeMillis();846System.out.println("test_sllc_add: " + (end - start));847start = System.currentTimeMillis();848for (int i=0; i<ITERS; i++) {849test_sllv_add(a0, a1, ADD_INIT);850}851end = System.currentTimeMillis();852System.out.println("test_sllv_add: " + (end - start));853854start = System.currentTimeMillis();855for (int i=0; i<ITERS; i++) {856test_srlc_add(a0, a1);857}858end = System.currentTimeMillis();859System.out.println("test_srlc_add: " + (end - start));860start = System.currentTimeMillis();861for (int i=0; i<ITERS; i++) {862test_srlv_add(a0, a1, ADD_INIT);863}864end = System.currentTimeMillis();865System.out.println("test_srlv_add: " + (end - start));866867start = System.currentTimeMillis();868for (int i=0; i<ITERS; i++) {869test_srac_add(a0, a1);870}871end = System.currentTimeMillis();872System.out.println("test_srac_add: " + (end - start));873start = System.currentTimeMillis();874for (int i=0; i<ITERS; i++) {875test_srav_add(a0, a1, ADD_INIT);876}877end = System.currentTimeMillis();878System.out.println("test_srav_add: " + (end - start));879880start = System.currentTimeMillis();881for (int i=0; i<ITERS; i++) {882test_sllc_and(a0, a1);883}884end = System.currentTimeMillis();885System.out.println("test_sllc_and: " + (end - start));886start = System.currentTimeMillis();887for (int i=0; i<ITERS; i++) {888test_sllv_and(a0, a1, BIT_MASK);889}890end = System.currentTimeMillis();891System.out.println("test_sllv_and: " + (end - start));892893start = System.currentTimeMillis();894for (int i=0; i<ITERS; i++) {895test_srlc_and(a0, a1);896}897end = System.currentTimeMillis();898System.out.println("test_srlc_and: " + (end - start));899start = System.currentTimeMillis();900for (int i=0; i<ITERS; i++) {901test_srlv_and(a0, a1, BIT_MASK);902}903end = System.currentTimeMillis();904System.out.println("test_srlv_and: " + (end - start));905906start = System.currentTimeMillis();907for (int i=0; i<ITERS; i++) {908test_srac_and(a0, a1);909}910end = System.currentTimeMillis();911System.out.println("test_srac_and: " + (end - start));912start = System.currentTimeMillis();913for (int i=0; i<ITERS; i++) {914test_srav_and(a0, a1, BIT_MASK);915}916end = System.currentTimeMillis();917System.out.println("test_srav_and: " + (end - start));918919start = System.currentTimeMillis();920for (int i=0; i<ITERS; i++) {921test_pack2(p2, a1);922}923end = System.currentTimeMillis();924System.out.println("test_pack2: " + (end - start));925start = System.currentTimeMillis();926for (int i=0; i<ITERS; i++) {927test_unpack2(a0, p2);928}929end = System.currentTimeMillis();930System.out.println("test_unpack2: " + (end - start));931start = System.currentTimeMillis();932for (int i=0; i<ITERS; i++) {933test_pack2_swap(p2, a1);934}935end = System.currentTimeMillis();936System.out.println("test_pack2_swap: " + (end - start));937start = System.currentTimeMillis();938for (int i=0; i<ITERS; i++) {939test_unpack2_swap(a0, p2);940}941end = System.currentTimeMillis();942System.out.println("test_unpack2_swap: " + (end - start));943944start = System.currentTimeMillis();945for (int i=0; i<ITERS; i++) {946test_pack4(p4, a1);947}948end = System.currentTimeMillis();949System.out.println("test_pack4: " + (end - start));950start = System.currentTimeMillis();951for (int i=0; i<ITERS; i++) {952test_unpack4(a0, p4);953}954end = System.currentTimeMillis();955System.out.println("test_unpack4: " + (end - start));956start = System.currentTimeMillis();957for (int i=0; i<ITERS; i++) {958test_pack4_swap(p4, a1);959}960end = System.currentTimeMillis();961System.out.println("test_pack4_swap: " + (end - start));962start = System.currentTimeMillis();963for (int i=0; i<ITERS; i++) {964test_unpack4_swap(a0, p4);965}966end = System.currentTimeMillis();967System.out.println("test_unpack4_swap: " + (end - start));968969return errn;970}971972static int test_sum(char[] a1) {973int sum = 0;974for (int i = 0; i < a1.length; i+=1) {975sum += a1[i];976}977return sum;978}979980static void test_addc(char[] a0, char[] a1) {981for (int i = 0; i < a0.length; i+=1) {982a0[i] = (char)(a1[i]+VALUE);983}984}985static void test_addv(char[] a0, char[] a1, char b) {986for (int i = 0; i < a0.length; i+=1) {987a0[i] = (char)(a1[i]+b);988}989}990static void test_adda(char[] a0, char[] a1, short[] a2) {991for (int i = 0; i < a0.length; i+=1) {992a0[i] = (char)(a1[i]+a2[i]);993}994}995996static void test_subc(char[] a0, char[] a1) {997for (int i = 0; i < a0.length; i+=1) {998a0[i] = (char)(a1[i]-VALUE);999}1000}1001static void test_subv(char[] a0, char[] a1, char b) {1002for (int i = 0; i < a0.length; i+=1) {1003a0[i] = (char)(a1[i]-b);1004}1005}1006static void test_suba(char[] a0, char[] a1, short[] a2) {1007for (int i = 0; i < a0.length; i+=1) {1008a0[i] = (char)(a1[i]-a2[i]);1009}1010}10111012static void test_mulc(char[] a0, char[] a1) {1013for (int i = 0; i < a0.length; i+=1) {1014a0[i] = (char)(a1[i]*VALUE);1015}1016}1017static void test_mulc_n(char[] a0, char[] a1) {1018for (int i = 0; i < a0.length; i+=1) {1019a0[i] = (char)(a1[i]*(-VALUE));1020}1021}1022static void test_mulv(char[] a0, char[] a1, char b) {1023for (int i = 0; i < a0.length; i+=1) {1024a0[i] = (char)(a1[i]*b);1025}1026}1027static void test_mula(char[] a0, char[] a1, short[] a2) {1028for (int i = 0; i < a0.length; i+=1) {1029a0[i] = (char)(a1[i]*a2[i]);1030}1031}10321033static void test_divc(char[] a0, char[] a1) {1034for (int i = 0; i < a0.length; i+=1) {1035a0[i] = (char)(a1[i]/VALUE);1036}1037}1038static void test_divc_n(char[] a0, char[] a1) {1039for (int i = 0; i < a0.length; i+=1) {1040a0[i] = (char)(a1[i]/(-VALUE));1041}1042}1043static void test_divv(char[] a0, char[] a1, int b) {1044for (int i = 0; i < a0.length; i+=1) {1045a0[i] = (char)(a1[i]/b);1046}1047}1048static void test_diva(char[] a0, char[] a1, short[] a2) {1049for (int i = 0; i < a0.length; i+=1) {1050a0[i] = (char)(a1[i]/a2[i]);1051}1052}10531054static void test_andc(char[] a0, char[] a1) {1055for (int i = 0; i < a0.length; i+=1) {1056a0[i] = (char)(a1[i]&BIT_MASK);1057}1058}1059static void test_andv(char[] a0, char[] a1, short b) {1060for (int i = 0; i < a0.length; i+=1) {1061a0[i] = (char)(a1[i]&b);1062}1063}1064static void test_anda(char[] a0, char[] a1, short[] a2) {1065for (int i = 0; i < a0.length; i+=1) {1066a0[i] = (char)(a1[i]&a2[i]);1067}1068}10691070static void test_orc(char[] a0, char[] a1) {1071for (int i = 0; i < a0.length; i+=1) {1072a0[i] = (char)(a1[i]|BIT_MASK);1073}1074}1075static void test_orv(char[] a0, char[] a1, short b) {1076for (int i = 0; i < a0.length; i+=1) {1077a0[i] = (char)(a1[i]|b);1078}1079}1080static void test_ora(char[] a0, char[] a1, short[] a2) {1081for (int i = 0; i < a0.length; i+=1) {1082a0[i] = (char)(a1[i]|a2[i]);1083}1084}10851086static void test_xorc(char[] a0, char[] a1) {1087for (int i = 0; i < a0.length; i+=1) {1088a0[i] = (char)(a1[i]^BIT_MASK);1089}1090}1091static void test_xorv(char[] a0, char[] a1, short b) {1092for (int i = 0; i < a0.length; i+=1) {1093a0[i] = (char)(a1[i]^b);1094}1095}1096static void test_xora(char[] a0, char[] a1, short[] a2) {1097for (int i = 0; i < a0.length; i+=1) {1098a0[i] = (char)(a1[i]^a2[i]);1099}1100}11011102static void test_sllc(char[] a0, char[] a1) {1103for (int i = 0; i < a0.length; i+=1) {1104a0[i] = (char)(a1[i]<<VALUE);1105}1106}1107static void test_sllc_n(char[] a0, char[] a1) {1108for (int i = 0; i < a0.length; i+=1) {1109a0[i] = (char)(a1[i]<<(-VALUE));1110}1111}1112static void test_sllc_o(char[] a0, char[] a1) {1113for (int i = 0; i < a0.length; i+=1) {1114a0[i] = (char)(a1[i]<<SHIFT);1115}1116}1117static void test_sllc_on(char[] a0, char[] a1) {1118for (int i = 0; i < a0.length; i+=1) {1119a0[i] = (char)(a1[i]<<(-SHIFT));1120}1121}1122static void test_sllv(char[] a0, char[] a1, int b) {1123for (int i = 0; i < a0.length; i+=1) {1124a0[i] = (char)(a1[i]<<b);1125}1126}1127static void test_sllc_add(char[] a0, char[] a1) {1128for (int i = 0; i < a0.length; i+=1) {1129a0[i] = (char)((a1[i] + ADD_INIT)<<VALUE);1130}1131}1132static void test_sllv_add(char[] a0, char[] a1, int b) {1133for (int i = 0; i < a0.length; i+=1) {1134a0[i] = (char)((a1[i] + b)<<VALUE);1135}1136}1137static void test_sllc_and(char[] a0, char[] a1) {1138for (int i = 0; i < a0.length; i+=1) {1139a0[i] = (char)((a1[i] & BIT_MASK)<<VALUE);1140}1141}1142static void test_sllv_and(char[] a0, char[] a1, int b) {1143for (int i = 0; i < a0.length; i+=1) {1144a0[i] = (char)((a1[i] & b)<<VALUE);1145}1146}11471148static void test_srlc(char[] a0, char[] a1) {1149for (int i = 0; i < a0.length; i+=1) {1150a0[i] = (char)(a1[i]>>>VALUE);1151}1152}1153static void test_srlc_n(char[] a0, char[] a1) {1154for (int i = 0; i < a0.length; i+=1) {1155a0[i] = (char)(a1[i]>>>(-VALUE));1156}1157}1158static void test_srlc_o(char[] a0, char[] a1) {1159for (int i = 0; i < a0.length; i+=1) {1160a0[i] = (char)(a1[i]>>>SHIFT);1161}1162}1163static void test_srlc_on(char[] a0, char[] a1) {1164for (int i = 0; i < a0.length; i+=1) {1165a0[i] = (char)(a1[i]>>>(-SHIFT));1166}1167}1168static void test_srlv(char[] a0, char[] a1, int b) {1169for (int i = 0; i < a0.length; i+=1) {1170a0[i] = (char)(a1[i]>>>b);1171}1172}1173static void test_srlc_add(char[] a0, char[] a1) {1174for (int i = 0; i < a0.length; i+=1) {1175a0[i] = (char)((a1[i] + ADD_INIT)>>>VALUE);1176}1177}1178static void test_srlv_add(char[] a0, char[] a1, int b) {1179for (int i = 0; i < a0.length; i+=1) {1180a0[i] = (char)((a1[i] + b)>>>VALUE);1181}1182}1183static void test_srlc_and(char[] a0, char[] a1) {1184for (int i = 0; i < a0.length; i+=1) {1185a0[i] = (char)((a1[i] & BIT_MASK)>>>VALUE);1186}1187}1188static void test_srlv_and(char[] a0, char[] a1, int b) {1189for (int i = 0; i < a0.length; i+=1) {1190a0[i] = (char)((a1[i] & b)>>>VALUE);1191}1192}11931194static void test_srac(char[] a0, char[] a1) {1195for (int i = 0; i < a0.length; i+=1) {1196a0[i] = (char)(a1[i]>>VALUE);1197}1198}1199static void test_srac_n(char[] a0, char[] a1) {1200for (int i = 0; i < a0.length; i+=1) {1201a0[i] = (char)(a1[i]>>(-VALUE));1202}1203}1204static void test_srac_o(char[] a0, char[] a1) {1205for (int i = 0; i < a0.length; i+=1) {1206a0[i] = (char)(a1[i]>>SHIFT);1207}1208}1209static void test_srac_on(char[] a0, char[] a1) {1210for (int i = 0; i < a0.length; i+=1) {1211a0[i] = (char)(a1[i]>>(-SHIFT));1212}1213}1214static void test_srav(char[] a0, char[] a1, int b) {1215for (int i = 0; i < a0.length; i+=1) {1216a0[i] = (char)(a1[i]>>b);1217}1218}1219static void test_srac_add(char[] a0, char[] a1) {1220for (int i = 0; i < a0.length; i+=1) {1221a0[i] = (char)((a1[i] + ADD_INIT)>>VALUE);1222}1223}1224static void test_srav_add(char[] a0, char[] a1, int b) {1225for (int i = 0; i < a0.length; i+=1) {1226a0[i] = (char)((a1[i] + b)>>VALUE);1227}1228}1229static void test_srac_and(char[] a0, char[] a1) {1230for (int i = 0; i < a0.length; i+=1) {1231a0[i] = (char)((a1[i] & BIT_MASK)>>VALUE);1232}1233}1234static void test_srav_and(char[] a0, char[] a1, int b) {1235for (int i = 0; i < a0.length; i+=1) {1236a0[i] = (char)((a1[i] & b)>>VALUE);1237}1238}12391240static void test_pack2(int[] p2, char[] a1) {1241if (p2.length*2 > a1.length) return;1242for (int i = 0; i < p2.length; i+=1) {1243int l0 = (int)a1[i*2+0];1244int l1 = (int)a1[i*2+1];1245p2[i] = (l1 << 16) | (l0 & 0xFFFF);1246}1247}1248static void test_unpack2(char[] a0, int[] p2) {1249if (p2.length*2 > a0.length) return;1250for (int i = 0; i < p2.length; i+=1) {1251int l = p2[i];1252a0[i*2+0] = (char)(l & 0xFFFF);1253a0[i*2+1] = (char)(l >> 16);1254}1255}1256static void test_pack2_swap(int[] p2, char[] a1) {1257if (p2.length*2 > a1.length) return;1258for (int i = 0; i < p2.length; i+=1) {1259int l0 = (int)a1[i*2+0];1260int l1 = (int)a1[i*2+1];1261p2[i] = (l0 << 16) | (l1 & 0xFFFF);1262}1263}1264static void test_unpack2_swap(char[] a0, int[] p2) {1265if (p2.length*2 > a0.length) return;1266for (int i = 0; i < p2.length; i+=1) {1267int l = p2[i];1268a0[i*2+0] = (char)(l >> 16);1269a0[i*2+1] = (char)(l & 0xFFFF);1270}1271}12721273static void test_pack4(long[] p4, char[] a1) {1274if (p4.length*4 > a1.length) return;1275for (int i = 0; i < p4.length; i+=1) {1276long l0 = (long)a1[i*4+0];1277long l1 = (long)a1[i*4+1];1278long l2 = (long)a1[i*4+2];1279long l3 = (long)a1[i*4+3];1280p4[i] = (l0 & 0xFFFFl) |1281((l1 & 0xFFFFl) << 16) |1282((l2 & 0xFFFFl) << 32) |1283((l3 & 0xFFFFl) << 48);1284}1285}1286static void test_unpack4(char[] a0, long[] p4) {1287if (p4.length*4 > a0.length) return;1288for (int i = 0; i < p4.length; i+=1) {1289long l = p4[i];1290a0[i*4+0] = (char)(l & 0xFFFFl);1291a0[i*4+1] = (char)(l >> 16);1292a0[i*4+2] = (char)(l >> 32);1293a0[i*4+3] = (char)(l >> 48);1294}1295}1296static void test_pack4_swap(long[] p4, char[] a1) {1297if (p4.length*4 > a1.length) return;1298for (int i = 0; i < p4.length; i+=1) {1299long l0 = (long)a1[i*4+0];1300long l1 = (long)a1[i*4+1];1301long l2 = (long)a1[i*4+2];1302long l3 = (long)a1[i*4+3];1303p4[i] = (l3 & 0xFFFFl) |1304((l2 & 0xFFFFl) << 16) |1305((l1 & 0xFFFFl) << 32) |1306((l0 & 0xFFFFl) << 48);1307}1308}1309static void test_unpack4_swap(char[] a0, long[] p4) {1310if (p4.length*4 > a0.length) return;1311for (int i = 0; i < p4.length; i+=1) {1312long l = p4[i];1313a0[i*4+0] = (char)(l >> 48);1314a0[i*4+1] = (char)(l >> 32);1315a0[i*4+2] = (char)(l >> 16);1316a0[i*4+3] = (char)(l & 0xFFFFl);1317}1318}13191320static int verify(String text, int i, int elem, int val) {1321if (elem != val) {1322System.err.println(text + "[" + i + "] = " + elem + " != " + val);1323return 1;1324}1325return 0;1326}13271328static int verify(String text, int i, long elem, long val) {1329if (elem != val) {1330System.err.println(text + "[" + i + "] = " + Long.toHexString(elem) + " != " + Long.toHexString(val));1331return 1;1332}1333return 0;1334}1335}133613371338