< prev index next >
src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-VectorBits.java.template
Print this page
rev 54658 : refactored mask and shuffle creation methods, moved classes to top-level
rev 54660 : Javadoc changes
*** 185,225 ****
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.");
}
--- 185,225 ----
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.");
}
*** 1628,1639 ****
return VectorIntrinsics.rearrangeOp(
$vectortype$.class, $shuffletype$.class, $type$.class, LENGTH,
this, s,
(v1, s_) -> v1.uOp((i, a) -> {
! int ei = s_.getElement(i);
! return v1.get(ei);
}));
}
@Override
@ForceInline
--- 1628,1639 ----
return VectorIntrinsics.rearrangeOp(
$vectortype$.class, $shuffletype$.class, $type$.class, LENGTH,
this, s,
(v1, s_) -> v1.uOp((i, a) -> {
! int ei = s_.lane(i);
! return v1.lane(ei);
}));
}
@Override
@ForceInline
*** 1644,1661 ****
$masktype$ m = ($masktype$)o2;
return VectorIntrinsics.blend(
$vectortype$.class, $masktype$.class, $type$.class, LENGTH,
this, v, m,
! (v1, v2, m_) -> v1.bOp(v2, (i, a, b) -> m_.getElement(i) ? b : a));
}
// Accessors
#if[FP]
@Override
! public $type$ get(int i) {
if (i < 0 || i >= LENGTH) {
throw new IllegalArgumentException("Index " + i + " must be zero or positive, and less than " + LENGTH);
}
$bitstype$ bits = ($bitstype$) VectorIntrinsics.extract(
$vectortype$.class, $type$.class, LENGTH,
--- 1644,1661 ----
$masktype$ m = ($masktype$)o2;
return VectorIntrinsics.blend(
$vectortype$.class, $masktype$.class, $type$.class, LENGTH,
this, v, m,
! (v1, v2, m_) -> v1.bOp(v2, (i, a, b) -> m_.lane(i) ? b : a));
}
// Accessors
#if[FP]
@Override
! public $type$ lane(int i) {
if (i < 0 || i >= LENGTH) {
throw new IllegalArgumentException("Index " + i + " must be zero or positive, and less than " + LENGTH);
}
$bitstype$ bits = ($bitstype$) VectorIntrinsics.extract(
$vectortype$.class, $type$.class, LENGTH,
*** 1681,1691 ****
return new $vectortype$(res);
});
}
#else[FP]
@Override
! public $type$ get(int i) {
if (i < 0 || i >= LENGTH) {
throw new IllegalArgumentException("Index " + i + " must be zero or positive, and less than " + LENGTH);
}
return ($type$) VectorIntrinsics.extract(
$vectortype$.class, $type$.class, LENGTH,
--- 1681,1691 ----
return new $vectortype$(res);
});
}
#else[FP]
@Override
! public $type$ lane(int i) {
if (i < 0 || i >= LENGTH) {
throw new IllegalArgumentException("Index " + i + " must be zero or positive, and less than " + LENGTH);
}
return ($type$) VectorIntrinsics.extract(
$vectortype$.class, $type$.class, LENGTH,
*** 1883,1893 ****
@Override
public $abstractvectortype$ toVector() {
$type$[] va = new $type$[SPECIES.length()];
for (int i = 0; i < va.length; i++) {
! va[i] = ($type$) getElement(i);
}
return $abstractvectortype$.fromArray(SPECIES, va, 0);
}
@Override
--- 1883,1893 ----
@Override
public $abstractvectortype$ toVector() {
$type$[] va = new $type$[SPECIES.length()];
for (int i = 0; i < va.length; i++) {
! va[i] = ($type$) lane(i);
}
return $abstractvectortype$.fromArray(SPECIES, va, 0);
}
@Override
< prev index next >