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