8277997: Intrinsic creation for VectorMask.fromLong API

Reviewed-by: psandoz, kvn, sviswanathan
This commit is contained in:
Jatin Bhateja 2021-12-10 01:49:20 +00:00
parent 066b348dbc
commit 0113322ac1
81 changed files with 595 additions and 242 deletions

View file

@ -757,9 +757,9 @@ final class Byte128Vector extends ByteVector {
@ForceInline
/*package-private*/
static Byte128Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Byte128Mask.class, byte.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Byte128Mask.class, byte.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Byte128Mask TRUE_MASK = new Byte128Mask(true);
private static final Byte128Mask FALSE_MASK = new Byte128Mask(false);

View file

@ -789,9 +789,9 @@ final class Byte256Vector extends ByteVector {
@ForceInline
/*package-private*/
static Byte256Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Byte256Mask.class, byte.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Byte256Mask.class, byte.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Byte256Mask TRUE_MASK = new Byte256Mask(true);
private static final Byte256Mask FALSE_MASK = new Byte256Mask(false);

View file

@ -853,9 +853,9 @@ final class Byte512Vector extends ByteVector {
@ForceInline
/*package-private*/
static Byte512Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Byte512Mask.class, byte.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Byte512Mask.class, byte.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Byte512Mask TRUE_MASK = new Byte512Mask(true);
private static final Byte512Mask FALSE_MASK = new Byte512Mask(false);

View file

@ -741,9 +741,9 @@ final class Byte64Vector extends ByteVector {
@ForceInline
/*package-private*/
static Byte64Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Byte64Mask.class, byte.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Byte64Mask.class, byte.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Byte64Mask TRUE_MASK = new Byte64Mask(true);
private static final Byte64Mask FALSE_MASK = new Byte64Mask(false);

View file

@ -727,9 +727,9 @@ final class ByteMaxVector extends ByteVector {
@ForceInline
/*package-private*/
static ByteMaxMask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(ByteMaxMask.class, byte.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(ByteMaxMask.class, byte.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final ByteMaxMask TRUE_MASK = new ByteMaxMask(true);
private static final ByteMaxMask FALSE_MASK = new ByteMaxMask(false);

View file

@ -455,8 +455,8 @@ public abstract class ByteVector extends AbstractVector<Byte> {
@ForceInline
public static ByteVector zero(VectorSpecies<Byte> species) {
ByteSpecies vsp = (ByteSpecies) species;
return VectorSupport.broadcastCoerced(vsp.vectorType(), byte.class, species.length(),
0, vsp,
return VectorSupport.fromBitsCoerced(vsp.vectorType(), byte.class, species.length(),
0, MODE_BROADCAST, vsp,
((bits_, s_) -> s_.rvOp(i -> bits_)));
}
@ -4149,9 +4149,9 @@ public abstract class ByteVector extends AbstractVector<Byte> {
@ForceInline
final ByteVector broadcastBits(long bits) {
return (ByteVector)
VectorSupport.broadcastCoerced(
VectorSupport.fromBitsCoerced(
vectorType, byte.class, laneCount,
bits, this,
bits, MODE_BROADCAST, this,
(bits_, s_) -> s_.rvOp(i -> bits_));
}

View file

@ -718,9 +718,9 @@ final class Double128Vector extends DoubleVector {
@ForceInline
/*package-private*/
static Double128Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Double128Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Double128Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Double128Mask TRUE_MASK = new Double128Mask(true);
private static final Double128Mask FALSE_MASK = new Double128Mask(false);

View file

@ -722,9 +722,9 @@ final class Double256Vector extends DoubleVector {
@ForceInline
/*package-private*/
static Double256Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Double256Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Double256Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Double256Mask TRUE_MASK = new Double256Mask(true);
private static final Double256Mask FALSE_MASK = new Double256Mask(false);

View file

@ -730,9 +730,9 @@ final class Double512Vector extends DoubleVector {
@ForceInline
/*package-private*/
static Double512Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Double512Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Double512Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Double512Mask TRUE_MASK = new Double512Mask(true);
private static final Double512Mask FALSE_MASK = new Double512Mask(false);

View file

@ -716,9 +716,9 @@ final class Double64Vector extends DoubleVector {
@ForceInline
/*package-private*/
static Double64Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Double64Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Double64Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Double64Mask TRUE_MASK = new Double64Mask(true);
private static final Double64Mask FALSE_MASK = new Double64Mask(false);

View file

@ -715,9 +715,9 @@ final class DoubleMaxVector extends DoubleVector {
@ForceInline
/*package-private*/
static DoubleMaxMask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(DoubleMaxMask.class, long.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(DoubleMaxMask.class, long.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final DoubleMaxMask TRUE_MASK = new DoubleMaxMask(true);
private static final DoubleMaxMask FALSE_MASK = new DoubleMaxMask(false);

View file

@ -444,8 +444,8 @@ public abstract class DoubleVector extends AbstractVector<Double> {
@ForceInline
public static DoubleVector zero(VectorSpecies<Double> species) {
DoubleSpecies vsp = (DoubleSpecies) species;
return VectorSupport.broadcastCoerced(vsp.vectorType(), double.class, species.length(),
toBits(0.0f), vsp,
return VectorSupport.fromBitsCoerced(vsp.vectorType(), double.class, species.length(),
toBits(0.0f), MODE_BROADCAST, vsp,
((bits_, s_) -> s_.rvOp(i -> bits_)));
}
@ -3754,9 +3754,9 @@ public abstract class DoubleVector extends AbstractVector<Double> {
@ForceInline
final DoubleVector broadcastBits(long bits) {
return (DoubleVector)
VectorSupport.broadcastCoerced(
VectorSupport.fromBitsCoerced(
vectorType, double.class, laneCount,
bits, this,
bits, MODE_BROADCAST, this,
(bits_, s_) -> s_.rvOp(i -> bits_));
}

View file

@ -722,9 +722,9 @@ final class Float128Vector extends FloatVector {
@ForceInline
/*package-private*/
static Float128Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Float128Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Float128Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Float128Mask TRUE_MASK = new Float128Mask(true);
private static final Float128Mask FALSE_MASK = new Float128Mask(false);

View file

@ -730,9 +730,9 @@ final class Float256Vector extends FloatVector {
@ForceInline
/*package-private*/
static Float256Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Float256Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Float256Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Float256Mask TRUE_MASK = new Float256Mask(true);
private static final Float256Mask FALSE_MASK = new Float256Mask(false);

View file

@ -746,9 +746,9 @@ final class Float512Vector extends FloatVector {
@ForceInline
/*package-private*/
static Float512Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Float512Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Float512Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Float512Mask TRUE_MASK = new Float512Mask(true);
private static final Float512Mask FALSE_MASK = new Float512Mask(false);

View file

@ -718,9 +718,9 @@ final class Float64Vector extends FloatVector {
@ForceInline
/*package-private*/
static Float64Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Float64Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Float64Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Float64Mask TRUE_MASK = new Float64Mask(true);
private static final Float64Mask FALSE_MASK = new Float64Mask(false);

View file

@ -715,9 +715,9 @@ final class FloatMaxVector extends FloatVector {
@ForceInline
/*package-private*/
static FloatMaxMask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(FloatMaxMask.class, int.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(FloatMaxMask.class, int.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final FloatMaxMask TRUE_MASK = new FloatMaxMask(true);
private static final FloatMaxMask FALSE_MASK = new FloatMaxMask(false);

View file

@ -444,8 +444,8 @@ public abstract class FloatVector extends AbstractVector<Float> {
@ForceInline
public static FloatVector zero(VectorSpecies<Float> species) {
FloatSpecies vsp = (FloatSpecies) species;
return VectorSupport.broadcastCoerced(vsp.vectorType(), float.class, species.length(),
toBits(0.0f), vsp,
return VectorSupport.fromBitsCoerced(vsp.vectorType(), float.class, species.length(),
toBits(0.0f), MODE_BROADCAST, vsp,
((bits_, s_) -> s_.rvOp(i -> bits_)));
}
@ -3704,9 +3704,9 @@ public abstract class FloatVector extends AbstractVector<Float> {
@ForceInline
final FloatVector broadcastBits(long bits) {
return (FloatVector)
VectorSupport.broadcastCoerced(
VectorSupport.fromBitsCoerced(
vectorType, float.class, laneCount,
bits, this,
bits, MODE_BROADCAST, this,
(bits_, s_) -> s_.rvOp(i -> bits_));
}

View file

@ -733,9 +733,9 @@ final class Int128Vector extends IntVector {
@ForceInline
/*package-private*/
static Int128Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Int128Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Int128Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Int128Mask TRUE_MASK = new Int128Mask(true);
private static final Int128Mask FALSE_MASK = new Int128Mask(false);

View file

@ -741,9 +741,9 @@ final class Int256Vector extends IntVector {
@ForceInline
/*package-private*/
static Int256Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Int256Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Int256Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Int256Mask TRUE_MASK = new Int256Mask(true);
private static final Int256Mask FALSE_MASK = new Int256Mask(false);

View file

@ -757,9 +757,9 @@ final class Int512Vector extends IntVector {
@ForceInline
/*package-private*/
static Int512Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Int512Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Int512Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Int512Mask TRUE_MASK = new Int512Mask(true);
private static final Int512Mask FALSE_MASK = new Int512Mask(false);

View file

@ -729,9 +729,9 @@ final class Int64Vector extends IntVector {
@ForceInline
/*package-private*/
static Int64Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Int64Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Int64Mask.class, int.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Int64Mask TRUE_MASK = new Int64Mask(true);
private static final Int64Mask FALSE_MASK = new Int64Mask(false);

View file

@ -727,9 +727,9 @@ final class IntMaxVector extends IntVector {
@ForceInline
/*package-private*/
static IntMaxMask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(IntMaxMask.class, int.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(IntMaxMask.class, int.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final IntMaxMask TRUE_MASK = new IntMaxMask(true);
private static final IntMaxMask FALSE_MASK = new IntMaxMask(false);

View file

@ -455,8 +455,8 @@ public abstract class IntVector extends AbstractVector<Integer> {
@ForceInline
public static IntVector zero(VectorSpecies<Integer> species) {
IntSpecies vsp = (IntSpecies) species;
return VectorSupport.broadcastCoerced(vsp.vectorType(), int.class, species.length(),
0, vsp,
return VectorSupport.fromBitsCoerced(vsp.vectorType(), int.class, species.length(),
0, MODE_BROADCAST, vsp,
((bits_, s_) -> s_.rvOp(i -> bits_)));
}
@ -3874,9 +3874,9 @@ public abstract class IntVector extends AbstractVector<Integer> {
@ForceInline
final IntVector broadcastBits(long bits) {
return (IntVector)
VectorSupport.broadcastCoerced(
VectorSupport.fromBitsCoerced(
vectorType, int.class, laneCount,
bits, this,
bits, MODE_BROADCAST, this,
(bits_, s_) -> s_.rvOp(i -> bits_));
}

View file

@ -719,9 +719,9 @@ final class Long128Vector extends LongVector {
@ForceInline
/*package-private*/
static Long128Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Long128Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Long128Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Long128Mask TRUE_MASK = new Long128Mask(true);
private static final Long128Mask FALSE_MASK = new Long128Mask(false);

View file

@ -723,9 +723,9 @@ final class Long256Vector extends LongVector {
@ForceInline
/*package-private*/
static Long256Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Long256Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Long256Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Long256Mask TRUE_MASK = new Long256Mask(true);
private static final Long256Mask FALSE_MASK = new Long256Mask(false);

View file

@ -731,9 +731,9 @@ final class Long512Vector extends LongVector {
@ForceInline
/*package-private*/
static Long512Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Long512Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Long512Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Long512Mask TRUE_MASK = new Long512Mask(true);
private static final Long512Mask FALSE_MASK = new Long512Mask(false);

View file

@ -717,9 +717,9 @@ final class Long64Vector extends LongVector {
@ForceInline
/*package-private*/
static Long64Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Long64Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Long64Mask.class, long.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Long64Mask TRUE_MASK = new Long64Mask(true);
private static final Long64Mask FALSE_MASK = new Long64Mask(false);

View file

@ -717,9 +717,9 @@ final class LongMaxVector extends LongVector {
@ForceInline
/*package-private*/
static LongMaxMask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(LongMaxMask.class, long.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(LongMaxMask.class, long.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final LongMaxMask TRUE_MASK = new LongMaxMask(true);
private static final LongMaxMask FALSE_MASK = new LongMaxMask(false);

View file

@ -455,8 +455,8 @@ public abstract class LongVector extends AbstractVector<Long> {
@ForceInline
public static LongVector zero(VectorSpecies<Long> species) {
LongSpecies vsp = (LongSpecies) species;
return VectorSupport.broadcastCoerced(vsp.vectorType(), long.class, species.length(),
0, vsp,
return VectorSupport.fromBitsCoerced(vsp.vectorType(), long.class, species.length(),
0, MODE_BROADCAST, vsp,
((bits_, s_) -> s_.rvOp(i -> bits_)));
}
@ -3809,9 +3809,9 @@ public abstract class LongVector extends AbstractVector<Long> {
@ForceInline
final LongVector broadcastBits(long bits) {
return (LongVector)
VectorSupport.broadcastCoerced(
VectorSupport.fromBitsCoerced(
vectorType, long.class, laneCount,
bits, this,
bits, MODE_BROADCAST, this,
(bits_, s_) -> s_.rvOp(i -> bits_));
}

View file

@ -741,9 +741,9 @@ final class Short128Vector extends ShortVector {
@ForceInline
/*package-private*/
static Short128Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Short128Mask.class, short.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Short128Mask.class, short.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Short128Mask TRUE_MASK = new Short128Mask(true);
private static final Short128Mask FALSE_MASK = new Short128Mask(false);

View file

@ -757,9 +757,9 @@ final class Short256Vector extends ShortVector {
@ForceInline
/*package-private*/
static Short256Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Short256Mask.class, short.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Short256Mask.class, short.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Short256Mask TRUE_MASK = new Short256Mask(true);
private static final Short256Mask FALSE_MASK = new Short256Mask(false);

View file

@ -789,9 +789,9 @@ final class Short512Vector extends ShortVector {
@ForceInline
/*package-private*/
static Short512Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Short512Mask.class, short.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Short512Mask.class, short.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Short512Mask TRUE_MASK = new Short512Mask(true);
private static final Short512Mask FALSE_MASK = new Short512Mask(false);

View file

@ -733,9 +733,9 @@ final class Short64Vector extends ShortVector {
@ForceInline
/*package-private*/
static Short64Mask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(Short64Mask.class, short.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(Short64Mask.class, short.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final Short64Mask TRUE_MASK = new Short64Mask(true);
private static final Short64Mask FALSE_MASK = new Short64Mask(false);

View file

@ -727,9 +727,9 @@ final class ShortMaxVector extends ShortVector {
@ForceInline
/*package-private*/
static ShortMaxMask maskAll(boolean bit) {
return VectorSupport.broadcastCoerced(ShortMaxMask.class, short.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced(ShortMaxMask.class, short.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final ShortMaxMask TRUE_MASK = new ShortMaxMask(true);
private static final ShortMaxMask FALSE_MASK = new ShortMaxMask(false);

View file

@ -455,8 +455,8 @@ public abstract class ShortVector extends AbstractVector<Short> {
@ForceInline
public static ShortVector zero(VectorSpecies<Short> species) {
ShortSpecies vsp = (ShortSpecies) species;
return VectorSupport.broadcastCoerced(vsp.vectorType(), short.class, species.length(),
0, vsp,
return VectorSupport.fromBitsCoerced(vsp.vectorType(), short.class, species.length(),
0, MODE_BROADCAST, vsp,
((bits_, s_) -> s_.rvOp(i -> bits_)));
}
@ -4143,9 +4143,9 @@ public abstract class ShortVector extends AbstractVector<Short> {
@ForceInline
final ShortVector broadcastBits(long bits) {
return (ShortVector)
VectorSupport.broadcastCoerced(
VectorSupport.fromBitsCoerced(
vectorType, short.class, laneCount,
bits, this,
bits, MODE_BROADCAST, this,
(bits_, s_) -> s_.rvOp(i -> bits_));
}

View file

@ -237,26 +237,25 @@ public abstract class VectorMask<E> extends jdk.internal.vm.vector.VectorSupport
*/
@ForceInline
public static <E> VectorMask<E> fromLong(VectorSpecies<E> species, long bits) {
AbstractSpecies<E> vspecies = (AbstractSpecies<E>) species;
int laneCount = vspecies.laneCount();
if (laneCount < Long.SIZE) {
int extraSignBits = Long.SIZE - laneCount;
bits <<= extraSignBits;
bits >>= extraSignBits;
}
if (bits == (bits >> 1)) {
// Special case.
assert(bits == 0 || bits == -1);
return vspecies.maskAll(bits != 0);
}
// FIXME: Intrinsify this.
long shifted = bits;
boolean[] a = new boolean[laneCount];
for (int i = 0; i < a.length; i++) {
a[i] = ((shifted & 1) != 0);
shifted >>= 1; // replicate sign bit
}
return fromValues(vspecies, a);
AbstractSpecies<E> vsp = (AbstractSpecies<E>) species;
bits = bits & (0xFFFFFFFFFFFFFFFFL >>> (64 - vsp.laneCount()));
return VectorSupport.fromBitsCoerced(vsp.maskType(), vsp.elementType(), vsp.laneCount(), bits,
VectorSupport.MODE_BITS_COERCED_LONG_TO_MASK, vsp,
(m, s) -> {
if (m == (m >> 1)) {
// Special case.
assert(m == 0 || m == -1);
return s.maskAll(m != 0);
}
long shifted = m;
boolean[] a = new boolean[s.laneCount()];
for (int i = 0; i < a.length; i++) {
a[i] = ((shifted & 1) != 0);
shifted >>= 1; // replicate sign bit
}
return fromValues(s, a);
});
}
/**

View file

@ -470,12 +470,12 @@ public abstract class $abstractvectortype$ extends AbstractVector<$Boxtype$> {
public static $abstractvectortype$ zero(VectorSpecies<$Boxtype$> species) {
$Type$Species vsp = ($Type$Species) species;
#if[FP]
return VectorSupport.broadcastCoerced(vsp.vectorType(), $type$.class, species.length(),
toBits(0.0f), vsp,
return VectorSupport.fromBitsCoerced(vsp.vectorType(), $type$.class, species.length(),
toBits(0.0f), MODE_BROADCAST, vsp,
((bits_, s_) -> s_.rvOp(i -> bits_)));
#else[FP]
return VectorSupport.broadcastCoerced(vsp.vectorType(), $type$.class, species.length(),
0, vsp,
return VectorSupport.fromBitsCoerced(vsp.vectorType(), $type$.class, species.length(),
0, MODE_BROADCAST, vsp,
((bits_, s_) -> s_.rvOp(i -> bits_)));
#end[FP]
}
@ -5327,9 +5327,9 @@ public abstract class $abstractvectortype$ extends AbstractVector<$Boxtype$> {
@ForceInline
final $abstractvectortype$ broadcastBits(long bits) {
return ($abstractvectortype$)
VectorSupport.broadcastCoerced(
VectorSupport.fromBitsCoerced(
vectorType, $type$.class, laneCount,
bits, this,
bits, MODE_BROADCAST, this,
(bits_, s_) -> s_.rvOp(i -> bits_));
}

View file

@ -1000,9 +1000,9 @@ final class $vectortype$ extends $abstractvectortype$ {
@ForceInline
/*package-private*/
static $masktype$ maskAll(boolean bit) {
return VectorSupport.broadcastCoerced($masktype$.class, $bitstype$.class, VLENGTH,
(bit ? -1 : 0), null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
return VectorSupport.fromBitsCoerced($masktype$.class, $bitstype$.class, VLENGTH,
(bit ? -1 : 0), MODE_BROADCAST, null,
(v, __) -> (v != 0 ? TRUE_MASK : FALSE_MASK));
}
private static final $masktype$ TRUE_MASK = new $masktype$(true);
private static final $masktype$ FALSE_MASK = new $masktype$(false);