mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8277997: Intrinsic creation for VectorMask.fromLong API
Reviewed-by: psandoz, kvn, sviswanathan
This commit is contained in:
parent
066b348dbc
commit
0113322ac1
81 changed files with 595 additions and 242 deletions
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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_));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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_));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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_));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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_));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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_));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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_));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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_));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue