Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/test/compiler/6340864/TestLongVect.java
32285 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*22*/2324/**25* @test26* @bug 634086427* @summary Implement vectorization optimizations in hotspot-server28*29* @run main/othervm/timeout=400 -Xbatch -Xmx64m TestLongVect30*/3132public class TestLongVect {33private static final int ARRLEN = 997;34private static final int ITERS = 11000;35private static final long ADD_INIT = Long.MAX_VALUE-500;36private static final long BIT_MASK = 0xEC80F731EC80F731L;37private static final int VALUE = 31;38private static final int SHIFT = 64;3940public static void main(String args[]) {41System.out.println("Testing Long vectors");42int errn = test();43if (errn > 0) {44System.err.println("FAILED: " + errn + " errors");45System.exit(97);46}47System.out.println("PASSED");48}4950static int test() {51long[] a0 = new long[ARRLEN];52long[] a1 = new long[ARRLEN];53long[] a2 = new long[ARRLEN];54long[] a3 = new long[ARRLEN];55long[] a4 = new long[ARRLEN];56// Initialize57long gold_sum = 0;58for (int i=0; i<ARRLEN; i++) {59long val = (long)(ADD_INIT+i);60gold_sum += val;61a1[i] = val;62a2[i] = (long)VALUE;63a3[i] = (long)-VALUE;64a4[i] = (long)BIT_MASK;65}66System.out.println("Warmup");67for (int i=0; i<ITERS; i++) {68test_sum(a1);69test_addc(a0, a1);70test_addv(a0, a1, (long)VALUE);71test_adda(a0, a1, a2);72test_subc(a0, a1);73test_subv(a0, a1, (long)VALUE);74test_suba(a0, a1, a2);7576test_mulc(a0, a1);77test_mulv(a0, a1, (long)VALUE);78test_mula(a0, a1, a2);79test_divc(a0, a1);80test_divv(a0, a1, (long)VALUE);81test_diva(a0, a1, a2);82test_mulc_n(a0, a1);83test_mulv(a0, a1, (long)-VALUE);84test_mula(a0, a1, a3);85test_divc_n(a0, a1);86test_divv(a0, a1, (long)-VALUE);87test_diva(a0, a1, a3);8889test_andc(a0, a1);90test_andv(a0, a1, (long)BIT_MASK);91test_anda(a0, a1, a4);92test_orc(a0, a1);93test_orv(a0, a1, (long)BIT_MASK);94test_ora(a0, a1, a4);95test_xorc(a0, a1);96test_xorv(a0, a1, (long)BIT_MASK);97test_xora(a0, a1, a4);9899test_sllc(a0, a1);100test_sllv(a0, a1, VALUE);101test_srlc(a0, a1);102test_srlv(a0, a1, VALUE);103test_srac(a0, a1);104test_srav(a0, a1, VALUE);105106test_sllc_n(a0, a1);107test_sllv(a0, a1, -VALUE);108test_srlc_n(a0, a1);109test_srlv(a0, a1, -VALUE);110test_srac_n(a0, a1);111test_srav(a0, a1, -VALUE);112113test_sllc_o(a0, a1);114test_sllv(a0, a1, SHIFT);115test_srlc_o(a0, a1);116test_srlv(a0, a1, SHIFT);117test_srac_o(a0, a1);118test_srav(a0, a1, SHIFT);119120test_sllc_on(a0, a1);121test_sllv(a0, a1, -SHIFT);122test_srlc_on(a0, a1);123test_srlv(a0, a1, -SHIFT);124test_srac_on(a0, a1);125test_srav(a0, a1, -SHIFT);126127test_sllc_add(a0, a1);128test_sllv_add(a0, a1, ADD_INIT);129test_srlc_add(a0, a1);130test_srlv_add(a0, a1, ADD_INIT);131test_srac_add(a0, a1);132test_srav_add(a0, a1, ADD_INIT);133134test_sllc_and(a0, a1);135test_sllv_and(a0, a1, BIT_MASK);136test_srlc_and(a0, a1);137test_srlv_and(a0, a1, BIT_MASK);138test_srac_and(a0, a1);139test_srav_and(a0, a1, BIT_MASK);140}141// Test and verify results142System.out.println("Verification");143int errn = 0;144{145long sum = test_sum(a1);146if (sum != gold_sum) {147System.err.println("test_sum: " + sum + " != " + gold_sum);148errn++;149}150151test_addc(a0, a1);152for (int i=0; i<ARRLEN; i++) {153errn += verify("test_addc: ", i, a0[i], (long)((long)(ADD_INIT+i)+VALUE));154}155test_addv(a0, a1, (long)VALUE);156for (int i=0; i<ARRLEN; i++) {157errn += verify("test_addv: ", i, a0[i], (long)((long)(ADD_INIT+i)+VALUE));158}159test_adda(a0, a1, a2);160for (int i=0; i<ARRLEN; i++) {161errn += verify("test_adda: ", i, a0[i], (long)((long)(ADD_INIT+i)+VALUE));162}163164test_subc(a0, a1);165for (int i=0; i<ARRLEN; i++) {166errn += verify("test_subc: ", i, a0[i], (long)((long)(ADD_INIT+i)-VALUE));167}168test_subv(a0, a1, (long)VALUE);169for (int i=0; i<ARRLEN; i++) {170errn += verify("test_subv: ", i, a0[i], (long)((long)(ADD_INIT+i)-VALUE));171}172test_suba(a0, a1, a2);173for (int i=0; i<ARRLEN; i++) {174errn += verify("test_suba: ", i, a0[i], (long)((long)(ADD_INIT+i)-VALUE));175}176177test_mulc(a0, a1);178for (int i=0; i<ARRLEN; i++) {179errn += verify("test_mulc: ", i, a0[i], (long)((long)(ADD_INIT+i)*VALUE));180}181test_mulv(a0, a1, (long)VALUE);182for (int i=0; i<ARRLEN; i++) {183errn += verify("test_mulv: ", i, a0[i], (long)((long)(ADD_INIT+i)*VALUE));184}185test_mula(a0, a1, a2);186for (int i=0; i<ARRLEN; i++) {187errn += verify("test_mula: ", i, a0[i], (long)((long)(ADD_INIT+i)*VALUE));188}189190test_divc(a0, a1);191for (int i=0; i<ARRLEN; i++) {192errn += verify("test_divc: ", i, a0[i], (long)((long)(ADD_INIT+i)/VALUE));193}194test_divv(a0, a1, (long)VALUE);195for (int i=0; i<ARRLEN; i++) {196errn += verify("test_divv: ", i, a0[i], (long)((long)(ADD_INIT+i)/VALUE));197}198test_diva(a0, a1, a2);199for (int i=0; i<ARRLEN; i++) {200errn += verify("test_diva: ", i, a0[i], (long)((long)(ADD_INIT+i)/VALUE));201}202203test_mulc_n(a0, a1);204for (int i=0; i<ARRLEN; i++) {205errn += verify("test_mulc_n: ", i, a0[i], (long)((long)(ADD_INIT+i)*(-VALUE)));206}207test_mulv(a0, a1, (long)-VALUE);208for (int i=0; i<ARRLEN; i++) {209errn += verify("test_mulv_n: ", i, a0[i], (long)((long)(ADD_INIT+i)*(-VALUE)));210}211test_mula(a0, a1, a3);212for (int i=0; i<ARRLEN; i++) {213errn += verify("test_mula_n: ", i, a0[i], (long)((long)(ADD_INIT+i)*(-VALUE)));214}215216test_divc_n(a0, a1);217for (int i=0; i<ARRLEN; i++) {218errn += verify("test_divc_n: ", i, a0[i], (long)((long)(ADD_INIT+i)/(-VALUE)));219}220test_divv(a0, a1, (long)-VALUE);221for (int i=0; i<ARRLEN; i++) {222errn += verify("test_divv_n: ", i, a0[i], (long)((long)(ADD_INIT+i)/(-VALUE)));223}224test_diva(a0, a1, a3);225for (int i=0; i<ARRLEN; i++) {226errn += verify("test_diva_n: ", i, a0[i], (long)((long)(ADD_INIT+i)/(-VALUE)));227}228229test_andc(a0, a1);230for (int i=0; i<ARRLEN; i++) {231errn += verify("test_andc: ", i, a0[i], (long)((long)(ADD_INIT+i)&BIT_MASK));232}233test_andv(a0, a1, (long)BIT_MASK);234for (int i=0; i<ARRLEN; i++) {235errn += verify("test_andv: ", i, a0[i], (long)((long)(ADD_INIT+i)&BIT_MASK));236}237test_anda(a0, a1, a4);238for (int i=0; i<ARRLEN; i++) {239errn += verify("test_anda: ", i, a0[i], (long)((long)(ADD_INIT+i)&BIT_MASK));240}241242test_orc(a0, a1);243for (int i=0; i<ARRLEN; i++) {244errn += verify("test_orc: ", i, a0[i], (long)((long)(ADD_INIT+i)|BIT_MASK));245}246test_orv(a0, a1, (long)BIT_MASK);247for (int i=0; i<ARRLEN; i++) {248errn += verify("test_orv: ", i, a0[i], (long)((long)(ADD_INIT+i)|BIT_MASK));249}250test_ora(a0, a1, a4);251for (int i=0; i<ARRLEN; i++) {252errn += verify("test_ora: ", i, a0[i], (long)((long)(ADD_INIT+i)|BIT_MASK));253}254255test_xorc(a0, a1);256for (int i=0; i<ARRLEN; i++) {257errn += verify("test_xorc: ", i, a0[i], (long)((long)(ADD_INIT+i)^BIT_MASK));258}259test_xorv(a0, a1, (long)BIT_MASK);260for (int i=0; i<ARRLEN; i++) {261errn += verify("test_xorv: ", i, a0[i], (long)((long)(ADD_INIT+i)^BIT_MASK));262}263test_xora(a0, a1, a4);264for (int i=0; i<ARRLEN; i++) {265errn += verify("test_xora: ", i, a0[i], (long)((long)(ADD_INIT+i)^BIT_MASK));266}267268test_sllc(a0, a1);269for (int i=0; i<ARRLEN; i++) {270errn += verify("test_sllc: ", i, a0[i], (long)((long)(ADD_INIT+i)<<VALUE));271}272test_sllv(a0, a1, VALUE);273for (int i=0; i<ARRLEN; i++) {274errn += verify("test_sllv: ", i, a0[i], (long)((long)(ADD_INIT+i)<<VALUE));275}276277test_srlc(a0, a1);278for (int i=0; i<ARRLEN; i++) {279errn += verify("test_srlc: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>VALUE));280}281test_srlv(a0, a1, VALUE);282for (int i=0; i<ARRLEN; i++) {283errn += verify("test_srlv: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>VALUE));284}285286test_srac(a0, a1);287for (int i=0; i<ARRLEN; i++) {288errn += verify("test_srac: ", i, a0[i], (long)((long)(ADD_INIT+i)>>VALUE));289}290test_srav(a0, a1, VALUE);291for (int i=0; i<ARRLEN; i++) {292errn += verify("test_srav: ", i, a0[i], (long)((long)(ADD_INIT+i)>>VALUE));293}294295test_sllc_n(a0, a1);296for (int i=0; i<ARRLEN; i++) {297errn += verify("test_sllc_n: ", i, a0[i], (long)((long)(ADD_INIT+i)<<(-VALUE)));298}299test_sllv(a0, a1, -VALUE);300for (int i=0; i<ARRLEN; i++) {301errn += verify("test_sllv_n: ", i, a0[i], (long)((long)(ADD_INIT+i)<<(-VALUE)));302}303304test_srlc_n(a0, a1);305for (int i=0; i<ARRLEN; i++) {306errn += verify("test_srlc_n: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>(-VALUE)));307}308test_srlv(a0, a1, -VALUE);309for (int i=0; i<ARRLEN; i++) {310errn += verify("test_srlv_n: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>(-VALUE)));311}312313test_srac_n(a0, a1);314for (int i=0; i<ARRLEN; i++) {315errn += verify("test_srac_n: ", i, a0[i], (long)((long)(ADD_INIT+i)>>(-VALUE)));316}317test_srav(a0, a1, -VALUE);318for (int i=0; i<ARRLEN; i++) {319errn += verify("test_srav_n: ", i, a0[i], (long)((long)(ADD_INIT+i)>>(-VALUE)));320}321322test_sllc_o(a0, a1);323for (int i=0; i<ARRLEN; i++) {324errn += verify("test_sllc_o: ", i, a0[i], (long)((long)(ADD_INIT+i)<<SHIFT));325}326test_sllv(a0, a1, SHIFT);327for (int i=0; i<ARRLEN; i++) {328errn += verify("test_sllv_o: ", i, a0[i], (long)((long)(ADD_INIT+i)<<SHIFT));329}330331test_srlc_o(a0, a1);332for (int i=0; i<ARRLEN; i++) {333errn += verify("test_srlc_o: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>SHIFT));334}335test_srlv(a0, a1, SHIFT);336for (int i=0; i<ARRLEN; i++) {337errn += verify("test_srlv_o: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>SHIFT));338}339340test_srac_o(a0, a1);341for (int i=0; i<ARRLEN; i++) {342errn += verify("test_srac_o: ", i, a0[i], (long)((long)(ADD_INIT+i)>>SHIFT));343}344test_srav(a0, a1, SHIFT);345for (int i=0; i<ARRLEN; i++) {346errn += verify("test_srav_o: ", i, a0[i], (long)((long)(ADD_INIT+i)>>SHIFT));347}348349test_sllc_on(a0, a1);350for (int i=0; i<ARRLEN; i++) {351errn += verify("test_sllc_on: ", i, a0[i], (long)((long)(ADD_INIT+i)<<(-SHIFT)));352}353test_sllv(a0, a1, -SHIFT);354for (int i=0; i<ARRLEN; i++) {355errn += verify("test_sllv_on: ", i, a0[i], (long)((long)(ADD_INIT+i)<<(-SHIFT)));356}357358test_srlc_on(a0, a1);359for (int i=0; i<ARRLEN; i++) {360errn += verify("test_srlc_on: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>(-SHIFT)));361}362test_srlv(a0, a1, -SHIFT);363for (int i=0; i<ARRLEN; i++) {364errn += verify("test_srlv_on: ", i, a0[i], (long)((long)(ADD_INIT+i)>>>(-SHIFT)));365}366367test_srac_on(a0, a1);368for (int i=0; i<ARRLEN; i++) {369errn += verify("test_srac_on: ", i, a0[i], (long)((long)(ADD_INIT+i)>>(-SHIFT)));370}371test_srav(a0, a1, -SHIFT);372for (int i=0; i<ARRLEN; i++) {373errn += verify("test_srav_on: ", i, a0[i], (long)((long)(ADD_INIT+i)>>(-SHIFT)));374}375376test_sllc_add(a0, a1);377for (int i=0; i<ARRLEN; i++) {378errn += verify("test_sllc_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)<<VALUE));379}380test_sllv_add(a0, a1, ADD_INIT);381for (int i=0; i<ARRLEN; i++) {382errn += verify("test_sllv_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)<<VALUE));383}384385test_srlc_add(a0, a1);386for (int i=0; i<ARRLEN; i++) {387errn += verify("test_srlc_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>>VALUE));388}389test_srlv_add(a0, a1, ADD_INIT);390for (int i=0; i<ARRLEN; i++) {391errn += verify("test_srlv_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>>VALUE));392}393394test_srac_add(a0, a1);395for (int i=0; i<ARRLEN; i++) {396errn += verify("test_srac_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>VALUE));397}398test_srav_add(a0, a1, ADD_INIT);399for (int i=0; i<ARRLEN; i++) {400errn += verify("test_srav_add: ", i, a0[i], (long)(((long)(ADD_INIT+i) + ADD_INIT)>>VALUE));401}402403test_sllc_and(a0, a1);404for (int i=0; i<ARRLEN; i++) {405errn += verify("test_sllc_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)<<VALUE));406}407test_sllv_and(a0, a1, BIT_MASK);408for (int i=0; i<ARRLEN; i++) {409errn += verify("test_sllv_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)<<VALUE));410}411412test_srlc_and(a0, a1);413for (int i=0; i<ARRLEN; i++) {414errn += verify("test_srlc_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>>VALUE));415}416test_srlv_and(a0, a1, BIT_MASK);417for (int i=0; i<ARRLEN; i++) {418errn += verify("test_srlv_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>>VALUE));419}420421test_srac_and(a0, a1);422for (int i=0; i<ARRLEN; i++) {423errn += verify("test_srac_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>VALUE));424}425test_srav_and(a0, a1, BIT_MASK);426for (int i=0; i<ARRLEN; i++) {427errn += verify("test_srav_and: ", i, a0[i], (long)(((long)(ADD_INIT+i) & BIT_MASK)>>VALUE));428}429430}431432if (errn > 0)433return errn;434435System.out.println("Time");436long start, end;437438start = System.currentTimeMillis();439for (int i=0; i<ITERS; i++) {440test_sum(a1);441}442end = System.currentTimeMillis();443System.out.println("test_sum: " + (end - start));444445start = System.currentTimeMillis();446for (int i=0; i<ITERS; i++) {447test_addc(a0, a1);448}449end = System.currentTimeMillis();450System.out.println("test_addc: " + (end - start));451start = System.currentTimeMillis();452for (int i=0; i<ITERS; i++) {453test_addv(a0, a1, (long)VALUE);454}455end = System.currentTimeMillis();456System.out.println("test_addv: " + (end - start));457start = System.currentTimeMillis();458for (int i=0; i<ITERS; i++) {459test_adda(a0, a1, a2);460}461end = System.currentTimeMillis();462System.out.println("test_adda: " + (end - start));463464start = System.currentTimeMillis();465for (int i=0; i<ITERS; i++) {466test_subc(a0, a1);467}468end = System.currentTimeMillis();469System.out.println("test_subc: " + (end - start));470start = System.currentTimeMillis();471for (int i=0; i<ITERS; i++) {472test_subv(a0, a1, (long)VALUE);473}474end = System.currentTimeMillis();475System.out.println("test_subv: " + (end - start));476start = System.currentTimeMillis();477for (int i=0; i<ITERS; i++) {478test_suba(a0, a1, a2);479}480end = System.currentTimeMillis();481System.out.println("test_suba: " + (end - start));482483start = System.currentTimeMillis();484for (int i=0; i<ITERS; i++) {485test_mulc(a0, a1);486}487end = System.currentTimeMillis();488System.out.println("test_mulc: " + (end - start));489start = System.currentTimeMillis();490for (int i=0; i<ITERS; i++) {491test_mulv(a0, a1, (long)VALUE);492}493end = System.currentTimeMillis();494System.out.println("test_mulv: " + (end - start));495start = System.currentTimeMillis();496for (int i=0; i<ITERS; i++) {497test_mula(a0, a1, a2);498}499end = System.currentTimeMillis();500System.out.println("test_mula: " + (end - start));501502start = System.currentTimeMillis();503for (int i=0; i<ITERS; i++) {504test_divc(a0, a1);505}506end = System.currentTimeMillis();507System.out.println("test_divc: " + (end - start));508start = System.currentTimeMillis();509for (int i=0; i<ITERS; i++) {510test_divv(a0, a1, (long)VALUE);511}512end = System.currentTimeMillis();513System.out.println("test_divv: " + (end - start));514start = System.currentTimeMillis();515for (int i=0; i<ITERS; i++) {516test_diva(a0, a1, a2);517}518end = System.currentTimeMillis();519System.out.println("test_diva: " + (end - start));520521start = System.currentTimeMillis();522for (int i=0; i<ITERS; i++) {523test_mulc_n(a0, a1);524}525end = System.currentTimeMillis();526System.out.println("test_mulc_n: " + (end - start));527start = System.currentTimeMillis();528for (int i=0; i<ITERS; i++) {529test_mulv(a0, a1, (long)-VALUE);530}531end = System.currentTimeMillis();532System.out.println("test_mulv_n: " + (end - start));533start = System.currentTimeMillis();534for (int i=0; i<ITERS; i++) {535test_mula(a0, a1, a3);536}537end = System.currentTimeMillis();538System.out.println("test_mula_n: " + (end - start));539540start = System.currentTimeMillis();541for (int i=0; i<ITERS; i++) {542test_divc_n(a0, a1);543}544end = System.currentTimeMillis();545System.out.println("test_divc_n: " + (end - start));546start = System.currentTimeMillis();547for (int i=0; i<ITERS; i++) {548test_divv(a0, a1, (long)-VALUE);549}550end = System.currentTimeMillis();551System.out.println("test_divv_n: " + (end - start));552start = System.currentTimeMillis();553for (int i=0; i<ITERS; i++) {554test_diva(a0, a1, a3);555}556end = System.currentTimeMillis();557System.out.println("test_diva_n: " + (end - start));558559start = System.currentTimeMillis();560for (int i=0; i<ITERS; i++) {561test_andc(a0, a1);562}563end = System.currentTimeMillis();564System.out.println("test_andc: " + (end - start));565start = System.currentTimeMillis();566for (int i=0; i<ITERS; i++) {567test_andv(a0, a1, (long)BIT_MASK);568}569end = System.currentTimeMillis();570System.out.println("test_andv: " + (end - start));571start = System.currentTimeMillis();572for (int i=0; i<ITERS; i++) {573test_anda(a0, a1, a4);574}575end = System.currentTimeMillis();576System.out.println("test_anda: " + (end - start));577578start = System.currentTimeMillis();579for (int i=0; i<ITERS; i++) {580test_orc(a0, a1);581}582end = System.currentTimeMillis();583System.out.println("test_orc: " + (end - start));584start = System.currentTimeMillis();585for (int i=0; i<ITERS; i++) {586test_orv(a0, a1, (long)BIT_MASK);587}588end = System.currentTimeMillis();589System.out.println("test_orv: " + (end - start));590start = System.currentTimeMillis();591for (int i=0; i<ITERS; i++) {592test_ora(a0, a1, a4);593}594end = System.currentTimeMillis();595System.out.println("test_ora: " + (end - start));596597start = System.currentTimeMillis();598for (int i=0; i<ITERS; i++) {599test_xorc(a0, a1);600}601end = System.currentTimeMillis();602System.out.println("test_xorc: " + (end - start));603start = System.currentTimeMillis();604for (int i=0; i<ITERS; i++) {605test_xorv(a0, a1, (long)BIT_MASK);606}607end = System.currentTimeMillis();608System.out.println("test_xorv: " + (end - start));609start = System.currentTimeMillis();610for (int i=0; i<ITERS; i++) {611test_xora(a0, a1, a4);612}613end = System.currentTimeMillis();614System.out.println("test_xora: " + (end - start));615616start = System.currentTimeMillis();617for (int i=0; i<ITERS; i++) {618test_sllc(a0, a1);619}620end = System.currentTimeMillis();621System.out.println("test_sllc: " + (end - start));622start = System.currentTimeMillis();623for (int i=0; i<ITERS; i++) {624test_sllv(a0, a1, VALUE);625}626end = System.currentTimeMillis();627System.out.println("test_sllv: " + (end - start));628629start = System.currentTimeMillis();630for (int i=0; i<ITERS; i++) {631test_srlc(a0, a1);632}633end = System.currentTimeMillis();634System.out.println("test_srlc: " + (end - start));635start = System.currentTimeMillis();636for (int i=0; i<ITERS; i++) {637test_srlv(a0, a1, VALUE);638}639end = System.currentTimeMillis();640System.out.println("test_srlv: " + (end - start));641642start = System.currentTimeMillis();643for (int i=0; i<ITERS; i++) {644test_srac(a0, a1);645}646end = System.currentTimeMillis();647System.out.println("test_srac: " + (end - start));648start = System.currentTimeMillis();649for (int i=0; i<ITERS; i++) {650test_srav(a0, a1, VALUE);651}652end = System.currentTimeMillis();653System.out.println("test_srav: " + (end - start));654655start = System.currentTimeMillis();656for (int i=0; i<ITERS; i++) {657test_sllc_n(a0, a1);658}659end = System.currentTimeMillis();660System.out.println("test_sllc_n: " + (end - start));661start = System.currentTimeMillis();662for (int i=0; i<ITERS; i++) {663test_sllv(a0, a1, -VALUE);664}665end = System.currentTimeMillis();666System.out.println("test_sllv_n: " + (end - start));667668start = System.currentTimeMillis();669for (int i=0; i<ITERS; i++) {670test_srlc_n(a0, a1);671}672end = System.currentTimeMillis();673System.out.println("test_srlc_n: " + (end - start));674start = System.currentTimeMillis();675for (int i=0; i<ITERS; i++) {676test_srlv(a0, a1, -VALUE);677}678end = System.currentTimeMillis();679System.out.println("test_srlv_n: " + (end - start));680681start = System.currentTimeMillis();682for (int i=0; i<ITERS; i++) {683test_srac_n(a0, a1);684}685end = System.currentTimeMillis();686System.out.println("test_srac_n: " + (end - start));687start = System.currentTimeMillis();688for (int i=0; i<ITERS; i++) {689test_srav(a0, a1, -VALUE);690}691end = System.currentTimeMillis();692System.out.println("test_srav_n: " + (end - start));693694start = System.currentTimeMillis();695for (int i=0; i<ITERS; i++) {696test_sllc_o(a0, a1);697}698end = System.currentTimeMillis();699System.out.println("test_sllc_o: " + (end - start));700start = System.currentTimeMillis();701for (int i=0; i<ITERS; i++) {702test_sllv(a0, a1, SHIFT);703}704end = System.currentTimeMillis();705System.out.println("test_sllv_o: " + (end - start));706707start = System.currentTimeMillis();708for (int i=0; i<ITERS; i++) {709test_srlc_o(a0, a1);710}711end = System.currentTimeMillis();712System.out.println("test_srlc_o: " + (end - start));713start = System.currentTimeMillis();714for (int i=0; i<ITERS; i++) {715test_srlv(a0, a1, SHIFT);716}717end = System.currentTimeMillis();718System.out.println("test_srlv_o: " + (end - start));719720start = System.currentTimeMillis();721for (int i=0; i<ITERS; i++) {722test_srac_o(a0, a1);723}724end = System.currentTimeMillis();725System.out.println("test_srac_o: " + (end - start));726start = System.currentTimeMillis();727for (int i=0; i<ITERS; i++) {728test_srav(a0, a1, SHIFT);729}730end = System.currentTimeMillis();731System.out.println("test_srav_o: " + (end - start));732733start = System.currentTimeMillis();734for (int i=0; i<ITERS; i++) {735test_sllc_on(a0, a1);736}737end = System.currentTimeMillis();738System.out.println("test_sllc_on: " + (end - start));739start = System.currentTimeMillis();740for (int i=0; i<ITERS; i++) {741test_sllv(a0, a1, -SHIFT);742}743end = System.currentTimeMillis();744System.out.println("test_sllv_on: " + (end - start));745746start = System.currentTimeMillis();747for (int i=0; i<ITERS; i++) {748test_srlc_on(a0, a1);749}750end = System.currentTimeMillis();751System.out.println("test_srlc_on: " + (end - start));752start = System.currentTimeMillis();753for (int i=0; i<ITERS; i++) {754test_srlv(a0, a1, -SHIFT);755}756end = System.currentTimeMillis();757System.out.println("test_srlv_on: " + (end - start));758759start = System.currentTimeMillis();760for (int i=0; i<ITERS; i++) {761test_srac_on(a0, a1);762}763end = System.currentTimeMillis();764System.out.println("test_srac_on: " + (end - start));765start = System.currentTimeMillis();766for (int i=0; i<ITERS; i++) {767test_srav(a0, a1, -SHIFT);768}769end = System.currentTimeMillis();770System.out.println("test_srav_on: " + (end - start));771772start = System.currentTimeMillis();773for (int i=0; i<ITERS; i++) {774test_sllc_add(a0, a1);775}776end = System.currentTimeMillis();777System.out.println("test_sllc_add: " + (end - start));778start = System.currentTimeMillis();779for (int i=0; i<ITERS; i++) {780test_sllv_add(a0, a1, ADD_INIT);781}782end = System.currentTimeMillis();783System.out.println("test_sllv_add: " + (end - start));784785start = System.currentTimeMillis();786for (int i=0; i<ITERS; i++) {787test_srlc_add(a0, a1);788}789end = System.currentTimeMillis();790System.out.println("test_srlc_add: " + (end - start));791start = System.currentTimeMillis();792for (int i=0; i<ITERS; i++) {793test_srlv_add(a0, a1, ADD_INIT);794}795end = System.currentTimeMillis();796System.out.println("test_srlv_add: " + (end - start));797798start = System.currentTimeMillis();799for (int i=0; i<ITERS; i++) {800test_srac_add(a0, a1);801}802end = System.currentTimeMillis();803System.out.println("test_srac_add: " + (end - start));804start = System.currentTimeMillis();805for (int i=0; i<ITERS; i++) {806test_srav_add(a0, a1, ADD_INIT);807}808end = System.currentTimeMillis();809System.out.println("test_srav_add: " + (end - start));810811start = System.currentTimeMillis();812for (int i=0; i<ITERS; i++) {813test_sllc_and(a0, a1);814}815end = System.currentTimeMillis();816System.out.println("test_sllc_and: " + (end - start));817start = System.currentTimeMillis();818for (int i=0; i<ITERS; i++) {819test_sllv_and(a0, a1, BIT_MASK);820}821end = System.currentTimeMillis();822System.out.println("test_sllv_and: " + (end - start));823824start = System.currentTimeMillis();825for (int i=0; i<ITERS; i++) {826test_srlc_and(a0, a1);827}828end = System.currentTimeMillis();829System.out.println("test_srlc_and: " + (end - start));830start = System.currentTimeMillis();831for (int i=0; i<ITERS; i++) {832test_srlv_and(a0, a1, BIT_MASK);833}834end = System.currentTimeMillis();835System.out.println("test_srlv_and: " + (end - start));836837start = System.currentTimeMillis();838for (int i=0; i<ITERS; i++) {839test_srac_and(a0, a1);840}841end = System.currentTimeMillis();842System.out.println("test_srac_and: " + (end - start));843start = System.currentTimeMillis();844for (int i=0; i<ITERS; i++) {845test_srav_and(a0, a1, BIT_MASK);846}847end = System.currentTimeMillis();848System.out.println("test_srav_and: " + (end - start));849850return errn;851}852853static long test_sum(long[] a1) {854long sum = 0;855for (int i = 0; i < a1.length; i+=1) {856sum += a1[i];857}858return sum;859}860861static void test_addc(long[] a0, long[] a1) {862for (int i = 0; i < a0.length; i+=1) {863a0[i] = (long)(a1[i]+VALUE);864}865}866static void test_addv(long[] a0, long[] a1, long b) {867for (int i = 0; i < a0.length; i+=1) {868a0[i] = (long)(a1[i]+b);869}870}871static void test_adda(long[] a0, long[] a1, long[] a2) {872for (int i = 0; i < a0.length; i+=1) {873a0[i] = (long)(a1[i]+a2[i]);874}875}876877static void test_subc(long[] a0, long[] a1) {878for (int i = 0; i < a0.length; i+=1) {879a0[i] = (long)(a1[i]-VALUE);880}881}882static void test_subv(long[] a0, long[] a1, long b) {883for (int i = 0; i < a0.length; i+=1) {884a0[i] = (long)(a1[i]-b);885}886}887static void test_suba(long[] a0, long[] a1, long[] a2) {888for (int i = 0; i < a0.length; i+=1) {889a0[i] = (long)(a1[i]-a2[i]);890}891}892893static void test_mulc(long[] a0, long[] a1) {894for (int i = 0; i < a0.length; i+=1) {895a0[i] = (long)(a1[i]*VALUE);896}897}898static void test_mulc_n(long[] a0, long[] a1) {899for (int i = 0; i < a0.length; i+=1) {900a0[i] = (long)(a1[i]*(-VALUE));901}902}903static void test_mulv(long[] a0, long[] a1, long b) {904for (int i = 0; i < a0.length; i+=1) {905a0[i] = (long)(a1[i]*b);906}907}908static void test_mula(long[] a0, long[] a1, long[] a2) {909for (int i = 0; i < a0.length; i+=1) {910a0[i] = (long)(a1[i]*a2[i]);911}912}913914static void test_divc(long[] a0, long[] a1) {915for (int i = 0; i < a0.length; i+=1) {916a0[i] = (long)(a1[i]/VALUE);917}918}919static void test_divc_n(long[] a0, long[] a1) {920for (int i = 0; i < a0.length; i+=1) {921a0[i] = (long)(a1[i]/(-VALUE));922}923}924static void test_divv(long[] a0, long[] a1, long b) {925for (int i = 0; i < a0.length; i+=1) {926a0[i] = (long)(a1[i]/b);927}928}929static void test_diva(long[] a0, long[] a1, long[] a2) {930for (int i = 0; i < a0.length; i+=1) {931a0[i] = (long)(a1[i]/a2[i]);932}933}934935static void test_andc(long[] a0, long[] a1) {936for (int i = 0; i < a0.length; i+=1) {937a0[i] = (long)(a1[i]&BIT_MASK);938}939}940static void test_andv(long[] a0, long[] a1, long b) {941for (int i = 0; i < a0.length; i+=1) {942a0[i] = (long)(a1[i]&b);943}944}945static void test_anda(long[] a0, long[] a1, long[] a2) {946for (int i = 0; i < a0.length; i+=1) {947a0[i] = (long)(a1[i]&a2[i]);948}949}950951static void test_orc(long[] a0, long[] a1) {952for (int i = 0; i < a0.length; i+=1) {953a0[i] = (long)(a1[i]|BIT_MASK);954}955}956static void test_orv(long[] a0, long[] a1, long b) {957for (int i = 0; i < a0.length; i+=1) {958a0[i] = (long)(a1[i]|b);959}960}961static void test_ora(long[] a0, long[] a1, long[] a2) {962for (int i = 0; i < a0.length; i+=1) {963a0[i] = (long)(a1[i]|a2[i]);964}965}966967static void test_xorc(long[] a0, long[] a1) {968for (int i = 0; i < a0.length; i+=1) {969a0[i] = (long)(a1[i]^BIT_MASK);970}971}972static void test_xorv(long[] a0, long[] a1, long b) {973for (int i = 0; i < a0.length; i+=1) {974a0[i] = (long)(a1[i]^b);975}976}977static void test_xora(long[] a0, long[] a1, long[] a2) {978for (int i = 0; i < a0.length; i+=1) {979a0[i] = (long)(a1[i]^a2[i]);980}981}982983static void test_sllc(long[] a0, long[] a1) {984for (int i = 0; i < a0.length; i+=1) {985a0[i] = (long)(a1[i]<<VALUE);986}987}988static void test_sllc_n(long[] a0, long[] a1) {989for (int i = 0; i < a0.length; i+=1) {990a0[i] = (long)(a1[i]<<(-VALUE));991}992}993static void test_sllc_o(long[] a0, long[] a1) {994for (int i = 0; i < a0.length; i+=1) {995a0[i] = (long)(a1[i]<<SHIFT);996}997}998static void test_sllc_on(long[] a0, long[] a1) {999for (int i = 0; i < a0.length; i+=1) {1000a0[i] = (long)(a1[i]<<(-SHIFT));1001}1002}1003static void test_sllv(long[] a0, long[] a1, int b) {1004for (int i = 0; i < a0.length; i+=1) {1005a0[i] = (long)(a1[i]<<b);1006}1007}1008static void test_sllc_add(long[] a0, long[] a1) {1009for (int i = 0; i < a0.length; i+=1) {1010a0[i] = (long)((a1[i] + ADD_INIT)<<VALUE);1011}1012}1013static void test_sllv_add(long[] a0, long[] a1, long b) {1014for (int i = 0; i < a0.length; i+=1) {1015a0[i] = (long)((a1[i] + b)<<VALUE);1016}1017}1018static void test_sllc_and(long[] a0, long[] a1) {1019for (int i = 0; i < a0.length; i+=1) {1020a0[i] = (long)((a1[i] & BIT_MASK)<<VALUE);1021}1022}1023static void test_sllv_and(long[] a0, long[] a1, long b) {1024for (int i = 0; i < a0.length; i+=1) {1025a0[i] = (long)((a1[i] & b)<<VALUE);1026}1027}10281029static void test_srlc(long[] a0, long[] a1) {1030for (int i = 0; i < a0.length; i+=1) {1031a0[i] = (long)(a1[i]>>>VALUE);1032}1033}1034static void test_srlc_n(long[] a0, long[] a1) {1035for (int i = 0; i < a0.length; i+=1) {1036a0[i] = (long)(a1[i]>>>(-VALUE));1037}1038}1039static void test_srlc_o(long[] a0, long[] a1) {1040for (int i = 0; i < a0.length; i+=1) {1041a0[i] = (long)(a1[i]>>>SHIFT);1042}1043}1044static void test_srlc_on(long[] a0, long[] a1) {1045for (int i = 0; i < a0.length; i+=1) {1046a0[i] = (long)(a1[i]>>>(-SHIFT));1047}1048}1049static void test_srlv(long[] a0, long[] a1, int b) {1050for (int i = 0; i < a0.length; i+=1) {1051a0[i] = (long)(a1[i]>>>b);1052}1053}1054static void test_srlc_add(long[] a0, long[] a1) {1055for (int i = 0; i < a0.length; i+=1) {1056a0[i] = (long)((a1[i] + ADD_INIT)>>>VALUE);1057}1058}1059static void test_srlv_add(long[] a0, long[] a1, long b) {1060for (int i = 0; i < a0.length; i+=1) {1061a0[i] = (long)((a1[i] + b)>>>VALUE);1062}1063}1064static void test_srlc_and(long[] a0, long[] a1) {1065for (int i = 0; i < a0.length; i+=1) {1066a0[i] = (long)((a1[i] & BIT_MASK)>>>VALUE);1067}1068}1069static void test_srlv_and(long[] a0, long[] a1, long b) {1070for (int i = 0; i < a0.length; i+=1) {1071a0[i] = (long)((a1[i] & b)>>>VALUE);1072}1073}10741075static void test_srac(long[] a0, long[] a1) {1076for (int i = 0; i < a0.length; i+=1) {1077a0[i] = (long)(a1[i]>>VALUE);1078}1079}1080static void test_srac_n(long[] a0, long[] a1) {1081for (int i = 0; i < a0.length; i+=1) {1082a0[i] = (long)(a1[i]>>(-VALUE));1083}1084}1085static void test_srac_o(long[] a0, long[] a1) {1086for (int i = 0; i < a0.length; i+=1) {1087a0[i] = (long)(a1[i]>>SHIFT);1088}1089}1090static void test_srac_on(long[] a0, long[] a1) {1091for (int i = 0; i < a0.length; i+=1) {1092a0[i] = (long)(a1[i]>>(-SHIFT));1093}1094}1095static void test_srav(long[] a0, long[] a1, int b) {1096for (int i = 0; i < a0.length; i+=1) {1097a0[i] = (long)(a1[i]>>b);1098}1099}1100static void test_srac_add(long[] a0, long[] a1) {1101for (int i = 0; i < a0.length; i+=1) {1102a0[i] = (long)((a1[i] + ADD_INIT)>>VALUE);1103}1104}1105static void test_srav_add(long[] a0, long[] a1, long b) {1106for (int i = 0; i < a0.length; i+=1) {1107a0[i] = (long)((a1[i] + b)>>VALUE);1108}1109}1110static void test_srac_and(long[] a0, long[] a1) {1111for (int i = 0; i < a0.length; i+=1) {1112a0[i] = (long)((a1[i] & BIT_MASK)>>VALUE);1113}1114}1115static void test_srav_and(long[] a0, long[] a1, long b) {1116for (int i = 0; i < a0.length; i+=1) {1117a0[i] = (long)((a1[i] & b)>>VALUE);1118}1119}11201121static int verify(String text, int i, long elem, long val) {1122if (elem != val) {1123System.err.println(text + "[" + i + "] = " + elem + " != " + val);1124return 1;1125}1126return 0;1127}1128}112911301131