< prev index next >
test/jdk/jdk/incubator/vector/Int512VectorTests.java
Print this page
@@ -239,10 +239,21 @@
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a[i], b[i]), "(" + a[i] + ", " + b[i] + ") at index #" + i);
}
}
+ static void assertBroadcastArraysEquals(int[] a, int[] b, int[] r, 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 assertArraysEquals(int[] a, int[] b, int[] r, boolean[] mask, FBinOp f) {
assertArraysEquals(a, b, r, mask, FBinMaskOp.lift(f));
}
static void assertArraysEquals(int[] a, int[] b, int[] r, boolean[] mask, FBinMaskOp f) {
@@ -254,10 +265,25 @@
} 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[] a, int[] b, int[] r, boolean[] mask, FBinOp f) {
+ assertBroadcastArraysEquals(a, b, r, mask, FBinMaskOp.lift(f));
+ }
+
+ static void assertBroadcastArraysEquals(int[] a, int[] b, int[] r, 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 assertShiftArraysEquals(int[] a, int[] b, int[] r, FBinOp f) {
int i = 0;
int j = 0;
try {
for (; j < a.length; j += SPECIES.length()) {
@@ -1372,10 +1398,30 @@
}
}
assertArraysEquals(a, b, r, Int512VectorTests::OR);
}
+ static int or(int a, int b) {
+ return (int)(a | b);
+ }
+
+ @Test(dataProvider = "intBinaryOpProvider")
+ static void orInt512VectorTests(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.or(bv).intoArray(r, i);
+ }
+ }
+
+ assertArraysEquals(a, b, r, Int512VectorTests::or);
+ }
@Test(dataProvider = "intBinaryOpMaskProvider")
static void ORInt512VectorTestsMasked(IntFunction<int[]> fa, IntFunction<int[]> fb,
@@ -1440,10 +1486,193 @@
assertArraysEquals(a, b, r, mask, Int512VectorTests::XOR);
}
+ @Test(dataProvider = "intBinaryOpProvider")
+ static void addInt512VectorTestsBroadcastSmokeTest(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(a, b, r, Int512VectorTests::add);
+ }
+
+ @Test(dataProvider = "intBinaryOpMaskProvider")
+ static void addInt512VectorTestsBroadcastMaskedSmokeTest(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(a, b, r, mask, Int512VectorTests::add);
+ }
+
+ @Test(dataProvider = "intBinaryOpProvider")
+ static void subInt512VectorTestsBroadcastSmokeTest(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(a, b, r, Int512VectorTests::sub);
+ }
+
+ @Test(dataProvider = "intBinaryOpMaskProvider")
+ static void subInt512VectorTestsBroadcastMaskedSmokeTest(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(a, b, r, mask, Int512VectorTests::sub);
+ }
+
+ @Test(dataProvider = "intBinaryOpProvider")
+ static void mulInt512VectorTestsBroadcastSmokeTest(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(a, b, r, Int512VectorTests::mul);
+ }
+
+ @Test(dataProvider = "intBinaryOpMaskProvider")
+ static void mulInt512VectorTestsBroadcastMaskedSmokeTest(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(a, b, r, mask, Int512VectorTests::mul);
+ }
+
+
+
+
+ @Test(dataProvider = "intBinaryOpProvider")
+ static void divInt512VectorTestsBroadcastSmokeTest(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(a, b, r, Int512VectorTests::div);
+ }
+
+
+
+ @Test(dataProvider = "intBinaryOpMaskProvider")
+ static void divInt512VectorTestsBroadcastMaskedSmokeTest(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(a, b, r, mask, Int512VectorTests::div);
+ }
+
+
+
+ @Test(dataProvider = "intBinaryOpProvider")
+ static void ORInt512VectorTestsBroadcastSmokeTest(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(a, b, r, Int512VectorTests::OR);
+ }
+
+ @Test(dataProvider = "intBinaryOpProvider")
+ static void orInt512VectorTestsBroadcastSmokeTest(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(a, b, r, Int512VectorTests::or);
+ }
+
+
+
+ @Test(dataProvider = "intBinaryOpMaskProvider")
+ static void ORInt512VectorTestsBroadcastMaskedSmokeTest(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(a, b, r, mask, Int512VectorTests::OR);
+ }
+
+
static int LSHL(int a, int b) {
return (int)((a << b));
}
@Test(dataProvider = "intBinaryOpProvider")
@@ -1802,10 +2031,66 @@
}
assertArraysEquals(a, b, r, Int512VectorTests::max);
}
+ @Test(dataProvider = "intBinaryOpProvider")
+ static void MINInt512VectorTestsBroadcastSmokeTest(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(a, b, r, Int512VectorTests::MIN);
+ }
+
+ @Test(dataProvider = "intBinaryOpProvider")
+ static void minInt512VectorTestsBroadcastSmokeTest(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(a, b, r, Int512VectorTests::min);
+ }
+
+ @Test(dataProvider = "intBinaryOpProvider")
+ static void MAXInt512VectorTestsBroadcastSmokeTest(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(a, b, r, Int512VectorTests::MAX);
+ }
+
+ @Test(dataProvider = "intBinaryOpProvider")
+ static void maxInt512VectorTestsBroadcastSmokeTest(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(a, b, r, Int512VectorTests::max);
+ }
+
static int AND(int[] a, int idx) {
int res = -1;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res &= a[i];
}
@@ -3246,10 +3531,14 @@
static int NEG(int a) {
return (int)(-((int)a));
}
+ static int neg(int a) {
+ return (int)(-((int)a));
+ }
+
@Test(dataProvider = "intUnaryOpProvider")
static void NEGInt512VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
@@ -3261,10 +3550,25 @@
}
assertArraysEquals(a, r, Int512VectorTests::NEG);
}
+ @Test(dataProvider = "intUnaryOpProvider")
+ static void negInt512VectorTests(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.neg().intoArray(r, i);
+ }
+ }
+
+ assertArraysEquals(a, r, Int512VectorTests::neg);
+ }
+
@Test(dataProvider = "intUnaryOpMaskProvider")
static void NEGMaskedInt512VectorTests(IntFunction<int[]> fa,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
@@ -3340,10 +3644,14 @@
static int NOT(int a) {
return (int)(~((int)a));
}
+ static int not(int a) {
+ return (int)(~((int)a));
+ }
+
@Test(dataProvider = "intUnaryOpProvider")
static void NOTInt512VectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
@@ -3357,10 +3665,25 @@
}
assertArraysEquals(a, r, Int512VectorTests::NOT);
}
+ @Test(dataProvider = "intUnaryOpProvider")
+ static void notInt512VectorTests(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.not().intoArray(r, i);
+ }
+ }
+
+ assertArraysEquals(a, r, Int512VectorTests::not);
+ }
+
@Test(dataProvider = "intUnaryOpMaskProvider")
static void NOTMaskedInt512VectorTests(IntFunction<int[]> fa,
IntFunction<boolean[]> fm) {
< prev index next >