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