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