test/compiler/8004867/TestIntAtomicOrdered.java

Mon, 28 Jul 2014 15:06:38 -0700

author
fzhinkin
date
Mon, 28 Jul 2014 15:06:38 -0700
changeset 6997
dbb05f6d93c4
parent 0
f90c822e73f8
permissions
-rw-r--r--

8051344: JVM crashed in Compile::start() during method parsing w/ UseRTMDeopt turned on
Summary: call rtm_deopt() only if there were no compilation bailouts before.
Reviewed-by: kvn

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 2013, 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 8004867
aoqi@0 28 * @summary VM crashing with assert "share/vm/opto/node.hpp:357 - assert(i < _max) failed: oob"
aoqi@0 29 *
aoqi@0 30 * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:-OptimizeFill TestIntAtomicOrdered
aoqi@0 31 * @run main/othervm/timeout=300 -Xbatch -XX:+IgnoreUnrecognizedVMOptions -XX:-TieredCompilation -XX:+OptimizeFill TestIntAtomicOrdered
aoqi@0 32 */
aoqi@0 33
aoqi@0 34 import java.util.concurrent.atomic.AtomicIntegerArray;
aoqi@0 35
aoqi@0 36 public class TestIntAtomicOrdered {
aoqi@0 37 private static final int ARRLEN = 97;
aoqi@0 38 private static final int ITERS = 11000;
aoqi@0 39 private static final int OFFSET = 3;
aoqi@0 40 private static final int SCALE = 2;
aoqi@0 41 private static final int ALIGN_OFF = 8;
aoqi@0 42 private static final int UNALIGN_OFF = 5;
aoqi@0 43
aoqi@0 44 public static void main(String args[]) {
aoqi@0 45 System.out.println("Testing Integer array atomic ordered operations");
aoqi@0 46 int errn = test(false);
aoqi@0 47 if (errn > 0) {
aoqi@0 48 System.err.println("FAILED: " + errn + " errors");
aoqi@0 49 System.exit(97);
aoqi@0 50 }
aoqi@0 51 System.out.println("PASSED");
aoqi@0 52 }
aoqi@0 53
aoqi@0 54 static int test(boolean test_only) {
aoqi@0 55 AtomicIntegerArray a1 = new AtomicIntegerArray(ARRLEN);
aoqi@0 56 AtomicIntegerArray a2 = new AtomicIntegerArray(ARRLEN);
aoqi@0 57 // Initialize
aoqi@0 58 for (int i=0; i<ARRLEN; i++) {
aoqi@0 59 a1.lazySet(i, -1);
aoqi@0 60 a2.lazySet(i, -1);
aoqi@0 61 }
aoqi@0 62 System.out.println("Warmup");
aoqi@0 63 for (int i=0; i<ITERS; i++) {
aoqi@0 64 test_ci(a1);
aoqi@0 65 test_vi(a2, 123, -1);
aoqi@0 66 test_cp(a1, a2);
aoqi@0 67 test_2ci(a1, a2);
aoqi@0 68 test_2vi(a1, a2, 123, 103);
aoqi@0 69 test_ci_neg(a1, 123);
aoqi@0 70 test_vi_neg(a2, 123, 103);
aoqi@0 71 test_cp_neg(a1, a2);
aoqi@0 72 test_2ci_neg(a1, a2);
aoqi@0 73 test_2vi_neg(a1, a2, 123, 103);
aoqi@0 74 test_ci_oppos(a1, 123);
aoqi@0 75 test_vi_oppos(a2, 123, 103);
aoqi@0 76 test_cp_oppos(a1, a2);
aoqi@0 77 test_2ci_oppos(a1, a2);
aoqi@0 78 test_2vi_oppos(a1, a2, 123, 103);
aoqi@0 79 test_ci_off(a1, 123);
aoqi@0 80 test_vi_off(a2, 123, 103);
aoqi@0 81 test_cp_off(a1, a2);
aoqi@0 82 test_2ci_off(a1, a2);
aoqi@0 83 test_2vi_off(a1, a2, 123, 103);
aoqi@0 84 test_ci_inv(a1, OFFSET, 123);
aoqi@0 85 test_vi_inv(a2, 123, OFFSET, 103);
aoqi@0 86 test_cp_inv(a1, a2, OFFSET);
aoqi@0 87 test_2ci_inv(a1, a2, OFFSET);
aoqi@0 88 test_2vi_inv(a1, a2, 123, 103, OFFSET);
aoqi@0 89 test_ci_scl(a1, 123);
aoqi@0 90 test_vi_scl(a2, 123, 103);
aoqi@0 91 test_cp_scl(a1, a2);
aoqi@0 92 test_2ci_scl(a1, a2);
aoqi@0 93 test_2vi_scl(a1, a2, 123, 103);
aoqi@0 94 test_cp_alndst(a1, a2);
aoqi@0 95 test_cp_alnsrc(a1, a2);
aoqi@0 96 test_2ci_aln(a1, a2);
aoqi@0 97 test_2vi_aln(a1, a2, 123, 103);
aoqi@0 98 test_cp_unalndst(a1, a2);
aoqi@0 99 test_cp_unalnsrc(a1, a2);
aoqi@0 100 test_2ci_unaln(a1, a2);
aoqi@0 101 test_2vi_unaln(a1, a2, 123, 103);
aoqi@0 102 }
aoqi@0 103 // Initialize
aoqi@0 104 for (int i=0; i<ARRLEN; i++) {
aoqi@0 105 a1.lazySet(i, -1);
aoqi@0 106 a2.lazySet(i, -1);
aoqi@0 107 }
aoqi@0 108 // Test and verify results
aoqi@0 109 System.out.println("Verification");
aoqi@0 110 int errn = 0;
aoqi@0 111 {
aoqi@0 112 test_ci(a1);
aoqi@0 113 for (int i=0; i<ARRLEN; i++) {
aoqi@0 114 errn += verify("test_ci: a1", i, a1.get(i), -123);
aoqi@0 115 }
aoqi@0 116 test_vi(a2, 123, -1);
aoqi@0 117 for (int i=0; i<ARRLEN; i++) {
aoqi@0 118 errn += verify("test_vi: a2", i, a2.get(i), 123);
aoqi@0 119 }
aoqi@0 120 test_cp(a1, a2);
aoqi@0 121 for (int i=0; i<ARRLEN; i++) {
aoqi@0 122 errn += verify("test_cp: a1", i, a1.get(i), 123);
aoqi@0 123 }
aoqi@0 124 test_2ci(a1, a2);
aoqi@0 125 for (int i=0; i<ARRLEN; i++) {
aoqi@0 126 errn += verify("test_2ci: a1", i, a1.get(i), -123);
aoqi@0 127 errn += verify("test_2ci: a2", i, a2.get(i), -103);
aoqi@0 128 }
aoqi@0 129 test_2vi(a1, a2, 123, 103);
aoqi@0 130 for (int i=0; i<ARRLEN; i++) {
aoqi@0 131 errn += verify("test_2vi: a1", i, a1.get(i), 123);
aoqi@0 132 errn += verify("test_2vi: a2", i, a2.get(i), 103);
aoqi@0 133 }
aoqi@0 134 // Reset for negative stride
aoqi@0 135 for (int i=0; i<ARRLEN; i++) {
aoqi@0 136 a1.lazySet(i, -1);
aoqi@0 137 a2.lazySet(i, -1);
aoqi@0 138 }
aoqi@0 139 test_ci_neg(a1, -1);
aoqi@0 140 for (int i=0; i<ARRLEN; i++) {
aoqi@0 141 errn += verify("test_ci_neg: a1", i, a1.get(i), -123);
aoqi@0 142 }
aoqi@0 143 test_vi_neg(a2, 123, -1);
aoqi@0 144 for (int i=0; i<ARRLEN; i++) {
aoqi@0 145 errn += verify("test_vi_neg: a2", i, a2.get(i), 123);
aoqi@0 146 }
aoqi@0 147 test_cp_neg(a1, a2);
aoqi@0 148 for (int i=0; i<ARRLEN; i++) {
aoqi@0 149 errn += verify("test_cp_neg: a1", i, a1.get(i), 123);
aoqi@0 150 }
aoqi@0 151 test_2ci_neg(a1, a2);
aoqi@0 152 for (int i=0; i<ARRLEN; i++) {
aoqi@0 153 errn += verify("test_2ci_neg: a1", i, a1.get(i), -123);
aoqi@0 154 errn += verify("test_2ci_neg: a2", i, a2.get(i), -103);
aoqi@0 155 }
aoqi@0 156 test_2vi_neg(a1, a2, 123, 103);
aoqi@0 157 for (int i=0; i<ARRLEN; i++) {
aoqi@0 158 errn += verify("test_2vi_neg: a1", i, a1.get(i), 123);
aoqi@0 159 errn += verify("test_2vi_neg: a2", i, a2.get(i), 103);
aoqi@0 160 }
aoqi@0 161 // Reset for opposite stride
aoqi@0 162 for (int i=0; i<ARRLEN; i++) {
aoqi@0 163 a1.lazySet(i, -1);
aoqi@0 164 a2.lazySet(i, -1);
aoqi@0 165 }
aoqi@0 166 test_ci_oppos(a1, -1);
aoqi@0 167 for (int i=0; i<ARRLEN; i++) {
aoqi@0 168 errn += verify("test_ci_oppos: a1", i, a1.get(i), -123);
aoqi@0 169 }
aoqi@0 170 test_vi_oppos(a2, 123, -1);
aoqi@0 171 for (int i=0; i<ARRLEN; i++) {
aoqi@0 172 errn += verify("test_vi_oppos: a2", i, a2.get(i), 123);
aoqi@0 173 }
aoqi@0 174 test_cp_oppos(a1, a2);
aoqi@0 175 for (int i=0; i<ARRLEN; i++) {
aoqi@0 176 errn += verify("test_cp_oppos: a1", i, a1.get(i), 123);
aoqi@0 177 }
aoqi@0 178 test_2ci_oppos(a1, a2);
aoqi@0 179 for (int i=0; i<ARRLEN; i++) {
aoqi@0 180 errn += verify("test_2ci_oppos: a1", i, a1.get(i), -123);
aoqi@0 181 errn += verify("test_2ci_oppos: a2", i, a2.get(i), -103);
aoqi@0 182 }
aoqi@0 183 test_2vi_oppos(a1, a2, 123, 103);
aoqi@0 184 for (int i=0; i<ARRLEN; i++) {
aoqi@0 185 errn += verify("test_2vi_oppos: a1", i, a1.get(i), 123);
aoqi@0 186 errn += verify("test_2vi_oppos: a2", i, a2.get(i), 103);
aoqi@0 187 }
aoqi@0 188 // Reset for indexing with offset
aoqi@0 189 for (int i=0; i<ARRLEN; i++) {
aoqi@0 190 a1.lazySet(i, -1);
aoqi@0 191 a2.lazySet(i, -1);
aoqi@0 192 }
aoqi@0 193 test_ci_off(a1, -1);
aoqi@0 194 for (int i=OFFSET; i<ARRLEN; i++) {
aoqi@0 195 errn += verify("test_ci_off: a1", i, a1.get(i), -123);
aoqi@0 196 }
aoqi@0 197 test_vi_off(a2, 123, -1);
aoqi@0 198 for (int i=OFFSET; i<ARRLEN; i++) {
aoqi@0 199 errn += verify("test_vi_off: a2", i, a2.get(i), 123);
aoqi@0 200 }
aoqi@0 201 test_cp_off(a1, a2);
aoqi@0 202 for (int i=OFFSET; i<ARRLEN; i++) {
aoqi@0 203 errn += verify("test_cp_off: a1", i, a1.get(i), 123);
aoqi@0 204 }
aoqi@0 205 test_2ci_off(a1, a2);
aoqi@0 206 for (int i=OFFSET; i<ARRLEN; i++) {
aoqi@0 207 errn += verify("test_2ci_off: a1", i, a1.get(i), -123);
aoqi@0 208 errn += verify("test_2ci_off: a2", i, a2.get(i), -103);
aoqi@0 209 }
aoqi@0 210 test_2vi_off(a1, a2, 123, 103);
aoqi@0 211 for (int i=OFFSET; i<ARRLEN; i++) {
aoqi@0 212 errn += verify("test_2vi_off: a1", i, a1.get(i), 123);
aoqi@0 213 errn += verify("test_2vi_off: a2", i, a2.get(i), 103);
aoqi@0 214 }
aoqi@0 215 for (int i=0; i<OFFSET; i++) {
aoqi@0 216 errn += verify("test_2vi_off: a1", i, a1.get(i), -1);
aoqi@0 217 errn += verify("test_2vi_off: a2", i, a2.get(i), -1);
aoqi@0 218 }
aoqi@0 219 // Reset for indexing with invariant offset
aoqi@0 220 for (int i=0; i<ARRLEN; i++) {
aoqi@0 221 a1.lazySet(i, -1);
aoqi@0 222 a2.lazySet(i, -1);
aoqi@0 223 }
aoqi@0 224 test_ci_inv(a1, OFFSET, -1);
aoqi@0 225 for (int i=OFFSET; i<ARRLEN; i++) {
aoqi@0 226 errn += verify("test_ci_inv: a1", i, a1.get(i), -123);
aoqi@0 227 }
aoqi@0 228 test_vi_inv(a2, 123, OFFSET, -1);
aoqi@0 229 for (int i=OFFSET; i<ARRLEN; i++) {
aoqi@0 230 errn += verify("test_vi_inv: a2", i, a2.get(i), 123);
aoqi@0 231 }
aoqi@0 232 test_cp_inv(a1, a2, OFFSET);
aoqi@0 233 for (int i=OFFSET; i<ARRLEN; i++) {
aoqi@0 234 errn += verify("test_cp_inv: a1", i, a1.get(i), 123);
aoqi@0 235 }
aoqi@0 236 test_2ci_inv(a1, a2, OFFSET);
aoqi@0 237 for (int i=OFFSET; i<ARRLEN; i++) {
aoqi@0 238 errn += verify("test_2ci_inv: a1", i, a1.get(i), -123);
aoqi@0 239 errn += verify("test_2ci_inv: a2", i, a2.get(i), -103);
aoqi@0 240 }
aoqi@0 241 test_2vi_inv(a1, a2, 123, 103, OFFSET);
aoqi@0 242 for (int i=OFFSET; i<ARRLEN; i++) {
aoqi@0 243 errn += verify("test_2vi_inv: a1", i, a1.get(i), 123);
aoqi@0 244 errn += verify("test_2vi_inv: a2", i, a2.get(i), 103);
aoqi@0 245 }
aoqi@0 246 for (int i=0; i<OFFSET; i++) {
aoqi@0 247 errn += verify("test_2vi_inv: a1", i, a1.get(i), -1);
aoqi@0 248 errn += verify("test_2vi_inv: a2", i, a2.get(i), -1);
aoqi@0 249 }
aoqi@0 250 // Reset for indexing with scale
aoqi@0 251 for (int i=0; i<ARRLEN; i++) {
aoqi@0 252 a1.lazySet(i, -1);
aoqi@0 253 a2.lazySet(i, -1);
aoqi@0 254 }
aoqi@0 255 test_ci_scl(a1, -1);
aoqi@0 256 for (int i=0; i<ARRLEN; i++) {
aoqi@0 257 int val = (i%SCALE != 0) ? -1 : -123;
aoqi@0 258 errn += verify("test_ci_scl: a1", i, a1.get(i), val);
aoqi@0 259 }
aoqi@0 260 test_vi_scl(a2, 123, -1);
aoqi@0 261 for (int i=0; i<ARRLEN; i++) {
aoqi@0 262 int val = (i%SCALE != 0) ? -1 : 123;
aoqi@0 263 errn += verify("test_vi_scl: a2", i, a2.get(i), val);
aoqi@0 264 }
aoqi@0 265 test_cp_scl(a1, a2);
aoqi@0 266 for (int i=0; i<ARRLEN; i++) {
aoqi@0 267 int val = (i%SCALE != 0) ? -1 : 123;
aoqi@0 268 errn += verify("test_cp_scl: a1", i, a1.get(i), val);
aoqi@0 269 }
aoqi@0 270 test_2ci_scl(a1, a2);
aoqi@0 271 for (int i=0; i<ARRLEN; i++) {
aoqi@0 272 if (i%SCALE != 0) {
aoqi@0 273 errn += verify("test_2ci_scl: a1", i, a1.get(i), -1);
aoqi@0 274 } else if (i*SCALE < ARRLEN) {
aoqi@0 275 errn += verify("test_2ci_scl: a1", i*SCALE, a1.get(i*SCALE), -123);
aoqi@0 276 }
aoqi@0 277 if (i%SCALE != 0) {
aoqi@0 278 errn += verify("test_2ci_scl: a2", i, a2.get(i), -1);
aoqi@0 279 } else if (i*SCALE < ARRLEN) {
aoqi@0 280 errn += verify("test_2ci_scl: a2", i*SCALE, a2.get(i*SCALE), -103);
aoqi@0 281 }
aoqi@0 282 }
aoqi@0 283 test_2vi_scl(a1, a2, 123, 103);
aoqi@0 284 for (int i=0; i<ARRLEN; i++) {
aoqi@0 285 if (i%SCALE != 0) {
aoqi@0 286 errn += verify("test_2vi_scl: a1", i, a1.get(i), -1);
aoqi@0 287 } else if (i*SCALE < ARRLEN) {
aoqi@0 288 errn += verify("test_2vi_scl: a1", i*SCALE, a1.get(i*SCALE), 123);
aoqi@0 289 }
aoqi@0 290 if (i%SCALE != 0) {
aoqi@0 291 errn += verify("test_2vi_scl: a2", i, a2.get(i), -1);
aoqi@0 292 } else if (i*SCALE < ARRLEN) {
aoqi@0 293 errn += verify("test_2vi_scl: a2", i*SCALE, a2.get(i*SCALE), 103);
aoqi@0 294 }
aoqi@0 295 }
aoqi@0 296 // Reset for 2 arrays with relative aligned offset
aoqi@0 297 for (int i=0; i<ARRLEN; i++) {
aoqi@0 298 a1.lazySet(i, -1);
aoqi@0 299 a2.lazySet(i, -1);
aoqi@0 300 }
aoqi@0 301 test_vi(a2, 123, -1);
aoqi@0 302 test_cp_alndst(a1, a2);
aoqi@0 303 for (int i=0; i<ALIGN_OFF; i++) {
aoqi@0 304 errn += verify("test_cp_alndst: a1", i, a1.get(i), -1);
aoqi@0 305 }
aoqi@0 306 for (int i=ALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 307 errn += verify("test_cp_alndst: a1", i, a1.get(i), 123);
aoqi@0 308 }
aoqi@0 309 for (int i=0; i<ALIGN_OFF; i++) {
aoqi@0 310 a1.lazySet(i, 123);
aoqi@0 311 }
aoqi@0 312 test_vi(a2, -123, 123);
aoqi@0 313 test_cp_alnsrc(a1, a2);
aoqi@0 314 for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
aoqi@0 315 errn += verify("test_cp_alnsrc: a1", i, a1.get(i), -123);
aoqi@0 316 }
aoqi@0 317 for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 318 errn += verify("test_cp_alnsrc: a1", i, a1.get(i), 123);
aoqi@0 319 }
aoqi@0 320 for (int i=0; i<ARRLEN; i++) {
aoqi@0 321 a1.lazySet(i, -1);
aoqi@0 322 a2.lazySet(i, -1);
aoqi@0 323 }
aoqi@0 324 test_2ci_aln(a1, a2);
aoqi@0 325 for (int i=0; i<ALIGN_OFF; i++) {
aoqi@0 326 errn += verify("test_2ci_aln: a1", i, a1.get(i), -1);
aoqi@0 327 }
aoqi@0 328 for (int i=ALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 329 errn += verify("test_2ci_aln: a1", i, a1.get(i), -123);
aoqi@0 330 }
aoqi@0 331 for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
aoqi@0 332 errn += verify("test_2ci_aln: a2", i, a2.get(i), -103);
aoqi@0 333 }
aoqi@0 334 for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 335 errn += verify("test_2ci_aln: a2", i, a2.get(i), -1);
aoqi@0 336 }
aoqi@0 337 for (int i=0; i<ARRLEN; i++) {
aoqi@0 338 a1.lazySet(i, -1);
aoqi@0 339 a2.lazySet(i, -1);
aoqi@0 340 }
aoqi@0 341 test_2vi_aln(a1, a2, 123, 103);
aoqi@0 342 for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
aoqi@0 343 errn += verify("test_2vi_aln: a1", i, a1.get(i), 123);
aoqi@0 344 }
aoqi@0 345 for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 346 errn += verify("test_2vi_aln: a1", i, a1.get(i), -1);
aoqi@0 347 }
aoqi@0 348 for (int i=0; i<ALIGN_OFF; i++) {
aoqi@0 349 errn += verify("test_2vi_aln: a2", i, a2.get(i), -1);
aoqi@0 350 }
aoqi@0 351 for (int i=ALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 352 errn += verify("test_2vi_aln: a2", i, a2.get(i), 103);
aoqi@0 353 }
aoqi@0 354
aoqi@0 355 // Reset for 2 arrays with relative unaligned offset
aoqi@0 356 for (int i=0; i<ARRLEN; i++) {
aoqi@0 357 a1.lazySet(i, -1);
aoqi@0 358 a2.lazySet(i, -1);
aoqi@0 359 }
aoqi@0 360 test_vi(a2, 123, -1);
aoqi@0 361 test_cp_unalndst(a1, a2);
aoqi@0 362 for (int i=0; i<UNALIGN_OFF; i++) {
aoqi@0 363 errn += verify("test_cp_unalndst: a1", i, a1.get(i), -1);
aoqi@0 364 }
aoqi@0 365 for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 366 errn += verify("test_cp_unalndst: a1", i, a1.get(i), 123);
aoqi@0 367 }
aoqi@0 368 test_vi(a2, -123, 123);
aoqi@0 369 test_cp_unalnsrc(a1, a2);
aoqi@0 370 for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
aoqi@0 371 errn += verify("test_cp_unalnsrc: a1", i, a1.get(i), -123);
aoqi@0 372 }
aoqi@0 373 for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 374 errn += verify("test_cp_unalnsrc: a1", i, a1.get(i), 123);
aoqi@0 375 }
aoqi@0 376 for (int i=0; i<ARRLEN; i++) {
aoqi@0 377 a1.lazySet(i, -1);
aoqi@0 378 a2.lazySet(i, -1);
aoqi@0 379 }
aoqi@0 380 test_2ci_unaln(a1, a2);
aoqi@0 381 for (int i=0; i<UNALIGN_OFF; i++) {
aoqi@0 382 errn += verify("test_2ci_unaln: a1", i, a1.get(i), -1);
aoqi@0 383 }
aoqi@0 384 for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 385 errn += verify("test_2ci_unaln: a1", i, a1.get(i), -123);
aoqi@0 386 }
aoqi@0 387 for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
aoqi@0 388 errn += verify("test_2ci_unaln: a2", i, a2.get(i), -103);
aoqi@0 389 }
aoqi@0 390 for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 391 errn += verify("test_2ci_unaln: a2", i, a2.get(i), -1);
aoqi@0 392 }
aoqi@0 393 for (int i=0; i<ARRLEN; i++) {
aoqi@0 394 a1.lazySet(i, -1);
aoqi@0 395 a2.lazySet(i, -1);
aoqi@0 396 }
aoqi@0 397 test_2vi_unaln(a1, a2, 123, 103);
aoqi@0 398 for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
aoqi@0 399 errn += verify("test_2vi_unaln: a1", i, a1.get(i), 123);
aoqi@0 400 }
aoqi@0 401 for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 402 errn += verify("test_2vi_unaln: a1", i, a1.get(i), -1);
aoqi@0 403 }
aoqi@0 404 for (int i=0; i<UNALIGN_OFF; i++) {
aoqi@0 405 errn += verify("test_2vi_unaln: a2", i, a2.get(i), -1);
aoqi@0 406 }
aoqi@0 407 for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 408 errn += verify("test_2vi_unaln: a2", i, a2.get(i), 103);
aoqi@0 409 }
aoqi@0 410
aoqi@0 411 // Reset for aligned overlap initialization
aoqi@0 412 for (int i=0; i<ALIGN_OFF; i++) {
aoqi@0 413 a1.lazySet(i, i);
aoqi@0 414 }
aoqi@0 415 for (int i=ALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 416 a1.lazySet(i, -1);
aoqi@0 417 }
aoqi@0 418 test_cp_alndst(a1, a1);
aoqi@0 419 for (int i=0; i<ARRLEN; i++) {
aoqi@0 420 int v = i%ALIGN_OFF;
aoqi@0 421 errn += verify("test_cp_alndst_overlap: a1", i, a1.get(i), v);
aoqi@0 422 }
aoqi@0 423 for (int i=0; i<ALIGN_OFF; i++) {
aoqi@0 424 a1.lazySet((i+ALIGN_OFF), -1);
aoqi@0 425 }
aoqi@0 426 test_cp_alnsrc(a1, a1);
aoqi@0 427 for (int i=0; i<ALIGN_OFF; i++) {
aoqi@0 428 errn += verify("test_cp_alnsrc_overlap: a1", i, a1.get(i), -1);
aoqi@0 429 }
aoqi@0 430 for (int i=ALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 431 int v = i%ALIGN_OFF;
aoqi@0 432 errn += verify("test_cp_alnsrc_overlap: a1", i, a1.get(i), v);
aoqi@0 433 }
aoqi@0 434 for (int i=0; i<ARRLEN; i++) {
aoqi@0 435 a1.lazySet(i, -1);
aoqi@0 436 }
aoqi@0 437 test_2ci_aln(a1, a1);
aoqi@0 438 for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
aoqi@0 439 errn += verify("test_2ci_aln_overlap: a1", i, a1.get(i), -103);
aoqi@0 440 }
aoqi@0 441 for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 442 errn += verify("test_2ci_aln_overlap: a1", i, a1.get(i), -123);
aoqi@0 443 }
aoqi@0 444 for (int i=0; i<ARRLEN; i++) {
aoqi@0 445 a1.lazySet(i, -1);
aoqi@0 446 }
aoqi@0 447 test_2vi_aln(a1, a1, 123, 103);
aoqi@0 448 for (int i=0; i<ARRLEN-ALIGN_OFF; i++) {
aoqi@0 449 errn += verify("test_2vi_aln_overlap: a1", i, a1.get(i), 123);
aoqi@0 450 }
aoqi@0 451 for (int i=ARRLEN-ALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 452 errn += verify("test_2vi_aln_overlap: a1", i, a1.get(i), 103);
aoqi@0 453 }
aoqi@0 454
aoqi@0 455 // Reset for unaligned overlap initialization
aoqi@0 456 for (int i=0; i<UNALIGN_OFF; i++) {
aoqi@0 457 a1.lazySet(i, i);
aoqi@0 458 }
aoqi@0 459 for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 460 a1.lazySet(i, -1);
aoqi@0 461 }
aoqi@0 462 test_cp_unalndst(a1, a1);
aoqi@0 463 for (int i=0; i<ARRLEN; i++) {
aoqi@0 464 int v = i%UNALIGN_OFF;
aoqi@0 465 errn += verify("test_cp_unalndst_overlap: a1", i, a1.get(i), v);
aoqi@0 466 }
aoqi@0 467 for (int i=0; i<UNALIGN_OFF; i++) {
aoqi@0 468 a1.lazySet((i+UNALIGN_OFF), -1);
aoqi@0 469 }
aoqi@0 470 test_cp_unalnsrc(a1, a1);
aoqi@0 471 for (int i=0; i<UNALIGN_OFF; i++) {
aoqi@0 472 errn += verify("test_cp_unalnsrc_overlap: a1", i, a1.get(i), -1);
aoqi@0 473 }
aoqi@0 474 for (int i=UNALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 475 int v = i%UNALIGN_OFF;
aoqi@0 476 errn += verify("test_cp_unalnsrc_overlap: a1", i, a1.get(i), v);
aoqi@0 477 }
aoqi@0 478 for (int i=0; i<ARRLEN; i++) {
aoqi@0 479 a1.lazySet(i, -1);
aoqi@0 480 }
aoqi@0 481 test_2ci_unaln(a1, a1);
aoqi@0 482 for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
aoqi@0 483 errn += verify("test_2ci_unaln_overlap: a1", i, a1.get(i), -103);
aoqi@0 484 }
aoqi@0 485 for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 486 errn += verify("test_2ci_unaln_overlap: a1", i, a1.get(i), -123);
aoqi@0 487 }
aoqi@0 488 for (int i=0; i<ARRLEN; i++) {
aoqi@0 489 a1.lazySet(i, -1);
aoqi@0 490 }
aoqi@0 491 test_2vi_unaln(a1, a1, 123, 103);
aoqi@0 492 for (int i=0; i<ARRLEN-UNALIGN_OFF; i++) {
aoqi@0 493 errn += verify("test_2vi_unaln_overlap: a1", i, a1.get(i), 123);
aoqi@0 494 }
aoqi@0 495 for (int i=ARRLEN-UNALIGN_OFF; i<ARRLEN; i++) {
aoqi@0 496 errn += verify("test_2vi_unaln_overlap: a1", i, a1.get(i), 103);
aoqi@0 497 }
aoqi@0 498
aoqi@0 499 }
aoqi@0 500
aoqi@0 501 if (errn > 0 || test_only)
aoqi@0 502 return errn;
aoqi@0 503
aoqi@0 504 // Initialize
aoqi@0 505 for (int i=0; i<ARRLEN; i++) {
aoqi@0 506 a1.lazySet(i, -1);
aoqi@0 507 a2.lazySet(i, -1);
aoqi@0 508 }
aoqi@0 509 System.out.println("Time");
aoqi@0 510 long start, end;
aoqi@0 511 start = System.currentTimeMillis();
aoqi@0 512 for (int i=0; i<ITERS; i++) {
aoqi@0 513 test_ci(a1);
aoqi@0 514 }
aoqi@0 515 end = System.currentTimeMillis();
aoqi@0 516 System.out.println("test_ci: " + (end - start));
aoqi@0 517 start = System.currentTimeMillis();
aoqi@0 518 for (int i=0; i<ITERS; i++) {
aoqi@0 519 test_vi(a2, 123, -1);
aoqi@0 520 }
aoqi@0 521 end = System.currentTimeMillis();
aoqi@0 522 System.out.println("test_vi: " + (end - start));
aoqi@0 523 start = System.currentTimeMillis();
aoqi@0 524 for (int i=0; i<ITERS; i++) {
aoqi@0 525 test_cp(a1, a2);
aoqi@0 526 }
aoqi@0 527 end = System.currentTimeMillis();
aoqi@0 528 System.out.println("test_cp: " + (end - start));
aoqi@0 529 start = System.currentTimeMillis();
aoqi@0 530 for (int i=0; i<ITERS; i++) {
aoqi@0 531 test_2ci(a1, a2);
aoqi@0 532 }
aoqi@0 533 end = System.currentTimeMillis();
aoqi@0 534 System.out.println("test_2ci: " + (end - start));
aoqi@0 535 start = System.currentTimeMillis();
aoqi@0 536 for (int i=0; i<ITERS; i++) {
aoqi@0 537 test_2vi(a1, a2, 123, 103);
aoqi@0 538 }
aoqi@0 539 end = System.currentTimeMillis();
aoqi@0 540 System.out.println("test_2vi: " + (end - start));
aoqi@0 541
aoqi@0 542 start = System.currentTimeMillis();
aoqi@0 543 for (int i=0; i<ITERS; i++) {
aoqi@0 544 test_ci_neg(a1, 123);
aoqi@0 545 }
aoqi@0 546 end = System.currentTimeMillis();
aoqi@0 547 System.out.println("test_ci_neg: " + (end - start));
aoqi@0 548 start = System.currentTimeMillis();
aoqi@0 549 for (int i=0; i<ITERS; i++) {
aoqi@0 550 test_vi_neg(a2, 123, 103);
aoqi@0 551 }
aoqi@0 552 end = System.currentTimeMillis();
aoqi@0 553 System.out.println("test_vi_neg: " + (end - start));
aoqi@0 554 start = System.currentTimeMillis();
aoqi@0 555 for (int i=0; i<ITERS; i++) {
aoqi@0 556 test_cp_neg(a1, a2);
aoqi@0 557 }
aoqi@0 558 end = System.currentTimeMillis();
aoqi@0 559 System.out.println("test_cp_neg: " + (end - start));
aoqi@0 560 start = System.currentTimeMillis();
aoqi@0 561 for (int i=0; i<ITERS; i++) {
aoqi@0 562 test_2ci_neg(a1, a2);
aoqi@0 563 }
aoqi@0 564 end = System.currentTimeMillis();
aoqi@0 565 System.out.println("test_2ci_neg: " + (end - start));
aoqi@0 566 start = System.currentTimeMillis();
aoqi@0 567 for (int i=0; i<ITERS; i++) {
aoqi@0 568 test_2vi_neg(a1, a2, 123, 103);
aoqi@0 569 }
aoqi@0 570 end = System.currentTimeMillis();
aoqi@0 571 System.out.println("test_2vi_neg: " + (end - start));
aoqi@0 572
aoqi@0 573 start = System.currentTimeMillis();
aoqi@0 574 for (int i=0; i<ITERS; i++) {
aoqi@0 575 test_ci_oppos(a1, 123);
aoqi@0 576 }
aoqi@0 577 end = System.currentTimeMillis();
aoqi@0 578 System.out.println("test_ci_oppos: " + (end - start));
aoqi@0 579 start = System.currentTimeMillis();
aoqi@0 580 for (int i=0; i<ITERS; i++) {
aoqi@0 581 test_vi_oppos(a2, 123, 103);
aoqi@0 582 }
aoqi@0 583 end = System.currentTimeMillis();
aoqi@0 584 System.out.println("test_vi_oppos: " + (end - start));
aoqi@0 585 start = System.currentTimeMillis();
aoqi@0 586 for (int i=0; i<ITERS; i++) {
aoqi@0 587 test_cp_oppos(a1, a2);
aoqi@0 588 }
aoqi@0 589 end = System.currentTimeMillis();
aoqi@0 590 System.out.println("test_cp_oppos: " + (end - start));
aoqi@0 591 start = System.currentTimeMillis();
aoqi@0 592 for (int i=0; i<ITERS; i++) {
aoqi@0 593 test_2ci_oppos(a1, a2);
aoqi@0 594 }
aoqi@0 595 end = System.currentTimeMillis();
aoqi@0 596 System.out.println("test_2ci_oppos: " + (end - start));
aoqi@0 597 start = System.currentTimeMillis();
aoqi@0 598 for (int i=0; i<ITERS; i++) {
aoqi@0 599 test_2vi_oppos(a1, a2, 123, 103);
aoqi@0 600 }
aoqi@0 601 end = System.currentTimeMillis();
aoqi@0 602 System.out.println("test_2vi_oppos: " + (end - start));
aoqi@0 603
aoqi@0 604 start = System.currentTimeMillis();
aoqi@0 605 for (int i=0; i<ITERS; i++) {
aoqi@0 606 test_ci_off(a1, 123);
aoqi@0 607 }
aoqi@0 608 end = System.currentTimeMillis();
aoqi@0 609 System.out.println("test_ci_off: " + (end - start));
aoqi@0 610 start = System.currentTimeMillis();
aoqi@0 611 for (int i=0; i<ITERS; i++) {
aoqi@0 612 test_vi_off(a2, 123, 103);
aoqi@0 613 }
aoqi@0 614 end = System.currentTimeMillis();
aoqi@0 615 System.out.println("test_vi_off: " + (end - start));
aoqi@0 616 start = System.currentTimeMillis();
aoqi@0 617 for (int i=0; i<ITERS; i++) {
aoqi@0 618 test_cp_off(a1, a2);
aoqi@0 619 }
aoqi@0 620 end = System.currentTimeMillis();
aoqi@0 621 System.out.println("test_cp_off: " + (end - start));
aoqi@0 622 start = System.currentTimeMillis();
aoqi@0 623 for (int i=0; i<ITERS; i++) {
aoqi@0 624 test_2ci_off(a1, a2);
aoqi@0 625 }
aoqi@0 626 end = System.currentTimeMillis();
aoqi@0 627 System.out.println("test_2ci_off: " + (end - start));
aoqi@0 628 start = System.currentTimeMillis();
aoqi@0 629 for (int i=0; i<ITERS; i++) {
aoqi@0 630 test_2vi_off(a1, a2, 123, 103);
aoqi@0 631 }
aoqi@0 632 end = System.currentTimeMillis();
aoqi@0 633 System.out.println("test_2vi_off: " + (end - start));
aoqi@0 634
aoqi@0 635 start = System.currentTimeMillis();
aoqi@0 636 for (int i=0; i<ITERS; i++) {
aoqi@0 637 test_ci_inv(a1, OFFSET, 123);
aoqi@0 638 }
aoqi@0 639 end = System.currentTimeMillis();
aoqi@0 640 System.out.println("test_ci_inv: " + (end - start));
aoqi@0 641 start = System.currentTimeMillis();
aoqi@0 642 for (int i=0; i<ITERS; i++) {
aoqi@0 643 test_vi_inv(a2, 123, OFFSET, 103);
aoqi@0 644 }
aoqi@0 645 end = System.currentTimeMillis();
aoqi@0 646 System.out.println("test_vi_inv: " + (end - start));
aoqi@0 647 start = System.currentTimeMillis();
aoqi@0 648 for (int i=0; i<ITERS; i++) {
aoqi@0 649 test_cp_inv(a1, a2, OFFSET);
aoqi@0 650 }
aoqi@0 651 end = System.currentTimeMillis();
aoqi@0 652 System.out.println("test_cp_inv: " + (end - start));
aoqi@0 653 start = System.currentTimeMillis();
aoqi@0 654 for (int i=0; i<ITERS; i++) {
aoqi@0 655 test_2ci_inv(a1, a2, OFFSET);
aoqi@0 656 }
aoqi@0 657 end = System.currentTimeMillis();
aoqi@0 658 System.out.println("test_2ci_inv: " + (end - start));
aoqi@0 659 start = System.currentTimeMillis();
aoqi@0 660 for (int i=0; i<ITERS; i++) {
aoqi@0 661 test_2vi_inv(a1, a2, 123, 103, OFFSET);
aoqi@0 662 }
aoqi@0 663 end = System.currentTimeMillis();
aoqi@0 664 System.out.println("test_2vi_inv: " + (end - start));
aoqi@0 665
aoqi@0 666 start = System.currentTimeMillis();
aoqi@0 667 for (int i=0; i<ITERS; i++) {
aoqi@0 668 test_ci_scl(a1, 123);
aoqi@0 669 }
aoqi@0 670 end = System.currentTimeMillis();
aoqi@0 671 System.out.println("test_ci_scl: " + (end - start));
aoqi@0 672 start = System.currentTimeMillis();
aoqi@0 673 for (int i=0; i<ITERS; i++) {
aoqi@0 674 test_vi_scl(a2, 123, 103);
aoqi@0 675 }
aoqi@0 676 end = System.currentTimeMillis();
aoqi@0 677 System.out.println("test_vi_scl: " + (end - start));
aoqi@0 678 start = System.currentTimeMillis();
aoqi@0 679 for (int i=0; i<ITERS; i++) {
aoqi@0 680 test_cp_scl(a1, a2);
aoqi@0 681 }
aoqi@0 682 end = System.currentTimeMillis();
aoqi@0 683 System.out.println("test_cp_scl: " + (end - start));
aoqi@0 684 start = System.currentTimeMillis();
aoqi@0 685 for (int i=0; i<ITERS; i++) {
aoqi@0 686 test_2ci_scl(a1, a2);
aoqi@0 687 }
aoqi@0 688 end = System.currentTimeMillis();
aoqi@0 689 System.out.println("test_2ci_scl: " + (end - start));
aoqi@0 690 start = System.currentTimeMillis();
aoqi@0 691 for (int i=0; i<ITERS; i++) {
aoqi@0 692 test_2vi_scl(a1, a2, 123, 103);
aoqi@0 693 }
aoqi@0 694 end = System.currentTimeMillis();
aoqi@0 695 System.out.println("test_2vi_scl: " + (end - start));
aoqi@0 696
aoqi@0 697 start = System.currentTimeMillis();
aoqi@0 698 for (int i=0; i<ITERS; i++) {
aoqi@0 699 test_cp_alndst(a1, a2);
aoqi@0 700 }
aoqi@0 701 end = System.currentTimeMillis();
aoqi@0 702 System.out.println("test_cp_alndst: " + (end - start));
aoqi@0 703 start = System.currentTimeMillis();
aoqi@0 704 for (int i=0; i<ITERS; i++) {
aoqi@0 705 test_cp_alnsrc(a1, a2);
aoqi@0 706 }
aoqi@0 707 end = System.currentTimeMillis();
aoqi@0 708 System.out.println("test_cp_alnsrc: " + (end - start));
aoqi@0 709 start = System.currentTimeMillis();
aoqi@0 710 for (int i=0; i<ITERS; i++) {
aoqi@0 711 test_2ci_aln(a1, a2);
aoqi@0 712 }
aoqi@0 713 end = System.currentTimeMillis();
aoqi@0 714 System.out.println("test_2ci_aln: " + (end - start));
aoqi@0 715 start = System.currentTimeMillis();
aoqi@0 716 for (int i=0; i<ITERS; i++) {
aoqi@0 717 test_2vi_aln(a1, a2, 123, 103);
aoqi@0 718 }
aoqi@0 719 end = System.currentTimeMillis();
aoqi@0 720 System.out.println("test_2vi_aln: " + (end - start));
aoqi@0 721
aoqi@0 722 start = System.currentTimeMillis();
aoqi@0 723 for (int i=0; i<ITERS; i++) {
aoqi@0 724 test_cp_unalndst(a1, a2);
aoqi@0 725 }
aoqi@0 726 end = System.currentTimeMillis();
aoqi@0 727 System.out.println("test_cp_unalndst: " + (end - start));
aoqi@0 728 start = System.currentTimeMillis();
aoqi@0 729 for (int i=0; i<ITERS; i++) {
aoqi@0 730 test_cp_unalnsrc(a1, a2);
aoqi@0 731 }
aoqi@0 732 end = System.currentTimeMillis();
aoqi@0 733 System.out.println("test_cp_unalnsrc: " + (end - start));
aoqi@0 734 start = System.currentTimeMillis();
aoqi@0 735 for (int i=0; i<ITERS; i++) {
aoqi@0 736 test_2ci_unaln(a1, a2);
aoqi@0 737 }
aoqi@0 738 end = System.currentTimeMillis();
aoqi@0 739 System.out.println("test_2ci_unaln: " + (end - start));
aoqi@0 740 start = System.currentTimeMillis();
aoqi@0 741 for (int i=0; i<ITERS; i++) {
aoqi@0 742 test_2vi_unaln(a1, a2, 123, 103);
aoqi@0 743 }
aoqi@0 744 end = System.currentTimeMillis();
aoqi@0 745 System.out.println("test_2vi_unaln: " + (end - start));
aoqi@0 746
aoqi@0 747 return errn;
aoqi@0 748 }
aoqi@0 749
aoqi@0 750 static void test_ci(AtomicIntegerArray a) {
aoqi@0 751 for (int i = 0; i < ARRLEN; i+=1) {
aoqi@0 752 a.lazySet(i, -123);
aoqi@0 753 }
aoqi@0 754 }
aoqi@0 755 static void test_vi(AtomicIntegerArray a, int b, int old) {
aoqi@0 756 for (int i = 0; i < ARRLEN; i+=1) {
aoqi@0 757 a.lazySet(i, b);
aoqi@0 758 }
aoqi@0 759 }
aoqi@0 760 static void test_cp(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 761 for (int i = 0; i < ARRLEN; i+=1) {
aoqi@0 762 a.lazySet(i, b.get(i));
aoqi@0 763 }
aoqi@0 764 }
aoqi@0 765 static void test_2ci(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 766 for (int i = 0; i < ARRLEN; i+=1) {
aoqi@0 767 a.lazySet(i, -123);
aoqi@0 768 b.lazySet(i, -103);
aoqi@0 769 }
aoqi@0 770 }
aoqi@0 771 static void test_2vi(AtomicIntegerArray a, AtomicIntegerArray b, int c, int d) {
aoqi@0 772 for (int i = 0; i < ARRLEN; i+=1) {
aoqi@0 773 a.lazySet(i, c);
aoqi@0 774 b.lazySet(i, d);
aoqi@0 775 }
aoqi@0 776 }
aoqi@0 777 static void test_ci_neg(AtomicIntegerArray a, int old) {
aoqi@0 778 for (int i = ARRLEN-1; i >= 0; i-=1) {
aoqi@0 779 a.lazySet(i,-123);
aoqi@0 780 }
aoqi@0 781 }
aoqi@0 782 static void test_vi_neg(AtomicIntegerArray a, int b, int old) {
aoqi@0 783 for (int i = ARRLEN-1; i >= 0; i-=1) {
aoqi@0 784 a.lazySet(i, b);
aoqi@0 785 }
aoqi@0 786 }
aoqi@0 787 static void test_cp_neg(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 788 for (int i = ARRLEN-1; i >= 0; i-=1) {
aoqi@0 789 a.lazySet(i, b.get(i));
aoqi@0 790 }
aoqi@0 791 }
aoqi@0 792 static void test_2ci_neg(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 793 for (int i = ARRLEN-1; i >= 0; i-=1) {
aoqi@0 794 a.lazySet(i, -123);
aoqi@0 795 b.lazySet(i, -103);
aoqi@0 796 }
aoqi@0 797 }
aoqi@0 798 static void test_2vi_neg(AtomicIntegerArray a, AtomicIntegerArray b, int c, int d) {
aoqi@0 799 for (int i = ARRLEN-1; i >= 0; i-=1) {
aoqi@0 800 a.lazySet(i, c);
aoqi@0 801 b.lazySet(i, d);
aoqi@0 802 }
aoqi@0 803 }
aoqi@0 804 static void test_ci_oppos(AtomicIntegerArray a, int old) {
aoqi@0 805 int limit = ARRLEN-1;
aoqi@0 806 for (int i = 0; i < ARRLEN; i+=1) {
aoqi@0 807 a.lazySet((limit-i), -123);
aoqi@0 808 }
aoqi@0 809 }
aoqi@0 810 static void test_vi_oppos(AtomicIntegerArray a, int b, int old) {
aoqi@0 811 int limit = ARRLEN-1;
aoqi@0 812 for (int i = limit; i >= 0; i-=1) {
aoqi@0 813 a.lazySet((limit-i), b);
aoqi@0 814 }
aoqi@0 815 }
aoqi@0 816 static void test_cp_oppos(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 817 int limit = ARRLEN-1;
aoqi@0 818 for (int i = 0; i < ARRLEN; i+=1) {
aoqi@0 819 a.lazySet(i, b.get(limit-i));
aoqi@0 820 }
aoqi@0 821 }
aoqi@0 822 static void test_2ci_oppos(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 823 int limit = ARRLEN-1;
aoqi@0 824 for (int i = 0; i < ARRLEN; i+=1) {
aoqi@0 825 a.lazySet((limit-i), -123);
aoqi@0 826 b.lazySet(i, -103);
aoqi@0 827 }
aoqi@0 828 }
aoqi@0 829 static void test_2vi_oppos(AtomicIntegerArray a, AtomicIntegerArray b, int c, int d) {
aoqi@0 830 int limit = ARRLEN-1;
aoqi@0 831 for (int i = limit; i >= 0; i-=1) {
aoqi@0 832 a.lazySet(i, c);
aoqi@0 833 b.lazySet((limit-i), d);
aoqi@0 834 }
aoqi@0 835 }
aoqi@0 836 static void test_ci_off(AtomicIntegerArray a, int old) {
aoqi@0 837 for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
aoqi@0 838 a.lazySet((i+OFFSET), -123);
aoqi@0 839 }
aoqi@0 840 }
aoqi@0 841 static void test_vi_off(AtomicIntegerArray a, int b, int old) {
aoqi@0 842 for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
aoqi@0 843 a.lazySet((i+OFFSET), b);
aoqi@0 844 }
aoqi@0 845 }
aoqi@0 846 static void test_cp_off(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 847 for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
aoqi@0 848 a.lazySet((i+OFFSET), b.get(i+OFFSET));
aoqi@0 849 }
aoqi@0 850 }
aoqi@0 851 static void test_2ci_off(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 852 for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
aoqi@0 853 a.lazySet((i+OFFSET), -123);
aoqi@0 854 b.lazySet((i+OFFSET), -103);
aoqi@0 855 }
aoqi@0 856 }
aoqi@0 857 static void test_2vi_off(AtomicIntegerArray a, AtomicIntegerArray b, int c, int d) {
aoqi@0 858 for (int i = 0; i < ARRLEN-OFFSET; i+=1) {
aoqi@0 859 a.lazySet((i+OFFSET), c);
aoqi@0 860 b.lazySet((i+OFFSET), d);
aoqi@0 861 }
aoqi@0 862 }
aoqi@0 863 static void test_ci_inv(AtomicIntegerArray a, int k, int old) {
aoqi@0 864 for (int i = 0; i < ARRLEN-k; i+=1) {
aoqi@0 865 a.lazySet((i+k),-123);
aoqi@0 866 }
aoqi@0 867 }
aoqi@0 868 static void test_vi_inv(AtomicIntegerArray a, int b, int k, int old) {
aoqi@0 869 for (int i = 0; i < ARRLEN-k; i+=1) {
aoqi@0 870 a.lazySet((i+k), b);
aoqi@0 871 }
aoqi@0 872 }
aoqi@0 873 static void test_cp_inv(AtomicIntegerArray a, AtomicIntegerArray b, int k) {
aoqi@0 874 for (int i = 0; i < ARRLEN-k; i+=1) {
aoqi@0 875 a.lazySet((i+k), b.get(i+k));
aoqi@0 876 }
aoqi@0 877 }
aoqi@0 878 static void test_2ci_inv(AtomicIntegerArray a, AtomicIntegerArray b, int k) {
aoqi@0 879 for (int i = 0; i < ARRLEN-k; i+=1) {
aoqi@0 880 a.lazySet((i+k), -123);
aoqi@0 881 b.lazySet((i+k), -103);
aoqi@0 882 }
aoqi@0 883 }
aoqi@0 884 static void test_2vi_inv(AtomicIntegerArray a, AtomicIntegerArray b, int c, int d, int k) {
aoqi@0 885 for (int i = 0; i < ARRLEN-k; i+=1) {
aoqi@0 886 a.lazySet((i+k), c);
aoqi@0 887 b.lazySet((i+k), d);
aoqi@0 888 }
aoqi@0 889 }
aoqi@0 890 static void test_ci_scl(AtomicIntegerArray a, int old) {
aoqi@0 891 for (int i = 0; i*SCALE < ARRLEN; i+=1) {
aoqi@0 892 a.lazySet((i*SCALE), -123);
aoqi@0 893 }
aoqi@0 894 }
aoqi@0 895 static void test_vi_scl(AtomicIntegerArray a, int b, int old) {
aoqi@0 896 for (int i = 0; i*SCALE < ARRLEN; i+=1) {
aoqi@0 897 a.lazySet((i*SCALE), b);
aoqi@0 898 }
aoqi@0 899 }
aoqi@0 900 static void test_cp_scl(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 901 for (int i = 0; i*SCALE < ARRLEN; i+=1) {
aoqi@0 902 a.lazySet((i*SCALE), b.get(i*SCALE));
aoqi@0 903 }
aoqi@0 904 }
aoqi@0 905 static void test_2ci_scl(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 906 for (int i = 0; i*SCALE < ARRLEN; i+=1) {
aoqi@0 907 a.lazySet((i*SCALE), -123);
aoqi@0 908 b.lazySet((i*SCALE), -103);
aoqi@0 909 }
aoqi@0 910 }
aoqi@0 911 static void test_2vi_scl(AtomicIntegerArray a, AtomicIntegerArray b, int c, int d) {
aoqi@0 912 for (int i = 0; i*SCALE < ARRLEN; i+=1) {
aoqi@0 913 a.lazySet((i*SCALE), c);
aoqi@0 914 b.lazySet((i*SCALE), d);
aoqi@0 915 }
aoqi@0 916 }
aoqi@0 917 static void test_cp_alndst(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 918 for (int i = 0; i < ARRLEN-ALIGN_OFF; i+=1) {
aoqi@0 919 a.lazySet((i+ALIGN_OFF), b.get(i));
aoqi@0 920 }
aoqi@0 921 }
aoqi@0 922 static void test_cp_alnsrc(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 923 for (int i = 0; i < ARRLEN-ALIGN_OFF; i+=1) {
aoqi@0 924 a.lazySet(i, b.get(i+ALIGN_OFF));
aoqi@0 925 }
aoqi@0 926 }
aoqi@0 927 static void test_2ci_aln(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 928 for (int i = 0; i < ARRLEN-ALIGN_OFF; i+=1) {
aoqi@0 929 a.lazySet((i+ALIGN_OFF), -123);
aoqi@0 930 b.lazySet(i, -103);
aoqi@0 931 }
aoqi@0 932 }
aoqi@0 933 static void test_2vi_aln(AtomicIntegerArray a, AtomicIntegerArray b, int c, int d) {
aoqi@0 934 for (int i = 0; i < ARRLEN-ALIGN_OFF; i+=1) {
aoqi@0 935 a.lazySet(i, c);
aoqi@0 936 b.lazySet((i+ALIGN_OFF), d);
aoqi@0 937 }
aoqi@0 938 }
aoqi@0 939 static void test_cp_unalndst(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 940 for (int i = 0; i < ARRLEN-UNALIGN_OFF; i+=1) {
aoqi@0 941 a.lazySet((i+UNALIGN_OFF), b.get(i));
aoqi@0 942 }
aoqi@0 943 }
aoqi@0 944 static void test_cp_unalnsrc(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 945 for (int i = 0; i < ARRLEN-UNALIGN_OFF; i+=1) {
aoqi@0 946 a.lazySet(i, b.get(i+UNALIGN_OFF));
aoqi@0 947 }
aoqi@0 948 }
aoqi@0 949 static void test_2ci_unaln(AtomicIntegerArray a, AtomicIntegerArray b) {
aoqi@0 950 for (int i = 0; i < ARRLEN-UNALIGN_OFF; i+=1) {
aoqi@0 951 a.lazySet((i+UNALIGN_OFF), -123);
aoqi@0 952 b.lazySet(i, -103);
aoqi@0 953 }
aoqi@0 954 }
aoqi@0 955 static void test_2vi_unaln(AtomicIntegerArray a, AtomicIntegerArray b, int c, int d) {
aoqi@0 956 for (int i = 0; i < ARRLEN-UNALIGN_OFF; i+=1) {
aoqi@0 957 a.lazySet(i, c);
aoqi@0 958 b.lazySet((i+UNALIGN_OFF), d);
aoqi@0 959 }
aoqi@0 960 }
aoqi@0 961
aoqi@0 962 static int verify(String text, int i, int elem, int val) {
aoqi@0 963 if (elem != val) {
aoqi@0 964 System.err.println(text + "[" + i + "] = " + elem + " != " + val);
aoqi@0 965 return 1;
aoqi@0 966 }
aoqi@0 967 return 0;
aoqi@0 968 }
aoqi@0 969 }

mercurial