Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/test/compiler/6340864/TestFloatVect.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 TestFloatVect30*/3132public class TestFloatVect {33private static final int ARRLEN = 997;34private static final int ITERS = 11000;35private static final float ADD_INIT = -7500.f;36private static final float VALUE = 15.f;3738public static void main(String args[]) {39System.out.println("Testing Float vectors");40int errn = test();41if (errn > 0) {42System.err.println("FAILED: " + errn + " errors");43System.exit(97);44}45System.out.println("PASSED");46}4748static int test() {49float[] a0 = new float[ARRLEN];50float[] a1 = new float[ARRLEN];51float[] a2 = new float[ARRLEN];52float[] a3 = new float[ARRLEN];53// Initialize54float gold_sum = 0;55for (int i=0; i<ARRLEN; i++) {56float val = ADD_INIT+(float)i;57gold_sum += val;58a1[i] = val;59a2[i] = VALUE;60a3[i] = -VALUE;61}6263System.out.println("Warmup");64for (int i=0; i<ITERS; i++) {65test_sum(a1);66test_addc(a0, a1);67test_addv(a0, a1, VALUE);68test_adda(a0, a1, a2);69test_subc(a0, a1);70test_subv(a0, a1, VALUE);71test_suba(a0, a1, a2);72test_mulc(a0, a1);73test_mulv(a0, a1, VALUE);74test_mula(a0, a1, a2);75test_divc(a0, a1);76test_divv(a0, a1, VALUE);77test_diva(a0, a1, a2);78test_mulc_n(a0, a1);79test_mulv(a0, a1, -VALUE);80test_mula(a0, a1, a3);81test_divc_n(a0, a1);82test_divv(a0, a1, -VALUE);83test_diva(a0, a1, a3);84}85// Test and verify results86System.out.println("Verification");87int errn = 0;88{89float sum = test_sum(a1);90if (sum != gold_sum) {91System.err.println("test_sum: " + sum + " != " + gold_sum);92errn++;93}94// Overwrite with NaN values95a1[0] = Float.NaN;96a1[1] = Float.POSITIVE_INFINITY;97a1[2] = Float.NEGATIVE_INFINITY;98a1[3] = Float.MAX_VALUE;99a1[4] = Float.MIN_VALUE;100a1[5] = Float.MIN_NORMAL;101102a2[6] = a1[0];103a2[7] = a1[1];104a2[8] = a1[2];105a2[9] = a1[3];106a2[10] = a1[4];107a2[11] = a1[5];108109a3[6] = -a2[6];110a3[7] = -a2[7];111a3[8] = -a2[8];112a3[9] = -a2[9];113a3[10] = -a2[10];114a3[11] = -a2[11];115116test_addc(a0, a1);117errn += verify("test_addc: ", 0, a0[0], (Float.NaN+VALUE));118errn += verify("test_addc: ", 1, a0[1], (Float.POSITIVE_INFINITY+VALUE));119errn += verify("test_addc: ", 2, a0[2], (Float.NEGATIVE_INFINITY+VALUE));120errn += verify("test_addc: ", 3, a0[3], (Float.MAX_VALUE+VALUE));121errn += verify("test_addc: ", 4, a0[4], (Float.MIN_VALUE+VALUE));122errn += verify("test_addc: ", 5, a0[5], (Float.MIN_NORMAL+VALUE));123for (int i=6; i<ARRLEN; i++) {124errn += verify("test_addc: ", i, a0[i], ((ADD_INIT+i)+VALUE));125}126test_addv(a0, a1, VALUE);127errn += verify("test_addv: ", 0, a0[0], (Float.NaN+VALUE));128errn += verify("test_addv: ", 1, a0[1], (Float.POSITIVE_INFINITY+VALUE));129errn += verify("test_addv: ", 2, a0[2], (Float.NEGATIVE_INFINITY+VALUE));130errn += verify("test_addv: ", 3, a0[3], (Float.MAX_VALUE+VALUE));131errn += verify("test_addv: ", 4, a0[4], (Float.MIN_VALUE+VALUE));132errn += verify("test_addv: ", 5, a0[5], (Float.MIN_NORMAL+VALUE));133for (int i=6; i<ARRLEN; i++) {134errn += verify("test_addv: ", i, a0[i], ((ADD_INIT+i)+VALUE));135}136test_adda(a0, a1, a2);137errn += verify("test_adda: ", 0, a0[0], (Float.NaN+VALUE));138errn += verify("test_adda: ", 1, a0[1], (Float.POSITIVE_INFINITY+VALUE));139errn += verify("test_adda: ", 2, a0[2], (Float.NEGATIVE_INFINITY+VALUE));140errn += verify("test_adda: ", 3, a0[3], (Float.MAX_VALUE+VALUE));141errn += verify("test_adda: ", 4, a0[4], (Float.MIN_VALUE+VALUE));142errn += verify("test_adda: ", 5, a0[5], (Float.MIN_NORMAL+VALUE));143errn += verify("test_adda: ", 6, a0[6], ((ADD_INIT+6)+Float.NaN));144errn += verify("test_adda: ", 7, a0[7], ((ADD_INIT+7)+Float.POSITIVE_INFINITY));145errn += verify("test_adda: ", 8, a0[8], ((ADD_INIT+8)+Float.NEGATIVE_INFINITY));146errn += verify("test_adda: ", 9, a0[9], ((ADD_INIT+9)+Float.MAX_VALUE));147errn += verify("test_adda: ", 10, a0[10], ((ADD_INIT+10)+Float.MIN_VALUE));148errn += verify("test_adda: ", 11, a0[11], ((ADD_INIT+11)+Float.MIN_NORMAL));149for (int i=12; i<ARRLEN; i++) {150errn += verify("test_adda: ", i, a0[i], ((ADD_INIT+i)+VALUE));151}152153test_subc(a0, a1);154errn += verify("test_subc: ", 0, a0[0], (Float.NaN-VALUE));155errn += verify("test_subc: ", 1, a0[1], (Float.POSITIVE_INFINITY-VALUE));156errn += verify("test_subc: ", 2, a0[2], (Float.NEGATIVE_INFINITY-VALUE));157errn += verify("test_subc: ", 3, a0[3], (Float.MAX_VALUE-VALUE));158errn += verify("test_subc: ", 4, a0[4], (Float.MIN_VALUE-VALUE));159errn += verify("test_subc: ", 5, a0[5], (Float.MIN_NORMAL-VALUE));160for (int i=6; i<ARRLEN; i++) {161errn += verify("test_subc: ", i, a0[i], ((ADD_INIT+i)-VALUE));162}163test_subv(a0, a1, VALUE);164errn += verify("test_subv: ", 0, a0[0], (Float.NaN-VALUE));165errn += verify("test_subv: ", 1, a0[1], (Float.POSITIVE_INFINITY-VALUE));166errn += verify("test_subv: ", 2, a0[2], (Float.NEGATIVE_INFINITY-VALUE));167errn += verify("test_subv: ", 3, a0[3], (Float.MAX_VALUE-VALUE));168errn += verify("test_subv: ", 4, a0[4], (Float.MIN_VALUE-VALUE));169errn += verify("test_subv: ", 5, a0[5], (Float.MIN_NORMAL-VALUE));170for (int i=6; i<ARRLEN; i++) {171errn += verify("test_subv: ", i, a0[i], ((ADD_INIT+i)-VALUE));172}173test_suba(a0, a1, a2);174errn += verify("test_suba: ", 0, a0[0], (Float.NaN-VALUE));175errn += verify("test_suba: ", 1, a0[1], (Float.POSITIVE_INFINITY-VALUE));176errn += verify("test_suba: ", 2, a0[2], (Float.NEGATIVE_INFINITY-VALUE));177errn += verify("test_suba: ", 3, a0[3], (Float.MAX_VALUE-VALUE));178errn += verify("test_suba: ", 4, a0[4], (Float.MIN_VALUE-VALUE));179errn += verify("test_suba: ", 5, a0[5], (Float.MIN_NORMAL-VALUE));180errn += verify("test_suba: ", 6, a0[6], ((ADD_INIT+6)-Float.NaN));181errn += verify("test_suba: ", 7, a0[7], ((ADD_INIT+7)-Float.POSITIVE_INFINITY));182errn += verify("test_suba: ", 8, a0[8], ((ADD_INIT+8)-Float.NEGATIVE_INFINITY));183errn += verify("test_suba: ", 9, a0[9], ((ADD_INIT+9)-Float.MAX_VALUE));184errn += verify("test_suba: ", 10, a0[10], ((ADD_INIT+10)-Float.MIN_VALUE));185errn += verify("test_suba: ", 11, a0[11], ((ADD_INIT+11)-Float.MIN_NORMAL));186for (int i=12; i<ARRLEN; i++) {187errn += verify("test_suba: ", i, a0[i], ((ADD_INIT+i)-VALUE));188}189190test_mulc(a0, a1);191errn += verify("test_mulc: ", 0, a0[0], (Float.NaN*VALUE));192errn += verify("test_mulc: ", 1, a0[1], (Float.POSITIVE_INFINITY*VALUE));193errn += verify("test_mulc: ", 2, a0[2], (Float.NEGATIVE_INFINITY*VALUE));194errn += verify("test_mulc: ", 3, a0[3], (Float.MAX_VALUE*VALUE));195errn += verify("test_mulc: ", 4, a0[4], (Float.MIN_VALUE*VALUE));196errn += verify("test_mulc: ", 5, a0[5], (Float.MIN_NORMAL*VALUE));197for (int i=6; i<ARRLEN; i++) {198errn += verify("test_mulc: ", i, a0[i], ((ADD_INIT+i)*VALUE));199}200test_mulv(a0, a1, VALUE);201errn += verify("test_mulv: ", 0, a0[0], (Float.NaN*VALUE));202errn += verify("test_mulv: ", 1, a0[1], (Float.POSITIVE_INFINITY*VALUE));203errn += verify("test_mulv: ", 2, a0[2], (Float.NEGATIVE_INFINITY*VALUE));204errn += verify("test_mulv: ", 3, a0[3], (Float.MAX_VALUE*VALUE));205errn += verify("test_mulv: ", 4, a0[4], (Float.MIN_VALUE*VALUE));206errn += verify("test_mulv: ", 5, a0[5], (Float.MIN_NORMAL*VALUE));207for (int i=6; i<ARRLEN; i++) {208errn += verify("test_mulv: ", i, a0[i], ((ADD_INIT+i)*VALUE));209}210test_mula(a0, a1, a2);211errn += verify("test_mula: ", 0, a0[0], (Float.NaN*VALUE));212errn += verify("test_mula: ", 1, a0[1], (Float.POSITIVE_INFINITY*VALUE));213errn += verify("test_mula: ", 2, a0[2], (Float.NEGATIVE_INFINITY*VALUE));214errn += verify("test_mula: ", 3, a0[3], (Float.MAX_VALUE*VALUE));215errn += verify("test_mula: ", 4, a0[4], (Float.MIN_VALUE*VALUE));216errn += verify("test_mula: ", 5, a0[5], (Float.MIN_NORMAL*VALUE));217errn += verify("test_mula: ", 6, a0[6], ((ADD_INIT+6)*Float.NaN));218errn += verify("test_mula: ", 7, a0[7], ((ADD_INIT+7)*Float.POSITIVE_INFINITY));219errn += verify("test_mula: ", 8, a0[8], ((ADD_INIT+8)*Float.NEGATIVE_INFINITY));220errn += verify("test_mula: ", 9, a0[9], ((ADD_INIT+9)*Float.MAX_VALUE));221errn += verify("test_mula: ", 10, a0[10], ((ADD_INIT+10)*Float.MIN_VALUE));222errn += verify("test_mula: ", 11, a0[11], ((ADD_INIT+11)*Float.MIN_NORMAL));223for (int i=12; i<ARRLEN; i++) {224errn += verify("test_mula: ", i, a0[i], ((ADD_INIT+i)*VALUE));225}226227test_divc(a0, a1);228errn += verify("test_divc: ", 0, a0[0], (Float.NaN/VALUE));229errn += verify("test_divc: ", 1, a0[1], (Float.POSITIVE_INFINITY/VALUE));230errn += verify("test_divc: ", 2, a0[2], (Float.NEGATIVE_INFINITY/VALUE));231errn += verify("test_divc: ", 3, a0[3], (Float.MAX_VALUE/VALUE));232errn += verify("test_divc: ", 4, a0[4], (Float.MIN_VALUE/VALUE));233errn += verify("test_divc: ", 5, a0[5], (Float.MIN_NORMAL/VALUE));234for (int i=6; i<ARRLEN; i++) {235errn += verify("test_divc: ", i, a0[i], ((ADD_INIT+i)/VALUE));236}237test_divv(a0, a1, VALUE);238errn += verify("test_divv: ", 0, a0[0], (Float.NaN/VALUE));239errn += verify("test_divv: ", 1, a0[1], (Float.POSITIVE_INFINITY/VALUE));240errn += verify("test_divv: ", 2, a0[2], (Float.NEGATIVE_INFINITY/VALUE));241errn += verify("test_divv: ", 3, a0[3], (Float.MAX_VALUE/VALUE));242errn += verify("test_divv: ", 4, a0[4], (Float.MIN_VALUE/VALUE));243errn += verify("test_divv: ", 5, a0[5], (Float.MIN_NORMAL/VALUE));244for (int i=6; i<ARRLEN; i++) {245errn += verify("test_divv: ", i, a0[i], ((ADD_INIT+i)/VALUE));246}247test_diva(a0, a1, a2);248errn += verify("test_diva: ", 0, a0[0], (Float.NaN/VALUE));249errn += verify("test_diva: ", 1, a0[1], (Float.POSITIVE_INFINITY/VALUE));250errn += verify("test_diva: ", 2, a0[2], (Float.NEGATIVE_INFINITY/VALUE));251errn += verify("test_diva: ", 3, a0[3], (Float.MAX_VALUE/VALUE));252errn += verify("test_diva: ", 4, a0[4], (Float.MIN_VALUE/VALUE));253errn += verify("test_diva: ", 5, a0[5], (Float.MIN_NORMAL/VALUE));254errn += verify("test_diva: ", 6, a0[6], ((ADD_INIT+6)/Float.NaN));255errn += verify("test_diva: ", 7, a0[7], ((ADD_INIT+7)/Float.POSITIVE_INFINITY));256errn += verify("test_diva: ", 8, a0[8], ((ADD_INIT+8)/Float.NEGATIVE_INFINITY));257errn += verify("test_diva: ", 9, a0[9], ((ADD_INIT+9)/Float.MAX_VALUE));258errn += verify("test_diva: ", 10, a0[10], ((ADD_INIT+10)/Float.MIN_VALUE));259errn += verify("test_diva: ", 11, a0[11], ((ADD_INIT+11)/Float.MIN_NORMAL));260for (int i=12; i<ARRLEN; i++) {261errn += verify("test_diva: ", i, a0[i], ((ADD_INIT+i)/VALUE));262}263264test_mulc_n(a0, a1);265errn += verify("test_mulc_n: ", 0, a0[0], (Float.NaN*(-VALUE)));266errn += verify("test_mulc_n: ", 1, a0[1], (Float.POSITIVE_INFINITY*(-VALUE)));267errn += verify("test_mulc_n: ", 2, a0[2], (Float.NEGATIVE_INFINITY*(-VALUE)));268errn += verify("test_mulc_n: ", 3, a0[3], (Float.MAX_VALUE*(-VALUE)));269errn += verify("test_mulc_n: ", 4, a0[4], (Float.MIN_VALUE*(-VALUE)));270errn += verify("test_mulc_n: ", 5, a0[5], (Float.MIN_NORMAL*(-VALUE)));271for (int i=6; i<ARRLEN; i++) {272errn += verify("test_mulc_n: ", i, a0[i], ((ADD_INIT+i)*(-VALUE)));273}274test_mulv(a0, a1, -VALUE);275errn += verify("test_mulv_n: ", 0, a0[0], (Float.NaN*(-VALUE)));276errn += verify("test_mulv_n: ", 1, a0[1], (Float.POSITIVE_INFINITY*(-VALUE)));277errn += verify("test_mulv_n: ", 2, a0[2], (Float.NEGATIVE_INFINITY*(-VALUE)));278errn += verify("test_mulv_n: ", 3, a0[3], (Float.MAX_VALUE*(-VALUE)));279errn += verify("test_mulv_n: ", 4, a0[4], (Float.MIN_VALUE*(-VALUE)));280errn += verify("test_mulv_n: ", 5, a0[5], (Float.MIN_NORMAL*(-VALUE)));281for (int i=6; i<ARRLEN; i++) {282errn += verify("test_mulv_n: ", i, a0[i], ((ADD_INIT+i)*(-VALUE)));283}284test_mula(a0, a1, a3);285errn += verify("test_mula_n: ", 0, a0[0], (Float.NaN*(-VALUE)));286errn += verify("test_mula_n: ", 1, a0[1], (Float.POSITIVE_INFINITY*(-VALUE)));287errn += verify("test_mula_n: ", 2, a0[2], (Float.NEGATIVE_INFINITY*(-VALUE)));288errn += verify("test_mula_n: ", 3, a0[3], (Float.MAX_VALUE*(-VALUE)));289errn += verify("test_mula_n: ", 4, a0[4], (Float.MIN_VALUE*(-VALUE)));290errn += verify("test_mula_n: ", 5, a0[5], (Float.MIN_NORMAL*(-VALUE)));291errn += verify("test_mula_n: ", 6, a0[6], ((ADD_INIT+6)*(-Float.NaN)));292errn += verify("test_mula_n: ", 7, a0[7], ((ADD_INIT+7)*(-Float.POSITIVE_INFINITY)));293errn += verify("test_mula_n: ", 8, a0[8], ((ADD_INIT+8)*(-Float.NEGATIVE_INFINITY)));294errn += verify("test_mula_n: ", 9, a0[9], ((ADD_INIT+9)*(-Float.MAX_VALUE)));295errn += verify("test_mula_n: ", 10, a0[10], ((ADD_INIT+10)*(-Float.MIN_VALUE)));296errn += verify("test_mula_n: ", 11, a0[11], ((ADD_INIT+11)*(-Float.MIN_NORMAL)));297for (int i=12; i<ARRLEN; i++) {298errn += verify("test_mula_n: ", i, a0[i], ((ADD_INIT+i)*(-VALUE)));299}300301test_divc_n(a0, a1);302errn += verify("test_divc_n: ", 0, a0[0], (Float.NaN/(-VALUE)));303errn += verify("test_divc_n: ", 1, a0[1], (Float.POSITIVE_INFINITY/(-VALUE)));304errn += verify("test_divc_n: ", 2, a0[2], (Float.NEGATIVE_INFINITY/(-VALUE)));305errn += verify("test_divc_n: ", 3, a0[3], (Float.MAX_VALUE/(-VALUE)));306errn += verify("test_divc_n: ", 4, a0[4], (Float.MIN_VALUE/(-VALUE)));307errn += verify("test_divc_n: ", 5, a0[5], (Float.MIN_NORMAL/(-VALUE)));308for (int i=6; i<ARRLEN; i++) {309errn += verify("test_divc_n: ", i, a0[i], ((ADD_INIT+i)/(-VALUE)));310}311test_divv(a0, a1, -VALUE);312errn += verify("test_divv_n: ", 0, a0[0], (Float.NaN/(-VALUE)));313errn += verify("test_divv_n: ", 1, a0[1], (Float.POSITIVE_INFINITY/(-VALUE)));314errn += verify("test_divv_n: ", 2, a0[2], (Float.NEGATIVE_INFINITY/(-VALUE)));315errn += verify("test_divv_n: ", 3, a0[3], (Float.MAX_VALUE/(-VALUE)));316errn += verify("test_divv_n: ", 4, a0[4], (Float.MIN_VALUE/(-VALUE)));317errn += verify("test_divv_n: ", 5, a0[5], (Float.MIN_NORMAL/(-VALUE)));318for (int i=6; i<ARRLEN; i++) {319errn += verify("test_divv_n: ", i, a0[i], ((ADD_INIT+i)/(-VALUE)));320}321test_diva(a0, a1, a3);322errn += verify("test_diva_n: ", 0, a0[0], (Float.NaN/(-VALUE)));323errn += verify("test_diva_n: ", 1, a0[1], (Float.POSITIVE_INFINITY/(-VALUE)));324errn += verify("test_diva_n: ", 2, a0[2], (Float.NEGATIVE_INFINITY/(-VALUE)));325errn += verify("test_diva_n: ", 3, a0[3], (Float.MAX_VALUE/(-VALUE)));326errn += verify("test_diva_n: ", 4, a0[4], (Float.MIN_VALUE/(-VALUE)));327errn += verify("test_diva_n: ", 5, a0[5], (Float.MIN_NORMAL/(-VALUE)));328errn += verify("test_diva_n: ", 6, a0[6], ((ADD_INIT+6)/(-Float.NaN)));329errn += verify("test_diva_n: ", 7, a0[7], ((ADD_INIT+7)/(-Float.POSITIVE_INFINITY)));330errn += verify("test_diva_n: ", 8, a0[8], ((ADD_INIT+8)/(-Float.NEGATIVE_INFINITY)));331errn += verify("test_diva_n: ", 9, a0[9], ((ADD_INIT+9)/(-Float.MAX_VALUE)));332errn += verify("test_diva_n: ", 10, a0[10], ((ADD_INIT+10)/(-Float.MIN_VALUE)));333errn += verify("test_diva_n: ", 11, a0[11], ((ADD_INIT+11)/(-Float.MIN_NORMAL)));334for (int i=12; i<ARRLEN; i++) {335errn += verify("test_diva_n: ", i, a0[i], ((ADD_INIT+i)/(-VALUE)));336}337338}339340if (errn > 0)341return errn;342343System.out.println("Time");344long start, end;345346start = System.currentTimeMillis();347for (int i=0; i<ITERS; i++) {348test_sum(a1);349}350end = System.currentTimeMillis();351System.out.println("test_sum: " + (end - start));352353start = System.currentTimeMillis();354for (int i=0; i<ITERS; i++) {355test_addc(a0, a1);356}357end = System.currentTimeMillis();358System.out.println("test_addc: " + (end - start));359start = System.currentTimeMillis();360for (int i=0; i<ITERS; i++) {361test_addv(a0, a1, VALUE);362}363end = System.currentTimeMillis();364System.out.println("test_addv: " + (end - start));365start = System.currentTimeMillis();366for (int i=0; i<ITERS; i++) {367test_adda(a0, a1, a2);368}369end = System.currentTimeMillis();370System.out.println("test_adda: " + (end - start));371372start = System.currentTimeMillis();373for (int i=0; i<ITERS; i++) {374test_subc(a0, a1);375}376end = System.currentTimeMillis();377System.out.println("test_subc: " + (end - start));378start = System.currentTimeMillis();379for (int i=0; i<ITERS; i++) {380test_subv(a0, a1, VALUE);381}382end = System.currentTimeMillis();383System.out.println("test_subv: " + (end - start));384start = System.currentTimeMillis();385for (int i=0; i<ITERS; i++) {386test_suba(a0, a1, a2);387}388end = System.currentTimeMillis();389System.out.println("test_suba: " + (end - start));390391start = System.currentTimeMillis();392for (int i=0; i<ITERS; i++) {393test_mulc(a0, a1);394}395end = System.currentTimeMillis();396System.out.println("test_mulc: " + (end - start));397start = System.currentTimeMillis();398for (int i=0; i<ITERS; i++) {399test_mulv(a0, a1, VALUE);400}401end = System.currentTimeMillis();402System.out.println("test_mulv: " + (end - start));403start = System.currentTimeMillis();404for (int i=0; i<ITERS; i++) {405test_mula(a0, a1, a2);406}407end = System.currentTimeMillis();408System.out.println("test_mula: " + (end - start));409410start = System.currentTimeMillis();411for (int i=0; i<ITERS; i++) {412test_divc(a0, a1);413}414end = System.currentTimeMillis();415System.out.println("test_divc: " + (end - start));416start = System.currentTimeMillis();417for (int i=0; i<ITERS; i++) {418test_divv(a0, a1, VALUE);419}420end = System.currentTimeMillis();421System.out.println("test_divv: " + (end - start));422start = System.currentTimeMillis();423for (int i=0; i<ITERS; i++) {424test_diva(a0, a1, a2);425}426end = System.currentTimeMillis();427System.out.println("test_diva: " + (end - start));428429start = System.currentTimeMillis();430for (int i=0; i<ITERS; i++) {431test_mulc_n(a0, a1);432}433end = System.currentTimeMillis();434System.out.println("test_mulc_n: " + (end - start));435start = System.currentTimeMillis();436for (int i=0; i<ITERS; i++) {437test_mulv(a0, a1, -VALUE);438}439end = System.currentTimeMillis();440System.out.println("test_mulv_n: " + (end - start));441start = System.currentTimeMillis();442for (int i=0; i<ITERS; i++) {443test_mula(a0, a1, a3);444}445end = System.currentTimeMillis();446System.out.println("test_mula_n: " + (end - start));447448start = System.currentTimeMillis();449for (int i=0; i<ITERS; i++) {450test_divc_n(a0, a1);451}452end = System.currentTimeMillis();453System.out.println("test_divc_n: " + (end - start));454start = System.currentTimeMillis();455for (int i=0; i<ITERS; i++) {456test_divv(a0, a1, -VALUE);457}458end = System.currentTimeMillis();459System.out.println("test_divv_n: " + (end - start));460start = System.currentTimeMillis();461for (int i=0; i<ITERS; i++) {462test_diva(a0, a1, a3);463}464end = System.currentTimeMillis();465System.out.println("test_diva_n: " + (end - start));466467return errn;468}469470static float test_sum(float[] a1) {471float sum = 0;472for (int i = 0; i < a1.length; i+=1) {473sum += a1[i];474}475return sum;476}477478static void test_addc(float[] a0, float[] a1) {479for (int i = 0; i < a0.length; i+=1) {480a0[i] = (a1[i]+VALUE);481}482}483static void test_addv(float[] a0, float[] a1, float b) {484for (int i = 0; i < a0.length; i+=1) {485a0[i] = (a1[i]+b);486}487}488static void test_adda(float[] a0, float[] a1, float[] a2) {489for (int i = 0; i < a0.length; i+=1) {490a0[i] = (a1[i]+a2[i]);491}492}493494static void test_subc(float[] a0, float[] a1) {495for (int i = 0; i < a0.length; i+=1) {496a0[i] = (a1[i]-VALUE);497}498}499static void test_subv(float[] a0, float[] a1, float b) {500for (int i = 0; i < a0.length; i+=1) {501a0[i] = (a1[i]-b);502}503}504static void test_suba(float[] a0, float[] a1, float[] a2) {505for (int i = 0; i < a0.length; i+=1) {506a0[i] = (a1[i]-a2[i]);507}508}509510static void test_mulc(float[] a0, float[] a1) {511for (int i = 0; i < a0.length; i+=1) {512a0[i] = (a1[i]*VALUE);513}514}515static void test_mulc_n(float[] a0, float[] a1) {516for (int i = 0; i < a0.length; i+=1) {517a0[i] = (a1[i]*(-VALUE));518}519}520static void test_mulv(float[] a0, float[] a1, float b) {521for (int i = 0; i < a0.length; i+=1) {522a0[i] = (a1[i]*b);523}524}525static void test_mula(float[] a0, float[] a1, float[] a2) {526for (int i = 0; i < a0.length; i+=1) {527a0[i] = (a1[i]*a2[i]);528}529}530531static void test_divc(float[] a0, float[] a1) {532for (int i = 0; i < a0.length; i+=1) {533a0[i] = (a1[i]/VALUE);534}535}536static void test_divc_n(float[] a0, float[] a1) {537for (int i = 0; i < a0.length; i+=1) {538a0[i] = (a1[i]/(-VALUE));539}540}541static void test_divv(float[] a0, float[] a1, float b) {542for (int i = 0; i < a0.length; i+=1) {543a0[i] = (a1[i]/b);544}545}546static void test_diva(float[] a0, float[] a1, float[] a2) {547for (int i = 0; i < a0.length; i+=1) {548a0[i] = (a1[i]/a2[i]);549}550}551552static int verify(String text, int i, float elem, float val) {553if (elem != val && !(Float.isNaN(elem) && Float.isNaN(val))) {554System.err.println(text + "[" + i + "] = " + elem + " != " + val);555return 1;556}557return 0;558}559}560561562