< prev index next >
src/jdk.incubator.vector/share/classes/jdk/incubator/vector/FloatVector.java
Print this page
rev 58165 : Fix the issue that unslice modifies the argument vector
Summary: Change the name of getElements() to vec() and clone argument value to
avoid it being modified
*** 87,97 ****
// and lazy version of C++ templates.
// Virtualized getter
/*package-private*/
! abstract float[] getElements();
// Virtualized constructors
/**
* Build a vector directly using my own constructor.
--- 87,97 ----
// and lazy version of C++ templates.
// Virtualized getter
/*package-private*/
! abstract float[] vec();
// Virtualized constructors
/**
* Build a vector directly using my own constructor.
*** 151,161 ****
abstract
FloatVector uOp(FUnOp f);
@ForceInline
final
FloatVector uOpTemplate(FUnOp f) {
! float[] vec = getElements();
float[] res = new float[length()];
for (int i = 0; i < res.length; i++) {
res[i] = f.apply(i, vec[i]);
}
return vectorFactory(res);
--- 151,161 ----
abstract
FloatVector uOp(FUnOp f);
@ForceInline
final
FloatVector uOpTemplate(FUnOp f) {
! float[] vec = vec();
float[] res = new float[length()];
for (int i = 0; i < res.length; i++) {
res[i] = f.apply(i, vec[i]);
}
return vectorFactory(res);
*** 167,177 ****
FUnOp f);
@ForceInline
final
FloatVector uOpTemplate(VectorMask<Float> m,
FUnOp f) {
! float[] vec = getElements();
float[] res = new float[length()];
boolean[] mbits = ((AbstractMask<Float>)m).getBits();
for (int i = 0; i < res.length; i++) {
res[i] = mbits[i] ? f.apply(i, vec[i]) : vec[i];
}
--- 167,177 ----
FUnOp f);
@ForceInline
final
FloatVector uOpTemplate(VectorMask<Float> m,
FUnOp f) {
! float[] vec = vec();
float[] res = new float[length()];
boolean[] mbits = ((AbstractMask<Float>)m).getBits();
for (int i = 0; i < res.length; i++) {
res[i] = mbits[i] ? f.apply(i, vec[i]) : vec[i];
}
*** 192,203 ****
@ForceInline
final
FloatVector bOpTemplate(Vector<Float> o,
FBinOp f) {
float[] res = new float[length()];
! float[] vec1 = this.getElements();
! float[] vec2 = ((FloatVector)o).getElements();
for (int i = 0; i < res.length; i++) {
res[i] = f.apply(i, vec1[i], vec2[i]);
}
return vectorFactory(res);
}
--- 192,203 ----
@ForceInline
final
FloatVector bOpTemplate(Vector<Float> o,
FBinOp f) {
float[] res = new float[length()];
! float[] vec1 = this.vec();
! float[] vec2 = ((FloatVector)o).vec();
for (int i = 0; i < res.length; i++) {
res[i] = f.apply(i, vec1[i], vec2[i]);
}
return vectorFactory(res);
}
*** 211,222 ****
final
FloatVector bOpTemplate(Vector<Float> o,
VectorMask<Float> m,
FBinOp f) {
float[] res = new float[length()];
! float[] vec1 = this.getElements();
! float[] vec2 = ((FloatVector)o).getElements();
boolean[] mbits = ((AbstractMask<Float>)m).getBits();
for (int i = 0; i < res.length; i++) {
res[i] = mbits[i] ? f.apply(i, vec1[i], vec2[i]) : vec1[i];
}
return vectorFactory(res);
--- 211,222 ----
final
FloatVector bOpTemplate(Vector<Float> o,
VectorMask<Float> m,
FBinOp f) {
float[] res = new float[length()];
! float[] vec1 = this.vec();
! float[] vec2 = ((FloatVector)o).vec();
boolean[] mbits = ((AbstractMask<Float>)m).getBits();
for (int i = 0; i < res.length; i++) {
res[i] = mbits[i] ? f.apply(i, vec1[i], vec2[i]) : vec1[i];
}
return vectorFactory(res);
*** 238,250 ****
final
FloatVector tOpTemplate(Vector<Float> o1,
Vector<Float> o2,
FTriOp f) {
float[] res = new float[length()];
! float[] vec1 = this.getElements();
! float[] vec2 = ((FloatVector)o1).getElements();
! float[] vec3 = ((FloatVector)o2).getElements();
for (int i = 0; i < res.length; i++) {
res[i] = f.apply(i, vec1[i], vec2[i], vec3[i]);
}
return vectorFactory(res);
}
--- 238,250 ----
final
FloatVector tOpTemplate(Vector<Float> o1,
Vector<Float> o2,
FTriOp f) {
float[] res = new float[length()];
! float[] vec1 = this.vec();
! float[] vec2 = ((FloatVector)o1).vec();
! float[] vec3 = ((FloatVector)o2).vec();
for (int i = 0; i < res.length; i++) {
res[i] = f.apply(i, vec1[i], vec2[i], vec3[i]);
}
return vectorFactory(res);
}
*** 260,272 ****
FloatVector tOpTemplate(Vector<Float> o1,
Vector<Float> o2,
VectorMask<Float> m,
FTriOp f) {
float[] res = new float[length()];
! float[] vec1 = this.getElements();
! float[] vec2 = ((FloatVector)o1).getElements();
! float[] vec3 = ((FloatVector)o2).getElements();
boolean[] mbits = ((AbstractMask<Float>)m).getBits();
for (int i = 0; i < res.length; i++) {
res[i] = mbits[i] ? f.apply(i, vec1[i], vec2[i], vec3[i]) : vec1[i];
}
return vectorFactory(res);
--- 260,272 ----
FloatVector tOpTemplate(Vector<Float> o1,
Vector<Float> o2,
VectorMask<Float> m,
FTriOp f) {
float[] res = new float[length()];
! float[] vec1 = this.vec();
! float[] vec2 = ((FloatVector)o1).vec();
! float[] vec3 = ((FloatVector)o2).vec();
boolean[] mbits = ((AbstractMask<Float>)m).getBits();
for (int i = 0; i < res.length; i++) {
res[i] = mbits[i] ? f.apply(i, vec1[i], vec2[i], vec3[i]) : vec1[i];
}
return vectorFactory(res);
*** 278,288 ****
abstract
float rOp(float v, FBinOp f);
@ForceInline
final
float rOpTemplate(float v, FBinOp f) {
! float[] vec = getElements();
for (int i = 0; i < vec.length; i++) {
v = f.apply(i, v, vec[i]);
}
return v;
}
--- 278,288 ----
abstract
float rOp(float v, FBinOp f);
@ForceInline
final
float rOpTemplate(float v, FBinOp f) {
! float[] vec = vec();
for (int i = 0; i < vec.length; i++) {
v = f.apply(i, v, vec[i]);
}
return v;
}
*** 297,307 ****
/*package-private*/
@ForceInline
final
<M> FloatVector ldOp(M memory, int offset,
FLdOp<M> f) {
! //dummy; no vec = getElements();
float[] res = new float[length()];
for (int i = 0; i < res.length; i++) {
res[i] = f.apply(memory, offset, i);
}
return vectorFactory(res);
--- 297,307 ----
/*package-private*/
@ForceInline
final
<M> FloatVector ldOp(M memory, int offset,
FLdOp<M> f) {
! //dummy; no vec = vec();
float[] res = new float[length()];
for (int i = 0; i < res.length; i++) {
res[i] = f.apply(memory, offset, i);
}
return vectorFactory(res);
*** 311,321 ****
@ForceInline
final
<M> FloatVector ldOp(M memory, int offset,
VectorMask<Float> m,
FLdOp<M> f) {
! //float[] vec = getElements();
float[] res = new float[length()];
boolean[] mbits = ((AbstractMask<Float>)m).getBits();
for (int i = 0; i < res.length; i++) {
if (mbits[i]) {
res[i] = f.apply(memory, offset, i);
--- 311,321 ----
@ForceInline
final
<M> FloatVector ldOp(M memory, int offset,
VectorMask<Float> m,
FLdOp<M> f) {
! //float[] vec = vec();
float[] res = new float[length()];
boolean[] mbits = ((AbstractMask<Float>)m).getBits();
for (int i = 0; i < res.length; i++) {
if (mbits[i]) {
res[i] = f.apply(memory, offset, i);
*** 331,341 ****
/*package-private*/
@ForceInline
final
<M> void stOp(M memory, int offset,
FStOp<M> f) {
! float[] vec = getElements();
for (int i = 0; i < vec.length; i++) {
f.apply(memory, offset, i, vec[i]);
}
}
--- 331,341 ----
/*package-private*/
@ForceInline
final
<M> void stOp(M memory, int offset,
FStOp<M> f) {
! float[] vec = vec();
for (int i = 0; i < vec.length; i++) {
f.apply(memory, offset, i, vec[i]);
}
}
*** 343,353 ****
@ForceInline
final
<M> void stOp(M memory, int offset,
VectorMask<Float> m,
FStOp<M> f) {
! float[] vec = getElements();
boolean[] mbits = ((AbstractMask<Float>)m).getBits();
for (int i = 0; i < vec.length; i++) {
if (mbits[i]) {
f.apply(memory, offset, i, vec[i]);
}
--- 343,353 ----
@ForceInline
final
<M> void stOp(M memory, int offset,
VectorMask<Float> m,
FStOp<M> f) {
! float[] vec = vec();
boolean[] mbits = ((AbstractMask<Float>)m).getBits();
for (int i = 0; i < vec.length; i++) {
if (mbits[i]) {
f.apply(memory, offset, i, vec[i]);
}
*** 365,376 ****
@ForceInline
final
AbstractMask<Float> bTest(int cond,
Vector<Float> o,
FBinTest f) {
! float[] vec1 = getElements();
! float[] vec2 = ((FloatVector)o).getElements();
boolean[] bits = new boolean[length()];
for (int i = 0; i < length(); i++){
bits[i] = f.apply(cond, i, vec1[i], vec2[i]);
}
return maskFactory(bits);
--- 365,376 ----
@ForceInline
final
AbstractMask<Float> bTest(int cond,
Vector<Float> o,
FBinTest f) {
! float[] vec1 = vec();
! float[] vec2 = ((FloatVector)o).vec();
boolean[] bits = new boolean[length()];
for (int i = 0; i < length(); i++){
bits[i] = f.apply(cond, i, vec1[i], vec2[i]);
}
return maskFactory(bits);
*** 1944,1955 ****
final
@ForceInline
FloatVector sliceTemplate(int origin, Vector<Float> v1) {
FloatVector that = (FloatVector) v1;
that.check(this);
! float[] a0 = this.getElements();
! float[] a1 = that.getElements();
float[] res = new float[a0.length];
int vlen = res.length;
int firstPart = vlen - origin;
System.arraycopy(a0, origin, res, 0, firstPart);
System.arraycopy(a1, 0, res, firstPart, origin);
--- 1944,1955 ----
final
@ForceInline
FloatVector sliceTemplate(int origin, Vector<Float> v1) {
FloatVector that = (FloatVector) v1;
that.check(this);
! float[] a0 = this.vec();
! float[] a1 = that.vec();
float[] res = new float[a0.length];
int vlen = res.length;
int firstPart = vlen - origin;
System.arraycopy(a0, origin, res, 0, firstPart);
System.arraycopy(a1, 0, res, firstPart, origin);
*** 1987,1998 ****
@ForceInline
FloatVector
unsliceTemplate(int origin, Vector<Float> w, int part) {
FloatVector that = (FloatVector) w;
that.check(this);
! float[] slice = this.getElements();
! float[] res = that.getElements();
int vlen = res.length;
int firstPart = vlen - origin;
switch (part) {
case 0:
System.arraycopy(slice, 0, res, origin, firstPart);
--- 1987,1998 ----
@ForceInline
FloatVector
unsliceTemplate(int origin, Vector<Float> w, int part) {
FloatVector that = (FloatVector) w;
that.check(this);
! float[] slice = this.vec();
! float[] res = that.vec().clone();
int vlen = res.length;
int firstPart = vlen - origin;
switch (part) {
case 0:
System.arraycopy(slice, 0, res, origin, firstPart);
< prev index next >