test/compiler/8001183/TestCharVect.java

Tue, 23 Oct 2012 13:06:37 -0700

author
kvn
date
Tue, 23 Oct 2012 13:06:37 -0700
changeset 4204
b2c669fd8114
parent 0
f90c822e73f8
permissions
-rw-r--r--

8001183: incorrect results of char vectors right shift operaiton
Summary: do vector right shift operation for small int types only after loads
Reviewed-by: jrose, dlong

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

mercurial