< prev index next >
src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LongVector.java
Print this page
rev 55589 : 8221817: [vector] No suitable species for indexMap of Gather/Scatter VectorAPI
Reviewed-by: duke
*** 260,270 ****
if (species.length() == 1) {
return LongVector.fromArray(species, a, i + indexMap[j]);
}
// Index vector: vix[0:n] = k -> i + indexMap[j + i]
! IntVector vix = IntVector.fromArray(species.indexSpecies(), indexMap, j).add(i);
vix = VectorIntrinsics.checkIndex(vix, a.length);
return VectorIntrinsics.loadWithMap((Class<LongVector>) species.boxType(), long.class, species.length(),
species.indexSpecies().vectorType(), a, Unsafe.ARRAY_LONG_BASE_OFFSET, vix,
--- 260,275 ----
if (species.length() == 1) {
return LongVector.fromArray(species, a, i + indexMap[j]);
}
// Index vector: vix[0:n] = k -> i + indexMap[j + i]
! IntVector vix;
! if (species.indexMask() != null) {
! vix = IntVector.fromArray(species.indexSpecies(), indexMap, j, species.indexMask()).add(i);
! } else {
! vix = IntVector.fromArray(species.indexSpecies(), indexMap, j).add(i);
! }
vix = VectorIntrinsics.checkIndex(vix, a.length);
return VectorIntrinsics.loadWithMap((Class<LongVector>) species.boxType(), long.class, species.length(),
species.indexSpecies().vectorType(), a, Unsafe.ARRAY_LONG_BASE_OFFSET, vix,
*** 1642,1651 ****
--- 1647,1657 ----
abstract Mask<Long> opm(FOpm f);
abstract IntVector.IntSpecies indexSpecies();
+ abstract Mask<Integer> indexMask();
// Factories
@Override
public abstract LongVector zero();
< prev index next >