From 9299f2af3f8bed4456d91d658a4a28f541debbcc Mon Sep 17 00:00:00 2001 From: "Jin,Zhonghui" Date: Tue, 7 Nov 2023 18:47:03 +0800 Subject: [PATCH] [Backport] 8267969: Add vectorized implementation for VectorMask.eq() Summary: [Backport] 8267969: Add vectorized implementation for VectorMask.eq() Test Plan: ci jtreg Reviewed-by: JoshuaZhuwj Issue: https://github.com/dragonwell-project/dragonwell11/issues/587 --- .../share/classes/jdk/incubator/vector/AbstractMask.java | 6 ------ .../share/classes/jdk/incubator/vector/Byte128Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Byte256Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Byte512Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Byte64Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/ByteMaxVector.java | 8 ++++++++ .../classes/jdk/incubator/vector/Double128Vector.java | 8 ++++++++ .../classes/jdk/incubator/vector/Double256Vector.java | 8 ++++++++ .../classes/jdk/incubator/vector/Double512Vector.java | 8 ++++++++ .../classes/jdk/incubator/vector/Double64Vector.java | 8 ++++++++ .../classes/jdk/incubator/vector/DoubleMaxVector.java | 8 ++++++++ .../classes/jdk/incubator/vector/Float128Vector.java | 8 ++++++++ .../classes/jdk/incubator/vector/Float256Vector.java | 8 ++++++++ .../classes/jdk/incubator/vector/Float512Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Float64Vector.java | 8 ++++++++ .../classes/jdk/incubator/vector/FloatMaxVector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Int128Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Int256Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Int512Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Int64Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/IntMaxVector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Long128Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Long256Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Long512Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Long64Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/LongMaxVector.java | 8 ++++++++ .../classes/jdk/incubator/vector/Short128Vector.java | 8 ++++++++ .../classes/jdk/incubator/vector/Short256Vector.java | 8 ++++++++ .../classes/jdk/incubator/vector/Short512Vector.java | 8 ++++++++ .../share/classes/jdk/incubator/vector/Short64Vector.java | 8 ++++++++ .../classes/jdk/incubator/vector/ShortMaxVector.java | 8 ++++++++ .../jdk/incubator/vector/X-VectorBits.java.template | 8 ++++++++ 32 files changed, 248 insertions(+), 6 deletions(-) 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 5169bad0d72..81855a4af7d 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 @@ -114,12 +114,6 @@ VectorMask check(VectorSpecies species) { return (VectorMask) this; } - @Override - public VectorMask eq(VectorMask m) { - // FIXME: Generate good code here. - return bOp(m, (i, a, b) -> a == b); - } - @Override public VectorMask andNot(VectorMask m) { return and(m.not()); 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 efd9d54053b..df4ef52bdee 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 @@ -645,6 +645,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Byte128Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Byte128Mask m = (Byte128Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 ae190958388..ee33b9a1830 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 @@ -677,6 +677,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Byte256Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Byte256Mask m = (Byte256Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 f3756a9a530..e0d14373936 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 @@ -741,6 +741,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Byte512Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Byte512Mask m = (Byte512Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 e768325fc08..66bc047c547 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 @@ -629,6 +629,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Byte64Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Byte64Mask m = (Byte64Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 bd44b335494..8371e625182 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 @@ -615,6 +615,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public ByteMaxMask eq(VectorMask mask) { + Objects.requireNonNull(mask); + ByteMaxMask m = (ByteMaxMask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 863f99e1148..948717844e3 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 @@ -613,6 +613,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Double128Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Double128Mask m = (Double128Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 4a6b21a5568..da2d5b6795e 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 @@ -617,6 +617,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Double256Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Double256Mask m = (Double256Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 246b8b2ef89..b28ba23d4de 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 @@ -625,6 +625,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Double512Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Double512Mask m = (Double512Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 06681a9aaf5..846802bea64 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 @@ -611,6 +611,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Double64Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Double64Mask m = (Double64Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 2deddbf363f..96818f30eec 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 @@ -610,6 +610,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public DoubleMaxMask eq(VectorMask mask) { + Objects.requireNonNull(mask); + DoubleMaxMask m = (DoubleMaxMask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 6ce1dcbb4be..c3bed76826f 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 @@ -617,6 +617,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Float128Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Float128Mask m = (Float128Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 9589fd4bad3..01b7002b14c 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 @@ -625,6 +625,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Float256Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Float256Mask m = (Float256Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 36cb07f3bc8..3a01e5ab8ad 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 @@ -641,6 +641,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Float512Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Float512Mask m = (Float512Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 e37443a49c4..2a0d253d2b0 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 @@ -613,6 +613,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Float64Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Float64Mask m = (Float64Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 5ce26330861..14c454e34eb 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 @@ -610,6 +610,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public FloatMaxMask eq(VectorMask mask) { + Objects.requireNonNull(mask); + FloatMaxMask m = (FloatMaxMask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 170bbd1fe66..43f6e4addbc 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 @@ -621,6 +621,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Int128Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Int128Mask m = (Int128Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 dfa81e180ee..2ba20eae8d8 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 @@ -629,6 +629,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Int256Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Int256Mask m = (Int256Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 24a11dec2b5..e46a52ee224 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 @@ -645,6 +645,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Int512Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Int512Mask m = (Int512Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 c65965eaab2..1dc9445e687 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 @@ -617,6 +617,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Int64Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Int64Mask m = (Int64Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 17b725cd7ef..3cdadefef0a 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 @@ -615,6 +615,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public IntMaxMask eq(VectorMask mask) { + Objects.requireNonNull(mask); + IntMaxMask m = (IntMaxMask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 2d57c655fae..d5e95b9af5c 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 @@ -607,6 +607,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Long128Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Long128Mask m = (Long128Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 21a2512e5b5..d1a5bc294a1 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 @@ -611,6 +611,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Long256Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Long256Mask m = (Long256Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 f60ce4d9fb0..c07bfe6618f 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 @@ -619,6 +619,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Long512Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Long512Mask m = (Long512Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 ad967fc1279..a4cd546165c 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 @@ -605,6 +605,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Long64Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Long64Mask m = (Long64Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 4c9cf08ec71..38ae94aa96f 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 @@ -605,6 +605,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public LongMaxMask eq(VectorMask mask) { + Objects.requireNonNull(mask); + LongMaxMask m = (LongMaxMask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 09d18cbf805..1ae152c5990 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 @@ -629,6 +629,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Short128Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Short128Mask m = (Short128Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 4ed757b090c..bf997f0ea82 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 @@ -645,6 +645,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Short256Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Short256Mask m = (Short256Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 f3fe9ecbf0c..1a9d959d8e5 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 @@ -677,6 +677,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Short512Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Short512Mask m = (Short512Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 1df913f90f6..6a511b29fe1 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 @@ -621,6 +621,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public Short64Mask eq(VectorMask mask) { + Objects.requireNonNull(mask); + Short64Mask m = (Short64Mask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 0b4210d94ba..617b3e91c02 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 @@ -615,6 +615,14 @@ public VectorMask cast(VectorSpecies dsp) { return this.defaultMaskCast(species); } + @Override + @ForceInline + public ShortMaxMask eq(VectorMask mask) { + Objects.requireNonNull(mask); + ShortMaxMask m = (ShortMaxMask)mask; + return xor(m.not()); + } + // Unary operations @Override 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 76b7a9094dd..aa3f4c926df 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 @@ -888,6 +888,14 @@ final class $vectortype$ extends $abstractvectortype$ { return this.defaultMaskCast(species); } + @Override + @ForceInline + public $masktype$ eq(VectorMask<$Boxtype$> mask) { + Objects.requireNonNull(mask); + $masktype$ m = ($masktype$)mask; + return xor(m.not()); + } + // Unary operations @Override