< prev index next >

src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteMaxVector.java

Print this page
rev 55891 : 8222897: [vector] Renaming of shift, rotate operations. Few other api changes.
Summary: Renaming of shift, rotate operations. Few other api changes.
Reviewed-by: jrose, briangoetz
rev 55894 : 8222897: [vector] Renaming of shift, rotate operations. Few other api changes.
Summary: Renaming of shift, rotate operations. Few other api changes.
Reviewed-by: jrose, briangoetz

*** 152,162 **** throw new IllegalArgumentException("Vector length this species length differ"); return VectorIntrinsics.cast( ByteMaxVector.class, byte.class, LENGTH, ! s.boxType(), s.elementType(), LENGTH, this, s, (species, vector) -> vector.castDefault(species) ); } --- 152,162 ---- throw new IllegalArgumentException("Vector length this species length differ"); return VectorIntrinsics.cast( ByteMaxVector.class, byte.class, LENGTH, ! s.vectorType(), s.elementType(), LENGTH, this, s, (species, vector) -> vector.castDefault(species) ); }
*** 290,337 **** @Override @ForceInline public ByteVector reshape(VectorSpecies<Byte> s) { Objects.requireNonNull(s); ! if (s.bitSize() == 64 && (s.boxType() == Byte64Vector.class)) { return VectorIntrinsics.reinterpret( ByteMaxVector.class, byte.class, LENGTH, Byte64Vector.class, byte.class, Byte64Vector.LENGTH, this, s, (species, vector) -> (ByteVector) vector.defaultReinterpret(species) ); ! } else if (s.bitSize() == 128 && (s.boxType() == Byte128Vector.class)) { return VectorIntrinsics.reinterpret( ByteMaxVector.class, byte.class, LENGTH, Byte128Vector.class, byte.class, Byte128Vector.LENGTH, this, s, (species, vector) -> (ByteVector) vector.defaultReinterpret(species) ); ! } else if (s.bitSize() == 256 && (s.boxType() == Byte256Vector.class)) { return VectorIntrinsics.reinterpret( ByteMaxVector.class, byte.class, LENGTH, Byte256Vector.class, byte.class, Byte256Vector.LENGTH, this, s, (species, vector) -> (ByteVector) vector.defaultReinterpret(species) ); ! } else if (s.bitSize() == 512 && (s.boxType() == Byte512Vector.class)) { return VectorIntrinsics.reinterpret( ByteMaxVector.class, byte.class, LENGTH, Byte512Vector.class, byte.class, Byte512Vector.LENGTH, this, s, (species, vector) -> (ByteVector) vector.defaultReinterpret(species) ); } else if ((s.bitSize() > 0) && (s.bitSize() <= 2048) ! && (s.bitSize() % 128 == 0) && (s.boxType() == ByteMaxVector.class)) { return VectorIntrinsics.reinterpret( ByteMaxVector.class, byte.class, LENGTH, ByteMaxVector.class, byte.class, ByteMaxVector.LENGTH, --- 290,337 ---- @Override @ForceInline public ByteVector reshape(VectorSpecies<Byte> s) { Objects.requireNonNull(s); ! if (s.bitSize() == 64 && (s.vectorType() == Byte64Vector.class)) { return VectorIntrinsics.reinterpret( ByteMaxVector.class, byte.class, LENGTH, Byte64Vector.class, byte.class, Byte64Vector.LENGTH, this, s, (species, vector) -> (ByteVector) vector.defaultReinterpret(species) ); ! } else if (s.bitSize() == 128 && (s.vectorType() == Byte128Vector.class)) { return VectorIntrinsics.reinterpret( ByteMaxVector.class, byte.class, LENGTH, Byte128Vector.class, byte.class, Byte128Vector.LENGTH, this, s, (species, vector) -> (ByteVector) vector.defaultReinterpret(species) ); ! } else if (s.bitSize() == 256 && (s.vectorType() == Byte256Vector.class)) { return VectorIntrinsics.reinterpret( ByteMaxVector.class, byte.class, LENGTH, Byte256Vector.class, byte.class, Byte256Vector.LENGTH, this, s, (species, vector) -> (ByteVector) vector.defaultReinterpret(species) ); ! } else if (s.bitSize() == 512 && (s.vectorType() == Byte512Vector.class)) { return VectorIntrinsics.reinterpret( ByteMaxVector.class, byte.class, LENGTH, Byte512Vector.class, byte.class, Byte512Vector.LENGTH, this, s, (species, vector) -> (ByteVector) vector.defaultReinterpret(species) ); } else if ((s.bitSize() > 0) && (s.bitSize() <= 2048) ! && (s.bitSize() % 128 == 0) && (s.vectorType() == ByteMaxVector.class)) { return VectorIntrinsics.reinterpret( ByteMaxVector.class, byte.class, LENGTH, ByteMaxVector.class, byte.class, ByteMaxVector.LENGTH,
*** 654,815 **** return blend(xor(v), m); } @Override @ForceInline ! public ByteMaxVector shiftL(int s) { return VectorIntrinsics.broadcastInt( VECTOR_OP_LSHIFT, ByteMaxVector.class, byte.class, LENGTH, this, s, ! (v, i) -> v.uOp((__, a) -> (byte) (a << (i & 7)))); } @Override @ForceInline ! public ByteMaxVector shiftL(int s, VectorMask<Byte> m) { ! return blend(shiftL(s), m); } @Override @ForceInline ! public ByteMaxVector shiftR(int s) { return VectorIntrinsics.broadcastInt( VECTOR_OP_URSHIFT, ByteMaxVector.class, byte.class, LENGTH, this, s, ! (v, i) -> v.uOp((__, a) -> (byte) ((a & 0xFF) >>> (i & 7)))); } @Override @ForceInline ! public ByteMaxVector shiftR(int s, VectorMask<Byte> m) { ! return blend(shiftR(s), m); } @Override @ForceInline ! public ByteMaxVector aShiftR(int s) { return VectorIntrinsics.broadcastInt( VECTOR_OP_RSHIFT, ByteMaxVector.class, byte.class, LENGTH, this, s, ! (v, i) -> v.uOp((__, a) -> (byte) (a >> (i & 7)))); } @Override @ForceInline ! public ByteMaxVector aShiftR(int s, VectorMask<Byte> m) { ! return blend(aShiftR(s), m); } // Ternary operations // Type specific horizontal reductions @Override @ForceInline ! public byte addAll() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_ADD, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp((byte) 0, (i, a, b) -> (byte) (a + b))); } @Override @ForceInline ! public byte andAll() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_AND, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp((byte) -1, (i, a, b) -> (byte) (a & b))); } @Override @ForceInline ! public byte andAll(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, (byte) -1).blend(this, m).andAll(); } @Override @ForceInline ! public byte minAll() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_MIN, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp(Byte.MAX_VALUE , (i, a, b) -> (byte) Math.min(a, b))); } @Override @ForceInline ! public byte maxAll() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_MAX, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp(Byte.MIN_VALUE , (i, a, b) -> (byte) Math.max(a, b))); } @Override @ForceInline ! public byte mulAll() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_MUL, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp((byte) 1, (i, a, b) -> (byte) (a * b))); } @Override @ForceInline ! public byte orAll() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_OR, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp((byte) 0, (i, a, b) -> (byte) (a | b))); } @Override @ForceInline ! public byte orAll(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, (byte) 0).blend(this, m).orAll(); } @Override @ForceInline ! public byte xorAll() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_XOR, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp((byte) 0, (i, a, b) -> (byte) (a ^ b))); } @Override @ForceInline ! public byte xorAll(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, (byte) 0).blend(this, m).xorAll(); } @Override @ForceInline ! public byte addAll(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, (byte) 0).blend(this, m).addAll(); } @Override @ForceInline ! public byte mulAll(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, (byte) 1).blend(this, m).mulAll(); } @Override @ForceInline ! public byte minAll(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, Byte.MAX_VALUE).blend(this, m).minAll(); } @Override @ForceInline ! public byte maxAll(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, Byte.MIN_VALUE).blend(this, m).maxAll(); } @Override @ForceInline public VectorShuffle<Byte> toShuffle() { --- 654,843 ---- return blend(xor(v), m); } @Override @ForceInline ! public ByteMaxVector shiftLeft(int s) { return VectorIntrinsics.broadcastInt( VECTOR_OP_LSHIFT, ByteMaxVector.class, byte.class, LENGTH, this, s, ! (v, i) -> v.uOp((__, a) -> (byte) (a << (i & 0x7)))); } @Override @ForceInline ! public ByteMaxVector shiftLeft(int s, VectorMask<Byte> m) { ! return blend(shiftLeft(s), m); } @Override @ForceInline ! public ByteMaxVector shiftLeft(Vector<Byte> s) { ! ByteMaxVector shiftv = (ByteMaxVector)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 ByteMaxVector shiftRight(int s) { return VectorIntrinsics.broadcastInt( VECTOR_OP_URSHIFT, ByteMaxVector.class, byte.class, LENGTH, this, s, ! (v, i) -> v.uOp((__, a) -> (byte) ((a & 0xFF) >>> (i & 0x7)))); } @Override @ForceInline ! public ByteMaxVector shiftRight(int s, VectorMask<Byte> m) { ! return blend(shiftRight(s), m); } @Override @ForceInline ! public ByteMaxVector shiftRight(Vector<Byte> s) { ! ByteMaxVector shiftv = (ByteMaxVector)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 ByteMaxVector shiftArithmeticRight(int s) { return VectorIntrinsics.broadcastInt( VECTOR_OP_RSHIFT, ByteMaxVector.class, byte.class, LENGTH, this, s, ! (v, i) -> v.uOp((__, a) -> (byte) (a >> (i & 0x7)))); ! } ! ! @Override ! @ForceInline ! public ByteMaxVector shiftArithmeticRight(int s, VectorMask<Byte> m) { ! return blend(shiftArithmeticRight(s), m); } @Override @ForceInline ! public ByteMaxVector shiftArithmeticRight(Vector<Byte> s) { ! ByteMaxVector shiftv = (ByteMaxVector)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 // Type specific horizontal reductions @Override @ForceInline ! public byte addLanes() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_ADD, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp((byte) 0, (i, a, b) -> (byte) (a + b))); } @Override @ForceInline ! public byte andLanes() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_AND, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp((byte) -1, (i, a, b) -> (byte) (a & b))); } @Override @ForceInline ! public byte andLanes(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, (byte) -1).blend(this, m).andLanes(); } @Override @ForceInline ! public byte minLanes() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_MIN, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp(Byte.MAX_VALUE , (i, a, b) -> (byte) Math.min(a, b))); } @Override @ForceInline ! public byte maxLanes() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_MAX, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp(Byte.MIN_VALUE , (i, a, b) -> (byte) Math.max(a, b))); } @Override @ForceInline ! public byte mulLanes() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_MUL, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp((byte) 1, (i, a, b) -> (byte) (a * b))); } @Override @ForceInline ! public byte orLanes() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_OR, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp((byte) 0, (i, a, b) -> (byte) (a | b))); } @Override @ForceInline ! public byte orLanes(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, (byte) 0).blend(this, m).orLanes(); } @Override @ForceInline ! public byte xorLanes() { return (byte) VectorIntrinsics.reductionCoerced( VECTOR_OP_XOR, ByteMaxVector.class, byte.class, LENGTH, this, v -> (long) v.rOp((byte) 0, (i, a, b) -> (byte) (a ^ b))); } @Override @ForceInline ! public byte xorLanes(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, (byte) 0).blend(this, m).xorLanes(); } @Override @ForceInline ! public byte addLanes(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, (byte) 0).blend(this, m).addLanes(); } @Override @ForceInline ! public byte mulLanes(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, (byte) 1).blend(this, m).mulLanes(); } @Override @ForceInline ! public byte minLanes(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, Byte.MAX_VALUE).blend(this, m).minLanes(); } @Override @ForceInline ! public byte maxLanes(VectorMask<Byte> m) { ! return ByteVector.broadcast(SPECIES, Byte.MIN_VALUE).blend(this, m).maxLanes(); } @Override @ForceInline public VectorShuffle<Byte> toShuffle() {
*** 1026,1046 **** } @Override ! public ByteMaxVector rotateEL(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length(); i++){ res[(j + i) % length()] = vec[i]; } return new ByteMaxVector(res); } @Override ! public ByteMaxVector rotateER(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length(); i++){ int z = i - j; if(j < 0) { --- 1054,1074 ---- } @Override ! public ByteMaxVector rotateLanesLeft(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length(); i++){ res[(j + i) % length()] = vec[i]; } return new ByteMaxVector(res); } @Override ! public ByteMaxVector rotateLanesRight(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length(); i++){ int z = i - j; if(j < 0) {
*** 1051,1071 **** } return new ByteMaxVector(res); } @Override ! public ByteMaxVector shiftEL(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length() - j; i++) { res[i] = vec[i + j]; } return new ByteMaxVector(res); } @Override ! public ByteMaxVector shiftER(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length() - j; i++){ res[i + j] = vec[i]; } --- 1079,1099 ---- } return new ByteMaxVector(res); } @Override ! public ByteMaxVector shiftLanesLeft(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length() - j; i++) { res[i] = vec[i + j]; } return new ByteMaxVector(res); } @Override ! public ByteMaxVector shiftLanesRight(int j) { byte[] vec = getElements(); byte[] res = new byte[length()]; for (int i = 0; i < length() - j; i++){ res[i + j] = vec[i]; }
< prev index next >