< prev index next >
test/jdk/jdk/incubator/vector/IntMaxVectorTests.java
Print this page
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
*** 684,718 ****
assertArraysEquals(a, b, r, mask, IntMaxVectorTests::xor);
}
! static int shiftR(int a, int b) {
! return (int)((a >>> b));
}
@Test(dataProvider = "intBinaryOpProvider")
! static void shiftRIntMaxVectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
! av.shiftR(bv).intoArray(r, i);
}
}
! assertArraysEquals(a, b, r, IntMaxVectorTests::shiftR);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
! static void shiftRIntMaxVectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
--- 684,718 ----
assertArraysEquals(a, b, r, mask, IntMaxVectorTests::xor);
}
! static int shiftLeft(int a, int b) {
! return (int)((a << b));
}
@Test(dataProvider = "intBinaryOpProvider")
! static void shiftLeftIntMaxVectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
! av.shiftLeft(bv).intoArray(r, i);
}
}
! assertArraysEquals(a, b, r, IntMaxVectorTests::shiftLeft);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
! static void shiftLeftIntMaxVectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
*** 720,762 ****
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
! av.shiftR(bv, vmask).intoArray(r, i);
}
}
! assertArraysEquals(a, b, r, mask, IntMaxVectorTests::shiftR);
}
! static int shiftL(int a, int b) {
! return (int)((a << b));
}
@Test(dataProvider = "intBinaryOpProvider")
! static void shiftLIntMaxVectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
! av.shiftL(bv).intoArray(r, i);
}
}
! assertArraysEquals(a, b, r, IntMaxVectorTests::shiftL);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
! static void shiftLIntMaxVectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
--- 720,766 ----
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
! av.shiftLeft(bv, vmask).intoArray(r, i);
}
}
! assertArraysEquals(a, b, r, mask, IntMaxVectorTests::shiftLeft);
}
!
!
!
!
! static int shiftRight(int a, int b) {
! return (int)((a >>> b));
}
@Test(dataProvider = "intBinaryOpProvider")
! static void shiftRightIntMaxVectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
! av.shiftRight(bv).intoArray(r, i);
}
}
! assertArraysEquals(a, b, r, IntMaxVectorTests::shiftRight);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
! static void shiftRightIntMaxVectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
*** 764,806 ****
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
! av.shiftL(bv, vmask).intoArray(r, i);
}
}
! assertArraysEquals(a, b, r, mask, IntMaxVectorTests::shiftL);
}
! static int aShiftR(int a, int b) {
return (int)((a >> b));
}
@Test(dataProvider = "intBinaryOpProvider")
! static void aShiftRIntMaxVectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
! av.aShiftR(bv).intoArray(r, i);
}
}
! assertArraysEquals(a, b, r, IntMaxVectorTests::aShiftR);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
! static void aShiftRIntMaxVectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
--- 768,814 ----
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
! av.shiftRight(bv, vmask).intoArray(r, i);
}
}
! assertArraysEquals(a, b, r, mask, IntMaxVectorTests::shiftRight);
}
!
!
!
!
! static int shiftArithmeticRight(int a, int b) {
return (int)((a >> b));
}
@Test(dataProvider = "intBinaryOpProvider")
! static void shiftArithmeticRightIntMaxVectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
! av.shiftArithmeticRight(bv).intoArray(r, i);
}
}
! assertArraysEquals(a, b, r, IntMaxVectorTests::shiftArithmeticRight);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
! static void shiftArithmeticRightIntMaxVectorTests(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
*** 808,962 ****
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
! av.aShiftR(bv, vmask).intoArray(r, i);
}
}
! assertArraysEquals(a, b, r, mask, IntMaxVectorTests::aShiftR);
}
! static int aShiftR_unary(int a, int b) {
! return (int)((a >> b));
}
@Test(dataProvider = "intBinaryOpProvider")
! static void aShiftRIntMaxVectorTestsShift(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! av.aShiftR((int)b[i]).intoArray(r, i);
}
}
! assertShiftArraysEquals(a, b, r, IntMaxVectorTests::aShiftR_unary);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
! static void aShiftRIntMaxVectorTestsShift(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! av.aShiftR((int)b[i], vmask).intoArray(r, i);
}
}
! assertShiftArraysEquals(a, b, r, mask, IntMaxVectorTests::aShiftR_unary);
}
! static int shiftR_unary(int a, int b) {
return (int)((a >>> b));
}
@Test(dataProvider = "intBinaryOpProvider")
! static void shiftRIntMaxVectorTestsShift(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! av.shiftR((int)b[i]).intoArray(r, i);
}
}
! assertShiftArraysEquals(a, b, r, IntMaxVectorTests::shiftR_unary);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
! static void shiftRIntMaxVectorTestsShift(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! av.shiftR((int)b[i], vmask).intoArray(r, i);
}
}
! assertShiftArraysEquals(a, b, r, mask, IntMaxVectorTests::shiftR_unary);
}
! static int shiftL_unary(int a, int b) {
! return (int)((a << b));
}
@Test(dataProvider = "intBinaryOpProvider")
! static void shiftLIntMaxVectorTestsShift(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! av.shiftL((int)b[i]).intoArray(r, i);
}
}
! assertShiftArraysEquals(a, b, r, IntMaxVectorTests::shiftL_unary);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
! static void shiftLIntMaxVectorTestsShift(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! av.shiftL((int)b[i], vmask).intoArray(r, i);
}
}
! assertShiftArraysEquals(a, b, r, mask, IntMaxVectorTests::shiftL_unary);
}
-
-
-
-
-
-
-
-
static int max(int a, int b) {
return (int)(Math.max(a, b));
}
@Test(dataProvider = "intBinaryOpProvider")
--- 816,974 ----
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
IntVector bv = IntVector.fromArray(SPECIES, b, i);
! av.shiftArithmeticRight(bv, vmask).intoArray(r, i);
}
}
! assertArraysEquals(a, b, r, mask, IntMaxVectorTests::shiftArithmeticRight);
}
!
!
!
!
! static int shiftLeft_unary(int a, int b) {
! return (int)((a << b));
}
@Test(dataProvider = "intBinaryOpProvider")
! static void shiftLeftIntMaxVectorTestsShift(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! av.shiftLeft((int)b[i]).intoArray(r, i);
}
}
! assertShiftArraysEquals(a, b, r, IntMaxVectorTests::shiftLeft_unary);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
! static void shiftLeftIntMaxVectorTestsShift(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! av.shiftLeft((int)b[i], vmask).intoArray(r, i);
}
}
! assertShiftArraysEquals(a, b, r, mask, IntMaxVectorTests::shiftLeft_unary);
}
!
!
!
!
! static int shiftRight_unary(int a, int b) {
return (int)((a >>> b));
}
@Test(dataProvider = "intBinaryOpProvider")
! static void shiftRightIntMaxVectorTestsShift(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! av.shiftRight((int)b[i]).intoArray(r, i);
}
}
! assertShiftArraysEquals(a, b, r, IntMaxVectorTests::shiftRight_unary);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
! static void shiftRightIntMaxVectorTestsShift(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! av.shiftRight((int)b[i], vmask).intoArray(r, i);
}
}
! assertShiftArraysEquals(a, b, r, mask, IntMaxVectorTests::shiftRight_unary);
}
!
!
!
!
! static int shiftArithmeticRight_unary(int a, int b) {
! return (int)((a >> b));
}
@Test(dataProvider = "intBinaryOpProvider")
! static void shiftArithmeticRightIntMaxVectorTestsShift(IntFunction<int[]> fa, IntFunction<int[]> fb) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! av.shiftArithmeticRight((int)b[i]).intoArray(r, i);
}
}
! assertShiftArraysEquals(a, b, r, IntMaxVectorTests::shiftArithmeticRight_unary);
}
@Test(dataProvider = "intBinaryOpMaskProvider")
! static void shiftArithmeticRightIntMaxVectorTestsShift(IntFunction<int[]> fa, IntFunction<int[]> fb,
IntFunction<boolean[]> fm) {
int[] a = fa.apply(SPECIES.length());
int[] b = fb.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
boolean[] mask = fm.apply(SPECIES.length());
VectorMask<Integer> vmask = VectorMask.fromValues(SPECIES, mask);
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! av.shiftArithmeticRight((int)b[i], vmask).intoArray(r, i);
}
}
! assertShiftArraysEquals(a, b, r, mask, IntMaxVectorTests::shiftArithmeticRight_unary);
}
static int max(int a, int b) {
return (int)(Math.max(a, b));
}
@Test(dataProvider = "intBinaryOpProvider")
*** 994,1013 ****
}
assertArraysEquals(a, b, r, IntMaxVectorTests::min);
}
! static int andAll(int[] a, int idx) {
int res = -1;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res &= a[i];
}
return res;
}
! static int andAll(int[] a) {
int res = -1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
int tmp = -1;
for (int j = 0; j < SPECIES.length(); j++) {
tmp &= a[i + j];
--- 1006,1025 ----
}
assertArraysEquals(a, b, r, IntMaxVectorTests::min);
}
! static int andLanes(int[] a, int idx) {
int res = -1;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res &= a[i];
}
return res;
}
! static int andLanes(int[] a) {
int res = -1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
int tmp = -1;
for (int j = 0; j < SPECIES.length(); j++) {
tmp &= a[i + j];
*** 1018,1061 ****
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void andAllIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = -1;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.andAll();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = -1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra &= av.andAll();
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::andAll, IntMaxVectorTests::andAll);
}
! static int orAll(int[] a, int idx) {
int res = 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res |= a[i];
}
return res;
}
! static int orAll(int[] a) {
int res = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
int tmp = 0;
for (int j = 0; j < SPECIES.length(); j++) {
tmp |= a[i + j];
--- 1030,1073 ----
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void andLanesIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = -1;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.andLanes();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = -1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra &= av.andLanes();
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::andLanes, IntMaxVectorTests::andLanes);
}
! static int orLanes(int[] a, int idx) {
int res = 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res |= a[i];
}
return res;
}
! static int orLanes(int[] a) {
int res = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
int tmp = 0;
for (int j = 0; j < SPECIES.length(); j++) {
tmp |= a[i + j];
*** 1066,1109 ****
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void orAllIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.orAll();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra |= av.orAll();
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::orAll, IntMaxVectorTests::orAll);
}
! static int xorAll(int[] a, int idx) {
int res = 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res ^= a[i];
}
return res;
}
! static int xorAll(int[] a) {
int res = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
int tmp = 0;
for (int j = 0; j < SPECIES.length(); j++) {
tmp ^= a[i + j];
--- 1078,1121 ----
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void orLanesIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.orLanes();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra |= av.orLanes();
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::orLanes, IntMaxVectorTests::orLanes);
}
! static int xorLanes(int[] a, int idx) {
int res = 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res ^= a[i];
}
return res;
}
! static int xorLanes(int[] a) {
int res = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
int tmp = 0;
for (int j = 0; j < SPECIES.length(); j++) {
tmp ^= a[i + j];
*** 1114,1156 ****
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void xorAllIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.xorAll();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra ^= av.xorAll();
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::xorAll, IntMaxVectorTests::xorAll);
}
! static int addAll(int[] a, int idx) {
int res = 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res += a[i];
}
return res;
}
! static int addAll(int[] a) {
int res = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
int tmp = 0;
for (int j = 0; j < SPECIES.length(); j++) {
tmp += a[i + j];
--- 1126,1168 ----
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void xorLanesIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.xorLanes();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra ^= av.xorLanes();
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::xorLanes, IntMaxVectorTests::xorLanes);
}
! static int addLanes(int[] a, int idx) {
int res = 0;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res += a[i];
}
return res;
}
! static int addLanes(int[] a) {
int res = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
int tmp = 0;
for (int j = 0; j < SPECIES.length(); j++) {
tmp += a[i + j];
*** 1159,1200 ****
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void addAllIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.addAll();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra += av.addAll();
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::addAll, IntMaxVectorTests::addAll);
}
! static int mulAll(int[] a, int idx) {
int res = 1;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res *= a[i];
}
return res;
}
! static int mulAll(int[] a) {
int res = 1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
int tmp = 1;
for (int j = 0; j < SPECIES.length(); j++) {
tmp *= a[i + j];
--- 1171,1212 ----
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void addLanesIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = 0;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.addLanes();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 0;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra += av.addLanes();
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::addLanes, IntMaxVectorTests::addLanes);
}
! static int mulLanes(int[] a, int idx) {
int res = 1;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res *= a[i];
}
return res;
}
! static int mulLanes(int[] a) {
int res = 1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
int tmp = 1;
for (int j = 0; j < SPECIES.length(); j++) {
tmp *= a[i + j];
*** 1203,1313 ****
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void mulAllIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = 1;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.mulAll();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra *= av.mulAll();
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::mulAll, IntMaxVectorTests::mulAll);
}
! static int minAll(int[] a, int idx) {
int res = Integer.MAX_VALUE;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res = (int)Math.min(res, a[i]);
}
return res;
}
! static int minAll(int[] a) {
int res = Integer.MAX_VALUE;
for (int i = 0; i < a.length; i++) {
res = (int)Math.min(res, a[i]);
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void minAllIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = Integer.MAX_VALUE;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.minAll();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = Integer.MAX_VALUE;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra = (int)Math.min(ra, av.minAll());
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::minAll, IntMaxVectorTests::minAll);
}
! static int maxAll(int[] a, int idx) {
int res = Integer.MIN_VALUE;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res = (int)Math.max(res, a[i]);
}
return res;
}
! static int maxAll(int[] a) {
int res = Integer.MIN_VALUE;
for (int i = 0; i < a.length; i++) {
res = (int)Math.max(res, a[i]);
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void maxAllIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = Integer.MIN_VALUE;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.maxAll();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = Integer.MIN_VALUE;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra = (int)Math.max(ra, av.maxAll());
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::maxAll, IntMaxVectorTests::maxAll);
}
static boolean anyTrue(boolean[] a, int idx) {
boolean res = false;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
--- 1215,1325 ----
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void mulLanesIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = 1;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.mulLanes();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = 1;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra *= av.mulLanes();
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::mulLanes, IntMaxVectorTests::mulLanes);
}
! static int minLanes(int[] a, int idx) {
int res = Integer.MAX_VALUE;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res = (int)Math.min(res, a[i]);
}
return res;
}
! static int minLanes(int[] a) {
int res = Integer.MAX_VALUE;
for (int i = 0; i < a.length; i++) {
res = (int)Math.min(res, a[i]);
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void minLanesIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = Integer.MAX_VALUE;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.minLanes();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = Integer.MAX_VALUE;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra = (int)Math.min(ra, av.minLanes());
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::minLanes, IntMaxVectorTests::minLanes);
}
! static int maxLanes(int[] a, int idx) {
int res = Integer.MIN_VALUE;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
res = (int)Math.max(res, a[i]);
}
return res;
}
! static int maxLanes(int[] a) {
int res = Integer.MIN_VALUE;
for (int i = 0; i < a.length; i++) {
res = (int)Math.max(res, a[i]);
}
return res;
}
@Test(dataProvider = "intUnaryOpProvider")
! static void maxLanesIntMaxVectorTests(IntFunction<int[]> fa) {
int[] a = fa.apply(SPECIES.length());
int[] r = fr.apply(SPECIES.length());
int ra = Integer.MIN_VALUE;
for (int ic = 0; ic < INVOC_COUNT; ic++) {
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! r[i] = av.maxLanes();
}
}
for (int ic = 0; ic < INVOC_COUNT; ic++) {
ra = Integer.MIN_VALUE;
for (int i = 0; i < a.length; i += SPECIES.length()) {
IntVector av = IntVector.fromArray(SPECIES, a, i);
! ra = (int)Math.max(ra, av.maxLanes());
}
}
! assertReductionArraysEquals(a, r, ra, IntMaxVectorTests::maxLanes, IntMaxVectorTests::maxLanes);
}
static boolean anyTrue(boolean[] a, int idx) {
boolean res = false;
for (int i = idx; i < (idx + SPECIES.length()); i++) {
< prev index next >