Path: blob/master/test/hotspot/jtreg/compiler/codegen/TestCharVect.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 711964426* @summary Increase superword's vector size up to 256 bits27*28* @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions29* -XX:-TieredCompilation -XX:-OptimizeFill30* compiler.codegen.TestCharVect31*/3233package compiler.codegen;3435public class TestCharVect {36private static final int ARRLEN = 997;37private static final int ITERS = 11000;38private static final int OFFSET = 3;39private static final int SCALE = 2;40private static final int ALIGN_OFF = 8;41private static final int UNALIGN_OFF = 5;4243public static void main(String args[]) {44System.out.println("Testing Char vectors");45int errn = test();46if (errn > 0) {47System.err.println("FAILED: " + errn + " errors");48System.exit(97);49}50System.out.println("PASSED");51}5253static int test() {54char[] a1 = new char[ARRLEN];55char[] a2 = new char[ARRLEN];56System.out.println("Warmup");57for (int i=0; i<ITERS; i++) {58test_ci(a1);59test_vi(a2, (char)123);60test_cp(a1, a2);61test_2ci(a1, a2);62test_2vi(a1, a2, (char)123, (char)103);63test_ci_neg(a1);64test_vi_neg(a2, (char)123);65test_cp_neg(a1, a2);66test_2ci_neg(a1, a2);67test_2vi_neg(a1, a2, (char)123, (char)103);68test_ci_oppos(a1);69test_vi_oppos(a2, (char)123);70test_cp_oppos(a1, a2);71test_2ci_oppos(a1, a2);72test_2vi_oppos(a1, a2, (char)123, (char)103);73test_ci_off(a1);74test_vi_off(a2, (char)123);75test_cp_off(a1, a2);76test_2ci_off(a1, a2);77test_2vi_off(a1, a2, (char)123, (char)103);78test_ci_inv(a1, OFFSET);79test_vi_inv(a2, (char)123, OFFSET);80test_cp_inv(a1, a2, OFFSET);81test_2ci_inv(a1, a2, OFFSET);82test_2vi_inv(a1, a2, (char)123, (char)103, OFFSET);83test_ci_scl(a1);84test_vi_scl(a2, (char)123);85test_cp_scl(a1, a2);86test_2ci_scl(a1, a2);87test_2vi_scl(a1, a2, (char)123, (char)103);88test_cp_alndst(a1, a2);89test_cp_alnsrc(a1, a2);90test_2ci_aln(a1, a2);91test_2vi_aln(a1, a2, (char)123, (char)103);92test_cp_unalndst(a1, a2);93test_cp_unalnsrc(a1, a2);94test_2ci_unaln(a1, a2);95test_2vi_unaln(a1, a2, (char)123, (char)103);96}97// Initialize98for (int i=0; i<ARRLEN; i++) {99a1[i] = (char)-1;100a2[i] = (char)-1;101}102// Test and verify results103System.out.println("Verification");104int errn = 0;105{106test_ci(a1);107for (int i=0; i<ARRLEN; i++) {108errn += verify("test_ci: a1", i, a1[i], (char)-123);109}110test_vi(a2, (char)123);111for (int i=0; i<ARRLEN; i++) {112errn += verify("test_vi: a2", i, a2[i], (char)123);113}114test_cp(a1, a2);115for (int i=0; i<ARRLEN; i++) {116errn += verify("test_cp: a1", i, a1[i], (char)123);117}118test_2ci(a1, a2);119for (int i=0; i<ARRLEN; i++) {120errn += verify("test_2ci: a1", i, a1[i], (char)-123);121errn += verify("test_2ci: a2", i, a2[i], (char)-103);122}123test_2vi(a1, a2, (char)123, (char)103);124for (int i=0; i<ARRLEN; i++) {125errn += verify("test_2vi: a1", i, a1[i], (char)123);126errn += verify("test_2vi: a2", i, a2[i], (char)103);127}128// Reset for negative stride129for (int i=0; i<ARRLEN; i++) {130a1[i] = (char)-1;131a2[i] = (char)-1;132}133test_ci_neg(a1);134for (int i=0; i<ARRLEN; i++) {135errn += verify("test_ci_neg: a1", i, a1[i], (char)-123);136}137test_vi_neg(a2, (char)123);138for (int i=0; i<ARRLEN; i++) {139errn += verify("test_vi_neg: a2", i, a2[i], (char)123);140}141test_cp_neg(a1, a2);142for (int i=0; i<ARRLEN; i++) {143errn += verify("test_cp_neg: a1", i, a1[i], (char)123);144}145test_2ci_neg(a1, a2);146for (int i=0; i<ARRLEN; i++) {147errn += verify("test_2ci_neg: a1", i, a1[i], (char)-123);148errn += verify("test_2ci_neg: a2", i, a2[i], (char)-103);149}150test_2vi_neg(a1, a2, (char)123, (char)103);151for (int i=0; i<ARRLEN; i++) {152errn += verify("test_2vi_neg: a1", i, a1[i], (char)123);153errn += verify("test_2vi_neg: a2", i, a2[i], (char)103);154}155// Reset for opposite stride156for (int i=0; i<ARRLEN; i++) {157a1[i] = (char)-1;158a2[i] = (char)-1;159}160test_ci_oppos(a1);161for (int i=0; i<ARRLEN; i++) {162errn += verify("test_ci_oppos: a1", i, a1[i], (char)-123);163}164test_vi_oppos(a2, (char)123);165for (int i=0; i<ARRLEN; i++) {166errn += verify("test_vi_oppos: a2", i, a2[i], (char)123);167}168test_cp_oppos(a1, a2);169for (int i=0; i<ARRLEN; i++) {170errn += verify("test_cp_oppos: a1", i, a1[i], (char)123);171}172test_2ci_oppos(a1, a2);173for (int i=0; i<ARRLEN; i++) {174errn += verify("test_2ci_oppos: a1", i, a1[i], (char)-123);175errn += verify("test_2ci_oppos: a2", i, a2[i], (char)-103);176}177test_2vi_oppos(a1, a2, (char)123, (char)103);178for (int i=0; i<ARRLEN; i++) {179errn += verify("test_2vi_oppos: a1", i, a1[i], (char)123);180errn += verify("test_2vi_oppos: a2", i, a2[i], (char)103);181}182// Reset for indexing with offset183for (int i=0; i<ARRLEN; i++) {184a1[i] = (char)-1;185a2[i] = (char)-1;186}187test_ci_off(a1);188for (int i=OFFSET; i<ARRLEN; i++) {189errn += verify("test_ci_off: a1", i, a1[i], (char)-123);190}191test_vi_off(a2, (char)123);192for (int i=OFFSET; i<ARRLEN; i++) {193errn += verify("test_vi_off: a2", i, a2[i], (char)123);194}195test_cp_off(a1, a2);196for (int i=OFFSET; i<ARRLEN; i++) {197errn += verify("test_cp_off: a1", i, a1[i], (char)123);198}199test_2ci_off(a1, a2);200for (int i=OFFSET; i<ARRLEN; i++) {201errn += verify("test_2ci_off: a1", i, a1[i], (char)-123);202errn += verify("test_2ci_off: a2", i, a2[i], (char)-103);203}204test_2vi_off(a1, a2, (char)123, (char)103);205for (int i=OFFSET; i<ARRLEN; i++) {206errn += verify("test_2vi_off: a1", i, a1[i], (char)123);207errn += verify("test_2vi_off: a2", i, a2[i], (char)103);208}209for (int i=0; i<OFFSET; i++) {210errn += verify("test_2vi_off: a1", i, a1[i], (char)-1);211errn += verify("test_2vi_off: a2", i, a2[i], (char)-1);212}213// Reset for indexing with invariant offset214for (int i=0; i<ARRLEN; i++) {215a1[i] = (char)-1;216a2[i] = (char)-1;217}218test_ci_inv(a1, OFFSET);219for (int i=OFFSET; i<ARRLEN; i++) {220errn += verify("test_ci_inv: a1", i, a1[i], (char)-123);221}222test_vi_inv(a2, (char)123, OFFSET);223for (int i=OFFSET; i<ARRLEN; i++) {224errn += verify("test_vi_inv: a2", i, a2[i], (char)123);225}226test_cp_inv(a1, a2, OFFSET);227for (int i=OFFSET; i<ARRLEN; i++) {228errn += verify("test_cp_inv: a1", i, a1[i], (char)123);229}230test_2ci_inv(a1, a2, OFFSET);231for (int i=OFFSET; i<ARRLEN; i++) {232errn += verify("test_2ci_inv: a1", i, a1[i], (char)-123);233errn += verify("test_2ci_inv: a2", i, a2[i], (char)-103);234}235test_2vi_inv(a1, a2, (char)123, (char)103, OFFSET);236for (int i=OFFSET; i<ARRLEN; i++) {237errn += verify("test_2vi_inv: a1", i, a1[i], (char)123);238errn += verify("test_2vi_inv: a2", i, a2[i], (char)103);239}240for (int i=0; i<OFFSET; i++) {241errn += verify("test_2vi_inv: a1", i, a1[i], (char)-1);242errn += verify("test_2vi_inv: a2", i, a2[i], (char)-1);243}244// Reset for indexing with scale245for (int i=0; i<ARRLEN; i++) {246a1[i] = (char)-1;247a2[i] = (char)-1;248}249test_ci_scl(a1);250for (int i=0; i<ARRLEN; i++) {251int val = (i%SCALE != 0) ? -1 : -123;252errn += verify("test_ci_scl: a1", i, a1[i], (char)val);253}254test_vi_scl(a2, (char)123);255for (int i=0; i<ARRLEN; i++) {256int val = (i%SCALE != 0) ? -1 : 123;257errn += verify("test_vi_scl: a2", i, a2[i], (char)val);258}259test_cp_scl(a1, a2);260for (int i=0; i<ARRLEN; i++) {261int val = (i%SCALE != 0) ? -1 : 123;262errn += verify("test_cp_scl: a1", i, a1[i], (char)val);263}264test_2ci_scl(a1, a2);265for (int i=0; i<ARRLEN; i++) {266if (i%SCALE != 0) {267errn += verify("test_2ci_scl: a1", i, a1[i], (char)-1);268} else if (i*SCALE < ARRLEN) {269errn += verify("test_2ci_scl: a1", i*SCALE, a1[i*SCALE], (char)-123);270}271if (i%SCALE != 0) {272errn += verify("test_2ci_scl: a2", i, a2[i], (char)-1);273} else if (i*SCALE < ARRLEN) {274errn += verify("test_2ci_scl: a2", i*SCALE, a2[i*SCALE], (char)-103);275}276}277test_2vi_scl(a1, a2, (char)123, (char)103);278for (int i=0; i<ARRLEN; i++) {279if (i%SCALE != 0) {280errn += verify("test_2vi_scl: a1", i, a1[i], (char)-1);281} else if (i*SCALE < ARRLEN) {282errn += verify("test_2vi_scl: a1", i*SCALE, a1[i*SCALE], (char)123);283}284if (i%SCALE != 0) {285errn += verify("test_2vi_scl: a2", i, a2[i], (char)-1);286} else if (i*SCALE < ARRLEN) {287errn += verify("test_2vi_scl: a2", i*SCALE, a2[i*SCALE], (char)103);288}289}290// Reset for 2 arrays with relative aligned offset291for (int i=0; i<ARRLEN; i++) {292a1[i] = (char)-1;293a2[i] = (char)-1;294}295test_vi(a2, (char)123);296test_cp_alndst(a1, a2);297for (int i=0; i<ALIGN_OFF; i++) {298errn += verify("test_cp_alndst: a1", i, a1[i], (char)-1);299}300for (int i=ALIGN_OFF; i<ARRLEN; i++) {301errn += verify("test_cp_alndst: a1", i, a1[i], (char)123);302}303test_vi(a2, (char)-123);304test_cp_alnsrc(a1, a2);305for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {306errn += verify("test_cp_alnsrc: a1", i, a1[i], (char)-123);307}308for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {309errn += verify("test_cp_alnsrc: a1", i, a1[i], (char)123);310}311for (int i=0; i<ARRLEN; i++) {312a1[i] = (char)-1;313a2[i] = (char)-1;314}315test_2ci_aln(a1, a2);316for (int i=0; i<ALIGN_OFF; i++) {317errn += verify("test_2ci_aln: a1", i, a1[i], (char)-1);318}319for (int i=ALIGN_OFF; i<ARRLEN; i++) {320errn += verify("test_2ci_aln: a1", i, a1[i], (char)-123);321}322for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {323errn += verify("test_2ci_aln: a2", i, a2[i], (char)-103);324}325for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {326errn += verify("test_2ci_aln: a2", i, a2[i], (char)-1);327}328for (int i=0; i<ARRLEN; i++) {329a1[i] = (char)-1;330a2[i] = (char)-1;331}332test_2vi_aln(a1, a2, (char)123, (char)103);333for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {334errn += verify("test_2vi_aln: a1", i, a1[i], (char)123);335}336for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {337errn += verify("test_2vi_aln: a1", i, a1[i], (char)-1);338}339for (int i=0; i<ALIGN_OFF; i++) {340errn += verify("test_2vi_aln: a2", i, a2[i], (char)-1);341}342for (int i=ALIGN_OFF; i<ARRLEN; i++) {343errn += verify("test_2vi_aln: a2", i, a2[i], (char)103);344}345346// Reset for 2 arrays with relative unaligned offset347for (int i=0; i<ARRLEN; i++) {348a1[i] = (char)-1;349a2[i] = (char)-1;350}351test_vi(a2, (char)123);352test_cp_unalndst(a1, a2);353for (int i=0; i<UNALIGN_OFF; i++) {354errn += verify("test_cp_unalndst: a1", i, a1[i], (char)-1);355}356for (int i=UNALIGN_OFF; i<ARRLEN; i++) {357errn += verify("test_cp_unalndst: a1", i, a1[i], (char)123);358}359test_vi(a2, (char)-123);360test_cp_unalnsrc(a1, a2);361for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {362errn += verify("test_cp_unalnsrc: a1", i, a1[i], (char)-123);363}364for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {365errn += verify("test_cp_unalnsrc: a1", i, a1[i], (char)123);366}367for (int i=0; i<ARRLEN; i++) {368a1[i] = (char)-1;369a2[i] = (char)-1;370}371test_2ci_unaln(a1, a2);372for (int i=0; i<UNALIGN_OFF; i++) {373errn += verify("test_2ci_unaln: a1", i, a1[i], (char)-1);374}375for (int i=UNALIGN_OFF; i<ARRLEN; i++) {376errn += verify("test_2ci_unaln: a1", i, a1[i], (char)-123);377}378for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {379errn += verify("test_2ci_unaln: a2", i, a2[i], (char)-103);380}381for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {382errn += verify("test_2ci_unaln: a2", i, a2[i], (char)-1);383}384for (int i=0; i<ARRLEN; i++) {385a1[i] = (char)-1;386a2[i] = (char)-1;387}388test_2vi_unaln(a1, a2, (char)123, (char)103);389for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {390errn += verify("test_2vi_unaln: a1", i, a1[i], (char)123);391}392for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {393errn += verify("test_2vi_unaln: a1", i, a1[i], (char)-1);394}395for (int i=0; i<UNALIGN_OFF; i++) {396errn += verify("test_2vi_unaln: a2", i, a2[i], (char)-1);397}398for (int i=UNALIGN_OFF; i<ARRLEN; i++) {399errn += verify("test_2vi_unaln: a2", i, a2[i], (char)103);400}401402// Reset for aligned overlap initialization403for (int i=0; i<ALIGN_OFF; i++) {404a1[i] = (char)i;405}406for (int i=ALIGN_OFF; i<ARRLEN; i++) {407a1[i] = (char)-1;408}409test_cp_alndst(a1, a1);410for (int i=0; i<ARRLEN; i++) {411int v = i%ALIGN_OFF;412errn += verify("test_cp_alndst_overlap: a1", i, a1[i], (char)v);413}414for (int i=0; i<ALIGN_OFF; i++) {415a1[i+ALIGN_OFF] = (char)-1;416}417test_cp_alnsrc(a1, a1);418for (int i=0; i<ALIGN_OFF; i++) {419errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (char)-1);420}421for (int i=ALIGN_OFF; i<ARRLEN; i++) {422int v = i%ALIGN_OFF;423errn += verify("test_cp_alnsrc_overlap: a1", i, a1[i], (char)v);424}425for (int i=0; i<ARRLEN; i++) {426a1[i] = (char)-1;427}428test_2ci_aln(a1, a1);429for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {430errn += verify("test_2ci_aln_overlap: a1", i, a1[i], (char)-103);431}432for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {433errn += verify("test_2ci_aln_overlap: a1", i, a1[i], (char)-123);434}435for (int i=0; i<ARRLEN; i++) {436a1[i] = (char)-1;437}438test_2vi_aln(a1, a1, (char)123, (char)103);439for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {440errn += verify("test_2vi_aln_overlap: a1", i, a1[i], (char)123);441}442for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {443errn += verify("test_2vi_aln_overlap: a1", i, a1[i], (char)103);444}445446// Reset for unaligned overlap initialization447for (int i=0; i<UNALIGN_OFF; i++) {448a1[i] = (char)i;449}450for (int i=UNALIGN_OFF; i<ARRLEN; i++) {451a1[i] = (char)-1;452}453test_cp_unalndst(a1, a1);454for (int i=0; i<ARRLEN; i++) {455int v = i%UNALIGN_OFF;456errn += verify("test_cp_unalndst_overlap: a1", i, a1[i], (char)v);457}458for (int i=0; i<UNALIGN_OFF; i++) {459a1[i+UNALIGN_OFF] = (char)-1;460}461test_cp_unalnsrc(a1, a1);462for (int i=0; i<UNALIGN_OFF; i++) {463errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (char)-1);464}465for (int i=UNALIGN_OFF; i<ARRLEN; i++) {466int v = i%UNALIGN_OFF;467errn += verify("test_cp_unalnsrc_overlap: a1", i, a1[i], (char)v);468}469for (int i=0; i<ARRLEN; i++) {470a1[i] = (char)-1;471}472test_2ci_unaln(a1, a1);473for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {474errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], (char)-103);475}476for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {477errn += verify("test_2ci_unaln_overlap: a1", i, a1[i], (char)-123);478}479for (int i=0; i<ARRLEN; i++) {480a1[i] = (char)-1;481}482test_2vi_unaln(a1, a1, (char)123, (char)103);483for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {484errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], (char)123);485}486for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {487errn += verify("test_2vi_unaln_overlap: a1", i, a1[i], (char)103);488}489490}491492if (errn > 0)493return errn;494495System.out.println("Time");496long start, end;497start = System.currentTimeMillis();498for (int i=0; i<ITERS; i++) {499test_ci(a1);500}501end = System.currentTimeMillis();502System.out.println("test_ci: " + (end - start));503start = System.currentTimeMillis();504for (int i=0; i<ITERS; i++) {505test_vi(a2, (char)123);506}507end = System.currentTimeMillis();508System.out.println("test_vi: " + (end - start));509start = System.currentTimeMillis();510for (int i=0; i<ITERS; i++) {511test_cp(a1, a2);512}513end = System.currentTimeMillis();514System.out.println("test_cp: " + (end - start));515start = System.currentTimeMillis();516for (int i=0; i<ITERS; i++) {517test_2ci(a1, a2);518}519end = System.currentTimeMillis();520System.out.println("test_2ci: " + (end - start));521start = System.currentTimeMillis();522for (int i=0; i<ITERS; i++) {523test_2vi(a1, a2, (char)123, (char)103);524}525end = System.currentTimeMillis();526System.out.println("test_2vi: " + (end - start));527528start = System.currentTimeMillis();529for (int i=0; i<ITERS; i++) {530test_ci_neg(a1);531}532end = System.currentTimeMillis();533System.out.println("test_ci_neg: " + (end - start));534start = System.currentTimeMillis();535for (int i=0; i<ITERS; i++) {536test_vi_neg(a2, (char)123);537}538end = System.currentTimeMillis();539System.out.println("test_vi_neg: " + (end - start));540start = System.currentTimeMillis();541for (int i=0; i<ITERS; i++) {542test_cp_neg(a1, a2);543}544end = System.currentTimeMillis();545System.out.println("test_cp_neg: " + (end - start));546start = System.currentTimeMillis();547for (int i=0; i<ITERS; i++) {548test_2ci_neg(a1, a2);549}550end = System.currentTimeMillis();551System.out.println("test_2ci_neg: " + (end - start));552start = System.currentTimeMillis();553for (int i=0; i<ITERS; i++) {554test_2vi_neg(a1, a2, (char)123, (char)103);555}556end = System.currentTimeMillis();557System.out.println("test_2vi_neg: " + (end - start));558559start = System.currentTimeMillis();560for (int i=0; i<ITERS; i++) {561test_ci_oppos(a1);562}563end = System.currentTimeMillis();564System.out.println("test_ci_oppos: " + (end - start));565start = System.currentTimeMillis();566for (int i=0; i<ITERS; i++) {567test_vi_oppos(a2, (char)123);568}569end = System.currentTimeMillis();570System.out.println("test_vi_oppos: " + (end - start));571start = System.currentTimeMillis();572for (int i=0; i<ITERS; i++) {573test_cp_oppos(a1, a2);574}575end = System.currentTimeMillis();576System.out.println("test_cp_oppos: " + (end - start));577start = System.currentTimeMillis();578for (int i=0; i<ITERS; i++) {579test_2ci_oppos(a1, a2);580}581end = System.currentTimeMillis();582System.out.println("test_2ci_oppos: " + (end - start));583start = System.currentTimeMillis();584for (int i=0; i<ITERS; i++) {585test_2vi_oppos(a1, a2, (char)123, (char)103);586}587end = System.currentTimeMillis();588System.out.println("test_2vi_oppos: " + (end - start));589590start = System.currentTimeMillis();591for (int i=0; i<ITERS; i++) {592test_ci_off(a1);593}594end = System.currentTimeMillis();595System.out.println("test_ci_off: " + (end - start));596start = System.currentTimeMillis();597for (int i=0; i<ITERS; i++) {598test_vi_off(a2, (char)123);599}600end = System.currentTimeMillis();601System.out.println("test_vi_off: " + (end - start));602start = System.currentTimeMillis();603for (int i=0; i<ITERS; i++) {604test_cp_off(a1, a2);605}606end = System.currentTimeMillis();607System.out.println("test_cp_off: " + (end - start));608start = System.currentTimeMillis();609for (int i=0; i<ITERS; i++) {610test_2ci_off(a1, a2);611}612end = System.currentTimeMillis();613System.out.println("test_2ci_off: " + (end - start));614start = System.currentTimeMillis();615for (int i=0; i<ITERS; i++) {616test_2vi_off(a1, a2, (char)123, (char)103);617}618end = System.currentTimeMillis();619System.out.println("test_2vi_off: " + (end - start));620621start = System.currentTimeMillis();622for (int i=0; i<ITERS; i++) {623test_ci_inv(a1, OFFSET);624}625end = System.currentTimeMillis();626System.out.println("test_ci_inv: " + (end - start));627start = System.currentTimeMillis();628for (int i=0; i<ITERS; i++) {629test_vi_inv(a2, (char)123, OFFSET);630}631end = System.currentTimeMillis();632System.out.println("test_vi_inv: " + (end - start));633start = System.currentTimeMillis();634for (int i=0; i<ITERS; i++) {635test_cp_inv(a1, a2, OFFSET);636}637end = System.currentTimeMillis();638System.out.println("test_cp_inv: " + (end - start));639start = System.currentTimeMillis();640for (int i=0; i<ITERS; i++) {641test_2ci_inv(a1, a2, OFFSET);642}643end = System.currentTimeMillis();644System.out.println("test_2ci_inv: " + (end - start));645start = System.currentTimeMillis();646for (int i=0; i<ITERS; i++) {647test_2vi_inv(a1, a2, (char)123, (char)103, OFFSET);648}649end = System.currentTimeMillis();650System.out.println("test_2vi_inv: " + (end - start));651652start = System.currentTimeMillis();653for (int i=0; i<ITERS; i++) {654test_ci_scl(a1);655}656end = System.currentTimeMillis();657System.out.println("test_ci_scl: " + (end - start));658start = System.currentTimeMillis();659for (int i=0; i<ITERS; i++) {660test_vi_scl(a2, (char)123);661}662end = System.currentTimeMillis();663System.out.println("test_vi_scl: " + (end - start));664start = System.currentTimeMillis();665for (int i=0; i<ITERS; i++) {666test_cp_scl(a1, a2);667}668end = System.currentTimeMillis();669System.out.println("test_cp_scl: " + (end - start));670start = System.currentTimeMillis();671for (int i=0; i<ITERS; i++) {672test_2ci_scl(a1, a2);673}674end = System.currentTimeMillis();675System.out.println("test_2ci_scl: " + (end - start));676start = System.currentTimeMillis();677for (int i=0; i<ITERS; i++) {678test_2vi_scl(a1, a2, (char)123, (char)103);679}680end = System.currentTimeMillis();681System.out.println("test_2vi_scl: " + (end - start));682683start = System.currentTimeMillis();684for (int i=0; i<ITERS; i++) {685test_cp_alndst(a1, a2);686}687end = System.currentTimeMillis();688System.out.println("test_cp_alndst: " + (end - start));689start = System.currentTimeMillis();690for (int i=0; i<ITERS; i++) {691test_cp_alnsrc(a1, a2);692}693end = System.currentTimeMillis();694System.out.println("test_cp_alnsrc: " + (end - start));695start = System.currentTimeMillis();696for (int i=0; i<ITERS; i++) {697test_2ci_aln(a1, a2);698}699end = System.currentTimeMillis();700System.out.println("test_2ci_aln: " + (end - start));701start = System.currentTimeMillis();702for (int i=0; i<ITERS; i++) {703test_2vi_aln(a1, a2, (char)123, (char)103);704}705end = System.currentTimeMillis();706System.out.println("test_2vi_aln: " + (end - start));707708start = System.currentTimeMillis();709for (int i=0; i<ITERS; i++) {710test_cp_unalndst(a1, a2);711}712end = System.currentTimeMillis();713System.out.println("test_cp_unalndst: " + (end - start));714start = System.currentTimeMillis();715for (int i=0; i<ITERS; i++) {716test_cp_unalnsrc(a1, a2);717}718end = System.currentTimeMillis();719System.out.println("test_cp_unalnsrc: " + (end - start));720start = System.currentTimeMillis();721for (int i=0; i<ITERS; i++) {722test_2ci_unaln(a1, a2);723}724end = System.currentTimeMillis();725System.out.println("test_2ci_unaln: " + (end - start));726start = System.currentTimeMillis();727for (int i=0; i<ITERS; i++) {728test_2vi_unaln(a1, a2, (char)123, (char)103);729}730end = System.currentTimeMillis();731System.out.println("test_2vi_unaln: " + (end - start));732733return errn;734}735736static void test_ci(char[] a) {737for (int i = 0; i < a.length; i+=1) {738a[i] = (char)-123;739}740}741static void test_vi(char[] a, char b) {742for (int i = 0; i < a.length; i+=1) {743a[i] = b;744}745}746static void test_cp(char[] a, char[] b) {747for (int i = 0; i < a.length; i+=1) {748a[i] = b[i];749}750}751static void test_2ci(char[] a, char[] b) {752for (int i = 0; i < a.length; i+=1) {753a[i] = (char)-123;754b[i] = (char)-103;755}756}757static void test_2vi(char[] a, char[] b, char c, char d) {758for (int i = 0; i < a.length; i+=1) {759a[i] = c;760b[i] = d;761}762}763static void test_ci_neg(char[] a) {764for (int i = a.length-1; i >= 0; i-=1) {765a[i] = (char)-123;766}767}768static void test_vi_neg(char[] a, char b) {769for (int i = a.length-1; i >= 0; i-=1) {770a[i] = b;771}772}773static void test_cp_neg(char[] a, char[] b) {774for (int i = a.length-1; i >= 0; i-=1) {775a[i] = b[i];776}777}778static void test_2ci_neg(char[] a, char[] b) {779for (int i = a.length-1; i >= 0; i-=1) {780a[i] = (char)-123;781b[i] = (char)-103;782}783}784static void test_2vi_neg(char[] a, char[] b, char c, char d) {785for (int i = a.length-1; i >= 0; i-=1) {786a[i] = c;787b[i] = d;788}789}790static void test_ci_oppos(char[] a) {791int limit = a.length-1;792for (int i = 0; i < a.length; i+=1) {793a[limit-i] = (char)-123;794}795}796static void test_vi_oppos(char[] a, char b) {797int limit = a.length-1;798for (int i = limit; i >= 0; i-=1) {799a[limit-i] = b;800}801}802static void test_cp_oppos(char[] a, char[] b) {803int limit = a.length-1;804for (int i = 0; i < a.length; i+=1) {805a[i] = b[limit-i];806}807}808static void test_2ci_oppos(char[] a, char[] b) {809int limit = a.length-1;810for (int i = 0; i < a.length; i+=1) {811a[limit-i] = (char)-123;812b[i] = (char)-103;813}814}815static void test_2vi_oppos(char[] a, char[] b, char c, char d) {816int limit = a.length-1;817for (int i = limit; i >= 0; i-=1) {818a[i] = c;819b[limit-i] = d;820}821}822static void test_ci_off(char[] a) {823for (int i = 0; i < a.length-OFFSET; i+=1) {824a[i+OFFSET] = (char)-123;825}826}827static void test_vi_off(char[] a, char b) {828for (int i = 0; i < a.length-OFFSET; i+=1) {829a[i+OFFSET] = b;830}831}832static void test_cp_off(char[] a, char[] b) {833for (int i = 0; i < a.length-OFFSET; i+=1) {834a[i+OFFSET] = b[i+OFFSET];835}836}837static void test_2ci_off(char[] a, char[] b) {838for (int i = 0; i < a.length-OFFSET; i+=1) {839a[i+OFFSET] = (char)-123;840b[i+OFFSET] = (char)-103;841}842}843static void test_2vi_off(char[] a, char[] b, char c, char d) {844for (int i = 0; i < a.length-OFFSET; i+=1) {845a[i+OFFSET] = c;846b[i+OFFSET] = d;847}848}849static void test_ci_inv(char[] a, int k) {850for (int i = 0; i < a.length-k; i+=1) {851a[i+k] = (char)-123;852}853}854static void test_vi_inv(char[] a, char b, int k) {855for (int i = 0; i < a.length-k; i+=1) {856a[i+k] = b;857}858}859static void test_cp_inv(char[] a, char[] b, int k) {860for (int i = 0; i < a.length-k; i+=1) {861a[i+k] = b[i+k];862}863}864static void test_2ci_inv(char[] a, char[] b, int k) {865for (int i = 0; i < a.length-k; i+=1) {866a[i+k] = (char)-123;867b[i+k] = (char)-103;868}869}870static void test_2vi_inv(char[] a, char[] b, char c, char d, int k) {871for (int i = 0; i < a.length-k; i+=1) {872a[i+k] = c;873b[i+k] = d;874}875}876static void test_ci_scl(char[] a) {877for (int i = 0; i*SCALE < a.length; i+=1) {878a[i*SCALE] = (char)-123;879}880}881static void test_vi_scl(char[] a, char b) {882for (int i = 0; i*SCALE < a.length; i+=1) {883a[i*SCALE] = b;884}885}886static void test_cp_scl(char[] a, char[] b) {887for (int i = 0; i*SCALE < a.length; i+=1) {888a[i*SCALE] = b[i*SCALE];889}890}891static void test_2ci_scl(char[] a, char[] b) {892for (int i = 0; i*SCALE < a.length; i+=1) {893a[i*SCALE] = (char)-123;894b[i*SCALE] = (char)-103;895}896}897static void test_2vi_scl(char[] a, char[] b, char c, char d) {898for (int i = 0; i*SCALE < a.length; i+=1) {899a[i*SCALE] = c;900b[i*SCALE] = d;901}902}903static void test_cp_alndst(char[] a, char[] b) {904for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {905a[i+ALIGN_OFF] = b[i];906}907}908static void test_cp_alnsrc(char[] a, char[] b) {909for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {910a[i] = b[i+ALIGN_OFF];911}912}913static void test_2ci_aln(char[] a, char[] b) {914for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {915a[i+ALIGN_OFF] = (char)-123;916b[i] = (char)-103;917}918}919static void test_2vi_aln(char[] a, char[] b, char c, char d) {920for (int i = 0; i < a.length-ALIGN_OFF; i+=1) {921a[i] = c;922b[i+ALIGN_OFF] = d;923}924}925static void test_cp_unalndst(char[] a, char[] b) {926for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {927a[i+UNALIGN_OFF] = b[i];928}929}930static void test_cp_unalnsrc(char[] a, char[] b) {931for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {932a[i] = b[i+UNALIGN_OFF];933}934}935static void test_2ci_unaln(char[] a, char[] b) {936for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {937a[i+UNALIGN_OFF] = (char)-123;938b[i] = (char)-103;939}940}941static void test_2vi_unaln(char[] a, char[] b, char c, char d) {942for (int i = 0; i < a.length-UNALIGN_OFF; i+=1) {943a[i] = c;944b[i+UNALIGN_OFF] = d;945}946}947948static int verify(String text, int i, char elem, char val) {949if (elem != val) {950System.err.println(text + "[" + i + "] = " + elem + " != " + val);951return 1;952}953return 0;954}955}956957958