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