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