mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
8268293: VectorAPI cast operation on mask and shuffle is broken
Reviewed-by: psandoz, sviswanathan
This commit is contained in:
parent
e2d7ec38af
commit
4099810b29
37 changed files with 353 additions and 900 deletions
|
@ -600,18 +600,10 @@ final class Byte128Vector extends ByteVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte128Vector.Byte128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short128Vector.Short128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int128Vector.Int128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long128Vector.Long128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float128Vector.Float128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double128Vector.Double128Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -782,24 +774,7 @@ final class Byte128Vector extends ByteVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte128Vector.Byte128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short128Vector.Short128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int128Vector.Int128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long128Vector.Long128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float128Vector.Float128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double128Vector.Double128Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -632,18 +632,10 @@ final class Byte256Vector extends ByteVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte256Vector.Byte256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short256Vector.Short256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int256Vector.Int256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long256Vector.Long256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float256Vector.Float256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double256Vector.Double256Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -814,24 +806,7 @@ final class Byte256Vector extends ByteVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte256Vector.Byte256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short256Vector.Short256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int256Vector.Int256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long256Vector.Long256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float256Vector.Float256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double256Vector.Double256Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -696,18 +696,10 @@ final class Byte512Vector extends ByteVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte512Vector.Byte512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short512Vector.Short512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int512Vector.Int512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long512Vector.Long512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float512Vector.Float512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double512Vector.Double512Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -878,24 +870,7 @@ final class Byte512Vector extends ByteVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte512Vector.Byte512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short512Vector.Short512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int512Vector.Int512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long512Vector.Long512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float512Vector.Float512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double512Vector.Double512Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -584,18 +584,10 @@ final class Byte64Vector extends ByteVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte64Vector.Byte64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short64Vector.Short64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int64Vector.Int64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long64Vector.Long64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float64Vector.Float64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double64Vector.Double64Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -766,24 +758,7 @@ final class Byte64Vector extends ByteVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte64Vector.Byte64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short64Vector.Short64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int64Vector.Int64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long64Vector.Long64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float64Vector.Float64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double64Vector.Double64Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -570,18 +570,10 @@ final class ByteMaxVector extends ByteVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new ByteMaxVector.ByteMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new ShortMaxVector.ShortMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new IntMaxVector.IntMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new LongMaxVector.LongMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new FloatMaxVector.FloatMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new DoubleMaxVector.DoubleMaxMask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -752,24 +744,7 @@ final class ByteMaxVector extends ByteVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new ByteMaxVector.ByteMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new ShortMaxVector.ShortMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new IntMaxVector.IntMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new LongMaxVector.LongMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new FloatMaxVector.FloatMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new DoubleMaxVector.DoubleMaxShuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -568,18 +568,10 @@ final class Double128Vector extends DoubleVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte128Vector.Byte128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short128Vector.Short128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int128Vector.Int128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long128Vector.Long128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float128Vector.Float128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double128Vector.Double128Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -750,24 +742,7 @@ final class Double128Vector extends DoubleVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte128Vector.Byte128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short128Vector.Short128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int128Vector.Int128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long128Vector.Long128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float128Vector.Float128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double128Vector.Double128Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -572,18 +572,10 @@ final class Double256Vector extends DoubleVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte256Vector.Byte256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short256Vector.Short256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int256Vector.Int256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long256Vector.Long256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float256Vector.Float256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double256Vector.Double256Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -754,24 +746,7 @@ final class Double256Vector extends DoubleVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte256Vector.Byte256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short256Vector.Short256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int256Vector.Int256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long256Vector.Long256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float256Vector.Float256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double256Vector.Double256Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -580,18 +580,10 @@ final class Double512Vector extends DoubleVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte512Vector.Byte512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short512Vector.Short512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int512Vector.Int512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long512Vector.Long512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float512Vector.Float512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double512Vector.Double512Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -762,24 +754,7 @@ final class Double512Vector extends DoubleVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte512Vector.Byte512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short512Vector.Short512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int512Vector.Int512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long512Vector.Long512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float512Vector.Float512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double512Vector.Double512Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -566,18 +566,10 @@ final class Double64Vector extends DoubleVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte64Vector.Byte64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short64Vector.Short64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int64Vector.Int64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long64Vector.Long64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float64Vector.Float64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double64Vector.Double64Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -748,24 +740,7 @@ final class Double64Vector extends DoubleVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte64Vector.Byte64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short64Vector.Short64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int64Vector.Int64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long64Vector.Long64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float64Vector.Float64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double64Vector.Double64Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -565,18 +565,10 @@ final class DoubleMaxVector extends DoubleVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new ByteMaxVector.ByteMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new ShortMaxVector.ShortMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new IntMaxVector.IntMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new LongMaxVector.LongMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new FloatMaxVector.FloatMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new DoubleMaxVector.DoubleMaxMask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -747,24 +739,7 @@ final class DoubleMaxVector extends DoubleVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new ByteMaxVector.ByteMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new ShortMaxVector.ShortMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new IntMaxVector.IntMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new LongMaxVector.LongMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new FloatMaxVector.FloatMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new DoubleMaxVector.DoubleMaxShuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -572,18 +572,10 @@ final class Float128Vector extends FloatVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte128Vector.Byte128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short128Vector.Short128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int128Vector.Int128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long128Vector.Long128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float128Vector.Float128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double128Vector.Double128Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -754,24 +746,7 @@ final class Float128Vector extends FloatVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte128Vector.Byte128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short128Vector.Short128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int128Vector.Int128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long128Vector.Long128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float128Vector.Float128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double128Vector.Double128Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -580,18 +580,10 @@ final class Float256Vector extends FloatVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte256Vector.Byte256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short256Vector.Short256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int256Vector.Int256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long256Vector.Long256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float256Vector.Float256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double256Vector.Double256Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -762,24 +754,7 @@ final class Float256Vector extends FloatVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte256Vector.Byte256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short256Vector.Short256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int256Vector.Int256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long256Vector.Long256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float256Vector.Float256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double256Vector.Double256Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -596,18 +596,10 @@ final class Float512Vector extends FloatVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte512Vector.Byte512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short512Vector.Short512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int512Vector.Int512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long512Vector.Long512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float512Vector.Float512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double512Vector.Double512Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -778,24 +770,7 @@ final class Float512Vector extends FloatVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte512Vector.Byte512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short512Vector.Short512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int512Vector.Int512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long512Vector.Long512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float512Vector.Float512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double512Vector.Double512Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -568,18 +568,10 @@ final class Float64Vector extends FloatVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte64Vector.Byte64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short64Vector.Short64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int64Vector.Int64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long64Vector.Long64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float64Vector.Float64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double64Vector.Double64Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -750,24 +742,7 @@ final class Float64Vector extends FloatVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte64Vector.Byte64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short64Vector.Short64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int64Vector.Int64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long64Vector.Long64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float64Vector.Float64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double64Vector.Double64Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -565,18 +565,10 @@ final class FloatMaxVector extends FloatVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new ByteMaxVector.ByteMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new ShortMaxVector.ShortMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new IntMaxVector.IntMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new LongMaxVector.LongMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new FloatMaxVector.FloatMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new DoubleMaxVector.DoubleMaxMask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -747,24 +739,7 @@ final class FloatMaxVector extends FloatVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new ByteMaxVector.ByteMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new ShortMaxVector.ShortMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new IntMaxVector.IntMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new LongMaxVector.LongMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new FloatMaxVector.FloatMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new DoubleMaxVector.DoubleMaxShuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -576,18 +576,10 @@ final class Int128Vector extends IntVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte128Vector.Byte128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short128Vector.Short128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int128Vector.Int128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long128Vector.Long128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float128Vector.Float128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double128Vector.Double128Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -758,24 +750,7 @@ final class Int128Vector extends IntVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte128Vector.Byte128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short128Vector.Short128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int128Vector.Int128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long128Vector.Long128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float128Vector.Float128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double128Vector.Double128Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -584,18 +584,10 @@ final class Int256Vector extends IntVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte256Vector.Byte256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short256Vector.Short256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int256Vector.Int256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long256Vector.Long256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float256Vector.Float256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double256Vector.Double256Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -766,24 +758,7 @@ final class Int256Vector extends IntVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte256Vector.Byte256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short256Vector.Short256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int256Vector.Int256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long256Vector.Long256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float256Vector.Float256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double256Vector.Double256Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -600,18 +600,10 @@ final class Int512Vector extends IntVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte512Vector.Byte512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short512Vector.Short512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int512Vector.Int512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long512Vector.Long512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float512Vector.Float512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double512Vector.Double512Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -782,24 +774,7 @@ final class Int512Vector extends IntVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte512Vector.Byte512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short512Vector.Short512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int512Vector.Int512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long512Vector.Long512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float512Vector.Float512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double512Vector.Double512Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -572,18 +572,10 @@ final class Int64Vector extends IntVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte64Vector.Byte64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short64Vector.Short64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int64Vector.Int64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long64Vector.Long64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float64Vector.Float64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double64Vector.Double64Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -754,24 +746,7 @@ final class Int64Vector extends IntVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte64Vector.Byte64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short64Vector.Short64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int64Vector.Int64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long64Vector.Long64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float64Vector.Float64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double64Vector.Double64Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -570,18 +570,10 @@ final class IntMaxVector extends IntVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new ByteMaxVector.ByteMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new ShortMaxVector.ShortMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new IntMaxVector.IntMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new LongMaxVector.LongMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new FloatMaxVector.FloatMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new DoubleMaxVector.DoubleMaxMask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -763,24 +755,7 @@ final class IntMaxVector extends IntVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new ByteMaxVector.ByteMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new ShortMaxVector.ShortMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new IntMaxVector.IntMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new LongMaxVector.LongMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new FloatMaxVector.FloatMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new DoubleMaxVector.DoubleMaxShuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -562,18 +562,10 @@ final class Long128Vector extends LongVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte128Vector.Byte128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short128Vector.Short128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int128Vector.Int128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long128Vector.Long128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float128Vector.Float128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double128Vector.Double128Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -744,24 +736,7 @@ final class Long128Vector extends LongVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte128Vector.Byte128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short128Vector.Short128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int128Vector.Int128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long128Vector.Long128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float128Vector.Float128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double128Vector.Double128Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -566,18 +566,10 @@ final class Long256Vector extends LongVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte256Vector.Byte256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short256Vector.Short256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int256Vector.Int256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long256Vector.Long256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float256Vector.Float256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double256Vector.Double256Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -748,24 +740,7 @@ final class Long256Vector extends LongVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte256Vector.Byte256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short256Vector.Short256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int256Vector.Int256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long256Vector.Long256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float256Vector.Float256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double256Vector.Double256Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -574,18 +574,10 @@ final class Long512Vector extends LongVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte512Vector.Byte512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short512Vector.Short512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int512Vector.Int512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long512Vector.Long512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float512Vector.Float512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double512Vector.Double512Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -756,24 +748,7 @@ final class Long512Vector extends LongVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte512Vector.Byte512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short512Vector.Short512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int512Vector.Int512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long512Vector.Long512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float512Vector.Float512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double512Vector.Double512Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -560,18 +560,10 @@ final class Long64Vector extends LongVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte64Vector.Byte64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short64Vector.Short64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int64Vector.Int64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long64Vector.Long64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float64Vector.Float64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double64Vector.Double64Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -742,24 +734,7 @@ final class Long64Vector extends LongVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte64Vector.Byte64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short64Vector.Short64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int64Vector.Int64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long64Vector.Long64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float64Vector.Float64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double64Vector.Double64Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -560,18 +560,10 @@ final class LongMaxVector extends LongVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new ByteMaxVector.ByteMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new ShortMaxVector.ShortMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new IntMaxVector.IntMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new LongMaxVector.LongMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new FloatMaxVector.FloatMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new DoubleMaxVector.DoubleMaxMask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -742,24 +734,7 @@ final class LongMaxVector extends LongVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new ByteMaxVector.ByteMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new ShortMaxVector.ShortMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new IntMaxVector.IntMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new LongMaxVector.LongMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new FloatMaxVector.FloatMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new DoubleMaxVector.DoubleMaxShuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -584,18 +584,10 @@ final class Short128Vector extends ShortVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte128Vector.Byte128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short128Vector.Short128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int128Vector.Int128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long128Vector.Long128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float128Vector.Float128Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double128Vector.Double128Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -766,24 +758,7 @@ final class Short128Vector extends ShortVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte128Vector.Byte128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short128Vector.Short128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int128Vector.Int128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long128Vector.Long128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float128Vector.Float128Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double128Vector.Double128Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -600,18 +600,10 @@ final class Short256Vector extends ShortVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte256Vector.Byte256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short256Vector.Short256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int256Vector.Int256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long256Vector.Long256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float256Vector.Float256Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double256Vector.Double256Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -782,24 +774,7 @@ final class Short256Vector extends ShortVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte256Vector.Byte256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short256Vector.Short256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int256Vector.Int256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long256Vector.Long256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float256Vector.Float256Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double256Vector.Double256Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -632,18 +632,10 @@ final class Short512Vector extends ShortVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte512Vector.Byte512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short512Vector.Short512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int512Vector.Int512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long512Vector.Long512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float512Vector.Float512Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double512Vector.Double512Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -814,24 +806,7 @@ final class Short512Vector extends ShortVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte512Vector.Byte512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short512Vector.Short512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int512Vector.Int512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long512Vector.Long512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float512Vector.Float512Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double512Vector.Double512Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -576,18 +576,10 @@ final class Short64Vector extends ShortVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte64Vector.Byte64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short64Vector.Short64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int64Vector.Int64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long64Vector.Long64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float64Vector.Float64Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double64Vector.Double64Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -758,24 +750,7 @@ final class Short64Vector extends ShortVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte64Vector.Byte64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short64Vector.Short64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int64Vector.Int64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long64Vector.Long64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float64Vector.Float64Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double64Vector.Double64Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -570,18 +570,10 @@ final class ShortMaxVector extends ShortVector {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new ByteMaxVector.ByteMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new ShortMaxVector.ShortMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new IntMaxVector.IntMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new LongMaxVector.LongMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new FloatMaxVector.FloatMaxMask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new DoubleMaxVector.DoubleMaxMask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -752,24 +744,7 @@ final class ShortMaxVector extends ShortVector {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new ByteMaxVector.ByteMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new ShortMaxVector.ShortMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new IntMaxVector.IntMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new LongMaxVector.LongMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new FloatMaxVector.FloatMaxShuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new DoubleMaxVector.DoubleMaxShuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
|
@ -843,18 +843,10 @@ final class $vectortype$ extends $abstractvectortype$ {
|
|||
@ForceInline
|
||||
private final <E>
|
||||
VectorMask<E> defaultMaskCast(AbstractSpecies<E> dsp) {
|
||||
assert(length() == dsp.laneCount());
|
||||
if (length() != dsp.laneCount())
|
||||
throw new IllegalArgumentException("VectorMask length and species length differ");
|
||||
boolean[] maskArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
return switch (dsp.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE -> new Byte$bits$Vector.Byte$bits$Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_SHORT -> new Short$bits$Vector.Short$bits$Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_INT -> new Int$bits$Vector.Int$bits$Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_LONG -> new Long$bits$Vector.Long$bits$Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_FLOAT -> new Float$bits$Vector.Float$bits$Mask(maskArray).check(dsp);
|
||||
case LaneType.SK_DOUBLE -> new Double$bits$Vector.Double$bits$Mask(maskArray).check(dsp);
|
||||
default -> throw new AssertionError(dsp);
|
||||
};
|
||||
return dsp.maskFactory(maskArray).check(dsp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1040,24 +1032,7 @@ final class $vectortype$ extends $abstractvectortype$ {
|
|||
if (length() != species.laneCount())
|
||||
throw new IllegalArgumentException("VectorShuffle length and species length differ");
|
||||
int[] shuffleArray = toArray();
|
||||
// enum-switches don't optimize properly JDK-8161245
|
||||
switch (species.laneType.switchKey) {
|
||||
case LaneType.SK_BYTE:
|
||||
return new Byte$bits$Vector.Byte$bits$Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_SHORT:
|
||||
return new Short$bits$Vector.Short$bits$Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_INT:
|
||||
return new Int$bits$Vector.Int$bits$Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_LONG:
|
||||
return new Long$bits$Vector.Long$bits$Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_FLOAT:
|
||||
return new Float$bits$Vector.Float$bits$Shuffle(shuffleArray).check(species);
|
||||
case LaneType.SK_DOUBLE:
|
||||
return new Double$bits$Vector.Double$bits$Shuffle(shuffleArray).check(species);
|
||||
}
|
||||
|
||||
// Should not reach here.
|
||||
throw new AssertionError(species);
|
||||
return s.shuffleFromArray(shuffleArray, 0).check(s);
|
||||
}
|
||||
|
||||
@ForceInline
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue