585 public $abstractvectortype$<S> ashiftR(Vector<$Boxtype$,S> o) {
586 return bOp(o, (i, a, b) -> ($type$) (a >> b));
587 }
588
589 public $abstractvectortype$<S> ashiftR(Vector<$Boxtype$,S> o, Mask<$Boxtype$, S> m) {
590 return bOp(o, m, (i, a, b) -> ($type$) (a >> b));
591 }
592 #end[intOrLong]
593
594 public $abstractvectortype$<S> rotateL(int j) {
595 return uOp((i, a) -> ($type$) $Wideboxtype$.rotateLeft(a, j));
596 }
597
598 public $abstractvectortype$<S> rotateR(int j) {
599 return uOp((i, a) -> ($type$) $Wideboxtype$.rotateRight(a, j));
600 }
601 #end[BITWISE]
602
603 @Override
604 public void intoByteArray(byte[] a, int ix) {
605 ByteBuffer bb = ByteBuffer.wrap(a, ix, a.length - ix);
606 intoByteBuffer(bb);
607 }
608
609 @Override
610 public void intoByteArray(byte[] a, int ix, Mask<$Boxtype$, S> m) {
611 ByteBuffer bb = ByteBuffer.wrap(a, ix, a.length - ix);
612 intoByteBuffer(bb, m);
613 }
614
615 @Override
616 public void intoByteBuffer(ByteBuffer bb) {
617 $Type$Buffer fb = bb{#if[byte]?;:.as$Type$Buffer();}
618 forEach((i, a) -> fb.put(a));
619 }
620
621 @Override
622 public void intoByteBuffer(ByteBuffer bb, Mask<$Boxtype$, S> m) {
623 $Type$Buffer fb = bb{#if[byte]?;:.as$Type$Buffer();}
624 forEach((i, a) -> {
625 if (m.getElement(i))
626 fb.put(a);
627 else
628 fb.position(fb.position() + 1);
629 });
630 }
631
994 *
995 * @param a the array
996 * @param i the offset into the array, may be negative if relative
997 * indexes in the index map compensate to produce a value within the
998 * array bounds
999 * @param indexMap the index map
1000 * @param j the offset into the index map
1001 * @return the vector loaded from an array
1002 * @throws IndexOutOfBoundsException if {@code j < 0}, or
1003 * {@code j > indexMap.length - this.length()},
1004 * or for any vector lane index {@code N} where the mask at lane
1005 * {@code N} is set the result of {@code i + indexMap[j + N]} is
1006 * {@code < 0} or {@code >= a.length}
1007 */
1008 public $abstractvectortype$<S> fromArray($type$[] a, int i, Mask<$Boxtype$, S> m, int[] indexMap, int j) {
1009 return op(m, n -> a[i + indexMap[j + n]]);
1010 }
1011
1012 @Override
1013 public $abstractvectortype$<S> fromByteArray(byte[] a, int ix) {
1014 ByteBuffer bb = ByteBuffer.wrap(a, ix, a.length - ix);
1015 return fromByteBuffer(bb);
1016 }
1017
1018 @Override
1019 public $abstractvectortype$<S> fromByteArray(byte[] a, int ix, Mask<$Boxtype$, S> m) {
1020 ByteBuffer bb = ByteBuffer.wrap(a, ix, a.length - ix);
1021 return fromByteBuffer(bb, m);
1022 }
1023
1024 @Override
1025 public $abstractvectortype$<S> fromByteBuffer(ByteBuffer bb) {
1026 $Type$Buffer fb = bb{#if[byte]?;:.as$Type$Buffer();}
1027 return op(i -> fb.get());
1028 }
1029
1030 @Override
1031 public $abstractvectortype$<S> fromByteBuffer(ByteBuffer bb, Mask<$Boxtype$, S> m) {
1032 $Type$Buffer fb = bb{#if[byte]?;:.as$Type$Buffer();}
1033 return op(i -> {
1034 if(m.getElement(i))
1035 return fb.get();
1036 else {
1037 fb.position(fb.position() + 1);
1038 return ($type$) 0;
1039 }
1040 });
1041 }
1042
1043 @Override
1044 public $abstractvectortype$<S> fromByteBuffer(ByteBuffer bb, int ix) {
1045 bb = bb.duplicate().position(ix);
1046 $Type$Buffer fb = bb{#if[byte]?;:.as$Type$Buffer();}
1047 return op(i -> fb.get(i));
1048 }
1049
1050 @Override
1051 public $abstractvectortype$<S> fromByteBuffer(ByteBuffer bb, int ix, Mask<$Boxtype$, S> m) {
1052 bb = bb.duplicate().position(ix);
1053 $Type$Buffer fb = bb{#if[byte]?;:.as$Type$Buffer();}
1054 return op(m, i -> fb.get(i));
1055 }
1056
1057 @Override
1058 public <F, T extends Shape> $abstractvectortype$<S> reshape(Vector<F, T> o) {
1059 int blen = Math.max(o.species().bitSize(), bitSize()) / Byte.SIZE;
1060 ByteBuffer bb = ByteBuffer.allocate(blen).order(ByteOrder.nativeOrder());
1061 o.intoByteBuffer(bb, 0);
1062 return fromByteBuffer(bb, 0);
1063 }
1064
1065 @Override
1066 @ForceInline
1067 public <F> $abstractvectortype$<S> rebracket(Vector<F, S> o) {
1068 return reshape(o);
1069 }
1070
1071 @Override
1072 @ForceInline
|
585 public $abstractvectortype$<S> ashiftR(Vector<$Boxtype$,S> o) {
586 return bOp(o, (i, a, b) -> ($type$) (a >> b));
587 }
588
589 public $abstractvectortype$<S> ashiftR(Vector<$Boxtype$,S> o, Mask<$Boxtype$, S> m) {
590 return bOp(o, m, (i, a, b) -> ($type$) (a >> b));
591 }
592 #end[intOrLong]
593
594 public $abstractvectortype$<S> rotateL(int j) {
595 return uOp((i, a) -> ($type$) $Wideboxtype$.rotateLeft(a, j));
596 }
597
598 public $abstractvectortype$<S> rotateR(int j) {
599 return uOp((i, a) -> ($type$) $Wideboxtype$.rotateRight(a, j));
600 }
601 #end[BITWISE]
602
603 @Override
604 public void intoByteArray(byte[] a, int ix) {
605 ByteBuffer bb = ByteBuffer.wrap(a, ix, a.length - ix).order(ByteOrder.nativeOrder());
606 intoByteBuffer(bb);
607 }
608
609 @Override
610 public void intoByteArray(byte[] a, int ix, Mask<$Boxtype$, S> m) {
611 ByteBuffer bb = ByteBuffer.wrap(a, ix, a.length - ix).order(ByteOrder.nativeOrder());
612 intoByteBuffer(bb, m);
613 }
614
615 @Override
616 public void intoByteBuffer(ByteBuffer bb) {
617 $Type$Buffer fb = bb{#if[byte]?;:.as$Type$Buffer();}
618 forEach((i, a) -> fb.put(a));
619 }
620
621 @Override
622 public void intoByteBuffer(ByteBuffer bb, Mask<$Boxtype$, S> m) {
623 $Type$Buffer fb = bb{#if[byte]?;:.as$Type$Buffer();}
624 forEach((i, a) -> {
625 if (m.getElement(i))
626 fb.put(a);
627 else
628 fb.position(fb.position() + 1);
629 });
630 }
631
994 *
995 * @param a the array
996 * @param i the offset into the array, may be negative if relative
997 * indexes in the index map compensate to produce a value within the
998 * array bounds
999 * @param indexMap the index map
1000 * @param j the offset into the index map
1001 * @return the vector loaded from an array
1002 * @throws IndexOutOfBoundsException if {@code j < 0}, or
1003 * {@code j > indexMap.length - this.length()},
1004 * or for any vector lane index {@code N} where the mask at lane
1005 * {@code N} is set the result of {@code i + indexMap[j + N]} is
1006 * {@code < 0} or {@code >= a.length}
1007 */
1008 public $abstractvectortype$<S> fromArray($type$[] a, int i, Mask<$Boxtype$, S> m, int[] indexMap, int j) {
1009 return op(m, n -> a[i + indexMap[j + n]]);
1010 }
1011
1012 @Override
1013 public $abstractvectortype$<S> fromByteArray(byte[] a, int ix) {
1014 ByteBuffer bb = ByteBuffer.wrap(a, ix, a.length - ix).order(ByteOrder.nativeOrder());
1015 return fromByteBuffer(bb);
1016 }
1017
1018 @Override
1019 public $abstractvectortype$<S> fromByteArray(byte[] a, int ix, Mask<$Boxtype$, S> m) {
1020 ByteBuffer bb = ByteBuffer.wrap(a, ix, a.length - ix).order(ByteOrder.nativeOrder());
1021 return fromByteBuffer(bb, m);
1022 }
1023
1024 @Override
1025 public $abstractvectortype$<S> fromByteBuffer(ByteBuffer bb) {
1026 $Type$Buffer fb = bb{#if[byte]?;:.as$Type$Buffer();}
1027 return op(i -> fb.get());
1028 }
1029
1030 @Override
1031 public $abstractvectortype$<S> fromByteBuffer(ByteBuffer bb, Mask<$Boxtype$, S> m) {
1032 $Type$Buffer fb = bb{#if[byte]?;:.as$Type$Buffer();}
1033 return op(i -> {
1034 if(m.getElement(i))
1035 return fb.get();
1036 else {
1037 fb.position(fb.position() + 1);
1038 return ($type$) 0;
1039 }
1040 });
1041 }
1042
1043 @Override
1044 public $abstractvectortype$<S> fromByteBuffer(ByteBuffer bb, int ix) {
1045 bb = bb.duplicate().order(ByteOrder.nativeOrder()).position(ix);
1046 $Type$Buffer fb = bb{#if[byte]?;:.as$Type$Buffer();}
1047 return op(i -> fb.get(i));
1048 }
1049
1050 @Override
1051 public $abstractvectortype$<S> fromByteBuffer(ByteBuffer bb, int ix, Mask<$Boxtype$, S> m) {
1052 bb = bb.duplicate().order(ByteOrder.nativeOrder()).position(ix);
1053 $Type$Buffer fb = bb{#if[byte]?;:.as$Type$Buffer();}
1054 return op(m, i -> fb.get(i));
1055 }
1056
1057 @Override
1058 public <F, T extends Shape> $abstractvectortype$<S> reshape(Vector<F, T> o) {
1059 int blen = Math.max(o.species().bitSize(), bitSize()) / Byte.SIZE;
1060 ByteBuffer bb = ByteBuffer.allocate(blen).order(ByteOrder.nativeOrder());
1061 o.intoByteBuffer(bb, 0);
1062 return fromByteBuffer(bb, 0);
1063 }
1064
1065 @Override
1066 @ForceInline
1067 public <F> $abstractvectortype$<S> rebracket(Vector<F, S> o) {
1068 return reshape(o);
1069 }
1070
1071 @Override
1072 @ForceInline
|