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