< prev index next >

test/hotspot/jtreg/compiler/vectorization/TestVectorsNotSavedAtSafepoint.java

Print this page

  1 /*
  2  * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
  3  * Copyright (c) 2020, Red Hat, Inc. All rights reserved.
  4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  5  *
  6  * This code is free software; you can redistribute it and/or modify it
  7  * under the terms of the GNU General Public License version 2 only, as
  8  * published by the Free Software Foundation.
  9  *
 10  * This code is distributed in the hope that it will be useful, but WITHOUT
 11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 13  * version 2 for more details (a copy is included in the LICENSE file that
 14  * accompanied this code).
 15  *
 16  * You should have received a copy of the GNU General Public License version
 17  * 2 along with this work; if not, write to the Free Software Foundation,
 18  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 19  *
 20  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 21  * or visit www.oracle.com if you need additional information or have any
 22  * questions.
 23  */
 24 
 25 /**
 26  * @test
 27  * @bug 8193518 8249608

 28  * @summary C2: Vector registers are sometimes corrupted at safepoint
 29  * @run main/othervm -XX:-BackgroundCompilation -XX:+IgnoreUnrecognizedVMOptions -XX:+UseCountedLoopSafepoints -XX:LoopStripMiningIter=2 -XX:-TieredCompilation TestVectorsNotSavedAtSafepoint test1
 30  * @run main/othervm -XX:-BackgroundCompilation TestVectorsNotSavedAtSafepoint test2
 31  */
 32 
 33 import java.util.Arrays;
 34 
 35 public class TestVectorsNotSavedAtSafepoint {
 36 
 37     static void test1(byte[] barray1, byte[] barray2, byte[] barray3, long[] larray, long v) {
 38         // Uses wide vectors, v in vector registers is live at the
 39         // safepoint of the outer strip mined loop
 40         for (int i = 0; i < larray.length; i++) {
 41             larray[i] = v;
 42         }
 43         // Runs for few iterations so limited unrolling and short
 44         // vectors
 45         for (int i = 0; i < barray3.length; i++) {
 46             barray3[i] = (byte)(barray1[i] + barray2[i]);
 47         }

  1 /*
  2  * Copyright (c) 2020, 2026, Oracle and/or its affiliates. All rights reserved.
  3  * Copyright (c) 2020, Red Hat, Inc. All rights reserved.
  4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  5  *
  6  * This code is free software; you can redistribute it and/or modify it
  7  * under the terms of the GNU General Public License version 2 only, as
  8  * published by the Free Software Foundation.
  9  *
 10  * This code is distributed in the hope that it will be useful, but WITHOUT
 11  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 12  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 13  * version 2 for more details (a copy is included in the LICENSE file that
 14  * accompanied this code).
 15  *
 16  * You should have received a copy of the GNU General Public License version
 17  * 2 along with this work; if not, write to the Free Software Foundation,
 18  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 19  *
 20  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 21  * or visit www.oracle.com if you need additional information or have any
 22  * questions.
 23  */
 24 
 25 /**
 26  * @test
 27  * @bug 8193518 8249608
 28  * @requires vm.compMode != "Xcomp"
 29  * @summary C2: Vector registers are sometimes corrupted at safepoint
 30  * @run main/othervm -XX:-BackgroundCompilation -XX:+IgnoreUnrecognizedVMOptions -XX:+UseCountedLoopSafepoints -XX:LoopStripMiningIter=2 -XX:-TieredCompilation TestVectorsNotSavedAtSafepoint test1
 31  * @run main/othervm -XX:-BackgroundCompilation TestVectorsNotSavedAtSafepoint test2
 32  */
 33 
 34 import java.util.Arrays;
 35 
 36 public class TestVectorsNotSavedAtSafepoint {
 37 
 38     static void test1(byte[] barray1, byte[] barray2, byte[] barray3, long[] larray, long v) {
 39         // Uses wide vectors, v in vector registers is live at the
 40         // safepoint of the outer strip mined loop
 41         for (int i = 0; i < larray.length; i++) {
 42             larray[i] = v;
 43         }
 44         // Runs for few iterations so limited unrolling and short
 45         // vectors
 46         for (int i = 0; i < barray3.length; i++) {
 47             barray3[i] = (byte)(barray1[i] + barray2[i]);
 48         }
< prev index next >