< 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 >