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