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