< prev index next >
src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte128Vector.java
Print this page
rev 54658 : refactored mask and shuffle creation methods, moved classes to top-level
rev 54660 : Javadoc changes
*** 168,208 ****
Class<?> stype = s.elementType();
if (stype == byte.class) {
byte[] a = new byte[limit];
for (int i = 0; i < limit; i++) {
! a[i] = (byte) this.get(i);
}
return (Vector) ByteVector.fromArray((VectorSpecies<Byte>) s, a, 0);
} else if (stype == short.class) {
short[] a = new short[limit];
for (int i = 0; i < limit; i++) {
! a[i] = (short) this.get(i);
}
return (Vector) ShortVector.fromArray((VectorSpecies<Short>) s, a, 0);
} else if (stype == int.class) {
int[] a = new int[limit];
for (int i = 0; i < limit; i++) {
! a[i] = (int) this.get(i);
}
return (Vector) IntVector.fromArray((VectorSpecies<Integer>) s, a, 0);
} else if (stype == long.class) {
long[] a = new long[limit];
for (int i = 0; i < limit; i++) {
! a[i] = (long) this.get(i);
}
return (Vector) LongVector.fromArray((VectorSpecies<Long>) s, a, 0);
} else if (stype == float.class) {
float[] a = new float[limit];
for (int i = 0; i < limit; i++) {
! a[i] = (float) this.get(i);
}
return (Vector) FloatVector.fromArray((VectorSpecies<Float>) s, a, 0);
} else if (stype == double.class) {
double[] a = new double[limit];
for (int i = 0; i < limit; i++) {
! a[i] = (double) this.get(i);
}
return (Vector) DoubleVector.fromArray((VectorSpecies<Double>) s, a, 0);
} else {
throw new UnsupportedOperationException("Bad lane type for casting.");
}
--- 168,208 ----
Class<?> stype = s.elementType();
if (stype == byte.class) {
byte[] a = new byte[limit];
for (int i = 0; i < limit; i++) {
! a[i] = (byte) this.lane(i);
}
return (Vector) ByteVector.fromArray((VectorSpecies<Byte>) s, a, 0);
} else if (stype == short.class) {
short[] a = new short[limit];
for (int i = 0; i < limit; i++) {
! a[i] = (short) this.lane(i);
}
return (Vector) ShortVector.fromArray((VectorSpecies<Short>) s, a, 0);
} else if (stype == int.class) {
int[] a = new int[limit];
for (int i = 0; i < limit; i++) {
! a[i] = (int) this.lane(i);
}
return (Vector) IntVector.fromArray((VectorSpecies<Integer>) s, a, 0);
} else if (stype == long.class) {
long[] a = new long[limit];
for (int i = 0; i < limit; i++) {
! a[i] = (long) this.lane(i);
}
return (Vector) LongVector.fromArray((VectorSpecies<Long>) s, a, 0);
} else if (stype == float.class) {
float[] a = new float[limit];
for (int i = 0; i < limit; i++) {
! a[i] = (float) this.lane(i);
}
return (Vector) FloatVector.fromArray((VectorSpecies<Float>) s, a, 0);
} else if (stype == double.class) {
double[] a = new double[limit];
for (int i = 0; i < limit; i++) {
! a[i] = (double) this.lane(i);
}
return (Vector) DoubleVector.fromArray((VectorSpecies<Double>) s, a, 0);
} else {
throw new UnsupportedOperationException("Bad lane type for casting.");
}
*** 1087,1098 ****
return VectorIntrinsics.rearrangeOp(
Byte128Vector.class, Byte128Shuffle.class, byte.class, LENGTH,
this, s,
(v1, s_) -> v1.uOp((i, a) -> {
! int ei = s_.getElement(i);
! return v1.get(ei);
}));
}
@Override
@ForceInline
--- 1087,1098 ----
return VectorIntrinsics.rearrangeOp(
Byte128Vector.class, Byte128Shuffle.class, byte.class, LENGTH,
this, s,
(v1, s_) -> v1.uOp((i, a) -> {
! int ei = s_.lane(i);
! return v1.lane(ei);
}));
}
@Override
@ForceInline
*** 1103,1119 ****
Byte128Mask m = (Byte128Mask)o2;
return VectorIntrinsics.blend(
Byte128Vector.class, Byte128Mask.class, byte.class, LENGTH,
this, v, m,
! (v1, v2, m_) -> v1.bOp(v2, (i, a, b) -> m_.getElement(i) ? b : a));
}
// Accessors
@Override
! public byte get(int i) {
if (i < 0 || i >= LENGTH) {
throw new IllegalArgumentException("Index " + i + " must be zero or positive, and less than " + LENGTH);
}
return (byte) VectorIntrinsics.extract(
Byte128Vector.class, byte.class, LENGTH,
--- 1103,1119 ----
Byte128Mask m = (Byte128Mask)o2;
return VectorIntrinsics.blend(
Byte128Vector.class, Byte128Mask.class, byte.class, LENGTH,
this, v, m,
! (v1, v2, m_) -> v1.bOp(v2, (i, a, b) -> m_.lane(i) ? b : a));
}
// Accessors
@Override
! public byte lane(int i) {
if (i < 0 || i >= LENGTH) {
throw new IllegalArgumentException("Index " + i + " must be zero or positive, and less than " + LENGTH);
}
return (byte) VectorIntrinsics.extract(
Byte128Vector.class, byte.class, LENGTH,
*** 1310,1320 ****
@Override
public ByteVector toVector() {
byte[] va = new byte[SPECIES.length()];
for (int i = 0; i < va.length; i++) {
! va[i] = (byte) getElement(i);
}
return ByteVector.fromArray(SPECIES, va, 0);
}
@Override
--- 1310,1320 ----
@Override
public ByteVector toVector() {
byte[] va = new byte[SPECIES.length()];
for (int i = 0; i < va.length; i++) {
! va[i] = (byte) lane(i);
}
return ByteVector.fromArray(SPECIES, va, 0);
}
@Override
< prev index next >