diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/AbstractMask.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/AbstractMask.java index 38be02fe70e..3528b52d7a6 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/AbstractMask.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/AbstractMask.java @@ -137,10 +137,17 @@ abstract class AbstractMask extends VectorMask { } @Override - public VectorMask andNot(VectorMask m) { + @ForceInline + public final VectorMask andNot(VectorMask m) { return and(m.not()); } + @Override + @ForceInline + public final VectorMask eq(VectorMask m) { + return xor(m.not()); + } + /*package-private*/ static boolean anyTrueHelper(boolean[] bits) { // FIXME: Maybe use toLong() != 0 here. diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte128Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte128Vector.java index 12a6c80f21e..0f9f435513f 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte128Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte128Vector.java @@ -677,14 +677,6 @@ final class Byte128Vector extends ByteVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Byte128Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Byte128Mask m = (Byte128Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -733,9 +725,9 @@ final class Byte128Vector extends ByteVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Byte128Mask xor(VectorMask mask) { + public Byte128Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Byte128Mask m = (Byte128Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Byte128Mask.class, null, byte.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte256Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte256Vector.java index e2050716803..2e23615043b 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte256Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte256Vector.java @@ -709,14 +709,6 @@ final class Byte256Vector extends ByteVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Byte256Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Byte256Mask m = (Byte256Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -765,9 +757,9 @@ final class Byte256Vector extends ByteVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Byte256Mask xor(VectorMask mask) { + public Byte256Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Byte256Mask m = (Byte256Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Byte256Mask.class, null, byte.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte512Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte512Vector.java index a8a5875ea7b..a5564d29f83 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte512Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte512Vector.java @@ -773,14 +773,6 @@ final class Byte512Vector extends ByteVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Byte512Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Byte512Mask m = (Byte512Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -829,9 +821,9 @@ final class Byte512Vector extends ByteVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Byte512Mask xor(VectorMask mask) { + public Byte512Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Byte512Mask m = (Byte512Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Byte512Mask.class, null, byte.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte64Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte64Vector.java index db3e9252944..4c656d66065 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte64Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte64Vector.java @@ -661,14 +661,6 @@ final class Byte64Vector extends ByteVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Byte64Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Byte64Mask m = (Byte64Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -717,9 +709,9 @@ final class Byte64Vector extends ByteVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Byte64Mask xor(VectorMask mask) { + public Byte64Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Byte64Mask m = (Byte64Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Byte64Mask.class, null, byte.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteMaxVector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteMaxVector.java index 0afdeab13dc..211878d4abf 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteMaxVector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteMaxVector.java @@ -647,14 +647,6 @@ final class ByteMaxVector extends ByteVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public ByteMaxMask eq(VectorMask mask) { - Objects.requireNonNull(mask); - ByteMaxMask m = (ByteMaxMask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -703,9 +695,9 @@ final class ByteMaxVector extends ByteVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - ByteMaxMask xor(VectorMask mask) { + public ByteMaxMask xor(VectorMask mask) { Objects.requireNonNull(mask); ByteMaxMask m = (ByteMaxMask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, ByteMaxMask.class, null, byte.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double128Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double128Vector.java index 2c5706fe2f0..2d648c1920d 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double128Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double128Vector.java @@ -638,14 +638,6 @@ final class Double128Vector extends DoubleVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Double128Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Double128Mask m = (Double128Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -694,9 +686,9 @@ final class Double128Vector extends DoubleVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Double128Mask xor(VectorMask mask) { + public Double128Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Double128Mask m = (Double128Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Double128Mask.class, null, long.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double256Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double256Vector.java index 3f4ee1bdc04..4c427a35bee 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double256Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double256Vector.java @@ -642,14 +642,6 @@ final class Double256Vector extends DoubleVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Double256Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Double256Mask m = (Double256Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -698,9 +690,9 @@ final class Double256Vector extends DoubleVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Double256Mask xor(VectorMask mask) { + public Double256Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Double256Mask m = (Double256Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Double256Mask.class, null, long.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double512Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double512Vector.java index 3f8211eef27..2614377b2e7 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double512Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double512Vector.java @@ -650,14 +650,6 @@ final class Double512Vector extends DoubleVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Double512Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Double512Mask m = (Double512Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -706,9 +698,9 @@ final class Double512Vector extends DoubleVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Double512Mask xor(VectorMask mask) { + public Double512Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Double512Mask m = (Double512Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Double512Mask.class, null, long.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double64Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double64Vector.java index 9900c97f912..f4e79a84b12 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double64Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Double64Vector.java @@ -636,14 +636,6 @@ final class Double64Vector extends DoubleVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Double64Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Double64Mask m = (Double64Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -692,9 +684,9 @@ final class Double64Vector extends DoubleVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Double64Mask xor(VectorMask mask) { + public Double64Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Double64Mask m = (Double64Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Double64Mask.class, null, long.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/DoubleMaxVector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/DoubleMaxVector.java index 32ff760fb36..054da10195b 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/DoubleMaxVector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/DoubleMaxVector.java @@ -635,14 +635,6 @@ final class DoubleMaxVector extends DoubleVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public DoubleMaxMask eq(VectorMask mask) { - Objects.requireNonNull(mask); - DoubleMaxMask m = (DoubleMaxMask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -691,9 +683,9 @@ final class DoubleMaxVector extends DoubleVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - DoubleMaxMask xor(VectorMask mask) { + public DoubleMaxMask xor(VectorMask mask) { Objects.requireNonNull(mask); DoubleMaxMask m = (DoubleMaxMask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, DoubleMaxMask.class, null, long.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float128Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float128Vector.java index 5414be75607..d79b963151d 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float128Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float128Vector.java @@ -642,14 +642,6 @@ final class Float128Vector extends FloatVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Float128Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Float128Mask m = (Float128Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -698,9 +690,9 @@ final class Float128Vector extends FloatVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Float128Mask xor(VectorMask mask) { + public Float128Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Float128Mask m = (Float128Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Float128Mask.class, null, int.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float256Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float256Vector.java index 9194fbcde0e..2f57ddaa280 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float256Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float256Vector.java @@ -650,14 +650,6 @@ final class Float256Vector extends FloatVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Float256Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Float256Mask m = (Float256Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -706,9 +698,9 @@ final class Float256Vector extends FloatVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Float256Mask xor(VectorMask mask) { + public Float256Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Float256Mask m = (Float256Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Float256Mask.class, null, int.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float512Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float512Vector.java index 2e43f153b0c..7ceacd99da9 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float512Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float512Vector.java @@ -666,14 +666,6 @@ final class Float512Vector extends FloatVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Float512Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Float512Mask m = (Float512Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -722,9 +714,9 @@ final class Float512Vector extends FloatVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Float512Mask xor(VectorMask mask) { + public Float512Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Float512Mask m = (Float512Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Float512Mask.class, null, int.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float64Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float64Vector.java index ccd75e18e06..a465c1000cc 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float64Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Float64Vector.java @@ -638,14 +638,6 @@ final class Float64Vector extends FloatVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Float64Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Float64Mask m = (Float64Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -694,9 +686,9 @@ final class Float64Vector extends FloatVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Float64Mask xor(VectorMask mask) { + public Float64Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Float64Mask m = (Float64Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Float64Mask.class, null, int.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/FloatMaxVector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/FloatMaxVector.java index e5b4651531b..ed08ced67c4 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/FloatMaxVector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/FloatMaxVector.java @@ -635,14 +635,6 @@ final class FloatMaxVector extends FloatVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public FloatMaxMask eq(VectorMask mask) { - Objects.requireNonNull(mask); - FloatMaxMask m = (FloatMaxMask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -691,9 +683,9 @@ final class FloatMaxVector extends FloatVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - FloatMaxMask xor(VectorMask mask) { + public FloatMaxMask xor(VectorMask mask) { Objects.requireNonNull(mask); FloatMaxMask m = (FloatMaxMask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, FloatMaxMask.class, null, int.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int128Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int128Vector.java index 158686576f5..64c2bcd5088 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int128Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int128Vector.java @@ -653,14 +653,6 @@ final class Int128Vector extends IntVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Int128Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Int128Mask m = (Int128Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -709,9 +701,9 @@ final class Int128Vector extends IntVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Int128Mask xor(VectorMask mask) { + public Int128Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Int128Mask m = (Int128Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Int128Mask.class, null, int.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int256Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int256Vector.java index 4f251e43f1f..14453079341 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int256Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int256Vector.java @@ -661,14 +661,6 @@ final class Int256Vector extends IntVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Int256Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Int256Mask m = (Int256Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -717,9 +709,9 @@ final class Int256Vector extends IntVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Int256Mask xor(VectorMask mask) { + public Int256Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Int256Mask m = (Int256Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Int256Mask.class, null, int.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int512Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int512Vector.java index 4867c377a8a..9a6350c5cc0 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int512Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int512Vector.java @@ -677,14 +677,6 @@ final class Int512Vector extends IntVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Int512Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Int512Mask m = (Int512Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -733,9 +725,9 @@ final class Int512Vector extends IntVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Int512Mask xor(VectorMask mask) { + public Int512Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Int512Mask m = (Int512Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Int512Mask.class, null, int.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int64Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int64Vector.java index 2f44bfecf8f..9f6754d798a 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int64Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Int64Vector.java @@ -649,14 +649,6 @@ final class Int64Vector extends IntVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Int64Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Int64Mask m = (Int64Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -705,9 +697,9 @@ final class Int64Vector extends IntVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Int64Mask xor(VectorMask mask) { + public Int64Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Int64Mask m = (Int64Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Int64Mask.class, null, int.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/IntMaxVector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/IntMaxVector.java index b79e73f52d6..05632eca6b1 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/IntMaxVector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/IntMaxVector.java @@ -647,14 +647,6 @@ final class IntMaxVector extends IntVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public IntMaxMask eq(VectorMask mask) { - Objects.requireNonNull(mask); - IntMaxMask m = (IntMaxMask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -703,9 +695,9 @@ final class IntMaxVector extends IntVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - IntMaxMask xor(VectorMask mask) { + public IntMaxMask xor(VectorMask mask) { Objects.requireNonNull(mask); IntMaxMask m = (IntMaxMask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, IntMaxMask.class, null, int.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long128Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long128Vector.java index 9b024f6e55c..6cbda5917d5 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long128Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long128Vector.java @@ -639,14 +639,6 @@ final class Long128Vector extends LongVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Long128Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Long128Mask m = (Long128Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -695,9 +687,9 @@ final class Long128Vector extends LongVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Long128Mask xor(VectorMask mask) { + public Long128Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Long128Mask m = (Long128Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Long128Mask.class, null, long.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long256Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long256Vector.java index 8a1844af370..f266fedcf3d 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long256Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long256Vector.java @@ -643,14 +643,6 @@ final class Long256Vector extends LongVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Long256Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Long256Mask m = (Long256Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -699,9 +691,9 @@ final class Long256Vector extends LongVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Long256Mask xor(VectorMask mask) { + public Long256Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Long256Mask m = (Long256Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Long256Mask.class, null, long.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long512Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long512Vector.java index baec813f58e..a750901e56d 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long512Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long512Vector.java @@ -651,14 +651,6 @@ final class Long512Vector extends LongVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Long512Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Long512Mask m = (Long512Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -707,9 +699,9 @@ final class Long512Vector extends LongVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Long512Mask xor(VectorMask mask) { + public Long512Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Long512Mask m = (Long512Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Long512Mask.class, null, long.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long64Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long64Vector.java index 1d4110050f2..bc4bc3f78e3 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long64Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Long64Vector.java @@ -637,14 +637,6 @@ final class Long64Vector extends LongVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Long64Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Long64Mask m = (Long64Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -693,9 +685,9 @@ final class Long64Vector extends LongVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Long64Mask xor(VectorMask mask) { + public Long64Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Long64Mask m = (Long64Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Long64Mask.class, null, long.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LongMaxVector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LongMaxVector.java index ecc2b393061..10b038bfb08 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LongMaxVector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LongMaxVector.java @@ -637,14 +637,6 @@ final class LongMaxVector extends LongVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public LongMaxMask eq(VectorMask mask) { - Objects.requireNonNull(mask); - LongMaxMask m = (LongMaxMask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -693,9 +685,9 @@ final class LongMaxVector extends LongVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - LongMaxMask xor(VectorMask mask) { + public LongMaxMask xor(VectorMask mask) { Objects.requireNonNull(mask); LongMaxMask m = (LongMaxMask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, LongMaxMask.class, null, long.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short128Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short128Vector.java index 1f587ca54a5..76cf472d568 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short128Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short128Vector.java @@ -661,14 +661,6 @@ final class Short128Vector extends ShortVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Short128Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Short128Mask m = (Short128Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -717,9 +709,9 @@ final class Short128Vector extends ShortVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Short128Mask xor(VectorMask mask) { + public Short128Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Short128Mask m = (Short128Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Short128Mask.class, null, short.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short256Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short256Vector.java index 5e259b70b59..b718154a063 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short256Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short256Vector.java @@ -677,14 +677,6 @@ final class Short256Vector extends ShortVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Short256Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Short256Mask m = (Short256Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -733,9 +725,9 @@ final class Short256Vector extends ShortVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Short256Mask xor(VectorMask mask) { + public Short256Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Short256Mask m = (Short256Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Short256Mask.class, null, short.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short512Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short512Vector.java index a6cbfb4f8e4..260a8f16477 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short512Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short512Vector.java @@ -709,14 +709,6 @@ final class Short512Vector extends ShortVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Short512Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Short512Mask m = (Short512Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -765,9 +757,9 @@ final class Short512Vector extends ShortVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Short512Mask xor(VectorMask mask) { + public Short512Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Short512Mask m = (Short512Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Short512Mask.class, null, short.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short64Vector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short64Vector.java index b2a2ec11952..19d897ea485 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short64Vector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Short64Vector.java @@ -653,14 +653,6 @@ final class Short64Vector extends ShortVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public Short64Mask eq(VectorMask mask) { - Objects.requireNonNull(mask); - Short64Mask m = (Short64Mask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -709,9 +701,9 @@ final class Short64Vector extends ShortVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - Short64Mask xor(VectorMask mask) { + public Short64Mask xor(VectorMask mask) { Objects.requireNonNull(mask); Short64Mask m = (Short64Mask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, Short64Mask.class, null, short.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortMaxVector.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortMaxVector.java index eaf99f61896..8b58d56ac7b 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortMaxVector.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortMaxVector.java @@ -647,14 +647,6 @@ final class ShortMaxVector extends ShortVector { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public ShortMaxMask eq(VectorMask mask) { - Objects.requireNonNull(mask); - ShortMaxMask m = (ShortMaxMask)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -703,9 +695,9 @@ final class ShortMaxVector extends ShortVector { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - ShortMaxMask xor(VectorMask mask) { + public ShortMaxMask xor(VectorMask mask) { Objects.requireNonNull(mask); ShortMaxMask m = (ShortMaxMask)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, ShortMaxMask.class, null, short.class, VLENGTH, diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorMask.java b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorMask.java index 14f0594121b..40d20835534 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorMask.java +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorMask.java @@ -398,20 +398,18 @@ public abstract class VectorMask extends jdk.internal.vm.vector.VectorSupport public abstract VectorMask or(VectorMask m); /** - * Determines logical equivalence of this mask - * to a second input mask (as boolean {@code a==b} - * or {@code a^~b}). + * Determines logical symmetric difference + * (as {@code a^b}) of this mask and a second input mask. *

- * This is a lane-wise binary operation tests each - * corresponding pair of mask bits for equality. - * It is also equivalent to a inverse {@code XOR} - * operation ({@code ^~}) on the mask bits. + * This is a lane-wise binary operation which applies + * the logical {@code XOR} operation + * ({@code ^}) to each corresponding pair of mask bits. * * @param m the input mask - * @return a mask showing where the two input masks were equal - * @see #equals + * @return the result of logically disjunctively disjoining the two + * input masks */ - public abstract VectorMask eq(VectorMask m); + public abstract VectorMask xor(VectorMask m); /** * Logically subtracts a second input mask @@ -426,6 +424,23 @@ public abstract class VectorMask extends jdk.internal.vm.vector.VectorSupport */ public abstract VectorMask andNot(VectorMask m); + /** + * Determines logical equivalence of this mask + * to a second input mask (as boolean {@code a==b} + * or {@code a^~b}). + *

+ * This is a lane-wise binary operation tests each + * corresponding pair of mask bits for equality. + * It is also equivalent to the logical {@code XNOR} + * operation ({@code ^~}) to each corresponding pair + * of mask bits. + * + * @param m the input mask + * @return a mask showing where the two input masks were equal + * @see #equals + */ + public abstract VectorMask eq(VectorMask m); + /** * Logically negates this mask. *

diff --git a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-VectorBits.java.template b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-VectorBits.java.template index 14ba8d34161..6c65478397b 100644 --- a/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-VectorBits.java.template +++ b/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-VectorBits.java.template @@ -920,14 +920,6 @@ final class $vectortype$ extends $abstractvectortype$ { (m, s) -> s.maskFactory(m.toArray()).check(s)); } - @Override - @ForceInline - public $masktype$ eq(VectorMask<$Boxtype$> mask) { - Objects.requireNonNull(mask); - $masktype$ m = ($masktype$)mask; - return xor(m.not()); - } - @Override @ForceInline /*package-private*/ @@ -976,9 +968,9 @@ final class $vectortype$ extends $abstractvectortype$ { (m1, m2, vm) -> m1.bOp(m2, (i, a, b) -> a | b)); } + @Override @ForceInline - /* package-private */ - $masktype$ xor(VectorMask<$Boxtype$> mask) { + public $masktype$ xor(VectorMask<$Boxtype$> mask) { Objects.requireNonNull(mask); $masktype$ m = ($masktype$)mask; return VectorSupport.binaryOp(VECTOR_OP_XOR, $masktype$.class, null, $bitstype$.class, VLENGTH, diff --git a/test/jdk/jdk/incubator/vector/Byte128VectorTests.java b/test/jdk/jdk/incubator/vector/Byte128VectorTests.java index cc0e780e0c3..9d656f0e338 100644 --- a/test/jdk/jdk/incubator/vector/Byte128VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Byte128VectorTests.java @@ -5849,6 +5849,82 @@ public class Byte128VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndByte128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte128VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrByte128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte128VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorByte128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte128VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotByte128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte128VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Byte256VectorTests.java b/test/jdk/jdk/incubator/vector/Byte256VectorTests.java index 153ffe99d43..31ecc509c39 100644 --- a/test/jdk/jdk/incubator/vector/Byte256VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Byte256VectorTests.java @@ -5849,6 +5849,82 @@ public class Byte256VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndByte256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte256VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrByte256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte256VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorByte256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte256VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotByte256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte256VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Byte512VectorTests.java b/test/jdk/jdk/incubator/vector/Byte512VectorTests.java index 35ad368f632..b677d6fde59 100644 --- a/test/jdk/jdk/incubator/vector/Byte512VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Byte512VectorTests.java @@ -5849,6 +5849,82 @@ public class Byte512VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndByte512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte512VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrByte512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte512VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorByte512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte512VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotByte512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte512VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Byte64VectorTests.java b/test/jdk/jdk/incubator/vector/Byte64VectorTests.java index f931780f779..3c33d91854c 100644 --- a/test/jdk/jdk/incubator/vector/Byte64VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Byte64VectorTests.java @@ -5849,6 +5849,82 @@ public class Byte64VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndByte64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte64VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrByte64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte64VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorByte64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte64VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotByte64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Byte64VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/ByteMaxVectorTests.java b/test/jdk/jdk/incubator/vector/ByteMaxVectorTests.java index 1fc848239f4..3d19d2ab6d0 100644 --- a/test/jdk/jdk/incubator/vector/ByteMaxVectorTests.java +++ b/test/jdk/jdk/incubator/vector/ByteMaxVectorTests.java @@ -5854,6 +5854,82 @@ public class ByteMaxVectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndByteMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, ByteMaxVectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrByteMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, ByteMaxVectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorByteMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, ByteMaxVectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotByteMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, ByteMaxVectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Double128VectorTests.java b/test/jdk/jdk/incubator/vector/Double128VectorTests.java index f892de62b3b..8336b59accb 100644 --- a/test/jdk/jdk/incubator/vector/Double128VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Double128VectorTests.java @@ -4880,6 +4880,82 @@ public class Double128VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndDouble128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double128VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrDouble128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double128VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorDouble128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double128VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotDouble128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double128VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Double256VectorTests.java b/test/jdk/jdk/incubator/vector/Double256VectorTests.java index 204743bf5f7..f170ccc406b 100644 --- a/test/jdk/jdk/incubator/vector/Double256VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Double256VectorTests.java @@ -4880,6 +4880,82 @@ public class Double256VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndDouble256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double256VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrDouble256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double256VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorDouble256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double256VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotDouble256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double256VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Double512VectorTests.java b/test/jdk/jdk/incubator/vector/Double512VectorTests.java index 6c336959e50..406636bed0e 100644 --- a/test/jdk/jdk/incubator/vector/Double512VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Double512VectorTests.java @@ -4880,6 +4880,82 @@ public class Double512VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndDouble512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double512VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrDouble512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double512VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorDouble512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double512VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotDouble512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double512VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Double64VectorTests.java b/test/jdk/jdk/incubator/vector/Double64VectorTests.java index abcec6533bf..c86b0281072 100644 --- a/test/jdk/jdk/incubator/vector/Double64VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Double64VectorTests.java @@ -4880,6 +4880,82 @@ public class Double64VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndDouble64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double64VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrDouble64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double64VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorDouble64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double64VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotDouble64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Double64VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/DoubleMaxVectorTests.java b/test/jdk/jdk/incubator/vector/DoubleMaxVectorTests.java index ef41e6a6cbb..bcc7b6b0144 100644 --- a/test/jdk/jdk/incubator/vector/DoubleMaxVectorTests.java +++ b/test/jdk/jdk/incubator/vector/DoubleMaxVectorTests.java @@ -4885,6 +4885,82 @@ public class DoubleMaxVectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndDoubleMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, DoubleMaxVectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrDoubleMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, DoubleMaxVectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorDoubleMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, DoubleMaxVectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotDoubleMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, DoubleMaxVectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Float128VectorTests.java b/test/jdk/jdk/incubator/vector/Float128VectorTests.java index f888604905b..21de8e1bd96 100644 --- a/test/jdk/jdk/incubator/vector/Float128VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Float128VectorTests.java @@ -4859,6 +4859,82 @@ public class Float128VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndFloat128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float128VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrFloat128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float128VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorFloat128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float128VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotFloat128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float128VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Float256VectorTests.java b/test/jdk/jdk/incubator/vector/Float256VectorTests.java index 13a5abb4e1f..bd74e79d24b 100644 --- a/test/jdk/jdk/incubator/vector/Float256VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Float256VectorTests.java @@ -4859,6 +4859,82 @@ public class Float256VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndFloat256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float256VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrFloat256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float256VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorFloat256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float256VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotFloat256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float256VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Float512VectorTests.java b/test/jdk/jdk/incubator/vector/Float512VectorTests.java index 650c62f2661..527900594f4 100644 --- a/test/jdk/jdk/incubator/vector/Float512VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Float512VectorTests.java @@ -4859,6 +4859,82 @@ public class Float512VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndFloat512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float512VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrFloat512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float512VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorFloat512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float512VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotFloat512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float512VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Float64VectorTests.java b/test/jdk/jdk/incubator/vector/Float64VectorTests.java index bbaa3f1e000..a07c4f19b13 100644 --- a/test/jdk/jdk/incubator/vector/Float64VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Float64VectorTests.java @@ -4859,6 +4859,82 @@ public class Float64VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndFloat64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float64VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrFloat64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float64VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorFloat64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float64VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotFloat64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Float64VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/FloatMaxVectorTests.java b/test/jdk/jdk/incubator/vector/FloatMaxVectorTests.java index 80dc6df67a6..1c42c670b87 100644 --- a/test/jdk/jdk/incubator/vector/FloatMaxVectorTests.java +++ b/test/jdk/jdk/incubator/vector/FloatMaxVectorTests.java @@ -4864,6 +4864,82 @@ public class FloatMaxVectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndFloatMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, FloatMaxVectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrFloatMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, FloatMaxVectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorFloatMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, FloatMaxVectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotFloatMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, FloatMaxVectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Int128VectorTests.java b/test/jdk/jdk/incubator/vector/Int128VectorTests.java index 4296c1a02a9..f69423c12e2 100644 --- a/test/jdk/jdk/incubator/vector/Int128VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Int128VectorTests.java @@ -5882,6 +5882,82 @@ public class Int128VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndInt128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int128VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrInt128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int128VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorInt128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int128VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotInt128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int128VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Int256VectorTests.java b/test/jdk/jdk/incubator/vector/Int256VectorTests.java index 89215583399..f580c39c091 100644 --- a/test/jdk/jdk/incubator/vector/Int256VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Int256VectorTests.java @@ -5882,6 +5882,82 @@ public class Int256VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndInt256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int256VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrInt256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int256VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorInt256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int256VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotInt256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int256VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Int512VectorTests.java b/test/jdk/jdk/incubator/vector/Int512VectorTests.java index 9c8523f06d8..89cd557ec9b 100644 --- a/test/jdk/jdk/incubator/vector/Int512VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Int512VectorTests.java @@ -5882,6 +5882,82 @@ public class Int512VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndInt512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int512VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrInt512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int512VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorInt512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int512VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotInt512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int512VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Int64VectorTests.java b/test/jdk/jdk/incubator/vector/Int64VectorTests.java index a02f5e3b4d8..0affccd742b 100644 --- a/test/jdk/jdk/incubator/vector/Int64VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Int64VectorTests.java @@ -5882,6 +5882,82 @@ public class Int64VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndInt64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int64VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrInt64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int64VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorInt64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int64VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotInt64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Int64VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/IntMaxVectorTests.java b/test/jdk/jdk/incubator/vector/IntMaxVectorTests.java index e9f4d30430b..c0fdcbf58a3 100644 --- a/test/jdk/jdk/incubator/vector/IntMaxVectorTests.java +++ b/test/jdk/jdk/incubator/vector/IntMaxVectorTests.java @@ -5887,6 +5887,82 @@ public class IntMaxVectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndIntMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, IntMaxVectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrIntMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, IntMaxVectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorIntMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, IntMaxVectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotIntMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, IntMaxVectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Long128VectorTests.java b/test/jdk/jdk/incubator/vector/Long128VectorTests.java index 09cd9e417fb..a706b884f8b 100644 --- a/test/jdk/jdk/incubator/vector/Long128VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Long128VectorTests.java @@ -5768,6 +5768,82 @@ public class Long128VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndLong128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long128VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrLong128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long128VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorLong128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long128VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotLong128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long128VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Long256VectorTests.java b/test/jdk/jdk/incubator/vector/Long256VectorTests.java index 70d43652d47..3056c8cbcaa 100644 --- a/test/jdk/jdk/incubator/vector/Long256VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Long256VectorTests.java @@ -5768,6 +5768,82 @@ public class Long256VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndLong256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long256VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrLong256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long256VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorLong256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long256VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotLong256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long256VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Long512VectorTests.java b/test/jdk/jdk/incubator/vector/Long512VectorTests.java index be795187116..5a0a5d106bf 100644 --- a/test/jdk/jdk/incubator/vector/Long512VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Long512VectorTests.java @@ -5768,6 +5768,82 @@ public class Long512VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndLong512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long512VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrLong512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long512VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorLong512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long512VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotLong512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long512VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Long64VectorTests.java b/test/jdk/jdk/incubator/vector/Long64VectorTests.java index 68361979490..1a3ecebd57c 100644 --- a/test/jdk/jdk/incubator/vector/Long64VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Long64VectorTests.java @@ -5768,6 +5768,82 @@ public class Long64VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndLong64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long64VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrLong64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long64VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorLong64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long64VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotLong64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Long64VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/LongMaxVectorTests.java b/test/jdk/jdk/incubator/vector/LongMaxVectorTests.java index 26dbf89b2ee..d467107e9f2 100644 --- a/test/jdk/jdk/incubator/vector/LongMaxVectorTests.java +++ b/test/jdk/jdk/incubator/vector/LongMaxVectorTests.java @@ -5773,6 +5773,82 @@ public class LongMaxVectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndLongMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, LongMaxVectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrLongMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, LongMaxVectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorLongMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, LongMaxVectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotLongMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, LongMaxVectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Short128VectorTests.java b/test/jdk/jdk/incubator/vector/Short128VectorTests.java index 5490c9f990c..81568661570 100644 --- a/test/jdk/jdk/incubator/vector/Short128VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Short128VectorTests.java @@ -5829,6 +5829,82 @@ public class Short128VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndShort128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short128VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrShort128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short128VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorShort128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short128VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotShort128VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short128VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Short256VectorTests.java b/test/jdk/jdk/incubator/vector/Short256VectorTests.java index 6bc5f9ee59a..14a54fcc1df 100644 --- a/test/jdk/jdk/incubator/vector/Short256VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Short256VectorTests.java @@ -5829,6 +5829,82 @@ public class Short256VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndShort256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short256VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrShort256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short256VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorShort256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short256VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotShort256VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short256VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Short512VectorTests.java b/test/jdk/jdk/incubator/vector/Short512VectorTests.java index b5c038d414b..8d869e5a66f 100644 --- a/test/jdk/jdk/incubator/vector/Short512VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Short512VectorTests.java @@ -5829,6 +5829,82 @@ public class Short512VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndShort512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short512VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrShort512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short512VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorShort512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short512VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotShort512VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short512VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/Short64VectorTests.java b/test/jdk/jdk/incubator/vector/Short64VectorTests.java index 68698945a4e..47f37beecb6 100644 --- a/test/jdk/jdk/incubator/vector/Short64VectorTests.java +++ b/test/jdk/jdk/incubator/vector/Short64VectorTests.java @@ -5829,6 +5829,82 @@ public class Short64VectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndShort64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short64VectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrShort64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short64VectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorShort64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short64VectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotShort64VectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, Short64VectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/ShortMaxVectorTests.java b/test/jdk/jdk/incubator/vector/ShortMaxVectorTests.java index 6531c67a40b..7e657a3f398 100644 --- a/test/jdk/jdk/incubator/vector/ShortMaxVectorTests.java +++ b/test/jdk/jdk/incubator/vector/ShortMaxVectorTests.java @@ -5834,6 +5834,82 @@ public class ShortMaxVectorTests extends AbstractVectorTest { } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndShortMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, ShortMaxVectorTests::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOrShortMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, ShortMaxVectorTests::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXorShortMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, ShortMaxVectorTests::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNotShortMaxVectorTestsSmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, ShortMaxVectorTests::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); } diff --git a/test/jdk/jdk/incubator/vector/templates/Unit-Miscellaneous.template b/test/jdk/jdk/incubator/vector/templates/Unit-Miscellaneous.template index 3a8b1dd17d1..0d3b310f60f 100644 --- a/test/jdk/jdk/incubator/vector/templates/Unit-Miscellaneous.template +++ b/test/jdk/jdk/incubator/vector/templates/Unit-Miscellaneous.template @@ -378,6 +378,82 @@ } } + static boolean band(boolean a, boolean b) { + return a & b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAnd$vectorteststype$SmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.and(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, $vectorteststype$::band); + } + + static boolean bor(boolean a, boolean b) { + return a | b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskOr$vectorteststype$SmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.or(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, $vectorteststype$::bor); + } + + static boolean bxor(boolean a, boolean b) { + return a != b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskXor$vectorteststype$SmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.xor(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, $vectorteststype$::bxor); + } + + static boolean bandNot(boolean a, boolean b) { + return a & !b; + } + + @Test(dataProvider = "maskCompareOpProvider") + static void maskAndNot$vectorteststype$SmokeTest(IntFunction fa, IntFunction fb) { + boolean[] a = fa.apply(SPECIES.length()); + boolean[] b = fb.apply(SPECIES.length()); + boolean[] r = new boolean[a.length]; + + for (int i = 0; i < a.length; i += SPECIES.length()) { + var av = SPECIES.loadMask(a, i); + var bv = SPECIES.loadMask(b, i); + var cv = av.andNot(bv); + cv.intoArray(r, i); + } + assertArraysEquals(r, a, b, $vectorteststype$::bandNot); + } + static boolean beq(boolean a, boolean b) { return (a == b); }