< prev index next >
src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorShuffle.java
Print this page
@@ -144,12 +144,28 @@
* @param start starting value of sequence
* @return a shuffle of lane indexes
* @see Vector#shuffleIota(int)
*/
@ForceInline
+ @SuppressWarnings("unchecked")
public static <E> VectorShuffle<E> shuffleIota(VectorSpecies<E> species, int start) {
- return ((AbstractSpecies<E>) species).shuffleFromOpFactory.apply(i -> i + start);
+ Class<?> elementType = species.elementType();
+ if (elementType == byte.class) {
+ return (VectorShuffle) ByteVector.shuffleIotaHelper((VectorSpecies<Byte>) species, start);
+ } else if (elementType == short.class) {
+ return (VectorShuffle) ShortVector.shuffleIotaHelper((VectorSpecies<Short>) species, start);
+ } else if (elementType == int.class) {
+ return (VectorShuffle) IntVector.shuffleIotaHelper((VectorSpecies<Integer>) species, start);
+ } else if (elementType == long.class) {
+ return (VectorShuffle) LongVector.shuffleIotaHelper((VectorSpecies<Long>) species, start);
+ } else if (elementType == float.class) {
+ return (VectorShuffle) FloatVector.shuffleIotaHelper((VectorSpecies<Float>) species, start);
+ } else if (elementType == double.class) {
+ return (VectorShuffle) DoubleVector.shuffleIotaHelper((VectorSpecies<Double>) species, start);
+ } else {
+ throw new UnsupportedOperationException("Bad lane type for shuffleIota.");
+ }
}
/**
* Returns a shuffle with lane elements set to sequential {@code int} values starting from {@code start}
* and looping around species length.
< prev index next >