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