[vectorIntrinsics+fp16] RFR: 8277304: Java support for FP16
Jatin Bhateja
jbhateja at openjdk.java.net
Thu Feb 10 02:33:24 UTC 2022
On Tue, 16 Nov 2021 23:52:01 GMT, Smita Kamath <svkamath at openjdk.org> wrote:
> Initial FP16 vectorAPI Java support.
Hi Smita,
Following patch fixes the failing base testcase.
Thanks,
Jatin
diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/AbstractSpecies.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/AbstractSpecies.java
index 18c0cb9a725..9def1acdd61 100644
--- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/AbstractSpecies.java
+++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/AbstractSpecies.java
@@ -298,7 +298,16 @@ abstract class AbstractSpecies<E> extends jdk.internal.vm.vector.VectorSupport.V
return makeDummyVector();
}
private AbstractVector<E> makeDummyVector() {
- Object za = Array.newInstance(elementType(), laneCount);
+ Object za;
+ // FIXME: Remove following special handling for Halffloat
+ // till Valhalla integration when Halffloat will become a
+ // primitive class.
+ if (elementType() == Halffloat.class) {
+ za = Array.newInstance(short.class, laneCount);
+ } else {
+ za = Array.newInstance(elementType(), laneCount);
+ }
+
return dummyVector = vectorFactory.apply(za);
// This is the only use of vectorFactory.
// All other factory requests are routed
diff --git a/test/jdk/jdk/incubator/vector/AddTest.java b/test/jdk/jdk/incubator/vector/AddTest.java
index 7c6329a7a3c..7ce077f75ec 100644
--- a/test/jdk/jdk/incubator/vector/AddTest.java
+++ b/test/jdk/jdk/incubator/vector/AddTest.java
@@ -44,20 +44,18 @@ public class AddTest {
static short[] a = new short[SIZE];
static short[] b = new short[SIZE];
static short[] c = new short[SIZE];
-
static {
for (int i = 0; i < SIZE; i++) {
- a[i] = 0x3C66;
- b[i] = 0x4066;
+ a[i] = Halffloat.valueOf((float)i);
+ b[i] = Halffloat.valueOf((float)i);
}
}
static void workload() {
for (int i = 0; i < a.length; i += SPECIES.length()) {
HalffloatVector av = HalffloatVector.fromArray(SPECIES, a, i);
- //HalffloatVector bv = HalffloatVector.fromArray(SPECIES, b, i);
- //av.add(bv).intoArray(c, i);
- av.intoArray(c,i);
+ HalffloatVector bv = HalffloatVector.fromArray(SPECIES, b, i);
+ av.add(bv).intoArray(c, i);
}
}
@@ -76,8 +74,14 @@ public class AddTest {
workload();
}
for (int i = 0; i < a.length; i++) {
- if (c[i] != a[i] + b[i])
+ Halffloat hfa = new Halffloat(a[i]);
+ Halffloat hfb = new Halffloat(b[i]);
+ Halffloat hfc = new Halffloat(c[i]);
+
+ if (hfc.floatValue() != (hfa.floatValue() + hfb.floatValue())) {
+ System.out.println("RES: " + hfc.floatValue() + " EXPECTED: " + (hfa.floatValue() + hfb.floatValue()));
throw new AssertionError();
+ }
}
/*Arrays.fill(c, 0.0f);
@@ -89,5 +93,6 @@ public class AddTest {
if (c[i] != a[i] + b[i])
throw new AssertionError();
}*/
+ System.out.println("PASSED");
}
}
-------------
PR: https://git.openjdk.java.net/panama-vector/pull/164
More information about the panama-dev
mailing list