SSL Int256VectorTests.java
Interaktion und PortierbarkeitJAVA
|
|
/*
* Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @modules jdk.incubator.vector
* @run testng/othervm -ea -esa -Xbatch -XX:-TieredCompilation Int256VectorTests
*/
// -- This file was mechanically generated: Do not edit! -- //
import jdk.incubator.vector.VectorShape;
import jdk.incubator.vector.VectorSpecies;
import jdk.incubator.vector.VectorShuffle;
import jdk.incubator.vector.VectorMask;
import jdk.incubator.vector.VectorOperators;
import jdk.incubator.vector.Vector;
import jdk.incubator.vector.IntVector;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.lang.Integer;
import java.util.List;
import java.util.Arrays;
import java.util.function.BiFunction;
import java.util.function.IntFunction;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Test
public class Int256VectorTests extends AbstractVectorTest {
static final VectorSpecies<Integer> SPECIES =
IntVector.SPECIES_256;
static final int INVOC_COUNT = Integer.getInteger("jdk.incubator.vector.test.loop-iterations", 100);
private static final int CONST_SHIFT = Integer.SIZE / 2;
static final int BUFFER_REPS = Integer.getInteger("jdk.incubator.vector.test.buffer-vectors", 25000 / 256);
interface FUnOp {
int apply(int a);
}
static void assertArraysEquals(int[] r, int[] a, FUnOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i]));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a[i]), "at index #" + i + ", input = " + a[i]);
}
}
interface FUnArrayOp {
int[] apply(int a);
}
static void assertArraysEquals(int[] r, int[] a, FUnArrayOp f) {
int i = 0;
try {
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(Arrays.copyOfRange(r, i, i+SPECIES.length()),
f.apply(a[i]));
}
} catch (AssertionError e) {
int[] ref = f.apply(a[i]);
int[] res = Arrays.copyOfRange(r, i, i+SPECIES.length());
Assert.assertEquals(res, ref, "(ref: " + Arrays.toString(ref)
+ ", res: " + Arrays.toString(res)
+ "), at index #" + i);
}
}
static void assertArraysEquals(int[] r, int[] a, boolean[] mask, FUnOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], mask[i % SPECIES.length()] ? f.apply(a[i]) : a[i]);
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], mask[i % SPECIES.length()] ? f.apply(a[i]) : a[i], "at index #" + i + ", input = " + a[i] + ", mask = " + mask[i % SPECIES.length()]);
}
}
interface FReductionOp {
int apply(int[] a, int idx);
}
interface FReductionAllOp {
int apply(int[] a);
}
static void assertReductionArraysEquals(int[] r, int rc, int[] a,
FReductionOp f, FReductionAllOp fa) {
int i = 0;
try {
Assert.assertEquals(rc, fa.apply(a));
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(r[i], f.apply(a, i));
}
} catch (AssertionError e) {
Assert.assertEquals(rc, fa.apply(a), "Final result is incorrect!");
Assert.assertEquals(r[i], f.apply(a, i), "at index #" + i);
}
}
interface FReductionMaskedOp {
int apply(int[] a, int idx, boolean[] mask);
}
interface FReductionAllMaskedOp {
int apply(int[] a, boolean[] mask);
}
static void assertReductionArraysEqualsMasked(int[] r, int rc, int[] a, boolean[] mask,
FReductionMaskedOp f, FReductionAllMaskedOp fa) {
int i = 0;
try {
Assert.assertEquals(rc, fa.apply(a, mask));
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(r[i], f.apply(a, i, mask));
}
} catch (AssertionError e) {
Assert.assertEquals(rc, fa.apply(a, mask), "Final result is incorrect!");
Assert.assertEquals(r[i], f.apply(a, i, mask), "at index #" + i);
}
}
interface FReductionOpLong {
long apply(int[] a, int idx);
}
interface FReductionAllOpLong {
long apply(int[] a);
}
static void assertReductionLongArraysEquals(long[] r, long rc, int[] a,
FReductionOpLong f, FReductionAllOpLong fa) {
int i = 0;
try {
Assert.assertEquals(rc, fa.apply(a));
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(r[i], f.apply(a, i));
}
} catch (AssertionError e) {
Assert.assertEquals(rc, fa.apply(a), "Final result is incorrect!");
Assert.assertEquals(r[i], f.apply(a, i), "at index #" + i);
}
}
interface FReductionMaskedOpLong {
long apply(int[] a, int idx, boolean[] mask);
}
interface FReductionAllMaskedOpLong {
long apply(int[] a, boolean[] mask);
}
static void assertReductionLongArraysEqualsMasked(long[] r, long rc, int[] a, boolean[] mask,
FReductionMaskedOpLong f, FReductionAllMaskedOpLong fa) {
int i = 0;
try {
Assert.assertEquals(rc, fa.apply(a, mask));
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(r[i], f.apply(a, i, mask));
}
} catch (AssertionError e) {
Assert.assertEquals(rc, fa.apply(a, mask), "Final result is incorrect!");
Assert.assertEquals(r[i], f.apply(a, i, mask), "at index #" + i);
}
}
interface FBoolReductionOp {
boolean apply(boolean[] a, int idx);
}
static void assertReductionBoolArraysEquals(boolean[] r, boolean[] a, FBoolReductionOp f) {
int i = 0;
try {
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(r[i], f.apply(a, i));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a, i), "at index #" + i);
}
}
interface FMaskReductionOp {
int apply(boolean[] a, int idx);
}
static void assertMaskReductionArraysEquals(int[] r, boolean[] a, FMaskReductionOp f) {
int i = 0;
try {
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(r[i], f.apply(a, i));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a, i), "at index #" + i);
}
}
static void assertInsertArraysEquals(int[] r, int[] a, int element, int index, int start, int end) {
int i = start;
try {
for (; i < end; i += 1) {
if(i%SPECIES.length() == index) {
Assert.assertEquals(r[i], element);
} else {
Assert.assertEquals(r[i], a[i]);
}
}
} catch (AssertionError e) {
if (i%SPECIES.length() == index) {
Assert.assertEquals(r[i], element, "at index #" + i);
} else {
Assert.assertEquals(r[i], a[i], "at index #" + i);
}
}
}
static void assertRearrangeArraysEquals(int[] r, int[] a, int[] order, int vector_len) {
int i = 0, j = 0;
try {
for (; i < a.length; i += vector_len) {
for (j = 0; j < vector_len; j++) {
Assert.assertEquals(r[i+j], a[i+order[i+j]]);
}
}
} catch (AssertionError e) {
int idx = i + j;
Assert.assertEquals(r[i+j], a[i+order[i+j]], "at index #" + idx + ", input = " + a[i+order[i+j]]);
}
}
static void assertcompressArraysEquals(int[] r, int[] a, boolean[] m, int vector_len) {
int i = 0, j = 0, k = 0;
try {
for (; i < a.length; i += vector_len) {
k = 0;
for (j = 0; j < vector_len; j++) {
if (m[(i + j) % SPECIES.length()]) {
Assert.assertEquals(r[i + k], a[i + j]);
k++;
}
}
for (; k < vector_len; k++) {
Assert.assertEquals(r[i + k], (int)0);
}
}
} catch (AssertionError e) {
int idx = i + k;
if (m[(i + j) % SPECIES.length()]) {
Assert.assertEquals(r[idx], a[i + j], "at index #" + idx);
} else {
Assert.assertEquals(r[idx], (int)0, "at index #" + idx);
}
}
}
static void assertexpandArraysEquals(int[] r, int[] a, boolean[] m, int vector_len) {
int i = 0, j = 0, k = 0;
try {
for (; i < a.length; i += vector_len) {
k = 0;
for (j = 0; j < vector_len; j++) {
if (m[(i + j) % SPECIES.length()]) {
Assert.assertEquals(r[i + j], a[i + k]);
k++;
} else {
Assert.assertEquals(r[i + j], (int)0);
}
}
}
} catch (AssertionError e) {
int idx = i + j;
if (m[idx % SPECIES.length()]) {
Assert.assertEquals(r[idx], a[i + k], "at index #" + idx);
} else {
Assert.assertEquals(r[idx], (int)0, "at index #" + idx);
}
}
}
static void assertSelectFromArraysEquals(int[] r, int[] a, int[] order, int vector_len) {
int i = 0, j = 0;
try {
for (; i < a.length; i += vector_len) {
for (j = 0; j < vector_len; j++) {
Assert.assertEquals(r[i+j], a[i+(int)order[i+j]]);
}
}
} catch (AssertionError e) {
int idx = i + j;
Assert.assertEquals(r[i+j], a[i+(int)order[i+j]], "at index #" + idx + ", input = " + a[i+(int)order[i+j]]);
}
}
static void assertRearrangeArraysEquals(int[] r, int[] a, int[] order, boolean[] mask, int vector_len) {
int i = 0, j = 0;
try {
for (; i < a.length; i += vector_len) {
for (j = 0; j < vector_len; j++) {
if (mask[j % SPECIES.length()])
Assert.assertEquals(r[i+j], a[i+order[i+j]]);
else
Assert.assertEquals(r[i+j], (int)0);
}
}
} catch (AssertionError e) {
int idx = i + j;
if (mask[j % SPECIES.length()])
Assert.assertEquals(r[i+j], a[i+order[i+j]], "at index #" + idx + ", input = " + a[i+order[i+j]] + ", mask = " + mask[j % SPECIES.length()]);
else
Assert.assertEquals(r[i+j], (int)0, "at index #" + idx + ", input = " + a[i+order[i+j]] + ", mask = " + mask[j % SPECIES.length()]);
}
}
static void assertSelectFromArraysEquals(int[] r, int[] a, int[] order, boolean[] mask, int vector_len) {
int i = 0, j = 0;
try {
for (; i < a.length; i += vector_len) {
for (j = 0; j < vector_len; j++) {
if (mask[j % SPECIES.length()])
Assert.assertEquals(r[i+j], a[i+(int)order[i+j]]);
else
Assert.assertEquals(r[i+j], (int)0);
}
}
} catch (AssertionError e) {
int idx = i + j;
if (mask[j % SPECIES.length()])
Assert.assertEquals(r[i+j], a[i+(int)order[i+j]], "at index #" + idx + ", input = " + a[i+(int)order[i+j]] + ", mask = " + mask[j % SPECIES.length()]);
else
Assert.assertEquals(r[i+j], (int)0, "at index #" + idx + ", input = " + a[i+(int)order[i+j]] + ", mask = " + mask[j % SPECIES.length()]);
}
}
static void assertBroadcastArraysEquals(int[] r, int[] a) {
int i = 0;
for (; i < a.length; i += SPECIES.length()) {
int idx = i;
for (int j = idx; j < (idx + SPECIES.length()); j++)
a[j]=a[idx];
}
try {
for (i = 0; i < a.length; i++) {
Assert.assertEquals(r[i], a[i]);
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], a[i], "at index #" + i + ", input = " + a[i]);
}
}
interface FBinOp {
int apply(int a, int b);
}
interface FBinMaskOp {
int apply(int a, int b, boolean m);
static FBinMaskOp lift(FBinOp f) {
return (a, b, m) -> m ? f.apply(a, b) : a;
}
}
static void assertArraysEquals(int[] r, int[] a, int[] b, FBinOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], b[i]));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a[i], b[i]), "(" + a[i] + ", " + b[i] + ") at index #" + i);
}
}
static void assertBroadcastArraysEquals(int[] r, int[] a, int[] b, FBinOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], b[(i / SPECIES.length()) * SPECIES.length()]));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a[i], b[(i / SPECIES.length()) * SPECIES.length()]),
"(" + a[i] + ", " + b[(i / SPECIES.length()) * SPECIES.length()] + ") at index #" + i);
}
}
static void assertBroadcastLongArraysEquals(int[] r, int[] a, int[] b, FBinOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], (int)((long)b[(i / SPECIES.length()) * SPECIES.length()])));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a[i], (int)((long)b[(i / SPECIES.length()) * SPECIES.length()])),
"(" + a[i] + ", " + b[(i / SPECIES.length()) * SPECIES.length()] + ") at index #" + i);
}
}
static void assertArraysEquals(int[] r, int[] a, int[] b, boolean[] mask, FBinOp f) {
assertArraysEquals(r, a, b, mask, FBinMaskOp.lift(f));
}
static void assertArraysEquals(int[] r, int[] a, int[] b, boolean[] mask, FBinMaskOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], b[i], mask[i % SPECIES.length()]));
}
} catch (AssertionError err) {
Assert.assertEquals(r[i], f.apply(a[i], b[i], mask[i % SPECIES.length()]), "at index #" + i + ", input1 = " + a[i] + ", input2 = " + b[i] + ", mask = " + mask[i % SPECIES.length()]);
}
}
static void assertBroadcastArraysEquals(int[] r, int[] a, int[] b, boolean[] mask, FBinOp f) {
assertBroadcastArraysEquals(r, a, b, mask, FBinMaskOp.lift(f));
}
static void assertBroadcastArraysEquals(int[] r, int[] a, int[] b, boolean[] mask, FBinMaskOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], b[(i / SPECIES.length()) * SPECIES.length()], mask[i % SPECIES.length()]));
}
} catch (AssertionError err) {
Assert.assertEquals(r[i], f.apply(a[i], b[(i / SPECIES.length()) * SPECIES.length()],
mask[i % SPECIES.length()]), "at index #" + i + ", input1 = " + a[i] +
", input2 = " + b[(i / SPECIES.length()) * SPECIES.length()] + ", mask = " +
mask[i % SPECIES.length()]);
}
}
static void assertBroadcastLongArraysEquals(int[] r, int[] a, int[] b, boolean[] mask, FBinOp f) {
assertBroadcastLongArraysEquals(r, a, b, mask, FBinMaskOp.lift(f));
}
static void assertBroadcastLongArraysEquals(int[] r, int[] a, int[] b, boolean[] mask, FBinMaskOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], (int)((long)b[(i / SPECIES.length()) * SPECIES.length()]), mask[i % SPECIES.length()]));
}
} catch (AssertionError err) {
Assert.assertEquals(r[i], f.apply(a[i], (int)((long)b[(i / SPECIES.length()) * SPECIES.length()]),
mask[i % SPECIES.length()]), "at index #" + i + ", input1 = " + a[i] +
", input2 = " + b[(i / SPECIES.length()) * SPECIES.length()] + ", mask = " +
mask[i % SPECIES.length()]);
}
}
static void assertShiftArraysEquals(int[] r, int[] a, int[] b, FBinOp f) {
int i = 0;
int j = 0;
try {
for (; j < a.length; j += SPECIES.length()) {
for (i = 0; i < SPECIES.length(); i++) {
Assert.assertEquals(r[i+j], f.apply(a[i+j], b[j]));
}
}
} catch (AssertionError e) {
Assert.assertEquals(r[i+j], f.apply(a[i+j], b[j]), "at index #" + i + ", " + j);
}
}
static void assertShiftArraysEquals(int[] r, int[] a, int[] b, boolean[] mask, FBinOp f) {
assertShiftArraysEquals(r, a, b, mask, FBinMaskOp.lift(f));
}
static void assertShiftArraysEquals(int[] r, int[] a, int[] b, boolean[] mask, FBinMaskOp f) {
int i = 0;
int j = 0;
try {
for (; j < a.length; j += SPECIES.length()) {
for (i = 0; i < SPECIES.length(); i++) {
Assert.assertEquals(r[i+j], f.apply(a[i+j], b[j], mask[i]));
}
}
} catch (AssertionError err) {
Assert.assertEquals(r[i+j], f.apply(a[i+j], b[j], mask[i]), "at index #" + i + ", input1 = " + a[i+j] + ", input2 = " + b[j] + ", mask = " + mask[i]);
}
}
interface FBinConstOp {
int apply(int a);
}
interface FBinConstMaskOp {
int apply(int a, boolean m);
static FBinConstMaskOp lift(FBinConstOp f) {
return (a, m) -> m ? f.apply(a) : a;
}
}
static void assertShiftConstEquals(int[] r, int[] a, FBinConstOp f) {
int i = 0;
int j = 0;
try {
for (; j < a.length; j += SPECIES.length()) {
for (i = 0; i < SPECIES.length(); i++) {
Assert.assertEquals(r[i+j], f.apply(a[i+j]));
}
}
} catch (AssertionError e) {
Assert.assertEquals(r[i+j], f.apply(a[i+j]), "at index #" + i + ", " + j);
}
}
static void assertShiftConstEquals(int[] r, int[] a, boolean[] mask, FBinConstOp f) {
assertShiftConstEquals(r, a, mask, FBinConstMaskOp.lift(f));
}
static void assertShiftConstEquals(int[] r, int[] a, boolean[] mask, FBinConstMaskOp f) {
int i = 0;
int j = 0;
try {
for (; j < a.length; j += SPECIES.length()) {
for (i = 0; i < SPECIES.length(); i++) {
Assert.assertEquals(r[i+j], f.apply(a[i+j], mask[i]));
}
}
} catch (AssertionError err) {
Assert.assertEquals(r[i+j], f.apply(a[i+j], mask[i]), "at index #" + i + ", input1 = " + a[i+j] + ", mask = " + mask[i]);
}
}
interface FTernOp {
int apply(int a, int b, int c);
}
interface FTernMaskOp {
int apply(int a, int b, int c, boolean m);
static FTernMaskOp lift(FTernOp f) {
return (a, b, c, m) -> m ? f.apply(a, b, c) : a;
}
}
static void assertArraysEquals(int[] r, int[] a, int[] b, int[] c, FTernOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], b[i], c[i]));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a[i], b[i], c[i]), "at index #" + i + ", input1 = " + a[i] + ", input2 = " + b[i] + ", input3 = " + c[i]);
}
}
static void assertArraysEquals(int[] r, int[] a, int[] b, int[] c, boolean[] mask, FTernOp f) {
assertArraysEquals(r, a, b, c, mask, FTernMaskOp.lift(f));
}
static void assertArraysEquals(int[] r, int[] a, int[] b, int[] c, boolean[] mask, FTernMaskOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], b[i], c[i], mask[i % SPECIES.length()]));
}
} catch (AssertionError err) {
Assert.assertEquals(r[i], f.apply(a[i], b[i], c[i], mask[i % SPECIES.length()]), "at index #" + i + ", input1 = " + a[i] + ", input2 = "
+ b[i] + ", input3 = " + c[i] + ", mask = " + mask[i % SPECIES.length()]);
}
}
static void assertBroadcastArraysEquals(int[] r, int[] a, int[] b, int[] c, FTernOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], b[i], c[(i / SPECIES.length()) * SPECIES.length()]));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a[i], b[i], c[(i / SPECIES.length()) * SPECIES.length()]), "at index #" +
i + ", input1 = " + a[i] + ", input2 = " + b[i] + ", input3 = " +
c[(i / SPECIES.length()) * SPECIES.length()]);
}
}
static void assertAltBroadcastArraysEquals(int[] r, int[] a, int[] b, int[] c, FTernOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], b[(i / SPECIES.length()) * SPECIES.length()], c[i]));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a[i], b[(i / SPECIES.length()) * SPECIES.length()], c[i]), "at index #" +
i + ", input1 = " + a[i] + ", input2 = " +
b[(i / SPECIES.length()) * SPECIES.length()] + ", input3 = " + c[i]);
}
}
static void assertBroadcastArraysEquals(int[] r, int[] a, int[] b, int[] c, boolean[] mask,
FTernOp f) {
assertBroadcastArraysEquals(r, a, b, c, mask, FTernMaskOp.lift(f));
}
static void assertBroadcastArraysEquals(int[] r, int[] a, int[] b, int[] c, boolean[] mask,
FTernMaskOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], b[i], c[(i / SPECIES.length()) * SPECIES.length()],
mask[i % SPECIES.length()]));
}
} catch (AssertionError err) {
Assert.assertEquals(r[i], f.apply(a[i], b[i], c[(i / SPECIES.length()) * SPECIES.length()],
mask[i % SPECIES.length()]), "at index #" + i + ", input1 = " + a[i] + ", input2 = " +
b[i] + ", input3 = " + c[(i / SPECIES.length()) * SPECIES.length()] + ", mask = " +
mask[i % SPECIES.length()]);
}
}
static void assertAltBroadcastArraysEquals(int[] r, int[] a, int[] b, int[] c, boolean[] mask,
FTernOp f) {
assertAltBroadcastArraysEquals(r, a, b, c, mask, FTernMaskOp.lift(f));
}
static void assertAltBroadcastArraysEquals(int[] r, int[] a, int[] b, int[] c, boolean[] mask,
FTernMaskOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], b[(i / SPECIES.length()) * SPECIES.length()], c[i],
mask[i % SPECIES.length()]));
}
} catch (AssertionError err) {
Assert.assertEquals(r[i], f.apply(a[i], b[(i / SPECIES.length()) * SPECIES.length()], c[i],
mask[i % SPECIES.length()]), "at index #" + i + ", input1 = " + a[i] +
", input2 = " + b[(i / SPECIES.length()) * SPECIES.length()] +
", input3 = " + c[i] + ", mask = " + mask[i % SPECIES.length()]);
}
}
static void assertDoubleBroadcastArraysEquals(int[] r, int[] a, int[] b, int[] c, FTernOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], b[(i / SPECIES.length()) * SPECIES.length()],
c[(i / SPECIES.length()) * SPECIES.length()]));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a[i], b[(i / SPECIES.length()) * SPECIES.length()],
c[(i / SPECIES.length()) * SPECIES.length()]), "at index #" + i + ", input1 = " + a[i]
+ ", input2 = " + b[(i / SPECIES.length()) * SPECIES.length()] + ", input3 = " +
c[(i / SPECIES.length()) * SPECIES.length()]);
}
}
static void assertDoubleBroadcastArraysEquals(int[] r, int[] a, int[] b, int[] c, boolean[] mask,
FTernOp f) {
assertDoubleBroadcastArraysEquals(r, a, b, c, mask, FTernMaskOp.lift(f));
}
static void assertDoubleBroadcastArraysEquals(int[] r, int[] a, int[] b, int[] c, boolean[] mask,
FTernMaskOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a[i], b[(i / SPECIES.length()) * SPECIES.length()],
c[(i / SPECIES.length()) * SPECIES.length()], mask[i % SPECIES.length()]));
}
} catch (AssertionError err) {
Assert.assertEquals(r[i], f.apply(a[i], b[(i / SPECIES.length()) * SPECIES.length()],
c[(i / SPECIES.length()) * SPECIES.length()], mask[i % SPECIES.length()]), "at index #"
+ i + ", input1 = " + a[i] + ", input2 = " + b[(i / SPECIES.length()) * SPECIES.length()] +
", input3 = " + c[(i / SPECIES.length()) * SPECIES.length()] + ", mask = " +
mask[i % SPECIES.length()]);
}
}
interface FBinArrayOp {
int apply(int[] a, int b);
}
static void assertArraysEquals(int[] r, int[] a, FBinArrayOp f) {
int i = 0;
try {
for (; i < a.length; i++) {
Assert.assertEquals(r[i], f.apply(a, i));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a,i), "at index #" + i);
}
}
interface FGatherScatterOp {
int[] apply(int[] a, int ix, int[] b, int iy);
}
static void assertArraysEquals(int[] r, int[] a, int[] b, FGatherScatterOp f) {
int i = 0;
try {
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(Arrays.copyOfRange(r, i, i+SPECIES.length()),
f.apply(a, i, b, i));
}
} catch (AssertionError e) {
int[] ref = f.apply(a, i, b, i);
int[] res = Arrays.copyOfRange(r, i, i+SPECIES.length());
Assert.assertEquals(res, ref,
"(ref: " + Arrays.toString(ref) + ", res: " + Arrays.toString(res) + ", a: "
+ Arrays.toString(Arrays.copyOfRange(a, i, i+SPECIES.length()))
+ ", b: "
+ Arrays.toString(Arrays.copyOfRange(b, i, i+SPECIES.length()))
+ " at index #" + i);
}
}
interface FGatherMaskedOp {
int[] apply(int[] a, int ix, boolean[] mask, int[] b, int iy);
}
interface FScatterMaskedOp {
int[] apply(int[] r, int[] a, int ix, boolean[] mask, int[] b, int iy);
}
static void assertArraysEquals(int[] r, int[] a, int[] b, boolean[] mask, FGatherMaskedOp f) {
int i = 0;
try {
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(Arrays.copyOfRange(r, i, i+SPECIES.length()),
f.apply(a, i, mask, b, i));
}
} catch (AssertionError e) {
int[] ref = f.apply(a, i, mask, b, i);
int[] res = Arrays.copyOfRange(r, i, i+SPECIES.length());
Assert.assertEquals(res, ref,
"(ref: " + Arrays.toString(ref) + ", res: " + Arrays.toString(res) + ", a: "
+ Arrays.toString(Arrays.copyOfRange(a, i, i+SPECIES.length()))
+ ", b: "
+ Arrays.toString(Arrays.copyOfRange(b, i, i+SPECIES.length()))
+ ", mask: "
+ Arrays.toString(mask)
+ " at index #" + i);
}
}
static void assertArraysEquals(int[] r, int[] a, int[] b, boolean[] mask, FScatterMaskedOp f) {
int i = 0;
try {
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(Arrays.copyOfRange(r, i, i+SPECIES.length()),
f.apply(r, a, i, mask, b, i));
}
} catch (AssertionError e) {
int[] ref = f.apply(r, a, i, mask, b, i);
int[] res = Arrays.copyOfRange(r, i, i+SPECIES.length());
Assert.assertEquals(res, ref,
"(ref: " + Arrays.toString(ref) + ", res: " + Arrays.toString(res) + ", a: "
+ Arrays.toString(Arrays.copyOfRange(a, i, i+SPECIES.length()))
+ ", b: "
+ Arrays.toString(Arrays.copyOfRange(b, i, i+SPECIES.length()))
+ ", r: "
+ Arrays.toString(Arrays.copyOfRange(r, i, i+SPECIES.length()))
+ ", mask: "
+ Arrays.toString(mask)
+ " at index #" + i);
}
}
interface FLaneOp {
int[] apply(int[] a, int origin, int idx);
}
static void assertArraysEquals(int[] r, int[] a, int origin, FLaneOp f) {
int i = 0;
try {
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(Arrays.copyOfRange(r, i, i+SPECIES.length()),
f.apply(a, origin, i));
}
} catch (AssertionError e) {
int[] ref = f.apply(a, origin, i);
int[] res = Arrays.copyOfRange(r, i, i+SPECIES.length());
Assert.assertEquals(res, ref, "(ref: " + Arrays.toString(ref)
+ ", res: " + Arrays.toString(res)
+ "), at index #" + i);
}
}
interface FLaneBop {
int[] apply(int[] a, int[] b, int origin, int idx);
}
static void assertArraysEquals(int[] r, int[] a, int[] b, int origin, FLaneBop f) {
int i = 0;
try {
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(Arrays.copyOfRange(r, i, i+SPECIES.length()),
f.apply(a, b, origin, i));
}
} catch (AssertionError e) {
int[] ref = f.apply(a, b, origin, i);
int[] res = Arrays.copyOfRange(r, i, i+SPECIES.length());
Assert.assertEquals(res, ref, "(ref: " + Arrays.toString(ref)
+ ", res: " + Arrays.toString(res)
+ "), at index #" + i
+ ", at origin #" + origin);
}
}
interface FLaneMaskedBop {
int[] apply(int[] a, int[] b, int origin, boolean[] mask, int idx);
}
static void assertArraysEquals(int[] r, int[] a, int[] b, int origin, boolean[] mask, FLaneMaskedBop f) {
int i = 0;
try {
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(Arrays.copyOfRange(r, i, i+SPECIES.length()),
f.apply(a, b, origin, mask, i));
}
} catch (AssertionError e) {
int[] ref = f.apply(a, b, origin, mask, i);
int[] res = Arrays.copyOfRange(r, i, i+SPECIES.length());
Assert.assertEquals(res, ref, "(ref: " + Arrays.toString(ref)
+ ", res: " + Arrays.toString(res)
+ "), at index #" + i
+ ", at origin #" + origin);
}
}
interface FLanePartBop {
int[] apply(int[] a, int[] b, int origin, int part, int idx);
}
static void assertArraysEquals(int[] r, int[] a, int[] b, int origin, int part, FLanePartBop f) {
int i = 0;
try {
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(Arrays.copyOfRange(r, i, i+SPECIES.length()),
f.apply(a, b, origin, part, i));
}
} catch (AssertionError e) {
int[] ref = f.apply(a, b, origin, part, i);
int[] res = Arrays.copyOfRange(r, i, i+SPECIES.length());
Assert.assertEquals(res, ref, "(ref: " + Arrays.toString(ref)
+ ", res: " + Arrays.toString(res)
+ "), at index #" + i
+ ", at origin #" + origin
+ ", with part #" + part);
}
}
interface FLanePartMaskedBop {
int[] apply(int[] a, int[] b, int origin, int part, boolean[] mask, int idx);
}
static void assertArraysEquals(int[] r, int[] a, int[] b, int origin, int part, boolean[] mask, FLanePartMaskedBop f) {
int i = 0;
try {
for (; i < a.length; i += SPECIES.length()) {
Assert.assertEquals(Arrays.copyOfRange(r, i, i+SPECIES.length()),
f.apply(a, b, origin, part, mask, i));
}
} catch (AssertionError e) {
int[] ref = f.apply(a, b, origin, part, mask, i);
int[] res = Arrays.copyOfRange(r, i, i+SPECIES.length());
Assert.assertEquals(res, ref, "(ref: " + Arrays.toString(ref)
+ ", res: " + Arrays.toString(res)
+ "), at index #" + i
+ ", at origin #" + origin
+ ", with part #" + part);
}
}
static void assertArraysEquals(int[] r, int[] a, int offs) {
int i = 0;
try {
for (; i < r.length; i++) {
Assert.assertEquals(r[i], (int)(a[i+offs]));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], (int)(a[i+offs]), "at index #" + i + ", input = " + a[i+offs]);
}
}
static void assertArraysEquals(long[] r, int[] a, int offs) {
int i = 0;
try {
for (; i < r.length; i++) {
Assert.assertEquals(r[i], (long)(a[i+offs]));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], (long)(a[i+offs]), "at index #" + i + ", input = " + a[i+offs]);
}
}
static void assertArraysEquals(double[] r, int[] a, int offs) {
int i = 0;
try {
for (; i < r.length; i++) {
Assert.assertEquals(r[i], (double)(a[i+offs]));
}
} catch (AssertionError e) {
Assert.assertEquals(r[i], (double)(a[i+offs]), "at index #" + i + ", input = " + a[i+offs]);
}
}
static int bits(int e) {
return e;
}
static final List<IntFunction<int[]>> INT_GENERATORS = List.of(
withToString("int[-i * 5]", (int s) -> {
return fill(s * BUFFER_REPS,
i -> (int)(-i * 5));
}),
withToString("int[i * 5]", (int s) -> {
return fill(s * BUFFER_REPS,
i -> (int)(i * 5));
}),
withToString("int[i + 1]", (int s) -> {
return fill(s * BUFFER_REPS,
i -> (((int)(i + 1) == 0) ? 1 : (int)(i + 1)));
}),
withToString("int[cornerCaseValue(i)]", (int s) -> {
return fill(s * BUFFER_REPS,
i -> cornerCaseValue(i));
})
);
// Create combinations of pairs
// @@@ Might be sensitive to order e.g. div by 0
static final List<List<IntFunction<int[]>>> INT_GENERATOR_PAIRS =
Stream.of(INT_GENERATORS.get(0)).
flatMap(fa -> INT_GENERATORS.stream().skip(1).map(fb -> List.of(fa, fb))).
collect(Collectors.toList());
@DataProvider
public Object[][] boolUnaryOpProvider() {
return BOOL_ARRAY_GENERATORS.stream().
map(f -> new Object[]{f}).
toArray(Object[][]::new);
}
static final List<List<IntFunction<int[]>>> INT_GENERATOR_TRIPLES =
INT_GENERATOR_PAIRS.stream().
flatMap(pair -> INT_GENERATORS.stream().map(f -> List.of(pair.get(0), pair.get(1), f))).
collect(Collectors.toList());
@DataProvider
public Object[][] intBinaryOpProvider() {
return INT_GENERATOR_PAIRS.stream().map(List::toArray).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] intIndexedOpProvider() {
return INT_GENERATOR_PAIRS.stream().map(List::toArray).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] intBinaryOpMaskProvider() {
return BOOLEAN_MASK_GENERATORS.stream().
flatMap(fm -> INT_GENERATOR_PAIRS.stream().map(lfa -> {
return Stream.concat(lfa.stream(), Stream.of(fm)).toArray();
})).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] intTernaryOpProvider() {
return INT_GENERATOR_TRIPLES.stream().map(List::toArray).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] intTernaryOpMaskProvider() {
return BOOLEAN_MASK_GENERATORS.stream().
flatMap(fm -> INT_GENERATOR_TRIPLES.stream().map(lfa -> {
return Stream.concat(lfa.stream(), Stream.of(fm)).toArray();
})).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] intUnaryOpProvider() {
return INT_GENERATORS.stream().
map(f -> new Object[]{f}).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] intUnaryOpMaskProvider() {
return BOOLEAN_MASK_GENERATORS.stream().
flatMap(fm -> INT_GENERATORS.stream().map(fa -> {
return new Object[] {fa, fm};
})).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] maskProvider() {
return BOOLEAN_MASK_GENERATORS.stream().
map(f -> new Object[]{f}).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] maskCompareOpProvider() {
return BOOLEAN_MASK_COMPARE_GENERATOR_PAIRS.stream().map(List::toArray).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] shuffleProvider() {
return INT_SHUFFLE_GENERATORS.stream().
map(f -> new Object[]{f}).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] shuffleCompareOpProvider() {
return INT_SHUFFLE_COMPARE_GENERATOR_PAIRS.stream().map(List::toArray).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] intUnaryOpShuffleProvider() {
return INT_SHUFFLE_GENERATORS.stream().
flatMap(fs -> INT_GENERATORS.stream().map(fa -> {
return new Object[] {fa, fs};
})).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] intUnaryOpShuffleMaskProvider() {
return BOOLEAN_MASK_GENERATORS.stream().
flatMap(fm -> INT_SHUFFLE_GENERATORS.stream().
flatMap(fs -> INT_GENERATORS.stream().map(fa -> {
return new Object[] {fa, fs, fm};
}))).
toArray(Object[][]::new);
}
static final List<IntFunction<int[]>> INT_COMPARE_GENERATORS = List.of(
withToString("int[i]", (int s) -> {
return fill(s * BUFFER_REPS,
i -> (int)i);
}),
withToString("int[i - length / 2]", (int s) -> {
return fill(s * BUFFER_REPS,
i -> (int)(i - (s * BUFFER_REPS / 2)));
}),
withToString("int[i + 1]", (int s) -> {
return fill(s * BUFFER_REPS,
i -> (int)(i + 1));
}),
withToString("int[i - 2]", (int s) -> {
return fill(s * BUFFER_REPS,
i -> (int)(i - 2));
}),
withToString("int[zigZag(i)]", (int s) -> {
return fill(s * BUFFER_REPS,
i -> i%3 == 0 ? (int)i : (i%3 == 1 ? (int)(i + 1) : (int)(i - 2)));
}),
withToString("int[cornerCaseValue(i)]", (int s) -> {
return fill(s * BUFFER_REPS,
i -> cornerCaseValue(i));
})
);
static final List<List<IntFunction<int[]>>> INT_TEST_GENERATOR_ARGS =
INT_COMPARE_GENERATORS.stream().
map(fa -> List.of(fa)).
collect(Collectors.toList());
@DataProvider
public Object[][] intTestOpProvider() {
return INT_TEST_GENERATOR_ARGS.stream().map(List::toArray).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] intTestOpMaskProvider() {
return BOOLEAN_MASK_GENERATORS.stream().
flatMap(fm -> INT_TEST_GENERATOR_ARGS.stream().map(lfa -> {
return Stream.concat(lfa.stream(), Stream.of(fm)).toArray();
})).
toArray(Object[][]::new);
}
static final List<List<IntFunction<int[]>>> INT_COMPARE_GENERATOR_PAIRS =
INT_COMPARE_GENERATORS.stream().
flatMap(fa -> INT_COMPARE_GENERATORS.stream().map(fb -> List.of(fa, fb))).
collect(Collectors.toList());
@DataProvider
public Object[][] intCompareOpProvider() {
return INT_COMPARE_GENERATOR_PAIRS.stream().map(List::toArray).
toArray(Object[][]::new);
}
@DataProvider
public Object[][] intCompareOpMaskProvider() {
return BOOLEAN_MASK_GENERATORS.stream().
flatMap(fm -> INT_COMPARE_GENERATOR_PAIRS.stream().map(lfa -> {
return Stream.concat(lfa.stream(), Stream.of(fm)).toArray();
})).
toArray(Object[][]::new);
}
interface ToIntF {
int apply(int i);
}
static int[] fill(int s , ToIntF f) {
return fill(new int[s], f);
}
static int[] fill(int[] a, ToIntF f) {
for (int i = 0; i < a.length; i++) {
a[i] = f.apply(i);
}
return a;
}
static int cornerCaseValue(int i) {
switch(i % 5) {
case 0:
return Integer.MAX_VALUE;
case 1:
return Integer.MIN_VALUE;
case 2:
return Integer.MIN_VALUE;
case 3:
return Integer.MAX_VALUE;
default:
return (int)0;
}
}
static int get(int[] a, int i) {
return (int) a[i];
}
static final IntFunction<int[]> fr = (vl) -> {
int length = BUFFER_REPS * vl;
return new int[length];
};
static final IntFunction<boolean[]> fmr = (vl) -> {
int length = BUFFER_REPS * vl;
return new boolean[length];
};
static final IntFunction<long[]> lfr = (vl) -> {
int length = BUFFER_REPS * vl;
return new long[length];
};
static void replaceZero(int[] a, int v) {
for (int i = 0; i < a.length; i++) {
if (a[i] == 0) {
a[i] = v;
}
}
}
static void replaceZero(int[] a, boolean[] mask, int v) {
for (int i = 0; i < a.length; i++) {
if (mask[i % mask.length] && a[i] == 0) {
a[i] = v;
}
}
}
static int ROL_scalar(int a, int b) {
return Integer.rotateLeft(a, ((int)b));
}
static int ROR_scalar(int a, int b) {
return Integer.rotateRight(a, ((int)b));
}
static int TRAILING_ZEROS_COUNT_scalar(int a) {
return Integer.numberOfTrailingZeros(a);
}
static int LEADING_ZEROS_COUNT_scalar(int a) {
return Integer.numberOfLeadingZeros(a);
}
static int REVERSE_scalar(int a) {
return Integer.reverse(a);
}
static boolean eq(int a, int b) {
return a == b;
}
static boolean neq(int a, int b) {
return a != b;
}
static boolean lt(int a, int b) {
return a < b;
}
static boolean le(int a, int b) {
return a <= b;
}
static boolean gt(int a, int b) {
return a > b;
}
static boolean ge(int a, int b) {
return a >= b;
}
static boolean ult(int a, int b) {
return Integer.compareUnsigned(a, b) < 0;
}
static boolean ule(int a, int b) {
return Integer.compareUnsigned(a, b) <= 0;
}
static boolean ugt(int a, int b) {
return Integer.compareUnsigned(a, b) > 0;
}
static boolean uge(int a, int b) {
return Integer.compareUnsigned(a, b) >= 0;
}
static int firstNonZero(int a, int b) {
return Integer.compare(a, (int) 0) != 0 ? a : b;
}
@Test
static void smokeTest1() {
IntVector three = IntVector.broadcast(SPECIES, (byte)-3);
IntVector three2 = (IntVector) SPECIES.broadcast(-3);
assert(three.eq(three2).allTrue());
IntVector three3 = three2.broadcast(1).broadcast(-3);
assert(three.eq(three3).allTrue());
int scale = 2;
Class<?> ETYPE = int.class;
if (ETYPE == double.class || ETYPE == long.class)
scale = 1000000;
else if (ETYPE == byte.class && SPECIES.length() >= 64)
scale = 1;
IntVector higher = three.addIndex(scale);
VectorMask<Integer> m = three.compare(VectorOperators.LE, higher);
assert(m.allTrue());
m = higher.min((int)-1).test(VectorOperators.IS_NEGATIVE);
assert(m.allTrue());
int max = higher.reduceLanes(VectorOperators.MAX);
assert(max == -3 + scale * (SPECIES.length()-1));
}
private static int[]
bothToArray(IntVector a, IntVector b) {
int[] r = new int[a.length() + b.length()];
a.intoArray(r, 0);
b.intoArray(r, a.length());
return r;
}
@Test
static void smokeTest2() {
// Do some zipping and shuffling.
IntVector io = (IntVector) SPECIES.broadcast(0).addIndex(1);
IntVector io2 = (IntVector) VectorShuffle.iota(SPECIES,0,1,false).toVector();
Assert.assertEquals(io, io2);
IntVector a = io.add((int)1); //[1,2]
IntVector b = a.neg(); //[-1,-2]
int[] abValues = bothToArray(a,b); //[1,2,-1,-2]
VectorShuffle<Integer> zip0 = VectorShuffle.makeZip(SPECIES, 0);
VectorShuffle<Integer> zip1 = VectorShuffle.makeZip(SPECIES, 1);
IntVector zab0 = a.rearrange(zip0,b); //[1,-1]
IntVector zab1 = a.rearrange(zip1,b); //[2,-2]
int[] zabValues = bothToArray(zab0, zab1); //[1,-1,2,-2]
// manually zip
int[] manual = new int[zabValues.length];
for (int i = 0; i < manual.length; i += 2) {
manual[i+0] = abValues[i/2];
manual[i+1] = abValues[a.length() + i/2];
}
Assert.assertEquals(Arrays.toString(zabValues), Arrays.toString(manual));
VectorShuffle<Integer> unz0 = VectorShuffle.makeUnzip(SPECIES, 0);
VectorShuffle<Integer> unz1 = VectorShuffle.makeUnzip(SPECIES, 1);
IntVector uab0 = zab0.rearrange(unz0,zab1);
IntVector uab1 = zab0.rearrange(unz1,zab1);
int[] abValues1 = bothToArray(uab0, uab1);
Assert.assertEquals(Arrays.toString(abValues), Arrays.toString(abValues1));
}
static void iotaShuffle() {
IntVector io = (IntVector) SPECIES.broadcast(0).addIndex(1);
IntVector io2 = (IntVector) VectorShuffle.iota(SPECIES, 0 , 1, false).toVector();
Assert.assertEquals(io, io2);
}
@Test
// Test all shuffle related operations.
static void shuffleTest() {
// To test backend instructions, make sure that C2 is used.
for (int loop = 0; loop < INVOC_COUNT * INVOC_COUNT; loop++) {
iotaShuffle();
}
}
@Test
void viewAsIntegeralLanesTest() {
Vector<?> asIntegral = SPECIES.zero().viewAsIntegralLanes();
Assert.assertEquals(asIntegral.species(), SPECIES);
}
@Test
void viewAsFloatingLanesTest() {
Vector<?> asFloating = SPECIES.zero().viewAsFloatingLanes();
VectorSpecies<?> asFloatingSpecies = asFloating.species();
Assert.assertNotEquals(asFloatingSpecies.elementType(), SPECIES.elementType());
Assert.assertEquals(asFloatingSpecies.vectorShape(), SPECIES.vectorShape());
Assert.assertEquals(asFloatingSpecies.length(), SPECIES.length());
Assert.assertEquals(asFloating.viewAsIntegralLanes().species(), SPECIES);
}
@Test
// Test div by 0.
static void bitwiseDivByZeroSmokeTest() {
try {
IntVector a = (IntVector) SPECIES.broadcast(0).addIndex(1);
IntVector b = (IntVector) SPECIES.broadcast(0);
a.div(b);
Assert.fail();
} catch (ArithmeticException e) {
}
try {
IntVector a = (IntVector) SPECIES.broadcast(0).addIndex(1);
IntVector b = (IntVector) SPECIES.broadcast(0);
VectorMask<Integer> m = a.lt((int) 1);
a.div(b, m);
Assert.fail();
} catch (ArithmeticException e) {
}
}
static int ADD(int a, int b) {
return (int)(a + b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void ADDInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.ADD, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::ADD);
}
static int add(int a, int b) {
return (int)(a + b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void addInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.add(bv).intoArray(r, i);
}
assertArraysEquals(r, a, b, Int256VectorTests::add);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void ADDInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.ADD, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::ADD);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void addInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.add(bv, vmask).intoArray(r, i);
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::add);
}
static int SUB(int a, int b) {
return (int)(a - b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void SUBInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.SUB, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::SUB);
}
static int sub(int a, int b) {
return (int)(a - b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void subInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.sub(bv).intoArray(r, i);
}
assertArraysEquals(r, a, b, Int256VectorTests::sub);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void SUBInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.SUB, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::SUB);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void subInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.sub(bv, vmask).intoArray(r, i);
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::sub);
}
static int MUL(int a, int b) {
return (int)(a * b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void MULInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.MUL, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::MUL);
}
static int mul(int a, int b) {
return (int)(a * b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void mulInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.mul(bv).intoArray(r, i);
}
assertArraysEquals(r, a, b, Int256VectorTests::mul);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void MULInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.MUL, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::MUL);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void mulInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.mul(bv, vmask).intoArray(r, i);
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::mul);
}
static int DIV(int a, int b) {
return (int)(a / b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void DIVInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
replaceZero(b, (int) 1);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.DIV, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::DIV);
}
static int div(int a, int b) {
return (int)(a / b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void divInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
replaceZero(b, (int) 1);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.div(bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::div);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void DIVInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
replaceZero(b, mask, (int) 1);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.DIV, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::DIV);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void divInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
replaceZero(b, mask, (int) 1);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.div(bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::div);
}
static int FIRST_NONZERO(int a, int b) {
return (int)((a)!=0?a:b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void FIRST_NONZEROInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.FIRST_NONZERO, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::FIRST_NONZERO);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void FIRST_NONZEROInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.FIRST_NONZERO, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::FIRST_NONZERO);
}
static int AND(int a, int b) {
return (int)(a & b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void ANDInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.AND, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::AND);
}
static int and(int a, int b) {
return (int)(a & b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void andInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.and(bv).intoArray(r, i);
}
assertArraysEquals(r, a, b, Int256VectorTests::and);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void ANDInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.AND, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::AND);
}
static int AND_NOT(int a, int b) {
return (int)(a & ~b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void AND_NOTInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.AND_NOT, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::AND_NOT);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void AND_NOTInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.AND_NOT, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::AND_NOT);
}
static int OR(int a, int b) {
return (int)(a | b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void ORInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.OR, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::OR);
}
static int or(int a, int b) {
return (int)(a | b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void orInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.or(bv).intoArray(r, i);
}
assertArraysEquals(r, a, b, Int256VectorTests::or);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void ORInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.OR, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::OR);
}
static int XOR(int a, int b) {
return (int)(a ^ b);
}
@Test(dataProvider = "intBinaryOpProvider")
static void XORInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.XOR, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::XOR);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void XORInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.XOR, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::XOR);
}
static int COMPRESS_BITS(int a, int b) {
return (int)(Integer.compress(a, b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void COMPRESS_BITSInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.COMPRESS_BITS, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::COMPRESS_BITS);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void COMPRESS_BITSInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.COMPRESS_BITS, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::COMPRESS_BITS);
}
static int EXPAND_BITS(int a, int b) {
return (int)(Integer.expand(a, b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void EXPAND_BITSInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.EXPAND_BITS, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::EXPAND_BITS);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void EXPAND_BITSInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.EXPAND_BITS, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::EXPAND_BITS);
}
@Test(dataProvider = "intBinaryOpProvider")
static void addInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.add(b[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, Int256VectorTests::add);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void addInt256VectorTestsBroadcastMaskedSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.add(b[i], vmask).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, mask, Int256VectorTests::add);
}
@Test(dataProvider = "intBinaryOpProvider")
static void subInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.sub(b[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, Int256VectorTests::sub);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void subInt256VectorTestsBroadcastMaskedSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.sub(b[i], vmask).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, mask, Int256VectorTests::sub);
}
@Test(dataProvider = "intBinaryOpProvider")
static void mulInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.mul(b[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, Int256VectorTests::mul);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void mulInt256VectorTestsBroadcastMaskedSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.mul(b[i], vmask).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, mask, Int256VectorTests::mul);
}
@Test(dataProvider = "intBinaryOpProvider")
static void divInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
replaceZero(b, (int) 1);
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.div(b[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, Int256VectorTests::div);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void divInt256VectorTestsBroadcastMaskedSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
replaceZero(b, (int) 1);
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.div(b[i], vmask).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, mask, Int256VectorTests::div);
}
@Test(dataProvider = "intBinaryOpProvider")
static void ORInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.OR, b[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, Int256VectorTests::OR);
}
@Test(dataProvider = "intBinaryOpProvider")
static void orInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.or(b[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, Int256VectorTests::or);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void ORInt256VectorTestsBroadcastMaskedSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.OR, b[i], vmask).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, mask, Int256VectorTests::OR);
}
@Test(dataProvider = "intBinaryOpProvider")
static void ANDInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.AND, b[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, Int256VectorTests::AND);
}
@Test(dataProvider = "intBinaryOpProvider")
static void andInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.and(b[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, Int256VectorTests::and);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void ANDInt256VectorTestsBroadcastMaskedSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.AND, b[i], vmask).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, mask, Int256VectorTests::AND);
}
@Test(dataProvider = "intBinaryOpProvider")
static void ORInt256VectorTestsBroadcastLongSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.OR, (long)b[i]).intoArray(r, i);
}
assertBroadcastLongArraysEquals(r, a, b, Int256VectorTests::OR);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void ORInt256VectorTestsBroadcastMaskedLongSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.OR, (long)b[i], vmask).intoArray(r, i);
}
assertBroadcastLongArraysEquals(r, a, b, mask, Int256VectorTests::OR);
}
@Test(dataProvider = "intBinaryOpProvider")
static void ADDInt256VectorTestsBroadcastLongSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ADD, (long)b[i]).intoArray(r, i);
}
assertBroadcastLongArraysEquals(r, a, b, Int256VectorTests::ADD);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void ADDInt256VectorTestsBroadcastMaskedLongSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ADD, (long)b[i], vmask).intoArray(r, i);
}
assertBroadcastLongArraysEquals(r, a, b, mask, Int256VectorTests::ADD);
}
static int LSHL(int a, int b) {
return (int)((a << b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void LSHLInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.LSHL, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::LSHL);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void LSHLInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.LSHL, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::LSHL);
}
static int ASHR(int a, int b) {
return (int)((a >> b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void ASHRInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.ASHR, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::ASHR);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void ASHRInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.ASHR, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::ASHR);
}
static int LSHR(int a, int b) {
return (int)((a >>> b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void LSHRInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.LSHR, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::LSHR);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void LSHRInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.LSHR, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::LSHR);
}
static int LSHL_unary(int a, int b) {
return (int)((a << b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void LSHLInt256VectorTestsScalarShift(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.LSHL, (int)b[i]).intoArray(r, i);
}
}
assertShiftArraysEquals(r, a, b, Int256VectorTests::LSHL_unary);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void LSHLInt256VectorTestsScalarShiftMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.LSHL, (int)b[i], vmask).intoArray(r, i);
}
}
assertShiftArraysEquals(r, a, b, mask, Int256VectorTests::LSHL_unary);
}
static int LSHR_unary(int a, int b) {
return (int)((a >>> b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void LSHRInt256VectorTestsScalarShift(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.LSHR, (int)b[i]).intoArray(r, i);
}
}
assertShiftArraysEquals(r, a, b, Int256VectorTests::LSHR_unary);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void LSHRInt256VectorTestsScalarShiftMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.LSHR, (int)b[i], vmask).intoArray(r, i);
}
}
assertShiftArraysEquals(r, a, b, mask, Int256VectorTests::LSHR_unary);
}
static int ASHR_unary(int a, int b) {
return (int)((a >> b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void ASHRInt256VectorTestsScalarShift(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ASHR, (int)b[i]).intoArray(r, i);
}
}
assertShiftArraysEquals(r, a, b, Int256VectorTests::ASHR_unary);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void ASHRInt256VectorTestsScalarShiftMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ASHR, (int)b[i], vmask).intoArray(r, i);
}
}
assertShiftArraysEquals(r, a, b, mask, Int256VectorTests::ASHR_unary);
}
static int ROR(int a, int b) {
return (int)(ROR_scalar(a,b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void RORInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.ROR, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::ROR);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void RORInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.ROR, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::ROR);
}
static int ROL(int a, int b) {
return (int)(ROL_scalar(a,b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void ROLInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.ROL, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::ROL);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void ROLInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.ROL, bv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::ROL);
}
static int ROR_unary(int a, int b) {
return (int)(ROR_scalar(a, b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void RORInt256VectorTestsScalarShift(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ROR, (int)b[i]).intoArray(r, i);
}
}
assertShiftArraysEquals(r, a, b, Int256VectorTests::ROR_unary);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void RORInt256VectorTestsScalarShiftMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ROR, (int)b[i], vmask).intoArray(r, i);
}
}
assertShiftArraysEquals(r, a, b, mask, Int256VectorTests::ROR_unary);
}
static int ROL_unary(int a, int b) {
return (int)(ROL_scalar(a, b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void ROLInt256VectorTestsScalarShift(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ROL, (int)b[i]).intoArray(r, i);
}
}
assertShiftArraysEquals(r, a, b, Int256VectorTests::ROL_unary);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
static void ROLInt256VectorTestsScalarShiftMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ROL, (int)b[i], vmask).intoArray(r, i);
}
}
assertShiftArraysEquals(r, a, b, mask, Int256VectorTests::ROL_unary);
}
static int LSHR_binary_const(int a) {
return (int)((a >>> CONST_SHIFT));
}
@Test(dataProvider = "intUnaryOpProvider")
static void LSHRInt256VectorTestsScalarShiftConst(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.LSHR, CONST_SHIFT).intoArray(r, i);
}
}
assertShiftConstEquals(r, a, Int256VectorTests::LSHR_binary_const);
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void LSHRInt256VectorTestsScalarShiftMaskedConst(IntFunction<int[]> fa,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.LSHR, CONST_SHIFT, vmask).intoArray(r, i);
}
}
assertShiftConstEquals(r, a, mask, Int256VectorTests::LSHR_binary_const);
}
static int LSHL_binary_const(int a) {
return (int)((a << CONST_SHIFT));
}
@Test(dataProvider = "intUnaryOpProvider")
static void LSHLInt256VectorTestsScalarShiftConst(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.LSHL, CONST_SHIFT).intoArray(r, i);
}
}
assertShiftConstEquals(r, a, Int256VectorTests::LSHL_binary_const);
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void LSHLInt256VectorTestsScalarShiftMaskedConst(IntFunction<int[]> fa,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.LSHL, CONST_SHIFT, vmask).intoArray(r, i);
}
}
assertShiftConstEquals(r, a, mask, Int256VectorTests::LSHL_binary_const);
}
static int ASHR_binary_const(int a) {
return (int)((a >> CONST_SHIFT));
}
@Test(dataProvider = "intUnaryOpProvider")
static void ASHRInt256VectorTestsScalarShiftConst(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ASHR, CONST_SHIFT).intoArray(r, i);
}
}
assertShiftConstEquals(r, a, Int256VectorTests::ASHR_binary_const);
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void ASHRInt256VectorTestsScalarShiftMaskedConst(IntFunction<int[]> fa,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ASHR, CONST_SHIFT, vmask).intoArray(r, i);
}
}
assertShiftConstEquals(r, a, mask, Int256VectorTests::ASHR_binary_const);
}
static int ROR_binary_const(int a) {
return (int)(ROR_scalar(a, CONST_SHIFT));
}
@Test(dataProvider = "intUnaryOpProvider")
static void RORInt256VectorTestsScalarShiftConst(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ROR, CONST_SHIFT).intoArray(r, i);
}
}
assertShiftConstEquals(r, a, Int256VectorTests::ROR_binary_const);
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void RORInt256VectorTestsScalarShiftMaskedConst(IntFunction<int[]> fa,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ROR, CONST_SHIFT, vmask).intoArray(r, i);
}
}
assertShiftConstEquals(r, a, mask, Int256VectorTests::ROR_binary_const);
}
static int ROL_binary_const(int a) {
return (int)(ROL_scalar(a, CONST_SHIFT));
}
@Test(dataProvider = "intUnaryOpProvider")
static void ROLInt256VectorTestsScalarShiftConst(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ROL, CONST_SHIFT).intoArray(r, i);
}
}
assertShiftConstEquals(r, a, Int256VectorTests::ROL_binary_const);
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void ROLInt256VectorTestsScalarShiftMaskedConst(IntFunction<int[]> fa,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.ROL, CONST_SHIFT, vmask).intoArray(r, i);
}
}
assertShiftConstEquals(r, a, mask, Int256VectorTests::ROL_binary_const);
}
static int MIN(int a, int b) {
return (int)(Math.min(a, b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void MINInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.MIN, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::MIN);
}
static int min(int a, int b) {
return (int)(Math.min(a, b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void minInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.min(bv).intoArray(r, i);
}
assertArraysEquals(r, a, b, Int256VectorTests::min);
}
static int MAX(int a, int b) {
return (int)(Math.max(a, b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void MAXInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.lanewise(VectorOperators.MAX, bv).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, Int256VectorTests::MAX);
}
static int max(int a, int b) {
return (int)(Math.max(a, b));
}
@Test(dataProvider = "intBinaryOpProvider")
static void maxInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
av.max(bv).intoArray(r, i);
}
assertArraysEquals(r, a, b, Int256VectorTests::max);
}
@Test(dataProvider = "intBinaryOpProvider")
static void MINInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.MIN, b[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, Int256VectorTests::MIN);
}
@Test(dataProvider = "intBinaryOpProvider")
static void minInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.min(b[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, Int256VectorTests::min);
}
@Test(dataProvider = "intBinaryOpProvider")
static void MAXInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.MAX, b[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, Int256VectorTests::MAX);
}
@Test(dataProvider = "intBinaryOpProvider")
static void maxInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.max(b[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r, a, b, Int256VectorTests::max);
}
static int ANDReduce(int[] a, int idx) {
int res = -1;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res &= a[i];
}
return res;
}
static int ANDReduceAll(int[] a) {
int res = -1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res &= ANDReduce(a, i);
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
static void ANDReduceInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = -1;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.AND);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = -1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra &= av.reduceLanes(VectorOperators.AND);
}
}
assertReductionArraysEquals(r, ra, a,
Int256VectorTests::ANDReduce, Int256VectorTests::ANDReduceAll);
}
static int ANDReduceMasked(int[] a, int idx, boolean[] mask) {
int res = -1;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
if (mask[i % SPECIES.length()])
res &= a[i];
}
return res;
}
static int ANDReduceAllMasked(int[] a, boolean[] mask) {
int res = -1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res &= ANDReduceMasked(a, i, mask);
}
return res;
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void ANDReduceInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
int ra = -1;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.AND, vmask);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = -1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra &= av.reduceLanes(VectorOperators.AND, vmask);
}
}
assertReductionArraysEqualsMasked(r, ra, a, mask,
Int256VectorTests::ANDReduceMasked, Int256VectorTests::ANDReduceAllMasked);
}
static int ORReduce(int[] a, int idx) {
int res = 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res |= a[i];
}
return res;
}
static int ORReduceAll(int[] a) {
int res = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res |= ORReduce(a, i);
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
static void ORReduceInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.OR);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra |= av.reduceLanes(VectorOperators.OR);
}
}
assertReductionArraysEquals(r, ra, a,
Int256VectorTests::ORReduce, Int256VectorTests::ORReduceAll);
}
static int ORReduceMasked(int[] a, int idx, boolean[] mask) {
int res = 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
if (mask[i % SPECIES.length()])
res |= a[i];
}
return res;
}
static int ORReduceAllMasked(int[] a, boolean[] mask) {
int res = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res |= ORReduceMasked(a, i, mask);
}
return res;
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void ORReduceInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
int ra = 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.OR, vmask);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra |= av.reduceLanes(VectorOperators.OR, vmask);
}
}
assertReductionArraysEqualsMasked(r, ra, a, mask,
Int256VectorTests::ORReduceMasked, Int256VectorTests::ORReduceAllMasked);
}
static int XORReduce(int[] a, int idx) {
int res = 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res ^= a[i];
}
return res;
}
static int XORReduceAll(int[] a) {
int res = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res ^= XORReduce(a, i);
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
static void XORReduceInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.XOR);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra ^= av.reduceLanes(VectorOperators.XOR);
}
}
assertReductionArraysEquals(r, ra, a,
Int256VectorTests::XORReduce, Int256VectorTests::XORReduceAll);
}
static int XORReduceMasked(int[] a, int idx, boolean[] mask) {
int res = 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
if (mask[i % SPECIES.length()])
res ^= a[i];
}
return res;
}
static int XORReduceAllMasked(int[] a, boolean[] mask) {
int res = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res ^= XORReduceMasked(a, i, mask);
}
return res;
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void XORReduceInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
int ra = 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.XOR, vmask);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra ^= av.reduceLanes(VectorOperators.XOR, vmask);
}
}
assertReductionArraysEqualsMasked(r, ra, a, mask,
Int256VectorTests::XORReduceMasked, Int256VectorTests::XORReduceAllMasked);
}
static int ADDReduce(int[] a, int idx) {
int res = 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res += a[i];
}
return res;
}
static int ADDReduceAll(int[] a) {
int res = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res += ADDReduce(a, i);
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
static void ADDReduceInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.ADD);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra += av.reduceLanes(VectorOperators.ADD);
}
}
assertReductionArraysEquals(r, ra, a,
Int256VectorTests::ADDReduce, Int256VectorTests::ADDReduceAll);
}
static int ADDReduceMasked(int[] a, int idx, boolean[] mask) {
int res = 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
if (mask[i % SPECIES.length()])
res += a[i];
}
return res;
}
static int ADDReduceAllMasked(int[] a, boolean[] mask) {
int res = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res += ADDReduceMasked(a, i, mask);
}
return res;
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void ADDReduceInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
int ra = 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.ADD, vmask);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra += av.reduceLanes(VectorOperators.ADD, vmask);
}
}
assertReductionArraysEqualsMasked(r, ra, a, mask,
Int256VectorTests::ADDReduceMasked, Int256VectorTests::ADDReduceAllMasked);
}
static int MULReduce(int[] a, int idx) {
int res = 1;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res *= a[i];
}
return res;
}
static int MULReduceAll(int[] a) {
int res = 1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res *= MULReduce(a, i);
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
static void MULReduceInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = 1;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.MUL);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra *= av.reduceLanes(VectorOperators.MUL);
}
}
assertReductionArraysEquals(r, ra, a,
Int256VectorTests::MULReduce, Int256VectorTests::MULReduceAll);
}
static int MULReduceMasked(int[] a, int idx, boolean[] mask) {
int res = 1;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
if (mask[i % SPECIES.length()])
res *= a[i];
}
return res;
}
static int MULReduceAllMasked(int[] a, boolean[] mask) {
int res = 1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res *= MULReduceMasked(a, i, mask);
}
return res;
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void MULReduceInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
int ra = 1;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.MUL, vmask);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra *= av.reduceLanes(VectorOperators.MUL, vmask);
}
}
assertReductionArraysEqualsMasked(r, ra, a, mask,
Int256VectorTests::MULReduceMasked, Int256VectorTests::MULReduceAllMasked);
}
static int MINReduce(int[] a, int idx) {
int res = Integer.MAX_VALUE;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res = (int) Math.min(res, a[i]);
}
return res;
}
static int MINReduceAll(int[] a) {
int res = Integer.MAX_VALUE;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res = (int) Math.min(res, MINReduce(a, i));
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
static void MINReduceInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = Integer.MAX_VALUE;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.MIN);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = Integer.MAX_VALUE;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra = (int) Math.min(ra, av.reduceLanes(VectorOperators.MIN));
}
}
assertReductionArraysEquals(r, ra, a,
Int256VectorTests::MINReduce, Int256VectorTests::MINReduceAll);
}
static int MINReduceMasked(int[] a, int idx, boolean[] mask) {
int res = Integer.MAX_VALUE;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
if (mask[i % SPECIES.length()])
res = (int) Math.min(res, a[i]);
}
return res;
}
static int MINReduceAllMasked(int[] a, boolean[] mask) {
int res = Integer.MAX_VALUE;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res = (int) Math.min(res, MINReduceMasked(a, i, mask));
}
return res;
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void MINReduceInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
int ra = Integer.MAX_VALUE;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.MIN, vmask);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = Integer.MAX_VALUE;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra = (int) Math.min(ra, av.reduceLanes(VectorOperators.MIN, vmask));
}
}
assertReductionArraysEqualsMasked(r, ra, a, mask,
Int256VectorTests::MINReduceMasked, Int256VectorTests::MINReduceAllMasked);
}
static int MAXReduce(int[] a, int idx) {
int res = Integer.MIN_VALUE;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res = (int) Math.max(res, a[i]);
}
return res;
}
static int MAXReduceAll(int[] a) {
int res = Integer.MIN_VALUE;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res = (int) Math.max(res, MAXReduce(a, i));
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
static void MAXReduceInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = Integer.MIN_VALUE;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.MAX);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = Integer.MIN_VALUE;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra = (int) Math.max(ra, av.reduceLanes(VectorOperators.MAX));
}
}
assertReductionArraysEquals(r, ra, a,
Int256VectorTests::MAXReduce, Int256VectorTests::MAXReduceAll);
}
static int MAXReduceMasked(int[] a, int idx, boolean[] mask) {
int res = Integer.MIN_VALUE;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
if (mask[i % SPECIES.length()])
res = (int) Math.max(res, a[i]);
}
return res;
}
static int MAXReduceAllMasked(int[] a, boolean[] mask) {
int res = Integer.MIN_VALUE;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res = (int) Math.max(res, MAXReduceMasked(a, i, mask));
}
return res;
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void MAXReduceInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
int ra = Integer.MIN_VALUE;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.MAX, vmask);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = Integer.MIN_VALUE;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra = (int) Math.max(ra, av.reduceLanes(VectorOperators.MAX, vmask));
}
}
assertReductionArraysEqualsMasked(r, ra, a, mask,
Int256VectorTests::MAXReduceMasked, Int256VectorTests::MAXReduceAllMasked);
}
static int FIRST_NONZEROReduce(int[] a, int idx) {
int res = (int) 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res = firstNonZero(res, a[i]);
}
return res;
}
static int FIRST_NONZEROReduceAll(int[] a) {
int res = (int) 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res = firstNonZero(res, FIRST_NONZEROReduce(a, i));
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
static void FIRST_NONZEROReduceInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = (int) 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.FIRST_NONZERO);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = (int) 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra = firstNonZero(ra, av.reduceLanes(VectorOperators.FIRST_NONZERO));
}
}
assertReductionArraysEquals(r, ra, a,
Int256VectorTests::FIRST_NONZEROReduce, Int256VectorTests::FIRST_NONZEROReduceAll);
}
static int FIRST_NONZEROReduceMasked(int[] a, int idx, boolean[] mask) {
int res = (int) 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
if (mask[i % SPECIES.length()])
res = firstNonZero(res, a[i]);
}
return res;
}
static int FIRST_NONZEROReduceAllMasked(int[] a, boolean[] mask) {
int res = (int) 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
res = firstNonZero(res, FIRST_NONZEROReduceMasked(a, i, mask));
}
return res;
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void FIRST_NONZEROReduceInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
int ra = (int) 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
r[i] = av.reduceLanes(VectorOperators.FIRST_NONZERO, vmask);
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = (int) 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
ra = firstNonZero(ra, av.reduceLanes(VectorOperators.FIRST_NONZERO, vmask));
}
}
assertReductionArraysEqualsMasked(r, ra, a, mask,
Int256VectorTests::FIRST_NONZEROReduceMasked, Int256VectorTests::FIRST_NONZEROReduceAllMasked);
}
static boolean anyTrue(boolean[] a, int idx) {
boolean res = false;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res |= a[i];
}
return res;
}
@Test(dataProvider = "boolUnaryOpProvider")
static void anyTrueInt256VectorTests(IntFunction<boolean[]> fm) {
boolean[] mask = fm.apply(SPECIES.length());
boolean[] r = fmr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < mask.length; i += SPECIES.length()) {
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, i);
r[i] = vmask.anyTrue();
}
}
assertReductionBoolArraysEquals(r, mask, Int256VectorTests::anyTrue);
}
static boolean allTrue(boolean[] a, int idx) {
boolean res = true;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res &= a[i];
}
return res;
}
@Test(dataProvider = "boolUnaryOpProvider")
static void allTrueInt256VectorTests(IntFunction<boolean[]> fm) {
boolean[] mask = fm.apply(SPECIES.length());
boolean[] r = fmr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < mask.length; i += SPECIES.length()) {
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, i);
r[i] = vmask.allTrue();
}
}
assertReductionBoolArraysEquals(r, mask, Int256VectorTests::allTrue);
}
@Test(dataProvider = "intUnaryOpProvider")
static void withInt256VectorTests(IntFunction<int []> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0, j = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.withLane((j++ & (SPECIES.length()-1)), (int)(65535+i)).intoArray(r, i);
}
}
for (int i = 0, j = 0; i < a.length; i += SPECIES.length()) {
assertInsertArraysEquals(r, a, (int)(65535+i), (j++ & (SPECIES.length()-1)), i , i + SPECIES.length());
}
}
static boolean testIS_DEFAULT(int a) {
return bits(a)==0;
}
@Test(dataProvider = "intTestOpProvider")
static void IS_DEFAULTInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
VectorMask<Integer> mv = av.test(VectorOperators.IS_DEFAULT);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), testIS_DEFAULT(a[i + j]));
}
}
}
}
@Test(dataProvider = "intTestOpMaskProvider")
static void IS_DEFAULTMaskedInt256VectorTests(IntFunction<int[]> fa,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
VectorMask<Integer> mv = av.test(VectorOperators.IS_DEFAULT, vmask);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), vmask.laneIsSet(j) && testIS_DEFAULT(a[i + j]));
}
}
}
}
static boolean testIS_NEGATIVE(int a) {
return bits(a)<0;
}
@Test(dataProvider = "intTestOpProvider")
static void IS_NEGATIVEInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
VectorMask<Integer> mv = av.test(VectorOperators.IS_NEGATIVE);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), testIS_NEGATIVE(a[i + j]));
}
}
}
}
@Test(dataProvider = "intTestOpMaskProvider")
static void IS_NEGATIVEMaskedInt256VectorTests(IntFunction<int[]> fa,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
VectorMask<Integer> mv = av.test(VectorOperators.IS_NEGATIVE, vmask);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), vmask.laneIsSet(j) && testIS_NEGATIVE(a[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
static void LTInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.LT, bv);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), lt(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
static void ltInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.lt(bv);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), lt(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpMaskProvider")
static void LTInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.LT, bv, vmask);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), mask[j] && lt(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
static void GTInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.GT, bv);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), gt(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpMaskProvider")
static void GTInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.GT, bv, vmask);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), mask[j] && gt(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
static void EQInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.EQ, bv);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), eq(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
static void eqInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.eq(bv);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), eq(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpMaskProvider")
static void EQInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.EQ, bv, vmask);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), mask[j] && eq(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
static void NEInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.NE, bv);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), neq(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpMaskProvider")
static void NEInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.NE, bv, vmask);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), mask[j] && neq(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
static void LEInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.LE, bv);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), le(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpMaskProvider")
static void LEInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.LE, bv, vmask);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), mask[j] && le(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
static void GEInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.GE, bv);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), ge(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpMaskProvider")
static void GEInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.GE, bv, vmask);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), mask[j] && ge(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
static void UNSIGNED_LTInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.UNSIGNED_LT, bv);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), ult(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpMaskProvider")
static void UNSIGNED_LTInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.UNSIGNED_LT, bv, vmask);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), mask[j] && ult(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
static void UNSIGNED_GTInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.UNSIGNED_GT, bv);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), ugt(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpMaskProvider")
static void UNSIGNED_GTInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.UNSIGNED_GT, bv, vmask);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), mask[j] && ugt(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
static void UNSIGNED_LEInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.UNSIGNED_LE, bv);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), ule(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpMaskProvider")
static void UNSIGNED_LEInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.UNSIGNED_LE, bv, vmask);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
Assert.assertEquals(mv.laneIsSet(j), mask[j] && ule(a[i + j], b[i + j]));
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
static void UNSIGNED_GEInt256VectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for int i = 0;i<a.length; i+= PECIES){
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<Integer> mv = av.compare(VectorOperators.UNSIGNED_GE, bv);
// Check results as part of computation.
for (int j = 0; j < SPECIES.length(); j++) {
(mv.laneIsSetj,uge(i+j, [+j])
}
}
}
}
@Test(dataProvider = "intCompareOpMaskProvider")
static void UNSIGNED_GEInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.ength));
int[] b = fb.apply(SPECIES.length());
boolean =.applySPECIES.();
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (ntic=0 ic<INVOC_COUNT ic++ {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
VectorMask<nteger mv= av.compare(ectorOperators.UNSIGNED_GE, bv vmask);
// Check results as part of computation.
for (int j = 0* version 2 more detailsacopyincluded theLICENSEfilethat
Assert(.() j & ([ +j,bi+ j]))java.lang.StringIndexOutOfBoundsException: Index 93 out of bounds for length 93
}
}
}
}
@Test(dataProvider = "intCompareOpProvider")
*
[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
VectorMask<Integer> mv = av.compare(VectorOperators.LT, b[i]);
// Check results as part of computation.
*/
Assert.assertEquals(mv.laneIsSet(j), a[i + j] Int512VectorTests
}
}
}
@Test(dataProvider = "java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 38
static java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
IntFunctioni[] , <boolean[] ){
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
.apply(SPECIES.length());
VectorMask for( <alength i + SPECIES.length()) {
for (int i =0;i< alength; i+=SPECIES.length()) {
IntVector av IntVector.fromArray(SPECIES, a,i);
VectorMask<Integer"+", at index "+i;
// Check results as part of computation.
(int j =0 j<SPECIES.length(); j++) {
java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 83
}static assertReductionArraysEquals[ , intrc int[ a,
}
@(dataProvider=")
static void java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 9
}
int b =.applySPECIESlength);
for}
FReductionAllOpLong
VectorMask<Integer> mv = av.java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 18
// Check results as part of computation.
for (int
AssertmvlaneIsSetj) [ +]<()(longb])
}
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
taProvider "intCompareOpMaskProvider")
static (IntFunction[>fa,
IntFunctionint] ,IntFunctionboolean] fm java.lang.StringIndexOutOfBoundsException: Index 83 out of bounds for length 83
[ fa.(.()
int[]b= .apply(.length);
boolean[] mask = fm.ri,f(a i)
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for( 0 <a.ength i=SPECIES.length(() {
av=IntVector(SPECIES,a i)
VectorMask<Integer> mv = av int = 0 =0java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
/ Check results as part of computation.
Assert(.laneIsSet() []& a +j] int(longbi));
}
}
}
}else
static void EQInt256VectorTestsBroadcastSmokeTest(IntFunction<int[]> fa, IntFunction<int[] inti =0,j ,k=0
int[ a =fa.(SPECIES.();
int[]b=fb.(SPECIES.length());
for
java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
VectorMask<Integerinti 0 0
for (int
AssertAssert.([j,[i+];
}
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
}
@ static assertSelectFromArraysEquals(nt[ r,int]a int[ order boolean[ mask,int ) {
staticvoid EQInt256VectorTestsBroadcastMaskedSmokeTest(IntFunction<nt]>fajava.lang.StringIndexOutOfBoundsException: Index 82 out of bounds for length 82
IntFunction<int[]> fb, IntFunction<boolean[]> fm) {
int]a=fa.pplyS.length);
int[] = fb.apply(.length());
.length)
VectorMask .ssertEquals[j,(), "tindex #" + idx + ", input = " + a[i+(int)order[i+j]] + ", mask = " + mask[j % SPECIES.length()]);
for inti=0;i<alength i + SPECIES.length()) {
(ntj= idx;j<(idx SPECIES.length();j+)
VectorMask<IntegerqAssert([,ai)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
/ Checkresults as part of computation.
fori j =0 <SPECIES.ength;j+){
assertEquals.)maskj &ai+j =b])java.lang.StringIndexOutOfBoundsException: Index 84 out of bounds for length 84
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
}
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
} (AssertionError) java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
dcastLongSmokeTestIntFunctionint>fa,IntFunction<int[]> fb) {
int[] a = fa.apply
int[
forint i=0 i a.;i + .) java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
IntVector av = IntVector.fromArray(SPECIES, a, i);
VectorMask<Integer> ( a,b, mask, FBinMaskOp.lift();
j; java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 56
Assert.assertEquals(mv.laneIsSet(j), a[i + j] == (intstaticassertBroadcastArraysEquals[ [ a,int]b [] ,FBinOp)java.lang.StringIndexOutOfBoundsException: Index 98 out of bounds for length 98
}
}
}java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 97
@Test( static voidvoidint r ] a [ b, boolean]mask f){
static (IntFunction<[] ,
java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 13
int[] a = fa.apply(SPECIES.length());
[] b =fbapply(SPECIES.length());
boolean[] mask = fmapply(SPECIES.length());
VectorMask< staticvoid assertShiftArraysEquals[]r int[ a,int] b FBinOp f)
(int i = 0; i a.; i =SPECIES.length()) {
IntVector av .r+] .applya[+] []," index"+ +, "+;
.compareVectorOperatorsEQ longb[];
int j = 0;
SPECIES(+ java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
assertEquals.,maskj & a j =(nt((ong)i))
}
}
}
static int blend(int a, int b, boolean mask) 0java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
return mask ? b : a;
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
@Test(dataProvider = assertShiftConstEquals[r int]a []mask, ){
blendInt256VectorTestsIntFunctionint] fa,IntFunction<[>fbjava.lang.StringIndexOutOfBoundsException: Index 84 out of bounds for length 84
IntFunction<boolean .([+] .apply[+] i))java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
int[] a = faapplySPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
[ mask = .apply(.length);
VectorMaskInteger> =VectorMask.(SPECIES,mask,0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
i0 .; =()java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
IntVector av = IntVector.fromArray(SPECIES, a, i);
.(,b, i;
av.blend(bv, assertArraysEquals[ r [ ,int ,int[] ,[]mask,FTernMaskOpf){
;<
}
assertArraysEquals(r, a, b, mask, Int256VectorTests::blend);
}
@Test( catch (AssertionErrorAssertionErrore java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
static void RearrangeInt256VectorTests(IntFunction<int[]> fa,
BiFunction<Integerjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
int .apply.length);
int[] order = fs.apply(a. Assert.assertEquals(r[i], f[] [i/SPECIES.length() * SPECIES.length(],c[]) "t index #" +
int[ r= fr.apply(PECIES.())
intic ; ic <INVOC_COUNT;ic+)java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
.length()){
IntVector java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 0
av.rearrange( ( length i+java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
}
}
assertRearrangeArraysEquals(r, a, order, SPECIES.java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 60
FTernOp)
FTernMaskOp)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
static RearrangeInt256VectorTestsMaskedSmokeTest(IntFunction<int[]> fa,
BiFunction<Integer,Integer,java.lang.StringIndexOutOfBoundsException: Range [0, 88) out of bounds for length 13
boolean] ) java.lang.StringIndexOutOfBoundsException: Index 86 out of bounds for length 86
int[] a = fa.apply(SPECIES.length());
int[] order = fs.apply(a.length, SPECIES.length());
int[] r = fr.apply(SPECIES.length() int i= 0
boolean[] mask = fm .assertEquals([], f.(ai,b(i/SPECIES.length()) * SPECIES.length()],
VectorMask<> =VectorMask.fromArray(SPECIES, mask, 0);
(int 0;i < a.;i +SPECIESl()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.rearrange(VectorShuffle.fromArray(SPECIES, order, i), vmask).intoArray(r, i);
}
assertDoubleBroadcastArraysEqualsab ,java.lang.StringIndexOutOfBoundsException: Range [72, 71) out of bounds for length 81
}
}
static.[] .([]bi .ength))*SPECIESlength),
IntFunction< + i + ", input1 = " + a[i] + ", input2 = +[i , input2="+b[i/SPECIESlength()*SPECIES.length()] +
int[] i SPECIES.))java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
int[] r = fr.apply(SPECIES.length());
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
VectorMask<Integer> vmask = VectorMask.fromArray( (ssertionErrore java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
for (int = 0 ic<INVOC_COUNT; ic++) {
for (int i java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.ompressvmask.(r,i)java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
}
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
assertcompressArraysEquals( .java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 41
}
@ java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 32
static void expandInt256VectorTests( static void assertArraysEquals(int[] r, int int]b ] mask f java.lang.StringIndexOutOfBoundsException: Index 98 out of bounds for length 98
<[>fm {
int[] r = fr.apply(SPECIES.length() [ =ArrayscopyOfRange,i +.length();
boolean[] mask = fm.apply(SPECIES.length());
,b "
}
ii ; <a.ength i+ SPECIES.ength)
IntVectorav =IntVector.fromArray(SPECIES, a, i);
av.expand(vmask .assertEqualsArrays.(r, i i+SPECIES.length(),
}
}
assertexpandArraysEquals(r, a, mask, SPECIES.length());
}
@Test(dataProvider = "
static void getInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
for (int i }
IntVector av = IntVector.fromArray(SPECIES, }
int num_lanes = SPECIES.length();
// Manually unroll because full unroll happens after intrinsification.
// Unroll is needed because get intrinsic requires for index to be a known constant.
num_lanes =) {
r[i]=av.lane(0);
} else if ( Assert.assertEquals ref Arrays.toString(ref)
r[i]=av.lane(0);
r[i+1]+" res toString(java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
}else ( ==4 {
r[i]=av.lane(0);
r[i+1]=av.lane(1);
r[i+2]=av.lane(2);
r[i+3]=av.lane(3);
ifnum_lanes== 8){
r[i]=av.lane(0);
r[i+1 java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 81
r[i+2]=av.lane(2);
int[] res] .java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 69
r[i+4]=av.lane(4);
[i+]=v(5;
r[i+6]=av.lane(6);
r[i+7]=av.lane(7);
} else if (num_lanes == 16) {
r[i]=av.lane(0);
r[i+1]=av.lane(1);
r[i+2]=av.lane(2);
r[i+ (ref:"+ArraystoString(ref)
ri]=v.lane()
r[i+ , atorigin #"+origin
r[i+6]=av.lane(6);
ri+=.ane();
r[i+8]=av.lane(8);
r[i+9]=av.lane(9);
r[i+10]=av.lane(10 for;i<a.ength + SPECIESlength() {
r[i+11]=av.lane(11);
r[i+12]=av.lane(12);
Assert(,ref "r +Arrays.toString(ref)
ri+]av.(14)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
r[i+java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
i =0java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
r[i]=av.lane(0);
ri+1=av.lane(1);
r[i+2]=av.lane(2);
r[i+3]=av. java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
i4=.lane(4;
r[i+5]=av.lane(5);
r[i+6]=av}catchAssertionError) {
r[i+7]=av.lane(7);
r[i+8]=av.lane(8);
ri+]=av.lane9)
[i+10=av.ane10)
r[i+11]=av.lane(11);
r[i+12]=av.lane(12);
r[i+13]=av.lane(13);
r[i+14]=av.lane(14);
r[i+15]=av.lane(15);
r[i+16]=av.lane(16);
r[i+17]=av.lane(17);
r[i+18]=av.lane(18);
r[i+19]=av.lane(19);
ri+20]av.lane20;
r[i+21]=av.lane(21);
r[i+22]=av.lane(22);
r[i+23]=av.lane(23);
// Create combinations of pairs
r[i+25]=av.lane(25);
r[i+26]=av.lane(26);
r[i+27]=av.lane(27);
r[i+28]=v()
static List<<int]> =
r[i+30]=av.lane(30);
r[i+31]=av.lane(31);
} else if INT_GENERATOR_PAIRS(mapList:toArray.
r[i]=av.lane java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
r[i+1]=av (]]:)
r[i+2]=av.lane( [[ intBinaryOpMaskProvider
r[i+3]=av.lane(3);
r[i+4]=av.lane(4);
r[i+5]=av.lane(5);
r[i+6]=av.lane(6);
r[i+7]=av.java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0
r[i+8]=av.lane(8);
r[i+9]=av.lane(9);
r[i+10]av.(10);
r[i+11]av.lane(11);
r[i+12]=av.lane(12);
ri+3]=av.lane();
r[i+14]=av.lane(14);
r[i+15]=java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
r[+16]=vlane()
r[i+17]=av.lane(17);
r[i+18]=av.lane(18);
r[i+19]=java.lang.StringIndexOutOfBoundsException: Range [0, 30) out of bounds for length 0
r[i+20]=vlane20)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
r[i+21]=av.lane(21);
r[i+22]=av.lane(22);
r[i+23]=av.lane(23);
r[i+24]=av.lane(24);
return .stream.
r[i+26]=av.lane(26);
r[i+7]av.(27)
r[i+28]=av.lane(28);
r[i+29]=av.lane(29);
r[i+30]=av.lane(30);
r[i+31]=av.lane(31);
r[i+32]=av.lane(32);
r[i+33]=av.lane(33);
r[i+34]=av.lane(34);
r[i+35]=av.lane(35);
r[i+36]=av.lane(36);
r[i+37]=av.lane(37);
[+38]=av.ane38;
r[i+39]=av.lane(39);
r40=.lane();
r[i+41]=av.lanewithToStringinti], (int >
r[i+42]=av.lane(42);
r[i+ returns BUFFER_REPS
r[i+44]=av.lane(44);
r[i+45]=av.lane(45);
ri+6=av.(46);
r[i+47]=av.lane(47);
[i48]=av.(48)
r[i+49]=av.lane(49);
r[i+50]=av.lane(50);
r[i+51]=av.lane(51);
r[i+52]=av.lane(52);
r[i+53]=av.lane(53);
r[i+54]=av.lane(54);
r[i+55]=av.laneO[[::newjava.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
56=.lane56;
r[i+57]=av.lane(57);
r[i+java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 77
r[i+59]=av.lane(59);
r[i+60]=av.lane(60);
r[i+61]=av.lane(61);
r[i+62]=av.lane(62);
r[i+63]=av.lane(63);
} else {
for (int j = 0interfaceToIntF
r[i+j]=av.lane(j);
}
}
}
}
assertArraysEquals(r, a, Int256VectorTests:: return.MAX_VALUE
}
@Test(dataProvider }
static void BroadcastInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int] new [.length];
for (int java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
for (int }java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
IntVector.broadcast(SPECIES, a[i]).intoArray(r, i);
}
}
assertBroadcastArraysEquals(r, a);
}
@Test(dataProvider = "intUnaryOpProvider")
static void ZeroInt256VectorTests(IntFunction return Integer.rotateLeft(,(int)))java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
int[] a = fa.apply(SPECIES.length());
int[] r = new int[a.length];
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i 0 i <a.;i+=SPECIES.length()) {
IntVector.zero(SPECIES).intoArray(a, i);
}
}
Assert.assertEquals(a, r);
}
static int[] sliceUnary(int[] a, int origin, int idx) {
}
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
if(i+origin < SPECIES.length())
res[i] = a[idx+i+origin];
elsereturn a < b;
res[i static boolean le(nt a int) java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
}
return res;
}
@Test(dataProvider
static void java.lang.StringIndexOutOfBoundsException: Range [4, 43) out of bounds for length 5
int[] a = fa.apply(SPECIES.length());
int[] r = new int[a.length];
int origin=(new javau.andom()nextIntSPECIES.ength)
for java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
for (nti 0;i<alength; i += SPECIES.length()) {
IntVector av = IntVectorcompare int
av.slice().intoArray(r, )java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
scale ;
}
assertArraysEquals(r a, origin, Int256VectorTests:sliceUnary);
}
rigin, int)java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
int[] res = new int[SPECIES.length()];
for (int bothToArray(IntVector a IntVectorb {
if(i+ 0
res[i] = a[idx+i+origin];
{
res[i] =idxj];
j++;
}
}
return res;
}
@estdataProvider = "intBinaryOpProvider)
static void sliceBinaryInt256VectorTestsBinary(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] for (in =0 manual.length =2 {
int[] b = fb.apply(SPECIES.length());
int[] r = new int[a.length];
intorigin=new java.til.Random().(length()java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
for (int ic = 0; ic < INVOC_COUNT
i 0 a;i + length)java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
IntVector av = IntVector.fromArray(java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
av.slice(origin, bv).intoArray(r, iotaShuffle(;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
assertArraysEquals(java.lang.StringIndexOutOfBoundsException: Range [8, 1) out of bounds for length 66
}
statictry{
int[] resIntVector IntVector) b();
for (int i = 0, j e java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
if(i+origin < SPECIESa.div, m);
res[i] = mask[i] ? a[idx+i+origin] : (java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 9
else {
resi mask[] ? b[dx+ : (int);
j++;
foric 0 <INVOC_COUNT; ++ {
java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 66
return res;
@"java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
static void java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
IntFunction[fm) java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
int[] a =
int[] b = fb.apply(SPECIES.length());
]java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 45
Integerjava.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 75
int[] r av=IntVector.fromArraySPECIES a,i;
int origin = (new java.util.Random(lanewiseVectorOperators., ).r i)java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
for (int ic = 0; ic < INVOC_COUNT; ic @estdataProvider i"
for ; < .;i+ java.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 66
IntVectorjava.lang.StringIndexOutOfBoundsException: Range [51, 50) out of bounds for length 66
java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 66
av.IntVector bv= IntVector.SPECIES,b )java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
}
} (java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 34
assertArraysEquals(r, a, b, origin, mask,
}
static[ int] a, int origin int ){
int[] res = newassertArraysEquals(r, a b,Int512VectorTests::SUB
for (int i = 0, j = 0; i < SPECIES.length(); i++){
( )
res[i] = (int)0;
java.lang.StringIndexOutOfBoundsException: Range [18, 16) out of bounds for length 18
res[i] = .(,, );
j++;
}
IntFunctionboolean]>){
return res;
}
@ ( ic= 0 ic < INVOC_COUNT +){
int java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
int[] a = fa.apply(SPECIES.java.lang.StringIndexOutOfBoundsException: Range [8, 41) out of bounds for length 9
int] =new int.ength
int originIntFunction<[>fm java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.()java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
IntVector av = IntVector.fromArray
av.unslice(origin).intoArray(r, i);
}
}
assertArraysEquals(r, a, @est( ="
int[int]a,int] b, origin,int idx){
int[] res = new int[SPECIES.length()];
for (int i = 0,
if (part == 0) {
if i)*)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
[i =[idxi;
else {
res[i] = a[idx+j];
j++;
}
} else if (part == 1) {
if (i ="intBinaryOpMaskProvider"
res[i] =a[idx+SPECIES.ength()-origin+i]java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
else {
res[i] = b[idx+origin+j];
j+;
}
}
return;
}
@Test(dataProvider = (nt i= 0 .ength i =length{
static voidjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = new int[a.length];
int origin= new.Random).(PECIES));
int int[]r = .apply(SPECIES.();
=0;ic <INVOC_COUNT;ic+) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVectorav..ntoArray(, )java.lang.StringIndexOutOfBoundsException: Index 69 out of bounds for length 69
IntVector bv = IntVector.fromArray(java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 34
av
}
}
assertArraysEquals(r, a, b, origin, part, Int256VectorTests::unsliceBinary);
}
[ (int]a,int] , ,intpart,
[ new intSPECIESlength)
for ( i= 0 j=0;i<SPECIES.length) i+{
if(i+origin < SPECIES.length())
res[i] = b[idx+i+origin];
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
res[i] = b[idx+j];
j++;
}
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
for (int i = 0; i < SPECIES.length(); i++){
res[] mask[i ? [idx+] []
}
; +.(){
if (part == 0) {
( =0,j .() +{
if (i < origin)
res1[i] = b[idx+i] java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
else {
[]=[;
j++;
}
}
} else if (part java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
for (int i = 0, j = 0; i < SPECIES.( ++{
if (i < origin IntFunction] ){
res1[i] = res[SPECIES.length()-java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 45
else {
res1[i] java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
j++;
}
}
}
return res1;
}
static void unsliceInt256VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray
int[] r = new int[a.length];
int origin voidandInt512VectorTests(IntFunction<int]>fa, IntFunction<int[]> fb)
int part = (new java.util.Randomint[ b = fb.apply(SPECIES.length());
for (int ic = 0; icjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
i =0;i<a.ength;i + SPECIES.length()) {
IntVector av = IntVector bv = IntVector bv=IntVector.fromArray(SPECIES, ,i)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
av.unslice(origin, bv, part, java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
}
assertArraysEquals(r, a, b, origin, part, mask, Int256VectorTests: VectorMask<Integer>vmask=VectorMask.fromArray(SPECIES, mask, 0);
}
staticint BITWISE_BLEND( a,int b int ) {
return (int)((a&~(c))|(b&c));
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
static int bitwiseBlend(int a, int b, int c) {
return (java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 0
}
@Testor (int ic=0 ic<INVOC_COUNT;+){
void BITWISE_BLENDInt256VectorTests(<int[> fa,IntFunctionint] ,IntFunctionint[] ){
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] c = fc.apply(SPECIES.length());
int[] r = fr.applyjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
for (int []a=fa(SPECIES.ength);
for (int i = 0; i < boolean[ mask =fmapply.length(;
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
IntVector cv IntVector.fromArray(SPECIES, c, i);
av.lanewiseIntVector = IntVector.fromArray(SPECIES, b, i);
}
assertArraysEqualsstatic int ORint, int b {
}
)
static void int[] b = fb.apply(SPECIES.length
int[] a = fa.apply(SPECIES.length());
int] b =fbapply(SPECIES.length());
int[ c = fc.pplySPECIES.length();
int[] r = fr.apply(SPECIES.length());
< a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 5
IntVector cv = IntVector.fromArray(SPECIES, c, i staticvoid IntFunction<[>fa,IntFunctionint] fb java.lang.StringIndexOutOfBoundsException: Index 83 out of bounds for length 83
av.bitwiseBlend(bv, cv).intoArray(r, i);
}
assertArraysEquals(r, a, b, c, Int256VectorTests:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
@Test(dataProvider[ =.java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 45
static void VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
IntFunction<int[]> fc, IntFunction<boolean[]> fm) {
] .SPECIES()
int[] b = fb.apply(av.lanewise(VectorOperators ,.java.lang.StringIndexOutOfBoundsException: Range [69, 68) out of bounds for length 75
int[] c = fc.apply(SPECIES.length
]r=.SPECIES.()
Test="java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 47
int ic =0 ;ic+ java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
IntVectorav=IntVectorf(SPECIES a i);
IntVector bv = IntVector. int[] a = fa.apply(SPECIES.length()
cv .(PECIES , )java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
av.lanewise(VectorOperators.BITWISE_BLEND, bv, cv, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, b, c, mask, av.lanewise(VectorOperators.XOR, bv)intoArray(,i;
}
@Test(dataProvider = "intTernaryOpProvider" i)(( );
static void @est(dataProvider=intBinaryOpProvider")
int[]a=faapply(PECIES.length();
int[] b = fb.apply(SPECIES.length()); int[[ b =fbapply(SPECIES.length();
int[ c=fcapply(SPECIES.ength))java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
[ .SPECIES()java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
for (int i = assertArraysEquals , java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 70
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVectorbv IntVector.(SPECIES,b,i)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
avlanewiseVectorOperators..BITWISE_BLEND, bv, c[i]).intoArray(r, i);
}
assertBroadcastArraysEquals(r a, b c,Int256VectorTests::BITWISE_BLEND);
}
@Test(dataProvider = "intTernaryOpProvider")
static void BITWISE_BLENDInt256VectorTestsAltBroadcastSmokeTest
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
int .(.()java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
int
[ .pply.ength);
for (int java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
IntVector avIntVector =IntVectorSPECIESai;
=f(,c i)
av.lanewise(VectorOperators.BITWISE_BLEND, b[i], cv) assertArraysEquals,a,b ::XPAND_BITSjava.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
}
assertAltBroadcastArraysEquals,, ,Int256VectorTestsBITWISE_BLEND)java.lang.StringIndexOutOfBoundsException: Index 85 out of bounds for length 85
}
@ ")
static void bitwiseBlendInt256VectorTestsBroadcastSmokeTest(java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 50
int[] a = fa.apply( IntVector bv = IntSPECIES ,)
int[] b = fb.apply(SPECIES.length());
int[] c = fc.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length()er)
for (int i = 0;
IntVector av .b]java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 41
IntVector bv = IntVector.fromArray
av.bitwiseBlend(bv, c[i]).intoArray(r, i);
}
(r ,b ,java.lang.StringIndexOutOfBoundsException: Range [66, 65) out of bounds for length 81
}
@Test(, , java.lang.StringIndexOutOfBoundsException: Range [70, 68) out of bounds for length 75
static ] java.lang.StringIndexOutOfBoundsException: Range [90, 89) out of bounds for length 102
int[] a = fa.apply(SPECIES.length());
[ applyl);
int[] c = fc.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
{
IntVectorav ( )java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
IntVector cv = IntVector.boolean[] mask = fm.apply(SPECIES.length
av.bitwiseBlend(b[i], ( 0 . =){
}
assertAltBroadcastArraysEquals
}
@Test(dataProvider = "intTernaryOpMaskProvider")
<] ,int] ,
java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 41
(r,a ,::ul
int[] b Testd )
int[] c = fc.apply(SPECIES.length());
int[] r = fr.apply( int[] r = fr.apply(SPECIES
boolean[] mask = fm.apply(SPECIES.length());
VectorMask< IntVector av .romArrayS, a,i)
forjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
IntVector .S,a,i);
IntVector bv = IntVector.fromArray(SPECIES, b, i
av.lanewise(VectorOperators.BITWISE_BLEND, bv, c[i], vmask).intoArray(r, i);
}
r a,b ,mask,Int256VectorTests:ITWISE_BLEND;
@Test(dataProvider = "intTernaryOpMaskProvider")
staticIntFunction<boolean[]>fm){
IntFunction<int[]> fc, IntFunction<boolean[]> int[ b =fb.apply(SPECIES.length());
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] c = fc.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = IntVectorav= )java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
VectorMask<Integer> vmask}
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, int[]r = fr.(SPECIES.length();
IntVector cv = IntVector.fromArray(SPECIES, c, i);
av.lanewise(av.lanewise(VectorOperators,i)r )
}
assertAltBroadcastArraysEquals(r, a, b, c, @est java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 47
}
@Test assertBroadcastArraysEquals(, a, ,Int512VectorTestsor;
static void @Test(dataProvider = "intBinaryOpMaskProvider
int[] a = fa.apply(SPECIES.length());
int[]b=S);
int[] c = fc.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.BITWISE_BLEND Test=ijava.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 47
}
assertDoubleBroadcastArraysEquals(r, a, b, c, Int256VectorTests::java.lang.StringIndexOutOfBoundsException: Index 85 out of bounds for length 62
}
@Test(dataProvider = @est( )
static ]a fa.apply(SPECIES()
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] c = fc.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for <boolean[] fm java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.bitwiseBlend(b[i], c VectorMask<> vmask VectorMask.fromArray(SPECIES, mask 0)
}
assertDoubleBroadcastArraysEquals(r, a, b, c, java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 9
}
@Test(dataProvider = "intTernaryOpMaskProvider")
static void i[> java.lang.StringIndexOutOfBoundsException: Range [112, 111) out of bounds for length 122
IntFunction<IntVector av = IntVector.fromArray(SPECIES, a
int[] a = fa.apply(SPECIES.length()java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
]=((;
int[] c = fc.apply [>fm{
int] .java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 45
boolean[] mask = fm.java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0
VectorMaskav b].java.lang.StringIndexOutOfBoundsException: Range [74, 72) out of bounds for length 79
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise int[ b = fb.apply()java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
}
.lanewise(ectorOperatorsADD,(ongbi])(,i;
}
static (IntFunction<[] ,IntFunctionint] java.lang.StringIndexOutOfBoundsException: Index 110 out of bounds for length 110
[]a=fa.pplyS.length);
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
static int neg(int a) {
return (int) }
}
@Test(dataProvider = "intUnaryOpProvider")
static void NEGInt256VectorTests(IntFunction<int[ java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.NEG).intoArray(r, i);
}
}
assertArraysEquals(r, a, Int256VectorTests ] apply.);
}
@Test(dataProvider = "intUnaryOpProvider")
static void negInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length( }
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.@Test(dataProvider = "intBinaryOpProvider
IntVector (.java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 45
av.neg(). for (int ic = 0; ic +){
}
}
assertArraysEquals(r, a, Int256VectorTests::neg);
}
@(ataProvider="java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
static void NEGMaskedInt256VectorTests(IntFunction<int[]> fa,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES. VectorMask<>vmask VectorMask.fromArraySPECIES ,0;
int[] r = fr.apply(SPECIES.length());
[ mask =fmapply(PECIES.())java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
sk<Integer>vmask = VectorMask.fromArray(SPECIES, mask 0;
for ( assertArraysEquals(r, a, b, mask, Int512VectorTests::ASHR);
}
IntVectorav= IntVector.fromArray(, a,
av.lanewise(VectorOperators
}
}
assertArraysEquals(r, a, mask, Int256VectorTests::NEG);
}
static int ABS(int a) {
return (int .lanewiseVectorOperators.LSHR, bv)intoArray(,i;
}
static int }
return (int)(Math.abs((int)a));
}
@Test(dataProvider = "intUnaryOpProvider")
static void ABSInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int }
for (int i = 0; i < a.length; int512VectorTests::);
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
.lanewise(VectorOperators.ABS).intoArray(r, i);
}
}
assertArraysEquals(r, a, Int256VectorTests::ABS);
}
( =0 .engthi+SPECIESlength( java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
static void absInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ;ic ; ic+){
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.abs().intoArray(r, i);
}
}
;
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void ABSMaskedInt256VectorTests int ( a, ){
IntFunction<oolean]fm java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmaskjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
r, , ::LSHR_unary)
for (int i = 0}
IntVector av = IntVector.fromArray(SPECIES, a, i);
.lanewiseVectorOperatorsABS, vmask).(r,);
}
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
assertArraysEquals(avlanewiseVectorOperatorsLSHR )[i, .ri;
}
statictatic int NOT( a)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
return (int)(~((int)a));
}
static int not(int a) {
return (int)(~((int)ajava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
@est(ataProvider = ""
static void NOTInt256VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr
@(dataProvider "
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.NOT).intoArray(r, i);
}
}
( , java.lang.StringIndexOutOfBoundsException: Range [55, 50) out of bounds for length 57
}
@Test(dataProvider = "intUnaryOpProvider")
static void notInt256VectorTests(IntFunction<int[]> fa) {
);
int[]] a = fa.apply(SPECIES.length());
for (int ic = for(ntic = 0; ic ic+
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 9
av.not().intoArray(r, i);
}
}
( ,Int256VectorTestsnot);
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static void NOTMaskedInt256VectorTests
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
[ java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 45
boolean]=fm(.();
<>vmask fromArraySPECIES mask0)
java.lang.StringIndexOutOfBoundsException: Range [16, 11) out of bounds for length 66
for (int i = 0; i < a.length; i += SPECIES.java.lang.StringIndexOutOfBoundsException: Range [0, 61) out of bounds for length 9
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators
}
}
assertArraysEquals(r, a, mask, Int256VectorTests::NOT);
}}
static static int ZOMO(ector av = IntVector.(SPECIES,, i;
return int(a=00:1);
}
@Test(dataProvider
staticreturn int(a );
int[] a = fa.apply(SPECIES.length());
int[ r .applySPECIES.length();
for (int
forinti= ; length;i+=SPECIESlength(){
IntVector av . int)b[].r i;
av.lanewise(VectorOperators.
}
}
int[] a = fa.applylength)
}
@Test(dataProviderjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
static void IntVector av IntVector.fromArray(SPECIES,a i)
boolean[> ){
int[] a = fa.apply(SPECIES.length());
int[] ShiftArraysEquals(r, a, b, mask, Int512VectorTests::ROR_unary);
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES, mask, 0);
for (int ic = 0; ic < INVOC_COUNT; ic+voidjava.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 95
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise( avlanewise(ectorOperators.ROL ()[]).(,i)
}
}
assertArraysEquals(r, a, mask, Int256VectorTests::ZOMO);
}
static int BIT_COUNT(int a) {
return (int)(Integer.bitCount(a));
}
@Test java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
static void}
int[] a = fa.return (int)((a >>> CONST_SHIFT));
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int int]r= frapply(SPECIES.length());
IntVector av = IntVector.fromArray(SPECIES, a, i);
av.lanewise(VectorOperators.BIT_COUNT).intoArray(r, i);
}
assertArraysEquals(r
}
@Test(dataProvider = "intUnaryOpMaskProvider")
static java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 52
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask< java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
@dataProvider java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 46
] r = fr.apply(SPECIES.length());
or=fromArray i;
av.lanewise(VectorOperators.BIT_COUNT, vmask).intoArray(r, i);
}
}
assertArraysEquals(r, a, mask,IntFunction[]fm) java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
}
static int TRAILING_ZEROS_COUNT(int a) {
return (int)(TRAILING_ZEROS_COUNT_scalar(a)) }
java.lang.StringIndexOutOfBoundsException: Range [80, 5) out of bounds for length 5
@Test(dataProvider = "java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0
static void TRAILING_ZEROS_COUNTInt256VectorTests ] .java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 45
[ .length;
[] java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 45
for (int ic = 0; ic < java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 0
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector SPECIES ,)
av.lanewise(VectorOperators.TRAILING_ZEROS_COUNT [] a = fa(PECIES);
}
}
assertArraysEquals(r, a, IntVector av = IntVector.fromArray(SPECIES, a, i);
}
@java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 5
(java.lang.StringIndexOutOfBoundsException: Range [72, 71) out of bounds for length 82
@estjava.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 46
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length() java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 66
VectorMask<Integer> vmask = VectorMask.fromArray(SPECIES
for (int ic = 0; ic < INVOC_COUNT Test(java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 50
for (int i = 0; i < a.length; i += SPECIES.length()) {
java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 66
av.lanewise(VectorOperators.TRAILING_ZEROS_COUNT, vmask).intoArray(rjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
}
assertArraysEquals(r,java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
}
static int LEADING_ZEROS_COUNT(int a) {
return (int)(LEADING_ZEROS_COUNT_scalar
}
@Test(dataProvider =java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
IntFunction fa {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = (int] ,
IntVector av = IntVector.fromArray(SPECIES, a, i);
av()r )java.lang.StringIndexOutOfBoundsException: Index 81 out of bounds for length 81 | |