< 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 >