test/compiler/6340864/TestByteVect.java

Wed, 27 Apr 2016 01:25:04 +0800

author
aoqi
date
Wed, 27 Apr 2016 01:25:04 +0800
changeset 0
f90c822e73f8
child 6876
710a3c8b516e
permissions
-rw-r--r--

Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/
changeset: 6782:28b50d07f6f8
tag: jdk8u25-b17

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation.
aoqi@0 8 *
aoqi@0 9 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 12 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 13 * accompanied this code).
aoqi@0 14 *
aoqi@0 15 * You should have received a copy of the GNU General Public License version
aoqi@0 16 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 18 *
aoqi@0 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 20 * or visit www.oracle.com if you need additional information or have any
aoqi@0 21 * questions.
aoqi@0 22 *
aoqi@0 23 */
aoqi@0 24
aoqi@0 25 /**
aoqi@0 26 * @test
aoqi@0 27 * @bug 6340864
aoqi@0 28 * @summary Implement vectorization optimizations in hotspot-server
aoqi@0 29 *
aoqi@0 30 * @run main/othervm/timeout=400 -Xbatch -Xmx64m TestByteVect
aoqi@0 31 */
aoqi@0 32
aoqi@0 33 public class TestByteVect {
aoqi@0 34 private static final int ARRLEN = 997;
aoqi@0 35 private static final int ITERS = 11000;
aoqi@0 36 private static final int ADD_INIT = 63;
aoqi@0 37 private static final int BIT_MASK = 0xB7;
aoqi@0 38 private static final int VALUE = 3;
aoqi@0 39 private static final int SHIFT = 8;
aoqi@0 40
aoqi@0 41 public static void main(String args[]) {
aoqi@0 42 System.out.println("Testing Byte vectors");
aoqi@0 43 int errn = test();
aoqi@0 44 if (errn > 0) {
aoqi@0 45 System.err.println("FAILED: " + errn + " errors");
aoqi@0 46 System.exit(97);
aoqi@0 47 }
aoqi@0 48 System.out.println("PASSED");
aoqi@0 49 }
aoqi@0 50
aoqi@0 51 static int test() {
aoqi@0 52 byte[] a0 = new byte[ARRLEN];
aoqi@0 53 byte[] a1 = new byte[ARRLEN];
aoqi@0 54 byte[] a2 = new byte[ARRLEN];
aoqi@0 55 byte[] a3 = new byte[ARRLEN];
aoqi@0 56 byte[] a4 = new byte[ARRLEN];
aoqi@0 57 short[] p2 = new short[ARRLEN/2];
aoqi@0 58 int[] p4 = new int[ARRLEN/4];
aoqi@0 59 long[] p8 = new long[ARRLEN/8];
aoqi@0 60 // Initialize
aoqi@0 61 int gold_sum = 0;
aoqi@0 62 for (int i=0; i<ARRLEN; i++) {
aoqi@0 63 byte val = (byte)(ADD_INIT+i);
aoqi@0 64 gold_sum += val;
aoqi@0 65 a1[i] = val;
aoqi@0 66 a2[i] = (byte)VALUE;
aoqi@0 67 a3[i] = (byte)-VALUE;
aoqi@0 68 a4[i] = (byte)BIT_MASK;
aoqi@0 69 }
aoqi@0 70 System.out.println("Warmup");
aoqi@0 71 for (int i=0; i<ITERS; i++) {
aoqi@0 72 test_sum(a1);
aoqi@0 73 test_addc(a0, a1);
aoqi@0 74 test_addv(a0, a1, (byte)VALUE);
aoqi@0 75 test_adda(a0, a1, a2);
aoqi@0 76 test_subc(a0, a1);
aoqi@0 77 test_subv(a0, a1, (byte)VALUE);
aoqi@0 78 test_suba(a0, a1, a2);
aoqi@0 79
aoqi@0 80 test_mulc(a0, a1);
aoqi@0 81 test_mulv(a0, a1, (byte)VALUE);
aoqi@0 82 test_mula(a0, a1, a2);
aoqi@0 83 test_divc(a0, a1);
aoqi@0 84 test_divv(a0, a1, (byte)VALUE);
aoqi@0 85 test_diva(a0, a1, a2);
aoqi@0 86 test_mulc_n(a0, a1);
aoqi@0 87 test_mulv(a0, a1, (byte)-VALUE);
aoqi@0 88 test_mula(a0, a1, a3);
aoqi@0 89 test_divc_n(a0, a1);
aoqi@0 90 test_divv(a0, a1, (byte)-VALUE);
aoqi@0 91 test_diva(a0, a1, a3);
aoqi@0 92
aoqi@0 93 test_andc(a0, a1);
aoqi@0 94 test_andv(a0, a1, (byte)BIT_MASK);
aoqi@0 95 test_anda(a0, a1, a4);
aoqi@0 96 test_orc(a0, a1);
aoqi@0 97 test_orv(a0, a1, (byte)BIT_MASK);
aoqi@0 98 test_ora(a0, a1, a4);
aoqi@0 99 test_xorc(a0, a1);
aoqi@0 100 test_xorv(a0, a1, (byte)BIT_MASK);
aoqi@0 101 test_xora(a0, a1, a4);
aoqi@0 102
aoqi@0 103 test_sllc(a0, a1);
aoqi@0 104 test_sllv(a0, a1, VALUE);
aoqi@0 105 test_srlc(a0, a1);
aoqi@0 106 test_srlv(a0, a1, VALUE);
aoqi@0 107 test_srac(a0, a1);
aoqi@0 108 test_srav(a0, a1, VALUE);
aoqi@0 109
aoqi@0 110 test_sllc_n(a0, a1);
aoqi@0 111 test_sllv(a0, a1, -VALUE);
aoqi@0 112 test_srlc_n(a0, a1);
aoqi@0 113 test_srlv(a0, a1, -VALUE);
aoqi@0 114 test_srac_n(a0, a1);
aoqi@0 115 test_srav(a0, a1, -VALUE);
aoqi@0 116
aoqi@0 117 test_sllc_o(a0, a1);
aoqi@0 118 test_sllv(a0, a1, SHIFT);
aoqi@0 119 test_srlc_o(a0, a1);
aoqi@0 120 test_srlv(a0, a1, SHIFT);
aoqi@0 121 test_srac_o(a0, a1);
aoqi@0 122 test_srav(a0, a1, SHIFT);
aoqi@0 123
aoqi@0 124 test_sllc_on(a0, a1);
aoqi@0 125 test_sllv(a0, a1, -SHIFT);
aoqi@0 126 test_srlc_on(a0, a1);
aoqi@0 127 test_srlv(a0, a1, -SHIFT);
aoqi@0 128 test_srac_on(a0, a1);
aoqi@0 129 test_srav(a0, a1, -SHIFT);
aoqi@0 130
aoqi@0 131 test_sllc_add(a0, a1);
aoqi@0 132 test_sllv_add(a0, a1, ADD_INIT);
aoqi@0 133 test_srlc_add(a0, a1);
aoqi@0 134 test_srlv_add(a0, a1, ADD_INIT);
aoqi@0 135 test_srac_add(a0, a1);
aoqi@0 136 test_srav_add(a0, a1, ADD_INIT);
aoqi@0 137
aoqi@0 138 test_sllc_and(a0, a1);
aoqi@0 139 test_sllv_and(a0, a1, BIT_MASK);
aoqi@0 140 test_srlc_and(a0, a1);
aoqi@0 141 test_srlv_and(a0, a1, BIT_MASK);
aoqi@0 142 test_srac_and(a0, a1);
aoqi@0 143 test_srav_and(a0, a1, BIT_MASK);
aoqi@0 144
aoqi@0 145 test_pack2(p2, a1);
aoqi@0 146 test_unpack2(a0, p2);
aoqi@0 147 test_pack2_swap(p2, a1);
aoqi@0 148 test_unpack2_swap(a0, p2);
aoqi@0 149 test_pack4(p4, a1);
aoqi@0 150 test_unpack4(a0, p4);
aoqi@0 151 test_pack4_swap(p4, a1);
aoqi@0 152 test_unpack4_swap(a0, p4);
aoqi@0 153 test_pack8(p8, a1);
aoqi@0 154 test_unpack8(a0, p8);
aoqi@0 155 test_pack8_swap(p8, a1);
aoqi@0 156 test_unpack8_swap(a0, p8);
aoqi@0 157 }
aoqi@0 158 // Test and verify results
aoqi@0 159 System.out.println("Verification");
aoqi@0 160 int errn = 0;
aoqi@0 161 {
aoqi@0 162 int sum = test_sum(a1);
aoqi@0 163 if (sum != gold_sum) {
aoqi@0 164 System.err.println("test_sum: " + sum + " != " + gold_sum);
aoqi@0 165 errn++;
aoqi@0 166 }
aoqi@0 167
aoqi@0 168 test_addc(a0, a1);
aoqi@0 169 for (int i=0; i<ARRLEN; i++) {
aoqi@0 170 errn += verify("test_addc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)+VALUE));
aoqi@0 171 }
aoqi@0 172 test_addv(a0, a1, (byte)VALUE);
aoqi@0 173 for (int i=0; i<ARRLEN; i++) {
aoqi@0 174 errn += verify("test_addv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)+VALUE));
aoqi@0 175 }
aoqi@0 176 test_adda(a0, a1, a2);
aoqi@0 177 for (int i=0; i<ARRLEN; i++) {
aoqi@0 178 errn += verify("test_adda: ", i, a0[i], (byte)((byte)(ADD_INIT+i)+VALUE));
aoqi@0 179 }
aoqi@0 180
aoqi@0 181 test_subc(a0, a1);
aoqi@0 182 for (int i=0; i<ARRLEN; i++) {
aoqi@0 183 errn += verify("test_subc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)-VALUE));
aoqi@0 184 }
aoqi@0 185 test_subv(a0, a1, (byte)VALUE);
aoqi@0 186 for (int i=0; i<ARRLEN; i++) {
aoqi@0 187 errn += verify("test_subv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)-VALUE));
aoqi@0 188 }
aoqi@0 189 test_suba(a0, a1, a2);
aoqi@0 190 for (int i=0; i<ARRLEN; i++) {
aoqi@0 191 errn += verify("test_suba: ", i, a0[i], (byte)((byte)(ADD_INIT+i)-VALUE));
aoqi@0 192 }
aoqi@0 193
aoqi@0 194 test_mulc(a0, a1);
aoqi@0 195 for (int i=0; i<ARRLEN; i++) {
aoqi@0 196 errn += verify("test_mulc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)*VALUE));
aoqi@0 197 }
aoqi@0 198 test_mulv(a0, a1, (byte)VALUE);
aoqi@0 199 for (int i=0; i<ARRLEN; i++) {
aoqi@0 200 errn += verify("test_mulv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)*VALUE));
aoqi@0 201 }
aoqi@0 202 test_mula(a0, a1, a2);
aoqi@0 203 for (int i=0; i<ARRLEN; i++) {
aoqi@0 204 errn += verify("test_mula: ", i, a0[i], (byte)((byte)(ADD_INIT+i)*VALUE));
aoqi@0 205 }
aoqi@0 206
aoqi@0 207 test_divc(a0, a1);
aoqi@0 208 for (int i=0; i<ARRLEN; i++) {
aoqi@0 209 errn += verify("test_divc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)/VALUE));
aoqi@0 210 }
aoqi@0 211 test_divv(a0, a1, (byte)VALUE);
aoqi@0 212 for (int i=0; i<ARRLEN; i++) {
aoqi@0 213 errn += verify("test_divv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)/VALUE));
aoqi@0 214 }
aoqi@0 215 test_diva(a0, a1, a2);
aoqi@0 216 for (int i=0; i<ARRLEN; i++) {
aoqi@0 217 errn += verify("test_diva: ", i, a0[i], (byte)((byte)(ADD_INIT+i)/VALUE));
aoqi@0 218 }
aoqi@0 219
aoqi@0 220 test_mulc_n(a0, a1);
aoqi@0 221 for (int i=0; i<ARRLEN; i++) {
aoqi@0 222 errn += verify("test_mulc_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)*(-VALUE)));
aoqi@0 223 }
aoqi@0 224 test_mulv(a0, a1, (byte)-VALUE);
aoqi@0 225 for (int i=0; i<ARRLEN; i++) {
aoqi@0 226 errn += verify("test_mulv_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)*(-VALUE)));
aoqi@0 227 }
aoqi@0 228 test_mula(a0, a1, a3);
aoqi@0 229 for (int i=0; i<ARRLEN; i++) {
aoqi@0 230 errn += verify("test_mula_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)*(-VALUE)));
aoqi@0 231 }
aoqi@0 232
aoqi@0 233 test_divc_n(a0, a1);
aoqi@0 234 for (int i=0; i<ARRLEN; i++) {
aoqi@0 235 errn += verify("test_divc_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)/(-VALUE)));
aoqi@0 236 }
aoqi@0 237 test_divv(a0, a1, (byte)-VALUE);
aoqi@0 238 for (int i=0; i<ARRLEN; i++) {
aoqi@0 239 errn += verify("test_divv_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)/(-VALUE)));
aoqi@0 240 }
aoqi@0 241 test_diva(a0, a1, a3);
aoqi@0 242 for (int i=0; i<ARRLEN; i++) {
aoqi@0 243 errn += verify("test_diva_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)/(-VALUE)));
aoqi@0 244 }
aoqi@0 245
aoqi@0 246 test_andc(a0, a1);
aoqi@0 247 for (int i=0; i<ARRLEN; i++) {
aoqi@0 248 errn += verify("test_andc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)&BIT_MASK));
aoqi@0 249 }
aoqi@0 250 test_andv(a0, a1, (byte)BIT_MASK);
aoqi@0 251 for (int i=0; i<ARRLEN; i++) {
aoqi@0 252 errn += verify("test_andv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)&BIT_MASK));
aoqi@0 253 }
aoqi@0 254 test_anda(a0, a1, a4);
aoqi@0 255 for (int i=0; i<ARRLEN; i++) {
aoqi@0 256 errn += verify("test_anda: ", i, a0[i], (byte)((byte)(ADD_INIT+i)&BIT_MASK));
aoqi@0 257 }
aoqi@0 258
aoqi@0 259 test_orc(a0, a1);
aoqi@0 260 for (int i=0; i<ARRLEN; i++) {
aoqi@0 261 errn += verify("test_orc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)|BIT_MASK));
aoqi@0 262 }
aoqi@0 263 test_orv(a0, a1, (byte)BIT_MASK);
aoqi@0 264 for (int i=0; i<ARRLEN; i++) {
aoqi@0 265 errn += verify("test_orv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)|BIT_MASK));
aoqi@0 266 }
aoqi@0 267 test_ora(a0, a1, a4);
aoqi@0 268 for (int i=0; i<ARRLEN; i++) {
aoqi@0 269 errn += verify("test_ora: ", i, a0[i], (byte)((byte)(ADD_INIT+i)|BIT_MASK));
aoqi@0 270 }
aoqi@0 271
aoqi@0 272 test_xorc(a0, a1);
aoqi@0 273 for (int i=0; i<ARRLEN; i++) {
aoqi@0 274 errn += verify("test_xorc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)^BIT_MASK));
aoqi@0 275 }
aoqi@0 276 test_xorv(a0, a1, (byte)BIT_MASK);
aoqi@0 277 for (int i=0; i<ARRLEN; i++) {
aoqi@0 278 errn += verify("test_xorv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)^BIT_MASK));
aoqi@0 279 }
aoqi@0 280 test_xora(a0, a1, a4);
aoqi@0 281 for (int i=0; i<ARRLEN; i++) {
aoqi@0 282 errn += verify("test_xora: ", i, a0[i], (byte)((byte)(ADD_INIT+i)^BIT_MASK));
aoqi@0 283 }
aoqi@0 284
aoqi@0 285 test_sllc(a0, a1);
aoqi@0 286 for (int i=0; i<ARRLEN; i++) {
aoqi@0 287 errn += verify("test_sllc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<VALUE));
aoqi@0 288 }
aoqi@0 289 test_sllv(a0, a1, VALUE);
aoqi@0 290 for (int i=0; i<ARRLEN; i++) {
aoqi@0 291 errn += verify("test_sllv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<VALUE));
aoqi@0 292 }
aoqi@0 293
aoqi@0 294 test_srlc(a0, a1);
aoqi@0 295 for (int i=0; i<ARRLEN; i++) {
aoqi@0 296 errn += verify("test_srlc: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>VALUE));
aoqi@0 297 }
aoqi@0 298 test_srlv(a0, a1, VALUE);
aoqi@0 299 for (int i=0; i<ARRLEN; i++) {
aoqi@0 300 errn += verify("test_srlv: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>VALUE));
aoqi@0 301 }
aoqi@0 302
aoqi@0 303 test_srac(a0, a1);
aoqi@0 304 for (int i=0; i<ARRLEN; i++) {
aoqi@0 305 errn += verify("test_srac: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>VALUE));
aoqi@0 306 }
aoqi@0 307 test_srav(a0, a1, VALUE);
aoqi@0 308 for (int i=0; i<ARRLEN; i++) {
aoqi@0 309 errn += verify("test_srav: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>VALUE));
aoqi@0 310 }
aoqi@0 311
aoqi@0 312 test_sllc_n(a0, a1);
aoqi@0 313 for (int i=0; i<ARRLEN; i++) {
aoqi@0 314 errn += verify("test_sllc_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<(-VALUE)));
aoqi@0 315 }
aoqi@0 316 test_sllv(a0, a1, -VALUE);
aoqi@0 317 for (int i=0; i<ARRLEN; i++) {
aoqi@0 318 errn += verify("test_sllv_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<(-VALUE)));
aoqi@0 319 }
aoqi@0 320
aoqi@0 321 test_srlc_n(a0, a1);
aoqi@0 322 for (int i=0; i<ARRLEN; i++) {
aoqi@0 323 errn += verify("test_srlc_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>(-VALUE)));
aoqi@0 324 }
aoqi@0 325 test_srlv(a0, a1, -VALUE);
aoqi@0 326 for (int i=0; i<ARRLEN; i++) {
aoqi@0 327 errn += verify("test_srlv_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>(-VALUE)));
aoqi@0 328 }
aoqi@0 329
aoqi@0 330 test_srac_n(a0, a1);
aoqi@0 331 for (int i=0; i<ARRLEN; i++) {
aoqi@0 332 errn += verify("test_srac_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>(-VALUE)));
aoqi@0 333 }
aoqi@0 334 test_srav(a0, a1, -VALUE);
aoqi@0 335 for (int i=0; i<ARRLEN; i++) {
aoqi@0 336 errn += verify("test_srav_n: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>(-VALUE)));
aoqi@0 337 }
aoqi@0 338
aoqi@0 339 test_sllc_o(a0, a1);
aoqi@0 340 for (int i=0; i<ARRLEN; i++) {
aoqi@0 341 errn += verify("test_sllc_o: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<SHIFT));
aoqi@0 342 }
aoqi@0 343 test_sllv(a0, a1, SHIFT);
aoqi@0 344 for (int i=0; i<ARRLEN; i++) {
aoqi@0 345 errn += verify("test_sllv_o: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<SHIFT));
aoqi@0 346 }
aoqi@0 347
aoqi@0 348 test_srlc_o(a0, a1);
aoqi@0 349 for (int i=0; i<ARRLEN; i++) {
aoqi@0 350 errn += verify("test_srlc_o: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>SHIFT));
aoqi@0 351 }
aoqi@0 352 test_srlv(a0, a1, SHIFT);
aoqi@0 353 for (int i=0; i<ARRLEN; i++) {
aoqi@0 354 errn += verify("test_srlv_o: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>SHIFT));
aoqi@0 355 }
aoqi@0 356
aoqi@0 357 test_srac_o(a0, a1);
aoqi@0 358 for (int i=0; i<ARRLEN; i++) {
aoqi@0 359 errn += verify("test_srac_o: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>SHIFT));
aoqi@0 360 }
aoqi@0 361 test_srav(a0, a1, SHIFT);
aoqi@0 362 for (int i=0; i<ARRLEN; i++) {
aoqi@0 363 errn += verify("test_srav_o: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>SHIFT));
aoqi@0 364 }
aoqi@0 365
aoqi@0 366 test_sllc_on(a0, a1);
aoqi@0 367 for (int i=0; i<ARRLEN; i++) {
aoqi@0 368 errn += verify("test_sllc_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<(-SHIFT)));
aoqi@0 369 }
aoqi@0 370 test_sllv(a0, a1, -SHIFT);
aoqi@0 371 for (int i=0; i<ARRLEN; i++) {
aoqi@0 372 errn += verify("test_sllv_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)<<(-SHIFT)));
aoqi@0 373 }
aoqi@0 374
aoqi@0 375 test_srlc_on(a0, a1);
aoqi@0 376 for (int i=0; i<ARRLEN; i++) {
aoqi@0 377 errn += verify("test_srlc_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>(-SHIFT)));
aoqi@0 378 }
aoqi@0 379 test_srlv(a0, a1, -SHIFT);
aoqi@0 380 for (int i=0; i<ARRLEN; i++) {
aoqi@0 381 errn += verify("test_srlv_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>>(-SHIFT)));
aoqi@0 382 }
aoqi@0 383
aoqi@0 384 test_srac_on(a0, a1);
aoqi@0 385 for (int i=0; i<ARRLEN; i++) {
aoqi@0 386 errn += verify("test_srac_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>(-SHIFT)));
aoqi@0 387 }
aoqi@0 388 test_srav(a0, a1, -SHIFT);
aoqi@0 389 for (int i=0; i<ARRLEN; i++) {
aoqi@0 390 errn += verify("test_srav_on: ", i, a0[i], (byte)((byte)(ADD_INIT+i)>>(-SHIFT)));
aoqi@0 391 }
aoqi@0 392
aoqi@0 393 test_sllc_add(a0, a1);
aoqi@0 394 for (int i=0; i<ARRLEN; i++) {
aoqi@0 395 errn += verify("test_sllc_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)<<VALUE));
aoqi@0 396 }
aoqi@0 397 test_sllv_add(a0, a1, ADD_INIT);
aoqi@0 398 for (int i=0; i<ARRLEN; i++) {
aoqi@0 399 errn += verify("test_sllv_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)<<VALUE));
aoqi@0 400 }
aoqi@0 401
aoqi@0 402 test_srlc_add(a0, a1);
aoqi@0 403 for (int i=0; i<ARRLEN; i++) {
aoqi@0 404 errn += verify("test_srlc_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
aoqi@0 405 }
aoqi@0 406 test_srlv_add(a0, a1, ADD_INIT);
aoqi@0 407 for (int i=0; i<ARRLEN; i++) {
aoqi@0 408 errn += verify("test_srlv_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)>>>VALUE));
aoqi@0 409 }
aoqi@0 410
aoqi@0 411 test_srac_add(a0, a1);
aoqi@0 412 for (int i=0; i<ARRLEN; i++) {
aoqi@0 413 errn += verify("test_srac_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)>>VALUE));
aoqi@0 414 }
aoqi@0 415 test_srav_add(a0, a1, ADD_INIT);
aoqi@0 416 for (int i=0; i<ARRLEN; i++) {
aoqi@0 417 errn += verify("test_srav_add: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) + ADD_INIT)>>VALUE));
aoqi@0 418 }
aoqi@0 419
aoqi@0 420 test_sllc_and(a0, a1);
aoqi@0 421 for (int i=0; i<ARRLEN; i++) {
aoqi@0 422 errn += verify("test_sllc_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)<<VALUE));
aoqi@0 423 }
aoqi@0 424 test_sllv_and(a0, a1, BIT_MASK);
aoqi@0 425 for (int i=0; i<ARRLEN; i++) {
aoqi@0 426 errn += verify("test_sllv_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)<<VALUE));
aoqi@0 427 }
aoqi@0 428
aoqi@0 429 test_srlc_and(a0, a1);
aoqi@0 430 for (int i=0; i<ARRLEN; i++) {
aoqi@0 431 errn += verify("test_srlc_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
aoqi@0 432 }
aoqi@0 433 test_srlv_and(a0, a1, BIT_MASK);
aoqi@0 434 for (int i=0; i<ARRLEN; i++) {
aoqi@0 435 errn += verify("test_srlv_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)>>>VALUE));
aoqi@0 436 }
aoqi@0 437
aoqi@0 438 test_srac_and(a0, a1);
aoqi@0 439 for (int i=0; i<ARRLEN; i++) {
aoqi@0 440 errn += verify("test_srac_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)>>VALUE));
aoqi@0 441 }
aoqi@0 442 test_srav_and(a0, a1, BIT_MASK);
aoqi@0 443 for (int i=0; i<ARRLEN; i++) {
aoqi@0 444 errn += verify("test_srav_and: ", i, a0[i], (byte)(((byte)(ADD_INIT+i) & BIT_MASK)>>VALUE));
aoqi@0 445 }
aoqi@0 446
aoqi@0 447 test_pack2(p2, a1);
aoqi@0 448 for (int i=0; i<ARRLEN/2; i++) {
aoqi@0 449 errn += verify("test_pack2: ", i, p2[i], (short)(((short)(ADD_INIT+2*i) & 0xFF) | ((short)(ADD_INIT+2*i+1) << 8)));
aoqi@0 450 }
aoqi@0 451 for (int i=0; i<ARRLEN; i++) {
aoqi@0 452 a0[i] = -1;
aoqi@0 453 }
aoqi@0 454 test_unpack2(a0, p2);
aoqi@0 455 for (int i=0; i<(ARRLEN&(-2)); i++) {
aoqi@0 456 errn += verify("test_unpack2: ", i, a0[i], (byte)(ADD_INIT+i));
aoqi@0 457 }
aoqi@0 458
aoqi@0 459 test_pack2_swap(p2, a1);
aoqi@0 460 for (int i=0; i<ARRLEN/2; i++) {
aoqi@0 461 errn += verify("test_pack2_swap: ", i, p2[i], (short)(((short)(ADD_INIT+2*i+1) & 0xFF) | ((short)(ADD_INIT+2*i) << 8)));
aoqi@0 462 }
aoqi@0 463 for (int i=0; i<ARRLEN; i++) {
aoqi@0 464 a0[i] = -1;
aoqi@0 465 }
aoqi@0 466 test_unpack2_swap(a0, p2);
aoqi@0 467 for (int i=0; i<(ARRLEN&(-2)); i++) {
aoqi@0 468 errn += verify("test_unpack2_swap: ", i, a0[i], (byte)(ADD_INIT+i));
aoqi@0 469 }
aoqi@0 470
aoqi@0 471 test_pack4(p4, a1);
aoqi@0 472 for (int i=0; i<ARRLEN/4; i++) {
aoqi@0 473 errn += verify("test_pack4: ", i, p4[i], ((int)(ADD_INIT+4*i+0) & 0xFF) |
aoqi@0 474 (((int)(ADD_INIT+4*i+1) & 0xFF) << 8) |
aoqi@0 475 (((int)(ADD_INIT+4*i+2) & 0xFF) << 16) |
aoqi@0 476 (((int)(ADD_INIT+4*i+3) & 0xFF) << 24));
aoqi@0 477 }
aoqi@0 478 for (int i=0; i<ARRLEN; i++) {
aoqi@0 479 a0[i] = -1;
aoqi@0 480 }
aoqi@0 481 test_unpack4(a0, p4);
aoqi@0 482 for (int i=0; i<(ARRLEN&(-4)); i++) {
aoqi@0 483 errn += verify("test_unpack4: ", i, a0[i], (byte)(ADD_INIT+i));
aoqi@0 484 }
aoqi@0 485
aoqi@0 486 test_pack4_swap(p4, a1);
aoqi@0 487 for (int i=0; i<ARRLEN/4; i++) {
aoqi@0 488 errn += verify("test_pack4_swap: ", i, p4[i], ((int)(ADD_INIT+4*i+3) & 0xFF) |
aoqi@0 489 (((int)(ADD_INIT+4*i+2) & 0xFF) << 8) |
aoqi@0 490 (((int)(ADD_INIT+4*i+1) & 0xFF) << 16) |
aoqi@0 491 (((int)(ADD_INIT+4*i+0) & 0xFF) << 24));
aoqi@0 492 }
aoqi@0 493 for (int i=0; i<ARRLEN; i++) {
aoqi@0 494 a0[i] = -1;
aoqi@0 495 }
aoqi@0 496 test_unpack4_swap(a0, p4);
aoqi@0 497 for (int i=0; i<(ARRLEN&(-4)); i++) {
aoqi@0 498 errn += verify("test_unpack4_swap: ", i, a0[i], (byte)(ADD_INIT+i));
aoqi@0 499 }
aoqi@0 500
aoqi@0 501 test_pack8(p8, a1);
aoqi@0 502 for (int i=0; i<ARRLEN/8; i++) {
aoqi@0 503 errn += verify("test_pack8: ", i, p8[i], ((long)(ADD_INIT+8*i+0) & 0xFFl) |
aoqi@0 504 (((long)(ADD_INIT+8*i+1) & 0xFFl) << 8) |
aoqi@0 505 (((long)(ADD_INIT+8*i+2) & 0xFFl) << 16) |
aoqi@0 506 (((long)(ADD_INIT+8*i+3) & 0xFFl) << 24) |
aoqi@0 507 (((long)(ADD_INIT+8*i+4) & 0xFFl) << 32) |
aoqi@0 508 (((long)(ADD_INIT+8*i+5) & 0xFFl) << 40) |
aoqi@0 509 (((long)(ADD_INIT+8*i+6) & 0xFFl) << 48) |
aoqi@0 510 (((long)(ADD_INIT+8*i+7) & 0xFFl) << 56));
aoqi@0 511 }
aoqi@0 512 for (int i=0; i<ARRLEN; i++) {
aoqi@0 513 a0[i] = -1;
aoqi@0 514 }
aoqi@0 515 test_unpack8(a0, p8);
aoqi@0 516 for (int i=0; i<(ARRLEN&(-8)); i++) {
aoqi@0 517 errn += verify("test_unpack8: ", i, a0[i], (byte)(ADD_INIT+i));
aoqi@0 518 }
aoqi@0 519
aoqi@0 520 test_pack8_swap(p8, a1);
aoqi@0 521 for (int i=0; i<ARRLEN/8; i++) {
aoqi@0 522 errn += verify("test_pack8_swap: ", i, p8[i], ((long)(ADD_INIT+8*i+7) & 0xFFl) |
aoqi@0 523 (((long)(ADD_INIT+8*i+6) & 0xFFl) << 8) |
aoqi@0 524 (((long)(ADD_INIT+8*i+5) & 0xFFl) << 16) |
aoqi@0 525 (((long)(ADD_INIT+8*i+4) & 0xFFl) << 24) |
aoqi@0 526 (((long)(ADD_INIT+8*i+3) & 0xFFl) << 32) |
aoqi@0 527 (((long)(ADD_INIT+8*i+2) & 0xFFl) << 40) |
aoqi@0 528 (((long)(ADD_INIT+8*i+1) & 0xFFl) << 48) |
aoqi@0 529 (((long)(ADD_INIT+8*i+0) & 0xFFl) << 56));
aoqi@0 530 }
aoqi@0 531 for (int i=0; i<ARRLEN; i++) {
aoqi@0 532 a0[i] = -1;
aoqi@0 533 }
aoqi@0 534 test_unpack8_swap(a0, p8);
aoqi@0 535 for (int i=0; i<(ARRLEN&(-8)); i++) {
aoqi@0 536 errn += verify("test_unpack8_swap: ", i, a0[i], (byte)(ADD_INIT+i));
aoqi@0 537 }
aoqi@0 538
aoqi@0 539 }
aoqi@0 540
aoqi@0 541 if (errn > 0)
aoqi@0 542 return errn;
aoqi@0 543
aoqi@0 544 System.out.println("Time");
aoqi@0 545 long start, end;
aoqi@0 546
aoqi@0 547 start = System.currentTimeMillis();
aoqi@0 548 for (int i=0; i<ITERS; i++) {
aoqi@0 549 test_sum(a1);
aoqi@0 550 }
aoqi@0 551 end = System.currentTimeMillis();
aoqi@0 552 System.out.println("test_sum: " + (end - start));
aoqi@0 553
aoqi@0 554 start = System.currentTimeMillis();
aoqi@0 555 for (int i=0; i<ITERS; i++) {
aoqi@0 556 test_addc(a0, a1);
aoqi@0 557 }
aoqi@0 558 end = System.currentTimeMillis();
aoqi@0 559 System.out.println("test_addc: " + (end - start));
aoqi@0 560 start = System.currentTimeMillis();
aoqi@0 561 for (int i=0; i<ITERS; i++) {
aoqi@0 562 test_addv(a0, a1, (byte)VALUE);
aoqi@0 563 }
aoqi@0 564 end = System.currentTimeMillis();
aoqi@0 565 System.out.println("test_addv: " + (end - start));
aoqi@0 566 start = System.currentTimeMillis();
aoqi@0 567 for (int i=0; i<ITERS; i++) {
aoqi@0 568 test_adda(a0, a1, a2);
aoqi@0 569 }
aoqi@0 570 end = System.currentTimeMillis();
aoqi@0 571 System.out.println("test_adda: " + (end - start));
aoqi@0 572
aoqi@0 573 start = System.currentTimeMillis();
aoqi@0 574 for (int i=0; i<ITERS; i++) {
aoqi@0 575 test_subc(a0, a1);
aoqi@0 576 }
aoqi@0 577 end = System.currentTimeMillis();
aoqi@0 578 System.out.println("test_subc: " + (end - start));
aoqi@0 579 start = System.currentTimeMillis();
aoqi@0 580 for (int i=0; i<ITERS; i++) {
aoqi@0 581 test_subv(a0, a1, (byte)VALUE);
aoqi@0 582 }
aoqi@0 583 end = System.currentTimeMillis();
aoqi@0 584 System.out.println("test_subv: " + (end - start));
aoqi@0 585 start = System.currentTimeMillis();
aoqi@0 586 for (int i=0; i<ITERS; i++) {
aoqi@0 587 test_suba(a0, a1, a2);
aoqi@0 588 }
aoqi@0 589 end = System.currentTimeMillis();
aoqi@0 590 System.out.println("test_suba: " + (end - start));
aoqi@0 591
aoqi@0 592 start = System.currentTimeMillis();
aoqi@0 593 for (int i=0; i<ITERS; i++) {
aoqi@0 594 test_mulc(a0, a1);
aoqi@0 595 }
aoqi@0 596 end = System.currentTimeMillis();
aoqi@0 597 System.out.println("test_mulc: " + (end - start));
aoqi@0 598 start = System.currentTimeMillis();
aoqi@0 599 for (int i=0; i<ITERS; i++) {
aoqi@0 600 test_mulv(a0, a1, (byte)VALUE);
aoqi@0 601 }
aoqi@0 602 end = System.currentTimeMillis();
aoqi@0 603 System.out.println("test_mulv: " + (end - start));
aoqi@0 604 start = System.currentTimeMillis();
aoqi@0 605 for (int i=0; i<ITERS; i++) {
aoqi@0 606 test_mula(a0, a1, a2);
aoqi@0 607 }
aoqi@0 608 end = System.currentTimeMillis();
aoqi@0 609 System.out.println("test_mula: " + (end - start));
aoqi@0 610
aoqi@0 611 start = System.currentTimeMillis();
aoqi@0 612 for (int i=0; i<ITERS; i++) {
aoqi@0 613 test_divc(a0, a1);
aoqi@0 614 }
aoqi@0 615 end = System.currentTimeMillis();
aoqi@0 616 System.out.println("test_divc: " + (end - start));
aoqi@0 617 start = System.currentTimeMillis();
aoqi@0 618 for (int i=0; i<ITERS; i++) {
aoqi@0 619 test_divv(a0, a1, (byte)VALUE);
aoqi@0 620 }
aoqi@0 621 end = System.currentTimeMillis();
aoqi@0 622 System.out.println("test_divv: " + (end - start));
aoqi@0 623 start = System.currentTimeMillis();
aoqi@0 624 for (int i=0; i<ITERS; i++) {
aoqi@0 625 test_diva(a0, a1, a2);
aoqi@0 626 }
aoqi@0 627 end = System.currentTimeMillis();
aoqi@0 628 System.out.println("test_diva: " + (end - start));
aoqi@0 629
aoqi@0 630 start = System.currentTimeMillis();
aoqi@0 631 for (int i=0; i<ITERS; i++) {
aoqi@0 632 test_mulc_n(a0, a1);
aoqi@0 633 }
aoqi@0 634 end = System.currentTimeMillis();
aoqi@0 635 System.out.println("test_mulc_n: " + (end - start));
aoqi@0 636 start = System.currentTimeMillis();
aoqi@0 637 for (int i=0; i<ITERS; i++) {
aoqi@0 638 test_mulv(a0, a1, (byte)-VALUE);
aoqi@0 639 }
aoqi@0 640 end = System.currentTimeMillis();
aoqi@0 641 System.out.println("test_mulv_n: " + (end - start));
aoqi@0 642 start = System.currentTimeMillis();
aoqi@0 643 for (int i=0; i<ITERS; i++) {
aoqi@0 644 test_mula(a0, a1, a3);
aoqi@0 645 }
aoqi@0 646 end = System.currentTimeMillis();
aoqi@0 647 System.out.println("test_mula_n: " + (end - start));
aoqi@0 648
aoqi@0 649 start = System.currentTimeMillis();
aoqi@0 650 for (int i=0; i<ITERS; i++) {
aoqi@0 651 test_divc_n(a0, a1);
aoqi@0 652 }
aoqi@0 653 end = System.currentTimeMillis();
aoqi@0 654 System.out.println("test_divc_n: " + (end - start));
aoqi@0 655 start = System.currentTimeMillis();
aoqi@0 656 for (int i=0; i<ITERS; i++) {
aoqi@0 657 test_divv(a0, a1, (byte)-VALUE);
aoqi@0 658 }
aoqi@0 659 end = System.currentTimeMillis();
aoqi@0 660 System.out.println("test_divv_n: " + (end - start));
aoqi@0 661 start = System.currentTimeMillis();
aoqi@0 662 for (int i=0; i<ITERS; i++) {
aoqi@0 663 test_diva(a0, a1, a3);
aoqi@0 664 }
aoqi@0 665 end = System.currentTimeMillis();
aoqi@0 666 System.out.println("test_diva_n: " + (end - start));
aoqi@0 667
aoqi@0 668 start = System.currentTimeMillis();
aoqi@0 669 for (int i=0; i<ITERS; i++) {
aoqi@0 670 test_andc(a0, a1);
aoqi@0 671 }
aoqi@0 672 end = System.currentTimeMillis();
aoqi@0 673 System.out.println("test_andc: " + (end - start));
aoqi@0 674 start = System.currentTimeMillis();
aoqi@0 675 for (int i=0; i<ITERS; i++) {
aoqi@0 676 test_andv(a0, a1, (byte)BIT_MASK);
aoqi@0 677 }
aoqi@0 678 end = System.currentTimeMillis();
aoqi@0 679 System.out.println("test_andv: " + (end - start));
aoqi@0 680 start = System.currentTimeMillis();
aoqi@0 681 for (int i=0; i<ITERS; i++) {
aoqi@0 682 test_anda(a0, a1, a4);
aoqi@0 683 }
aoqi@0 684 end = System.currentTimeMillis();
aoqi@0 685 System.out.println("test_anda: " + (end - start));
aoqi@0 686
aoqi@0 687 start = System.currentTimeMillis();
aoqi@0 688 for (int i=0; i<ITERS; i++) {
aoqi@0 689 test_orc(a0, a1);
aoqi@0 690 }
aoqi@0 691 end = System.currentTimeMillis();
aoqi@0 692 System.out.println("test_orc: " + (end - start));
aoqi@0 693 start = System.currentTimeMillis();
aoqi@0 694 for (int i=0; i<ITERS; i++) {
aoqi@0 695 test_orv(a0, a1, (byte)BIT_MASK);
aoqi@0 696 }
aoqi@0 697 end = System.currentTimeMillis();
aoqi@0 698 System.out.println("test_orv: " + (end - start));
aoqi@0 699 start = System.currentTimeMillis();
aoqi@0 700 for (int i=0; i<ITERS; i++) {
aoqi@0 701 test_ora(a0, a1, a4);
aoqi@0 702 }
aoqi@0 703 end = System.currentTimeMillis();
aoqi@0 704 System.out.println("test_ora: " + (end - start));
aoqi@0 705
aoqi@0 706 start = System.currentTimeMillis();
aoqi@0 707 for (int i=0; i<ITERS; i++) {
aoqi@0 708 test_xorc(a0, a1);
aoqi@0 709 }
aoqi@0 710 end = System.currentTimeMillis();
aoqi@0 711 System.out.println("test_xorc: " + (end - start));
aoqi@0 712 start = System.currentTimeMillis();
aoqi@0 713 for (int i=0; i<ITERS; i++) {
aoqi@0 714 test_xorv(a0, a1, (byte)BIT_MASK);
aoqi@0 715 }
aoqi@0 716 end = System.currentTimeMillis();
aoqi@0 717 System.out.println("test_xorv: " + (end - start));
aoqi@0 718 start = System.currentTimeMillis();
aoqi@0 719 for (int i=0; i<ITERS; i++) {
aoqi@0 720 test_xora(a0, a1, a4);
aoqi@0 721 }
aoqi@0 722 end = System.currentTimeMillis();
aoqi@0 723 System.out.println("test_xora: " + (end - start));
aoqi@0 724
aoqi@0 725 start = System.currentTimeMillis();
aoqi@0 726 for (int i=0; i<ITERS; i++) {
aoqi@0 727 test_sllc(a0, a1);
aoqi@0 728 }
aoqi@0 729 end = System.currentTimeMillis();
aoqi@0 730 System.out.println("test_sllc: " + (end - start));
aoqi@0 731 start = System.currentTimeMillis();
aoqi@0 732 for (int i=0; i<ITERS; i++) {
aoqi@0 733 test_sllv(a0, a1, VALUE);
aoqi@0 734 }
aoqi@0 735 end = System.currentTimeMillis();
aoqi@0 736 System.out.println("test_sllv: " + (end - start));
aoqi@0 737
aoqi@0 738 start = System.currentTimeMillis();
aoqi@0 739 for (int i=0; i<ITERS; i++) {
aoqi@0 740 test_srlc(a0, a1);
aoqi@0 741 }
aoqi@0 742 end = System.currentTimeMillis();
aoqi@0 743 System.out.println("test_srlc: " + (end - start));
aoqi@0 744 start = System.currentTimeMillis();
aoqi@0 745 for (int i=0; i<ITERS; i++) {
aoqi@0 746 test_srlv(a0, a1, VALUE);
aoqi@0 747 }
aoqi@0 748 end = System.currentTimeMillis();
aoqi@0 749 System.out.println("test_srlv: " + (end - start));
aoqi@0 750
aoqi@0 751 start = System.currentTimeMillis();
aoqi@0 752 for (int i=0; i<ITERS; i++) {
aoqi@0 753 test_srac(a0, a1);
aoqi@0 754 }
aoqi@0 755 end = System.currentTimeMillis();
aoqi@0 756 System.out.println("test_srac: " + (end - start));
aoqi@0 757 start = System.currentTimeMillis();
aoqi@0 758 for (int i=0; i<ITERS; i++) {
aoqi@0 759 test_srav(a0, a1, VALUE);
aoqi@0 760 }
aoqi@0 761 end = System.currentTimeMillis();
aoqi@0 762 System.out.println("test_srav: " + (end - start));
aoqi@0 763
aoqi@0 764 start = System.currentTimeMillis();
aoqi@0 765 for (int i=0; i<ITERS; i++) {
aoqi@0 766 test_sllc_n(a0, a1);
aoqi@0 767 }
aoqi@0 768 end = System.currentTimeMillis();
aoqi@0 769 System.out.println("test_sllc_n: " + (end - start));
aoqi@0 770 start = System.currentTimeMillis();
aoqi@0 771 for (int i=0; i<ITERS; i++) {
aoqi@0 772 test_sllv(a0, a1, -VALUE);
aoqi@0 773 }
aoqi@0 774 end = System.currentTimeMillis();
aoqi@0 775 System.out.println("test_sllv_n: " + (end - start));
aoqi@0 776
aoqi@0 777 start = System.currentTimeMillis();
aoqi@0 778 for (int i=0; i<ITERS; i++) {
aoqi@0 779 test_srlc_n(a0, a1);
aoqi@0 780 }
aoqi@0 781 end = System.currentTimeMillis();
aoqi@0 782 System.out.println("test_srlc_n: " + (end - start));
aoqi@0 783 start = System.currentTimeMillis();
aoqi@0 784 for (int i=0; i<ITERS; i++) {
aoqi@0 785 test_srlv(a0, a1, -VALUE);
aoqi@0 786 }
aoqi@0 787 end = System.currentTimeMillis();
aoqi@0 788 System.out.println("test_srlv_n: " + (end - start));
aoqi@0 789
aoqi@0 790 start = System.currentTimeMillis();
aoqi@0 791 for (int i=0; i<ITERS; i++) {
aoqi@0 792 test_srac_n(a0, a1);
aoqi@0 793 }
aoqi@0 794 end = System.currentTimeMillis();
aoqi@0 795 System.out.println("test_srac_n: " + (end - start));
aoqi@0 796 start = System.currentTimeMillis();
aoqi@0 797 for (int i=0; i<ITERS; i++) {
aoqi@0 798 test_srav(a0, a1, -VALUE);
aoqi@0 799 }
aoqi@0 800 end = System.currentTimeMillis();
aoqi@0 801 System.out.println("test_srav_n: " + (end - start));
aoqi@0 802
aoqi@0 803 start = System.currentTimeMillis();
aoqi@0 804 for (int i=0; i<ITERS; i++) {
aoqi@0 805 test_sllc_o(a0, a1);
aoqi@0 806 }
aoqi@0 807 end = System.currentTimeMillis();
aoqi@0 808 System.out.println("test_sllc_o: " + (end - start));
aoqi@0 809 start = System.currentTimeMillis();
aoqi@0 810 for (int i=0; i<ITERS; i++) {
aoqi@0 811 test_sllv(a0, a1, SHIFT);
aoqi@0 812 }
aoqi@0 813 end = System.currentTimeMillis();
aoqi@0 814 System.out.println("test_sllv_o: " + (end - start));
aoqi@0 815
aoqi@0 816 start = System.currentTimeMillis();
aoqi@0 817 for (int i=0; i<ITERS; i++) {
aoqi@0 818 test_srlc_o(a0, a1);
aoqi@0 819 }
aoqi@0 820 end = System.currentTimeMillis();
aoqi@0 821 System.out.println("test_srlc_o: " + (end - start));
aoqi@0 822 start = System.currentTimeMillis();
aoqi@0 823 for (int i=0; i<ITERS; i++) {
aoqi@0 824 test_srlv(a0, a1, SHIFT);
aoqi@0 825 }
aoqi@0 826 end = System.currentTimeMillis();
aoqi@0 827 System.out.println("test_srlv_o: " + (end - start));
aoqi@0 828
aoqi@0 829 start = System.currentTimeMillis();
aoqi@0 830 for (int i=0; i<ITERS; i++) {
aoqi@0 831 test_srac_o(a0, a1);
aoqi@0 832 }
aoqi@0 833 end = System.currentTimeMillis();
aoqi@0 834 System.out.println("test_srac_o: " + (end - start));
aoqi@0 835 start = System.currentTimeMillis();
aoqi@0 836 for (int i=0; i<ITERS; i++) {
aoqi@0 837 test_srav(a0, a1, SHIFT);
aoqi@0 838 }
aoqi@0 839 end = System.currentTimeMillis();
aoqi@0 840 System.out.println("test_srav_o: " + (end - start));
aoqi@0 841
aoqi@0 842 start = System.currentTimeMillis();
aoqi@0 843 for (int i=0; i<ITERS; i++) {
aoqi@0 844 test_sllc_on(a0, a1);
aoqi@0 845 }
aoqi@0 846 end = System.currentTimeMillis();
aoqi@0 847 System.out.println("test_sllc_on: " + (end - start));
aoqi@0 848 start = System.currentTimeMillis();
aoqi@0 849 for (int i=0; i<ITERS; i++) {
aoqi@0 850 test_sllv(a0, a1, -SHIFT);
aoqi@0 851 }
aoqi@0 852 end = System.currentTimeMillis();
aoqi@0 853 System.out.println("test_sllv_on: " + (end - start));
aoqi@0 854
aoqi@0 855 start = System.currentTimeMillis();
aoqi@0 856 for (int i=0; i<ITERS; i++) {
aoqi@0 857 test_srlc_on(a0, a1);
aoqi@0 858 }
aoqi@0 859 end = System.currentTimeMillis();
aoqi@0 860 System.out.println("test_srlc_on: " + (end - start));
aoqi@0 861 start = System.currentTimeMillis();
aoqi@0 862 for (int i=0; i<ITERS; i++) {
aoqi@0 863 test_srlv(a0, a1, -SHIFT);
aoqi@0 864 }
aoqi@0 865 end = System.currentTimeMillis();
aoqi@0 866 System.out.println("test_srlv_on: " + (end - start));
aoqi@0 867
aoqi@0 868 start = System.currentTimeMillis();
aoqi@0 869 for (int i=0; i<ITERS; i++) {
aoqi@0 870 test_srac_on(a0, a1);
aoqi@0 871 }
aoqi@0 872 end = System.currentTimeMillis();
aoqi@0 873 System.out.println("test_srac_on: " + (end - start));
aoqi@0 874 start = System.currentTimeMillis();
aoqi@0 875 for (int i=0; i<ITERS; i++) {
aoqi@0 876 test_srav(a0, a1, -SHIFT);
aoqi@0 877 }
aoqi@0 878 end = System.currentTimeMillis();
aoqi@0 879 System.out.println("test_srav_on: " + (end - start));
aoqi@0 880
aoqi@0 881 start = System.currentTimeMillis();
aoqi@0 882 for (int i=0; i<ITERS; i++) {
aoqi@0 883 test_sllc_add(a0, a1);
aoqi@0 884 }
aoqi@0 885 end = System.currentTimeMillis();
aoqi@0 886 System.out.println("test_sllc_add: " + (end - start));
aoqi@0 887 start = System.currentTimeMillis();
aoqi@0 888 for (int i=0; i<ITERS; i++) {
aoqi@0 889 test_sllv_add(a0, a1, ADD_INIT);
aoqi@0 890 }
aoqi@0 891 end = System.currentTimeMillis();
aoqi@0 892 System.out.println("test_sllv_add: " + (end - start));
aoqi@0 893
aoqi@0 894 start = System.currentTimeMillis();
aoqi@0 895 for (int i=0; i<ITERS; i++) {
aoqi@0 896 test_srlc_add(a0, a1);
aoqi@0 897 }
aoqi@0 898 end = System.currentTimeMillis();
aoqi@0 899 System.out.println("test_srlc_add: " + (end - start));
aoqi@0 900 start = System.currentTimeMillis();
aoqi@0 901 for (int i=0; i<ITERS; i++) {
aoqi@0 902 test_srlv_add(a0, a1, ADD_INIT);
aoqi@0 903 }
aoqi@0 904 end = System.currentTimeMillis();
aoqi@0 905 System.out.println("test_srlv_add: " + (end - start));
aoqi@0 906
aoqi@0 907 start = System.currentTimeMillis();
aoqi@0 908 for (int i=0; i<ITERS; i++) {
aoqi@0 909 test_srac_add(a0, a1);
aoqi@0 910 }
aoqi@0 911 end = System.currentTimeMillis();
aoqi@0 912 System.out.println("test_srac_add: " + (end - start));
aoqi@0 913 start = System.currentTimeMillis();
aoqi@0 914 for (int i=0; i<ITERS; i++) {
aoqi@0 915 test_srav_add(a0, a1, ADD_INIT);
aoqi@0 916 }
aoqi@0 917 end = System.currentTimeMillis();
aoqi@0 918 System.out.println("test_srav_add: " + (end - start));
aoqi@0 919
aoqi@0 920 start = System.currentTimeMillis();
aoqi@0 921 for (int i=0; i<ITERS; i++) {
aoqi@0 922 test_sllc_and(a0, a1);
aoqi@0 923 }
aoqi@0 924 end = System.currentTimeMillis();
aoqi@0 925 System.out.println("test_sllc_and: " + (end - start));
aoqi@0 926 start = System.currentTimeMillis();
aoqi@0 927 for (int i=0; i<ITERS; i++) {
aoqi@0 928 test_sllv_and(a0, a1, BIT_MASK);
aoqi@0 929 }
aoqi@0 930 end = System.currentTimeMillis();
aoqi@0 931 System.out.println("test_sllv_and: " + (end - start));
aoqi@0 932
aoqi@0 933 start = System.currentTimeMillis();
aoqi@0 934 for (int i=0; i<ITERS; i++) {
aoqi@0 935 test_srlc_and(a0, a1);
aoqi@0 936 }
aoqi@0 937 end = System.currentTimeMillis();
aoqi@0 938 System.out.println("test_srlc_and: " + (end - start));
aoqi@0 939 start = System.currentTimeMillis();
aoqi@0 940 for (int i=0; i<ITERS; i++) {
aoqi@0 941 test_srlv_and(a0, a1, BIT_MASK);
aoqi@0 942 }
aoqi@0 943 end = System.currentTimeMillis();
aoqi@0 944 System.out.println("test_srlv_and: " + (end - start));
aoqi@0 945
aoqi@0 946 start = System.currentTimeMillis();
aoqi@0 947 for (int i=0; i<ITERS; i++) {
aoqi@0 948 test_srac_and(a0, a1);
aoqi@0 949 }
aoqi@0 950 end = System.currentTimeMillis();
aoqi@0 951 System.out.println("test_srac_and: " + (end - start));
aoqi@0 952 start = System.currentTimeMillis();
aoqi@0 953 for (int i=0; i<ITERS; i++) {
aoqi@0 954 test_srav_and(a0, a1, BIT_MASK);
aoqi@0 955 }
aoqi@0 956 end = System.currentTimeMillis();
aoqi@0 957 System.out.println("test_srav_and: " + (end - start));
aoqi@0 958
aoqi@0 959 start = System.currentTimeMillis();
aoqi@0 960 for (int i=0; i<ITERS; i++) {
aoqi@0 961 test_pack2(p2, a1);
aoqi@0 962 }
aoqi@0 963 end = System.currentTimeMillis();
aoqi@0 964 System.out.println("test_pack2: " + (end - start));
aoqi@0 965 start = System.currentTimeMillis();
aoqi@0 966 for (int i=0; i<ITERS; i++) {
aoqi@0 967 test_unpack2(a0, p2);
aoqi@0 968 }
aoqi@0 969 end = System.currentTimeMillis();
aoqi@0 970 System.out.println("test_unpack2: " + (end - start));
aoqi@0 971 start = System.currentTimeMillis();
aoqi@0 972 for (int i=0; i<ITERS; i++) {
aoqi@0 973 test_pack2_swap(p2, a1);
aoqi@0 974 }
aoqi@0 975 end = System.currentTimeMillis();
aoqi@0 976 System.out.println("test_pack2_swap: " + (end - start));
aoqi@0 977 start = System.currentTimeMillis();
aoqi@0 978 for (int i=0; i<ITERS; i++) {
aoqi@0 979 test_unpack2_swap(a0, p2);
aoqi@0 980 }
aoqi@0 981 end = System.currentTimeMillis();
aoqi@0 982 System.out.println("test_unpack2_swap: " + (end - start));
aoqi@0 983
aoqi@0 984 start = System.currentTimeMillis();
aoqi@0 985 for (int i=0; i<ITERS; i++) {
aoqi@0 986 test_pack4(p4, a1);
aoqi@0 987 }
aoqi@0 988 end = System.currentTimeMillis();
aoqi@0 989 System.out.println("test_pack4: " + (end - start));
aoqi@0 990 start = System.currentTimeMillis();
aoqi@0 991 for (int i=0; i<ITERS; i++) {
aoqi@0 992 test_unpack4(a0, p4);
aoqi@0 993 }
aoqi@0 994 end = System.currentTimeMillis();
aoqi@0 995 System.out.println("test_unpack4: " + (end - start));
aoqi@0 996 start = System.currentTimeMillis();
aoqi@0 997 for (int i=0; i<ITERS; i++) {
aoqi@0 998 test_pack4_swap(p4, a1);
aoqi@0 999 }
aoqi@0 1000 end = System.currentTimeMillis();
aoqi@0 1001 System.out.println("test_pack4_swap: " + (end - start));
aoqi@0 1002 start = System.currentTimeMillis();
aoqi@0 1003 for (int i=0; i<ITERS; i++) {
aoqi@0 1004 test_unpack4_swap(a0, p4);
aoqi@0 1005 }
aoqi@0 1006 end = System.currentTimeMillis();
aoqi@0 1007 System.out.println("test_unpack4_swap: " + (end - start));
aoqi@0 1008
aoqi@0 1009 start = System.currentTimeMillis();
aoqi@0 1010 for (int i=0; i<ITERS; i++) {
aoqi@0 1011 test_pack8(p8, a1);
aoqi@0 1012 }
aoqi@0 1013 end = System.currentTimeMillis();
aoqi@0 1014 System.out.println("test_pack8: " + (end - start));
aoqi@0 1015 start = System.currentTimeMillis();
aoqi@0 1016 for (int i=0; i<ITERS; i++) {
aoqi@0 1017 test_unpack8(a0, p8);
aoqi@0 1018 }
aoqi@0 1019 end = System.currentTimeMillis();
aoqi@0 1020 System.out.println("test_unpack8: " + (end - start));
aoqi@0 1021 start = System.currentTimeMillis();
aoqi@0 1022 for (int i=0; i<ITERS; i++) {
aoqi@0 1023 test_pack8_swap(p8, a1);
aoqi@0 1024 }
aoqi@0 1025 end = System.currentTimeMillis();
aoqi@0 1026 System.out.println("test_pack8_swap: " + (end - start));
aoqi@0 1027 start = System.currentTimeMillis();
aoqi@0 1028 for (int i=0; i<ITERS; i++) {
aoqi@0 1029 test_unpack8_swap(a0, p8);
aoqi@0 1030 }
aoqi@0 1031 end = System.currentTimeMillis();
aoqi@0 1032 System.out.println("test_unpack8_swap: " + (end - start));
aoqi@0 1033
aoqi@0 1034 return errn;
aoqi@0 1035 }
aoqi@0 1036
aoqi@0 1037 static int test_sum(byte[] a1) {
aoqi@0 1038 int sum = 0;
aoqi@0 1039 for (int i = 0; i < a1.length; i+=1) {
aoqi@0 1040 sum += a1[i];
aoqi@0 1041 }
aoqi@0 1042 return sum;
aoqi@0 1043 }
aoqi@0 1044
aoqi@0 1045 static void test_addc(byte[] a0, byte[] a1) {
aoqi@0 1046 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1047 a0[i] = (byte)(a1[i]+VALUE);
aoqi@0 1048 }
aoqi@0 1049 }
aoqi@0 1050 static void test_addv(byte[] a0, byte[] a1, byte b) {
aoqi@0 1051 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1052 a0[i] = (byte)(a1[i]+b);
aoqi@0 1053 }
aoqi@0 1054 }
aoqi@0 1055 static void test_adda(byte[] a0, byte[] a1, byte[] a2) {
aoqi@0 1056 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1057 a0[i] = (byte)(a1[i]+a2[i]);
aoqi@0 1058 }
aoqi@0 1059 }
aoqi@0 1060
aoqi@0 1061 static void test_subc(byte[] a0, byte[] a1) {
aoqi@0 1062 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1063 a0[i] = (byte)(a1[i]-VALUE);
aoqi@0 1064 }
aoqi@0 1065 }
aoqi@0 1066 static void test_subv(byte[] a0, byte[] a1, byte b) {
aoqi@0 1067 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1068 a0[i] = (byte)(a1[i]-b);
aoqi@0 1069 }
aoqi@0 1070 }
aoqi@0 1071 static void test_suba(byte[] a0, byte[] a1, byte[] a2) {
aoqi@0 1072 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1073 a0[i] = (byte)(a1[i]-a2[i]);
aoqi@0 1074 }
aoqi@0 1075 }
aoqi@0 1076
aoqi@0 1077 static void test_mulc(byte[] a0, byte[] a1) {
aoqi@0 1078 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1079 a0[i] = (byte)(a1[i]*VALUE);
aoqi@0 1080 }
aoqi@0 1081 }
aoqi@0 1082 static void test_mulc_n(byte[] a0, byte[] a1) {
aoqi@0 1083 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1084 a0[i] = (byte)(a1[i]*(-VALUE));
aoqi@0 1085 }
aoqi@0 1086 }
aoqi@0 1087 static void test_mulv(byte[] a0, byte[] a1, byte b) {
aoqi@0 1088 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1089 a0[i] = (byte)(a1[i]*b);
aoqi@0 1090 }
aoqi@0 1091 }
aoqi@0 1092 static void test_mula(byte[] a0, byte[] a1, byte[] a2) {
aoqi@0 1093 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1094 a0[i] = (byte)(a1[i]*a2[i]);
aoqi@0 1095 }
aoqi@0 1096 }
aoqi@0 1097
aoqi@0 1098 static void test_divc(byte[] a0, byte[] a1) {
aoqi@0 1099 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1100 a0[i] = (byte)(a1[i]/VALUE);
aoqi@0 1101 }
aoqi@0 1102 }
aoqi@0 1103 static void test_divc_n(byte[] a0, byte[] a1) {
aoqi@0 1104 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1105 a0[i] = (byte)(a1[i]/(-VALUE));
aoqi@0 1106 }
aoqi@0 1107 }
aoqi@0 1108 static void test_divv(byte[] a0, byte[] a1, byte b) {
aoqi@0 1109 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1110 a0[i] = (byte)(a1[i]/b);
aoqi@0 1111 }
aoqi@0 1112 }
aoqi@0 1113 static void test_diva(byte[] a0, byte[] a1, byte[] a2) {
aoqi@0 1114 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1115 a0[i] = (byte)(a1[i]/a2[i]);
aoqi@0 1116 }
aoqi@0 1117 }
aoqi@0 1118
aoqi@0 1119 static void test_andc(byte[] a0, byte[] a1) {
aoqi@0 1120 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1121 a0[i] = (byte)(a1[i]&BIT_MASK);
aoqi@0 1122 }
aoqi@0 1123 }
aoqi@0 1124 static void test_andv(byte[] a0, byte[] a1, byte b) {
aoqi@0 1125 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1126 a0[i] = (byte)(a1[i]&b);
aoqi@0 1127 }
aoqi@0 1128 }
aoqi@0 1129 static void test_anda(byte[] a0, byte[] a1, byte[] a2) {
aoqi@0 1130 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1131 a0[i] = (byte)(a1[i]&a2[i]);
aoqi@0 1132 }
aoqi@0 1133 }
aoqi@0 1134
aoqi@0 1135 static void test_orc(byte[] a0, byte[] a1) {
aoqi@0 1136 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1137 a0[i] = (byte)(a1[i]|BIT_MASK);
aoqi@0 1138 }
aoqi@0 1139 }
aoqi@0 1140 static void test_orv(byte[] a0, byte[] a1, byte b) {
aoqi@0 1141 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1142 a0[i] = (byte)(a1[i]|b);
aoqi@0 1143 }
aoqi@0 1144 }
aoqi@0 1145 static void test_ora(byte[] a0, byte[] a1, byte[] a2) {
aoqi@0 1146 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1147 a0[i] = (byte)(a1[i]|a2[i]);
aoqi@0 1148 }
aoqi@0 1149 }
aoqi@0 1150
aoqi@0 1151 static void test_xorc(byte[] a0, byte[] a1) {
aoqi@0 1152 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1153 a0[i] = (byte)(a1[i]^BIT_MASK);
aoqi@0 1154 }
aoqi@0 1155 }
aoqi@0 1156 static void test_xorv(byte[] a0, byte[] a1, byte b) {
aoqi@0 1157 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1158 a0[i] = (byte)(a1[i]^b);
aoqi@0 1159 }
aoqi@0 1160 }
aoqi@0 1161 static void test_xora(byte[] a0, byte[] a1, byte[] a2) {
aoqi@0 1162 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1163 a0[i] = (byte)(a1[i]^a2[i]);
aoqi@0 1164 }
aoqi@0 1165 }
aoqi@0 1166
aoqi@0 1167 static void test_sllc(byte[] a0, byte[] a1) {
aoqi@0 1168 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1169 a0[i] = (byte)(a1[i]<<VALUE);
aoqi@0 1170 }
aoqi@0 1171 }
aoqi@0 1172 static void test_sllc_n(byte[] a0, byte[] a1) {
aoqi@0 1173 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1174 a0[i] = (byte)(a1[i]<<(-VALUE));
aoqi@0 1175 }
aoqi@0 1176 }
aoqi@0 1177 static void test_sllc_o(byte[] a0, byte[] a1) {
aoqi@0 1178 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1179 a0[i] = (byte)(a1[i]<<SHIFT);
aoqi@0 1180 }
aoqi@0 1181 }
aoqi@0 1182 static void test_sllc_on(byte[] a0, byte[] a1) {
aoqi@0 1183 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1184 a0[i] = (byte)(a1[i]<<(-SHIFT));
aoqi@0 1185 }
aoqi@0 1186 }
aoqi@0 1187 static void test_sllv(byte[] a0, byte[] a1, int b) {
aoqi@0 1188 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1189 a0[i] = (byte)(a1[i]<<b);
aoqi@0 1190 }
aoqi@0 1191 }
aoqi@0 1192 static void test_sllc_add(byte[] a0, byte[] a1) {
aoqi@0 1193 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1194 a0[i] = (byte)((a1[i] + ADD_INIT)<<VALUE);
aoqi@0 1195 }
aoqi@0 1196 }
aoqi@0 1197 static void test_sllv_add(byte[] a0, byte[] a1, int b) {
aoqi@0 1198 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1199 a0[i] = (byte)((a1[i] + b)<<VALUE);
aoqi@0 1200 }
aoqi@0 1201 }
aoqi@0 1202 static void test_sllc_and(byte[] a0, byte[] a1) {
aoqi@0 1203 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1204 a0[i] = (byte)((a1[i] & BIT_MASK)<<VALUE);
aoqi@0 1205 }
aoqi@0 1206 }
aoqi@0 1207 static void test_sllv_and(byte[] a0, byte[] a1, int b) {
aoqi@0 1208 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1209 a0[i] = (byte)((a1[i] & b)<<VALUE);
aoqi@0 1210 }
aoqi@0 1211 }
aoqi@0 1212
aoqi@0 1213 static void test_srlc(byte[] a0, byte[] a1) {
aoqi@0 1214 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1215 a0[i] = (byte)(a1[i]>>>VALUE);
aoqi@0 1216 }
aoqi@0 1217 }
aoqi@0 1218 static void test_srlc_n(byte[] a0, byte[] a1) {
aoqi@0 1219 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1220 a0[i] = (byte)(a1[i]>>>(-VALUE));
aoqi@0 1221 }
aoqi@0 1222 }
aoqi@0 1223 static void test_srlc_o(byte[] a0, byte[] a1) {
aoqi@0 1224 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1225 a0[i] = (byte)(a1[i]>>>SHIFT);
aoqi@0 1226 }
aoqi@0 1227 }
aoqi@0 1228 static void test_srlc_on(byte[] a0, byte[] a1) {
aoqi@0 1229 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1230 a0[i] = (byte)(a1[i]>>>(-SHIFT));
aoqi@0 1231 }
aoqi@0 1232 }
aoqi@0 1233 static void test_srlv(byte[] a0, byte[] a1, int b) {
aoqi@0 1234 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1235 a0[i] = (byte)(a1[i]>>>b);
aoqi@0 1236 }
aoqi@0 1237 }
aoqi@0 1238 static void test_srlc_add(byte[] a0, byte[] a1) {
aoqi@0 1239 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1240 a0[i] = (byte)((a1[i] + ADD_INIT)>>>VALUE);
aoqi@0 1241 }
aoqi@0 1242 }
aoqi@0 1243 static void test_srlv_add(byte[] a0, byte[] a1, int b) {
aoqi@0 1244 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1245 a0[i] = (byte)((a1[i] + b)>>>VALUE);
aoqi@0 1246 }
aoqi@0 1247 }
aoqi@0 1248 static void test_srlc_and(byte[] a0, byte[] a1) {
aoqi@0 1249 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1250 a0[i] = (byte)((a1[i] & BIT_MASK)>>>VALUE);
aoqi@0 1251 }
aoqi@0 1252 }
aoqi@0 1253 static void test_srlv_and(byte[] a0, byte[] a1, int b) {
aoqi@0 1254 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1255 a0[i] = (byte)((a1[i] & b)>>>VALUE);
aoqi@0 1256 }
aoqi@0 1257 }
aoqi@0 1258
aoqi@0 1259 static void test_srac(byte[] a0, byte[] a1) {
aoqi@0 1260 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1261 a0[i] = (byte)(a1[i]>>VALUE);
aoqi@0 1262 }
aoqi@0 1263 }
aoqi@0 1264 static void test_srac_n(byte[] a0, byte[] a1) {
aoqi@0 1265 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1266 a0[i] = (byte)(a1[i]>>(-VALUE));
aoqi@0 1267 }
aoqi@0 1268 }
aoqi@0 1269 static void test_srac_o(byte[] a0, byte[] a1) {
aoqi@0 1270 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1271 a0[i] = (byte)(a1[i]>>SHIFT);
aoqi@0 1272 }
aoqi@0 1273 }
aoqi@0 1274 static void test_srac_on(byte[] a0, byte[] a1) {
aoqi@0 1275 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1276 a0[i] = (byte)(a1[i]>>(-SHIFT));
aoqi@0 1277 }
aoqi@0 1278 }
aoqi@0 1279 static void test_srav(byte[] a0, byte[] a1, int b) {
aoqi@0 1280 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1281 a0[i] = (byte)(a1[i]>>b);
aoqi@0 1282 }
aoqi@0 1283 }
aoqi@0 1284 static void test_srac_add(byte[] a0, byte[] a1) {
aoqi@0 1285 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1286 a0[i] = (byte)((a1[i] + ADD_INIT)>>VALUE);
aoqi@0 1287 }
aoqi@0 1288 }
aoqi@0 1289 static void test_srav_add(byte[] a0, byte[] a1, int b) {
aoqi@0 1290 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1291 a0[i] = (byte)((a1[i] + b)>>VALUE);
aoqi@0 1292 }
aoqi@0 1293 }
aoqi@0 1294 static void test_srac_and(byte[] a0, byte[] a1) {
aoqi@0 1295 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1296 a0[i] = (byte)((a1[i] & BIT_MASK)>>VALUE);
aoqi@0 1297 }
aoqi@0 1298 }
aoqi@0 1299 static void test_srav_and(byte[] a0, byte[] a1, int b) {
aoqi@0 1300 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 1301 a0[i] = (byte)((a1[i] & b)>>VALUE);
aoqi@0 1302 }
aoqi@0 1303 }
aoqi@0 1304
aoqi@0 1305 static void test_pack2(short[] p2, byte[] a1) {
aoqi@0 1306 if (p2.length*2 > a1.length) return;
aoqi@0 1307 for (int i = 0; i < p2.length; i+=1) {
aoqi@0 1308 short l0 = (short)a1[i*2+0];
aoqi@0 1309 short l1 = (short)a1[i*2+1];
aoqi@0 1310 p2[i] = (short)((l1 << 8) | (l0 & 0xFF));
aoqi@0 1311 }
aoqi@0 1312 }
aoqi@0 1313 static void test_unpack2(byte[] a0, short[] p2) {
aoqi@0 1314 if (p2.length*2 > a0.length) return;
aoqi@0 1315 for (int i = 0; i < p2.length; i+=1) {
aoqi@0 1316 short l = p2[i];
aoqi@0 1317 a0[i*2+0] = (byte)(l & 0xFF);
aoqi@0 1318 a0[i*2+1] = (byte)(l >> 8);
aoqi@0 1319 }
aoqi@0 1320 }
aoqi@0 1321 static void test_pack2_swap(short[] p2, byte[] a1) {
aoqi@0 1322 if (p2.length*2 > a1.length) return;
aoqi@0 1323 for (int i = 0; i < p2.length; i+=1) {
aoqi@0 1324 short l0 = (short)a1[i*2+0];
aoqi@0 1325 short l1 = (short)a1[i*2+1];
aoqi@0 1326 p2[i] = (short)((l0 << 8) | (l1 & 0xFF));
aoqi@0 1327 }
aoqi@0 1328 }
aoqi@0 1329 static void test_unpack2_swap(byte[] a0, short[] p2) {
aoqi@0 1330 if (p2.length*2 > a0.length) return;
aoqi@0 1331 for (int i = 0; i < p2.length; i+=1) {
aoqi@0 1332 short l = p2[i];
aoqi@0 1333 a0[i*2+0] = (byte)(l >> 8);
aoqi@0 1334 a0[i*2+1] = (byte)(l & 0xFF);
aoqi@0 1335 }
aoqi@0 1336 }
aoqi@0 1337
aoqi@0 1338 static void test_pack4(int[] p4, byte[] a1) {
aoqi@0 1339 if (p4.length*4 > a1.length) return;
aoqi@0 1340 for (int i = 0; i < p4.length; i+=1) {
aoqi@0 1341 int l0 = (int)a1[i*4+0];
aoqi@0 1342 int l1 = (int)a1[i*4+1];
aoqi@0 1343 int l2 = (int)a1[i*4+2];
aoqi@0 1344 int l3 = (int)a1[i*4+3];
aoqi@0 1345 p4[i] = (l0 & 0xFF) |
aoqi@0 1346 ((l1 & 0xFF) << 8) |
aoqi@0 1347 ((l2 & 0xFF) << 16) |
aoqi@0 1348 ((l3 & 0xFF) << 24);
aoqi@0 1349 }
aoqi@0 1350 }
aoqi@0 1351 static void test_unpack4(byte[] a0, int[] p4) {
aoqi@0 1352 if (p4.length*4 > a0.length) return;
aoqi@0 1353 for (int i = 0; i < p4.length; i+=1) {
aoqi@0 1354 int l = p4[i];
aoqi@0 1355 a0[i*4+0] = (byte)(l & 0xFF);
aoqi@0 1356 a0[i*4+1] = (byte)(l >> 8);
aoqi@0 1357 a0[i*4+2] = (byte)(l >> 16);
aoqi@0 1358 a0[i*4+3] = (byte)(l >> 24);
aoqi@0 1359 }
aoqi@0 1360 }
aoqi@0 1361 static void test_pack4_swap(int[] p4, byte[] a1) {
aoqi@0 1362 if (p4.length*4 > a1.length) return;
aoqi@0 1363 for (int i = 0; i < p4.length; i+=1) {
aoqi@0 1364 int l0 = (int)a1[i*4+0];
aoqi@0 1365 int l1 = (int)a1[i*4+1];
aoqi@0 1366 int l2 = (int)a1[i*4+2];
aoqi@0 1367 int l3 = (int)a1[i*4+3];
aoqi@0 1368 p4[i] = (l3 & 0xFF) |
aoqi@0 1369 ((l2 & 0xFF) << 8) |
aoqi@0 1370 ((l1 & 0xFF) << 16) |
aoqi@0 1371 ((l0 & 0xFF) << 24);
aoqi@0 1372 }
aoqi@0 1373 }
aoqi@0 1374 static void test_unpack4_swap(byte[] a0, int[] p4) {
aoqi@0 1375 if (p4.length*4 > a0.length) return;
aoqi@0 1376 for (int i = 0; i < p4.length; i+=1) {
aoqi@0 1377 int l = p4[i];
aoqi@0 1378 a0[i*4+0] = (byte)(l >> 24);
aoqi@0 1379 a0[i*4+1] = (byte)(l >> 16);
aoqi@0 1380 a0[i*4+2] = (byte)(l >> 8);
aoqi@0 1381 a0[i*4+3] = (byte)(l & 0xFF);
aoqi@0 1382 }
aoqi@0 1383 }
aoqi@0 1384
aoqi@0 1385 static void test_pack8(long[] p8, byte[] a1) {
aoqi@0 1386 if (p8.length*8 > a1.length) return;
aoqi@0 1387 for (int i = 0; i < p8.length; i+=1) {
aoqi@0 1388 long l0 = (long)a1[i*8+0];
aoqi@0 1389 long l1 = (long)a1[i*8+1];
aoqi@0 1390 long l2 = (long)a1[i*8+2];
aoqi@0 1391 long l3 = (long)a1[i*8+3];
aoqi@0 1392 long l4 = (long)a1[i*8+4];
aoqi@0 1393 long l5 = (long)a1[i*8+5];
aoqi@0 1394 long l6 = (long)a1[i*8+6];
aoqi@0 1395 long l7 = (long)a1[i*8+7];
aoqi@0 1396 p8[i] = (l0 & 0xFFl) |
aoqi@0 1397 ((l1 & 0xFFl) << 8) |
aoqi@0 1398 ((l2 & 0xFFl) << 16) |
aoqi@0 1399 ((l3 & 0xFFl) << 24) |
aoqi@0 1400 ((l4 & 0xFFl) << 32) |
aoqi@0 1401 ((l5 & 0xFFl) << 40) |
aoqi@0 1402 ((l6 & 0xFFl) << 48) |
aoqi@0 1403 ((l7 & 0xFFl) << 56);
aoqi@0 1404 }
aoqi@0 1405 }
aoqi@0 1406 static void test_unpack8(byte[] a0, long[] p8) {
aoqi@0 1407 if (p8.length*8 > a0.length) return;
aoqi@0 1408 for (int i = 0; i < p8.length; i+=1) {
aoqi@0 1409 long l = p8[i];
aoqi@0 1410 a0[i*8+0] = (byte)(l & 0xFFl);
aoqi@0 1411 a0[i*8+1] = (byte)(l >> 8);
aoqi@0 1412 a0[i*8+2] = (byte)(l >> 16);
aoqi@0 1413 a0[i*8+3] = (byte)(l >> 24);
aoqi@0 1414 a0[i*8+4] = (byte)(l >> 32);
aoqi@0 1415 a0[i*8+5] = (byte)(l >> 40);
aoqi@0 1416 a0[i*8+6] = (byte)(l >> 48);
aoqi@0 1417 a0[i*8+7] = (byte)(l >> 56);
aoqi@0 1418 }
aoqi@0 1419 }
aoqi@0 1420 static void test_pack8_swap(long[] p8, byte[] a1) {
aoqi@0 1421 if (p8.length*8 > a1.length) return;
aoqi@0 1422 for (int i = 0; i < p8.length; i+=1) {
aoqi@0 1423 long l0 = (long)a1[i*8+0];
aoqi@0 1424 long l1 = (long)a1[i*8+1];
aoqi@0 1425 long l2 = (long)a1[i*8+2];
aoqi@0 1426 long l3 = (long)a1[i*8+3];
aoqi@0 1427 long l4 = (long)a1[i*8+4];
aoqi@0 1428 long l5 = (long)a1[i*8+5];
aoqi@0 1429 long l6 = (long)a1[i*8+6];
aoqi@0 1430 long l7 = (long)a1[i*8+7];
aoqi@0 1431 p8[i] = (l7 & 0xFFl) |
aoqi@0 1432 ((l6 & 0xFFl) << 8) |
aoqi@0 1433 ((l5 & 0xFFl) << 16) |
aoqi@0 1434 ((l4 & 0xFFl) << 24) |
aoqi@0 1435 ((l3 & 0xFFl) << 32) |
aoqi@0 1436 ((l2 & 0xFFl) << 40) |
aoqi@0 1437 ((l1 & 0xFFl) << 48) |
aoqi@0 1438 ((l0 & 0xFFl) << 56);
aoqi@0 1439 }
aoqi@0 1440 }
aoqi@0 1441 static void test_unpack8_swap(byte[] a0, long[] p8) {
aoqi@0 1442 if (p8.length*8 > a0.length) return;
aoqi@0 1443 for (int i = 0; i < p8.length; i+=1) {
aoqi@0 1444 long l = p8[i];
aoqi@0 1445 a0[i*8+0] = (byte)(l >> 56);
aoqi@0 1446 a0[i*8+1] = (byte)(l >> 48);
aoqi@0 1447 a0[i*8+2] = (byte)(l >> 40);
aoqi@0 1448 a0[i*8+3] = (byte)(l >> 32);
aoqi@0 1449 a0[i*8+4] = (byte)(l >> 24);
aoqi@0 1450 a0[i*8+5] = (byte)(l >> 16);
aoqi@0 1451 a0[i*8+6] = (byte)(l >> 8);
aoqi@0 1452 a0[i*8+7] = (byte)(l & 0xFFl);
aoqi@0 1453 }
aoqi@0 1454 }
aoqi@0 1455
aoqi@0 1456 static int verify(String text, int i, byte elem, byte val) {
aoqi@0 1457 if (elem != val) {
aoqi@0 1458 System.err.println(text + "[" + i + "] = " + elem + " != " + val);
aoqi@0 1459 return 1;
aoqi@0 1460 }
aoqi@0 1461 return 0;
aoqi@0 1462 }
aoqi@0 1463
aoqi@0 1464 static int verify(String text, int i, short elem, short val) {
aoqi@0 1465 if (elem != val) {
aoqi@0 1466 System.err.println(text + "[" + i + "] = " + elem + " != " + val);
aoqi@0 1467 return 1;
aoqi@0 1468 }
aoqi@0 1469 return 0;
aoqi@0 1470 }
aoqi@0 1471
aoqi@0 1472 static int verify(String text, int i, int elem, int val) {
aoqi@0 1473 if (elem != val) {
aoqi@0 1474 System.err.println(text + "[" + i + "] = " + Integer.toHexString(elem) + " != " + Integer.toHexString(val));
aoqi@0 1475 return 1;
aoqi@0 1476 }
aoqi@0 1477 return 0;
aoqi@0 1478 }
aoqi@0 1479
aoqi@0 1480 static int verify(String text, int i, long elem, long val) {
aoqi@0 1481 if (elem != val) {
aoqi@0 1482 System.err.println(text + "[" + i + "] = " + Long.toHexString(elem) + " != " + Long.toHexString(val));
aoqi@0 1483 return 1;
aoqi@0 1484 }
aoqi@0 1485 return 0;
aoqi@0 1486 }
aoqi@0 1487 }

mercurial