test/compiler/6340864/TestIntVect.java

Tue, 08 Aug 2017 15:57:29 +0800

author
aoqi
date
Tue, 08 Aug 2017 15:57:29 +0800
changeset 6876
710a3c8b516e
parent 4204
b2c669fd8114
parent 0
f90c822e73f8
permissions
-rw-r--r--

merge

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

mercurial