< prev index next >
test/jdk/jdk/incubator/vector/Float128VectorTests.java
Print this page
@@ -239,10 +239,22 @@
} catch (AssertionError e) {
Assert.assertEquals(r[i], f.apply(a[i], b[i]), "(" + a[i] + ", " + b[i] + ") at index #" + i);
}
}
+ static void assertBroadcastArraysEquals(float[] a, float[] b, float[] 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(float[] a, float[] b, float[] r, boolean[] mask, FBinOp f) {
assertArraysEquals(a, b, r, mask, FBinMaskOp.lift(f));
}
static void assertArraysEquals(float[] a, float[] b, float[] r, boolean[] mask, FBinMaskOp f) {
@@ -254,10 +266,28 @@
} 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(float[] a, float[] b, float[] r, boolean[] mask, FBinOp f) {
+ assertBroadcastArraysEquals(a, b, r, mask, FBinMaskOp.lift(f));
+ }
+
+ static void assertBroadcastArraysEquals(float[] a, float[] b, float[] 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(float[] a, float[] b, float[] r, FBinOp f) {
int i = 0;
int j = 0;
try {
for (; j < a.length; j += SPECIES.length()) {
@@ -1263,10 +1293,142 @@
+ @Test(dataProvider = "floatBinaryOpProvider")
+ static void addFloat128VectorTestsBroadcastSmokeTest(IntFunction<float[]> fa, IntFunction<float[]> fb) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] b = fb.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.add(b[i]).intoArray(r, i);
+ }
+
+ assertBroadcastArraysEquals(a, b, r, Float128VectorTests::add);
+ }
+
+ @Test(dataProvider = "floatBinaryOpMaskProvider")
+ static void addFloat128VectorTestsBroadcastMaskedSmokeTest(IntFunction<float[]> fa, IntFunction<float[]> fb,
+ IntFunction<boolean[]> fm) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] b = fb.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+ boolean[] mask = fm.apply(SPECIES.length());
+ VectorMask<Float> vmask = VectorMask.fromArray(SPECIES, mask, 0);
+
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.add(b[i], vmask).intoArray(r, i);
+ }
+
+ assertBroadcastArraysEquals(a, b, r, mask, Float128VectorTests::add);
+ }
+
+ @Test(dataProvider = "floatBinaryOpProvider")
+ static void subFloat128VectorTestsBroadcastSmokeTest(IntFunction<float[]> fa, IntFunction<float[]> fb) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] b = fb.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.sub(b[i]).intoArray(r, i);
+ }
+
+ assertBroadcastArraysEquals(a, b, r, Float128VectorTests::sub);
+ }
+
+ @Test(dataProvider = "floatBinaryOpMaskProvider")
+ static void subFloat128VectorTestsBroadcastMaskedSmokeTest(IntFunction<float[]> fa, IntFunction<float[]> fb,
+ IntFunction<boolean[]> fm) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] b = fb.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+ boolean[] mask = fm.apply(SPECIES.length());
+ VectorMask<Float> vmask = VectorMask.fromArray(SPECIES, mask, 0);
+
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.sub(b[i], vmask).intoArray(r, i);
+ }
+
+ assertBroadcastArraysEquals(a, b, r, mask, Float128VectorTests::sub);
+ }
+
+ @Test(dataProvider = "floatBinaryOpProvider")
+ static void mulFloat128VectorTestsBroadcastSmokeTest(IntFunction<float[]> fa, IntFunction<float[]> fb) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] b = fb.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.mul(b[i]).intoArray(r, i);
+ }
+
+ assertBroadcastArraysEquals(a, b, r, Float128VectorTests::mul);
+ }
+
+ @Test(dataProvider = "floatBinaryOpMaskProvider")
+ static void mulFloat128VectorTestsBroadcastMaskedSmokeTest(IntFunction<float[]> fa, IntFunction<float[]> fb,
+ IntFunction<boolean[]> fm) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] b = fb.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+ boolean[] mask = fm.apply(SPECIES.length());
+ VectorMask<Float> vmask = VectorMask.fromArray(SPECIES, mask, 0);
+
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.mul(b[i], vmask).intoArray(r, i);
+ }
+
+ assertBroadcastArraysEquals(a, b, r, mask, Float128VectorTests::mul);
+ }
+
+
+ @Test(dataProvider = "floatBinaryOpProvider")
+ static void divFloat128VectorTestsBroadcastSmokeTest(IntFunction<float[]> fa, IntFunction<float[]> fb) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] b = fb.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.div(b[i]).intoArray(r, i);
+ }
+
+ assertBroadcastArraysEquals(a, b, r, Float128VectorTests::div);
+ }
+
+
+
+ @Test(dataProvider = "floatBinaryOpMaskProvider")
+ static void divFloat128VectorTestsBroadcastMaskedSmokeTest(IntFunction<float[]> fa, IntFunction<float[]> fb,
+ IntFunction<boolean[]> fm) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] b = fb.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+ boolean[] mask = fm.apply(SPECIES.length());
+ VectorMask<Float> vmask = VectorMask.fromArray(SPECIES, mask, 0);
+
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.div(b[i], vmask).intoArray(r, i);
+ }
+
+ assertBroadcastArraysEquals(a, b, r, mask, Float128VectorTests::div);
+ }
+
+
+
+
+
+
@@ -1379,10 +1541,66 @@
}
assertArraysEquals(a, b, r, Float128VectorTests::max);
}
+ @Test(dataProvider = "floatBinaryOpProvider")
+ static void MINFloat128VectorTestsBroadcastSmokeTest(IntFunction<float[]> fa, IntFunction<float[]> fb) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] b = fb.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.lanewise(VectorOperators.MIN, b[i]).intoArray(r, i);
+ }
+
+ assertBroadcastArraysEquals(a, b, r, Float128VectorTests::MIN);
+ }
+
+ @Test(dataProvider = "floatBinaryOpProvider")
+ static void minFloat128VectorTestsBroadcastSmokeTest(IntFunction<float[]> fa, IntFunction<float[]> fb) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] b = fb.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.min(b[i]).intoArray(r, i);
+ }
+
+ assertBroadcastArraysEquals(a, b, r, Float128VectorTests::min);
+ }
+
+ @Test(dataProvider = "floatBinaryOpProvider")
+ static void MAXFloat128VectorTestsBroadcastSmokeTest(IntFunction<float[]> fa, IntFunction<float[]> fb) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] b = fb.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.lanewise(VectorOperators.MAX, b[i]).intoArray(r, i);
+ }
+
+ assertBroadcastArraysEquals(a, b, r, Float128VectorTests::MAX);
+ }
+
+ @Test(dataProvider = "floatBinaryOpProvider")
+ static void maxFloat128VectorTestsBroadcastSmokeTest(IntFunction<float[]> fa, IntFunction<float[]> fb) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] b = fb.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.max(b[i]).intoArray(r, i);
+ }
+
+ assertBroadcastArraysEquals(a, b, r, Float128VectorTests::max);
+ }
+
@@ -2979,10 +3197,14 @@
static float NEG(float a) {
return (float)(-((float)a));
}
+ static float neg(float a) {
+ return (float)(-((float)a));
+ }
+
@Test(dataProvider = "floatUnaryOpProvider")
static void NEGFloat128VectorTests(IntFunction<float[]> fa) {
float[] a = fa.apply(SPECIES.length());
float[] r = fr.apply(SPECIES.length());
@@ -2994,10 +3216,25 @@
}
assertArraysEquals(a, r, Float128VectorTests::NEG);
}
+ @Test(dataProvider = "floatUnaryOpProvider")
+ static void negFloat128VectorTests(IntFunction<float[]> fa) {
+ float[] a = fa.apply(SPECIES.length());
+ float[] r = fr.apply(SPECIES.length());
+
+ for (int ic = 0; ic < INVOC_COUNT; ic++) {
+ for (int i = 0; i < a.length; i += SPECIES.length()) {
+ FloatVector av = FloatVector.fromArray(SPECIES, a, i);
+ av.neg().intoArray(r, i);
+ }
+ }
+
+ assertArraysEquals(a, r, Float128VectorTests::neg);
+ }
+
@Test(dataProvider = "floatUnaryOpMaskProvider")
static void NEGMaskedFloat128VectorTests(IntFunction<float[]> fa,
IntFunction<boolean[]> fm) {
float[] a = fa.apply(SPECIES.length());
float[] r = fr.apply(SPECIES.length());
< prev index next >