< prev index next >
test/jdk/jdk/incubator/vector/benchmark/src/main/java/benchmark/jdk/incubator/vector/ShortMaxVector.java
Print this page
rev 54658 : refactored mask and shuffle creation methods, moved classes to top-level
@@ -22,12 +22,13 @@
*/
package benchmark.jdk.incubator.vector;
import jdk.incubator.vector.Vector;
-import jdk.incubator.vector.Vector.Shape;
-import jdk.incubator.vector.Vector.Species;
+import jdk.incubator.vector.VectorShape;
+import jdk.incubator.vector.VectorSpecies;
+import jdk.incubator.vector.VectorShuffle;
import jdk.incubator.vector.ShortVector;
import java.util.concurrent.TimeUnit;
import java.util.function.BiFunction;
import java.util.function.IntFunction;
@@ -40,11 +41,11 @@
@State(Scope.Benchmark)
@Warmup(iterations = 3, time = 1)
@Measurement(iterations = 5, time = 1)
@Fork(value = 1, jvmArgsPrepend = {"--add-modules=jdk.incubator.vector"})
public class ShortMaxVector extends AbstractVectorBenchmark {
- static final Species<Short> SPECIES = ShortVector.SPECIES_MAX;
+ static final VectorSpecies<Short> SPECIES = ShortVector.SPECIES_MAX;
static final int INVOC_COUNT = 1; // get rid of outer loop
@Param("1024")
int size;
@@ -106,11 +107,11 @@
public void addMasked(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] b = fb.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
@@ -142,11 +143,11 @@
public void subMasked(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] b = fb.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
@@ -180,11 +181,11 @@
public void mulMasked(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] b = fb.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
@@ -219,11 +220,11 @@
public void andMasked(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] b = fb.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
@@ -259,11 +260,11 @@
public void orMasked(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] b = fb.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
@@ -299,11 +300,11 @@
public void xorMasked(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] b = fb.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
@@ -356,11 +357,11 @@
public void aShiftRMaskedShift(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] b = fb.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
av.aShiftR((int)b[i], vmask).intoArray(r, i);
@@ -394,11 +395,11 @@
public void shiftLMaskedShift(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] b = fb.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
av.shiftL((int)b[i], vmask).intoArray(r, i);
@@ -432,11 +433,11 @@
public void shiftRMaskedShift(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] b = fb.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
av.shiftR((int)b[i], vmask).intoArray(r, i);
@@ -598,11 +599,11 @@
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()) {
- Vector.Mask<Short> vmask = ShortVector.maskFromArray(SPECIES, mask, i);
+ VectorMask<Short> vmask = VectorMask.fromArray(SPECIES, mask, i);
r[i] = vmask.anyTrue();
}
}
bh.consume(r);
@@ -615,11 +616,11 @@
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()) {
- Vector.Mask<Short> vmask = ShortVector.maskFromArray(SPECIES, mask, i);
+ VectorMask<Short> vmask = VectorMask.fromArray(SPECIES, mask, i);
r[i] = vmask.allTrue();
}
}
bh.consume(r);
@@ -644,17 +645,17 @@
@Benchmark
public Object lessThan() {
short[] a = fa.apply(size);
short[] b = fb.apply(size);
boolean[] ms = fm.apply(size);
- Vector.Mask<Short> m = ShortVector.maskFromArray(SPECIES, ms, 0);
+ VectorMask<Short> m = VectorMask.maskFromArray(SPECIES, ms, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
- Vector.Mask<Short> mv = av.lessThan(bv);
+ VectorMask<Short> mv = av.lessThan(bv);
m = m.and(mv); // accumulate results, so JIT can't eliminate relevant computations
}
}
return m;
@@ -664,17 +665,17 @@
@Benchmark
public Object greaterThan() {
short[] a = fa.apply(size);
short[] b = fb.apply(size);
boolean[] ms = fm.apply(size);
- Vector.Mask<Short> m = ShortVector.maskFromArray(SPECIES, ms, 0);
+ VectorMask<Short> m = VectorMask.maskFromArray(SPECIES, ms, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
- Vector.Mask<Short> mv = av.greaterThan(bv);
+ VectorMask<Short> mv = av.greaterThan(bv);
m = m.and(mv); // accumulate results, so JIT can't eliminate relevant computations
}
}
return m;
@@ -684,17 +685,17 @@
@Benchmark
public Object equal() {
short[] a = fa.apply(size);
short[] b = fb.apply(size);
boolean[] ms = fm.apply(size);
- Vector.Mask<Short> m = ShortVector.maskFromArray(SPECIES, ms, 0);
+ VectorMask<Short> m = VectorMask.maskFromArray(SPECIES, ms, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
- Vector.Mask<Short> mv = av.equal(bv);
+ VectorMask<Short> mv = av.equal(bv);
m = m.and(mv); // accumulate results, so JIT can't eliminate relevant computations
}
}
return m;
@@ -704,17 +705,17 @@
@Benchmark
public Object notEqual() {
short[] a = fa.apply(size);
short[] b = fb.apply(size);
boolean[] ms = fm.apply(size);
- Vector.Mask<Short> m = ShortVector.maskFromArray(SPECIES, ms, 0);
+ VectorMask<Short> m = VectorMask.maskFromArray(SPECIES, ms, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
- Vector.Mask<Short> mv = av.notEqual(bv);
+ VectorMask<Short> mv = av.notEqual(bv);
m = m.and(mv); // accumulate results, so JIT can't eliminate relevant computations
}
}
return m;
@@ -724,17 +725,17 @@
@Benchmark
public Object lessThanEq() {
short[] a = fa.apply(size);
short[] b = fb.apply(size);
boolean[] ms = fm.apply(size);
- Vector.Mask<Short> m = ShortVector.maskFromArray(SPECIES, ms, 0);
+ VectorMask<Short> m = VectorMask.maskFromArray(SPECIES, ms, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
- Vector.Mask<Short> mv = av.lessThanEq(bv);
+ VectorMask<Short> mv = av.lessThanEq(bv);
m = m.and(mv); // accumulate results, so JIT can't eliminate relevant computations
}
}
return m;
@@ -744,17 +745,17 @@
@Benchmark
public Object greaterThanEq() {
short[] a = fa.apply(size);
short[] b = fb.apply(size);
boolean[] ms = fm.apply(size);
- Vector.Mask<Short> m = ShortVector.maskFromArray(SPECIES, ms, 0);
+ VectorMask<Short> m = VectorMask.maskFromArray(SPECIES, ms, 0);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
- Vector.Mask<Short> mv = av.greaterThanEq(bv);
+ VectorMask<Short> mv = av.greaterThanEq(bv);
m = m.and(mv); // accumulate results, so JIT can't eliminate relevant computations
}
}
return m;
@@ -765,11 +766,11 @@
public void blend(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] b = fb.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
ShortVector bv = ShortVector.fromArray(SPECIES, b, i);
@@ -787,11 +788,11 @@
short[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
- av.rearrange(ShortVector.shuffleFromArray(SPECIES, order, i)).intoArray(r, i);
+ av.rearrange(VectorShuffle.fromArray(SPECIES, order, i)).intoArray(r, i);
}
}
bh.consume(r);
}
@@ -990,11 +991,11 @@
@Benchmark
public void negMasked(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
av.neg(vmask).intoArray(r, i);
@@ -1022,11 +1023,11 @@
@Benchmark
public void absMasked(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
av.abs(vmask).intoArray(r, i);
@@ -1057,11 +1058,11 @@
@Benchmark
public void notMasked(Blackhole bh) {
short[] a = fa.apply(SPECIES.length());
short[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
- Vector.Mask<Short> vmask = ShortVector.maskFromValues(SPECIES, mask);
+ VectorMask<Short> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
ShortVector av = ShortVector.fromArray(SPECIES, a, i);
av.not(vmask).intoArray(r, i);
< prev index next >