< prev index next >

src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LongMaxVector.java

Print this page
rev 55589 : 8221817: [vector] No suitable species for indexMap of Gather/Scatter VectorAPI
Reviewed-by: duke

*** 44,57 **** static final int LENGTH = SPECIES.length(); // Index vector species private static final IntVector.IntSpecies INDEX_SPEC; static { ! int bitSize = Vector.bitSizeForVectorLength(int.class, LENGTH); Vector.Shape shape = Shape.forBitSize(bitSize); INDEX_SPEC = (IntVector.IntSpecies) Species.of(int.class, shape); } private final long[] vec; // Don't access directly, use getElements() instead. private long[] getElements() { return VectorIntrinsics.maybeRebox(this).vec; --- 44,61 ---- static final int LENGTH = SPECIES.length(); // Index vector species private static final IntVector.IntSpecies INDEX_SPEC; + private static final Mask<Integer> INDEX_MASK; static { ! int bitSize = Vector.bitSizeForVectorLength(long.class, LENGTH); Vector.Shape shape = Shape.forBitSize(bitSize); INDEX_SPEC = (IntVector.IntSpecies) Species.of(int.class, shape); + boolean[] mask = new boolean[INDEX_SPEC.length()]; + Arrays.fill(mask, 0, LENGTH, true); + INDEX_MASK = IntVector.maskFromArray(INDEX_SPEC, mask, 0); } private final long[] vec; // Don't access directly, use getElements() instead. private long[] getElements() { return VectorIntrinsics.maybeRebox(this).vec;
*** 899,909 **** public void intoArray(long[] a, int ix, int[] b, int iy) { Objects.requireNonNull(a); Objects.requireNonNull(b); // Index vector: vix[0:n] = i -> ix + indexMap[iy + i] ! IntVector vix = IntVector.fromArray(INDEX_SPEC, b, iy).add(ix); vix = VectorIntrinsics.checkIndex(vix, a.length); VectorIntrinsics.storeWithMap(LongMaxVector.class, long.class, LENGTH, vix.getClass(), a, Unsafe.ARRAY_LONG_BASE_OFFSET, vix, --- 903,913 ---- public void intoArray(long[] a, int ix, int[] b, int iy) { Objects.requireNonNull(a); Objects.requireNonNull(b); // Index vector: vix[0:n] = i -> ix + indexMap[iy + i] ! IntVector vix = IntVector.fromArray(INDEX_SPEC, b, iy, INDEX_MASK).add(ix); vix = VectorIntrinsics.checkIndex(vix, a.length); VectorIntrinsics.storeWithMap(LongMaxVector.class, long.class, LENGTH, vix.getClass(), a, Unsafe.ARRAY_LONG_BASE_OFFSET, vix,
*** 1461,1470 **** --- 1465,1479 ---- IntVector.IntSpecies indexSpecies() { return INDEX_SPEC; } @Override + Mask<Integer> indexMask() { + return INDEX_MASK; + } + + @Override LongMaxVector op(FOp f) { long[] res = new long[length()]; for (int i = 0; i < length(); i++) { res[i] = f.apply(i); }
< prev index next >