--- old/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte128Vector.java 2019-04-23 10:50:01.065723600 -0700 +++ new/src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte128Vector.java 2019-04-23 10:50:00.622349900 -0700 @@ -154,7 +154,7 @@ return VectorIntrinsics.cast( Byte128Vector.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( Byte128Vector.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( Byte128Vector.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( Byte128Vector.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( Byte128Vector.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( Byte128Vector.class, byte.class, LENGTH, @@ -656,48 +656,76 @@ @Override @ForceInline - public Byte128Vector shiftL(int s) { + public Byte128Vector shiftLeft(int s) { return VectorIntrinsics.broadcastInt( VECTOR_OP_LSHIFT, Byte128Vector.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 Byte128Vector shiftL(int s, VectorMask m) { - return blend(shiftL(s), m); + public Byte128Vector shiftLeft(int s, VectorMask m) { + return blend(shiftLeft(s), m); } @Override @ForceInline - public Byte128Vector shiftR(int s) { + public Byte128Vector shiftLeft(Vector s) { + Byte128Vector shiftv = (Byte128Vector)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 Byte128Vector shiftRight(int s) { return VectorIntrinsics.broadcastInt( VECTOR_OP_URSHIFT, Byte128Vector.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 Byte128Vector shiftR(int s, VectorMask m) { - return blend(shiftR(s), m); + public Byte128Vector shiftRight(int s, VectorMask m) { + return blend(shiftRight(s), m); } @Override @ForceInline - public Byte128Vector aShiftR(int s) { + public Byte128Vector shiftRight(Vector s) { + Byte128Vector shiftv = (Byte128Vector)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 Byte128Vector shiftArithmeticRight(int s) { return VectorIntrinsics.broadcastInt( VECTOR_OP_RSHIFT, Byte128Vector.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 Byte128Vector shiftArithmeticRight(int s, VectorMask m) { + return blend(shiftArithmeticRight(s), m); } @Override @ForceInline - public Byte128Vector aShiftR(int s, VectorMask m) { - return blend(aShiftR(s), m); + public Byte128Vector shiftArithmeticRight(Vector s) { + Byte128Vector shiftv = (Byte128Vector)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 Byte128Vector rotateEL(int j) { + public Byte128Vector rotateLanesLeft(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length(); i++){ @@ -1038,7 +1066,7 @@ } @Override - public Byte128Vector rotateER(int j) { + public Byte128Vector rotateLanesRight(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length(); i++){ @@ -1053,7 +1081,7 @@ } @Override - public Byte128Vector shiftEL(int j) { + public Byte128Vector 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 Byte128Vector shiftER(int j) { + public Byte128Vector shiftLanesRight(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length() - j; i++){