test/compiler/6340864/TestIntVect.java

Tue, 23 Oct 2012 13:06:37 -0700

author
kvn
date
Tue, 23 Oct 2012 13:06:37 -0700
changeset 4204
b2c669fd8114
parent 4001
006050192a5a
child 6876
710a3c8b516e
permissions
-rw-r--r--

8001183: incorrect results of char vectors right shift operaiton
Summary: do vector right shift operation for small int types only after loads
Reviewed-by: jrose, dlong

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

mercurial