--- old/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte256Vector.java 2019-04-23 10:50:04.631226100 -0700 +++ new/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte256Vector.java 2019-04-23 10:50:04.193825200 -0700 @@ -154,7 +154,7 @@ return VectorIntrinsics.cast( Byte256Vector.class, byte.class, LENGTH, - s.boxType(), + s.vectorType(), s.elementType(), LENGTH, this, s, (species, vector) -> vector.castDefault(species) @@ -292,7 +292,7 @@ @ForceInline public ByteVector reshape(VectorSpecies s) { Objects.requireNonNull(s); - if (s.bitSize() == 64 && (s.boxType() == Byte64Vector.class)) { + if (s.bitSize() == 64 && (s.vectorType() == Byte64Vector.class)) { return VectorIntrinsics.reinterpret( Byte256Vector.class, byte.class, LENGTH, @@ -301,7 +301,7 @@ this, s, (species, vector) -> (ByteVector) vector.defaultReinterpret(species) ); - } else if (s.bitSize() == 128 && (s.boxType() == Byte128Vector.class)) { + } else if (s.bitSize() == 128 && (s.vectorType() == Byte128Vector.class)) { return VectorIntrinsics.reinterpret( Byte256Vector.class, byte.class, LENGTH, @@ -310,7 +310,7 @@ this, s, (species, vector) -> (ByteVector) vector.defaultReinterpret(species) ); - } else if (s.bitSize() == 256 && (s.boxType() == Byte256Vector.class)) { + } else if (s.bitSize() == 256 && (s.vectorType() == Byte256Vector.class)) { return VectorIntrinsics.reinterpret( Byte256Vector.class, byte.class, LENGTH, @@ -319,7 +319,7 @@ this, s, (species, vector) -> (ByteVector) vector.defaultReinterpret(species) ); - } else if (s.bitSize() == 512 && (s.boxType() == Byte512Vector.class)) { + } else if (s.bitSize() == 512 && (s.vectorType() == Byte512Vector.class)) { return VectorIntrinsics.reinterpret( Byte256Vector.class, byte.class, LENGTH, @@ -329,7 +329,7 @@ (species, vector) -> (ByteVector) vector.defaultReinterpret(species) ); } else if ((s.bitSize() > 0) && (s.bitSize() <= 2048) - && (s.bitSize() % 128 == 0) && (s.boxType() == ByteMaxVector.class)) { + && (s.bitSize() % 128 == 0) && (s.vectorType() == ByteMaxVector.class)) { return VectorIntrinsics.reinterpret( Byte256Vector.class, byte.class, LENGTH, @@ -656,48 +656,76 @@ @Override @ForceInline - public Byte256Vector shiftL(int s) { + public Byte256Vector shiftLeft(int s) { return VectorIntrinsics.broadcastInt( VECTOR_OP_LSHIFT, Byte256Vector.class, byte.class, LENGTH, this, s, - (v, i) -> v.uOp((__, a) -> (byte) (a << (i & 7)))); + (v, i) -> v.uOp((__, a) -> (byte) (a << (i & 0x7)))); } @Override @ForceInline - public Byte256Vector shiftL(int s, VectorMask m) { - return blend(shiftL(s), m); + public Byte256Vector shiftLeft(int s, VectorMask m) { + return blend(shiftLeft(s), m); } @Override @ForceInline - public Byte256Vector shiftR(int s) { + public Byte256Vector shiftLeft(Vector s) { + Byte256Vector shiftv = (Byte256Vector)s; + // As per shift specification for Java, mask the shift count. + shiftv = shiftv.and(ByteVector.broadcast(SPECIES, (byte) 0x7)); + return this.bOp(shiftv, (i, a, b) -> (byte) (a << (b & 0x7))); + } + + @Override + @ForceInline + public Byte256Vector shiftRight(int s) { return VectorIntrinsics.broadcastInt( VECTOR_OP_URSHIFT, Byte256Vector.class, byte.class, LENGTH, this, s, - (v, i) -> v.uOp((__, a) -> (byte) ((a & 0xFF) >>> (i & 7)))); + (v, i) -> v.uOp((__, a) -> (byte) ((a & 0xFF) >>> (i & 0x7)))); } @Override @ForceInline - public Byte256Vector shiftR(int s, VectorMask m) { - return blend(shiftR(s), m); + public Byte256Vector shiftRight(int s, VectorMask m) { + return blend(shiftRight(s), m); } @Override @ForceInline - public Byte256Vector aShiftR(int s) { + public Byte256Vector shiftRight(Vector s) { + Byte256Vector shiftv = (Byte256Vector)s; + // As per shift specification for Java, mask the shift count. + shiftv = shiftv.and(ByteVector.broadcast(SPECIES, (byte) 0x7)); + return this.bOp(shiftv, (i, a, b) -> (byte) (a >>> (b & 0x7))); + } + + @Override + @ForceInline + public Byte256Vector shiftArithmeticRight(int s) { return VectorIntrinsics.broadcastInt( VECTOR_OP_RSHIFT, Byte256Vector.class, byte.class, LENGTH, this, s, - (v, i) -> v.uOp((__, a) -> (byte) (a >> (i & 7)))); + (v, i) -> v.uOp((__, a) -> (byte) (a >> (i & 0x7)))); + } + + @Override + @ForceInline + public Byte256Vector shiftArithmeticRight(int s, VectorMask m) { + return blend(shiftArithmeticRight(s), m); } @Override @ForceInline - public Byte256Vector aShiftR(int s, VectorMask m) { - return blend(aShiftR(s), m); + public Byte256Vector shiftArithmeticRight(Vector s) { + Byte256Vector shiftv = (Byte256Vector)s; + // As per shift specification for Java, mask the shift count. + shiftv = shiftv.and(ByteVector.broadcast(SPECIES, (byte) 0x7)); + return this.bOp(shiftv, (i, a, b) -> (byte) (a >> (b & 0x7))); } + // Ternary operations @@ -1028,7 +1056,7 @@ @Override - public Byte256Vector rotateEL(int j) { + public Byte256Vector rotateLanesLeft(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length(); i++){ @@ -1038,7 +1066,7 @@ } @Override - public Byte256Vector rotateER(int j) { + public Byte256Vector rotateLanesRight(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length(); i++){ @@ -1053,7 +1081,7 @@ } @Override - public Byte256Vector shiftEL(int j) { + public Byte256Vector shiftLanesLeft(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length() - j; i++) { @@ -1063,7 +1091,7 @@ } @Override - public Byte256Vector shiftER(int j) { + public Byte256Vector shiftLanesRight(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length() - j; i++){