@@ -416,6 +416,17 @@ static void assertArraysEquals(byte[] r, byte[] a, byte[] b, FBinOp f) {
416416 }
417417 }
418418
419+ static void assertArraysEquals (byte [] r , byte [] a , byte b , FBinOp f ) {
420+ int i = 0 ;
421+ try {
422+ for (; i < a .length ; i ++) {
423+ Assert .assertEquals (r [i ], f .apply (a [i ], b ));
424+ }
425+ } catch (AssertionError e ) {
426+ Assert .assertEquals (r [i ], f .apply (a [i ], b ), "(" + a [i ] + ", " + b + ") at index #" + i );
427+ }
428+ }
429+
419430 static void assertBroadcastArraysEquals (byte [] r , byte [] a , byte [] b , FBinOp f ) {
420431 int i = 0 ;
421432 try {
@@ -455,6 +466,21 @@ static void assertArraysEquals(byte[] r, byte[] a, byte[] b, boolean[] mask, FBi
455466 }
456467 }
457468
469+ static void assertArraysEquals (byte [] r , byte [] a , byte b , boolean [] mask , FBinOp f ) {
470+ assertArraysEquals (r , a , b , mask , FBinMaskOp .lift (f ));
471+ }
472+
473+ static void assertArraysEquals (byte [] r , byte [] a , byte b , boolean [] mask , FBinMaskOp f ) {
474+ int i = 0 ;
475+ try {
476+ for (; i < a .length ; i ++) {
477+ Assert .assertEquals (r [i ], f .apply (a [i ], b , mask [i % SPECIES .length ()]));
478+ }
479+ } catch (AssertionError err ) {
480+ Assert .assertEquals (r [i ], f .apply (a [i ], b , mask [i % SPECIES .length ()]), "at index #" + i + ", input1 = " + a [i ] + ", input2 = " + b + ", mask = " + mask [i % SPECIES .length ()]);
481+ }
482+ }
483+
458484 static void assertBroadcastArraysEquals (byte [] r , byte [] a , byte [] b , boolean [] mask , FBinOp f ) {
459485 assertBroadcastArraysEquals (r , a , b , mask , FBinMaskOp .lift (f ));
460486 }
@@ -2907,6 +2933,112 @@ static void ROLByte128VectorTestsScalarShiftMaskedConst(IntFunction<byte[]> fa,
29072933 }
29082934
29092935
2936+ static ByteVector bv_MIN = ByteVector .broadcast (SPECIES , (byte )10 );
2937+
2938+ @ Test (dataProvider = "byteUnaryOpProvider" )
2939+ static void MINByte128VectorTestsWithMemOp (IntFunction <byte []> fa ) {
2940+ byte [] a = fa .apply (SPECIES .length ());
2941+ byte [] r = fr .apply (SPECIES .length ());
2942+
2943+ for (int ic = 0 ; ic < INVOC_COUNT ; ic ++) {
2944+ for (int i = 0 ; i < a .length ; i += SPECIES .length ()) {
2945+ ByteVector av = ByteVector .fromArray (SPECIES , a , i );
2946+ av .lanewise (VectorOperators .MIN , bv_MIN ).intoArray (r , i );
2947+ }
2948+ }
2949+
2950+ assertArraysEquals (r , a , (byte )10 , Byte128VectorTests ::MIN );
2951+ }
2952+
2953+ static ByteVector bv_min = ByteVector .broadcast (SPECIES , (byte )10 );
2954+
2955+ @ Test (dataProvider = "byteUnaryOpProvider" )
2956+ static void minByte128VectorTestsWithMemOp (IntFunction <byte []> fa ) {
2957+ byte [] a = fa .apply (SPECIES .length ());
2958+ byte [] r = fr .apply (SPECIES .length ());
2959+
2960+ for (int ic = 0 ; ic < INVOC_COUNT ; ic ++) {
2961+ for (int i = 0 ; i < a .length ; i += SPECIES .length ()) {
2962+ ByteVector av = ByteVector .fromArray (SPECIES , a , i );
2963+ av .min (bv_min ).intoArray (r , i );
2964+ }
2965+ }
2966+
2967+ assertArraysEquals (r , a , (byte )10 , Byte128VectorTests ::min );
2968+ }
2969+
2970+ static ByteVector bv_MIN_M = ByteVector .broadcast (SPECIES , (byte )10 );
2971+
2972+ @ Test (dataProvider = "byteUnaryOpMaskProvider" )
2973+ static void MINByte128VectorTestsMaskedWithMemOp (IntFunction <byte []> fa , IntFunction <boolean []> fm ) {
2974+ byte [] a = fa .apply (SPECIES .length ());
2975+ byte [] r = fr .apply (SPECIES .length ());
2976+ boolean [] mask = fm .apply (SPECIES .length ());
2977+ VectorMask <Byte > vmask = VectorMask .fromArray (SPECIES , mask , 0 );
2978+
2979+ for (int ic = 0 ; ic < INVOC_COUNT ; ic ++) {
2980+ for (int i = 0 ; i < a .length ; i += SPECIES .length ()) {
2981+ ByteVector av = ByteVector .fromArray (SPECIES , a , i );
2982+ av .lanewise (VectorOperators .MIN , bv_MIN_M , vmask ).intoArray (r , i );
2983+ }
2984+ }
2985+
2986+ assertArraysEquals (r , a , (byte )10 , mask , Byte128VectorTests ::MIN );
2987+ }
2988+
2989+ static ByteVector bv_MAX = ByteVector .broadcast (SPECIES , (byte )10 );
2990+
2991+ @ Test (dataProvider = "byteUnaryOpProvider" )
2992+ static void MAXByte128VectorTestsWithMemOp (IntFunction <byte []> fa ) {
2993+ byte [] a = fa .apply (SPECIES .length ());
2994+ byte [] r = fr .apply (SPECIES .length ());
2995+
2996+ for (int ic = 0 ; ic < INVOC_COUNT ; ic ++) {
2997+ for (int i = 0 ; i < a .length ; i += SPECIES .length ()) {
2998+ ByteVector av = ByteVector .fromArray (SPECIES , a , i );
2999+ av .lanewise (VectorOperators .MAX , bv_MAX ).intoArray (r , i );
3000+ }
3001+ }
3002+
3003+ assertArraysEquals (r , a , (byte )10 , Byte128VectorTests ::MAX );
3004+ }
3005+
3006+ static ByteVector bv_max = ByteVector .broadcast (SPECIES , (byte )10 );
3007+
3008+ @ Test (dataProvider = "byteUnaryOpProvider" )
3009+ static void maxByte128VectorTestsWithMemOp (IntFunction <byte []> fa ) {
3010+ byte [] a = fa .apply (SPECIES .length ());
3011+ byte [] r = fr .apply (SPECIES .length ());
3012+
3013+ for (int ic = 0 ; ic < INVOC_COUNT ; ic ++) {
3014+ for (int i = 0 ; i < a .length ; i += SPECIES .length ()) {
3015+ ByteVector av = ByteVector .fromArray (SPECIES , a , i );
3016+ av .max (bv_max ).intoArray (r , i );
3017+ }
3018+ }
3019+
3020+ assertArraysEquals (r , a , (byte )10 , Byte128VectorTests ::max );
3021+ }
3022+
3023+ static ByteVector bv_MAX_M = ByteVector .broadcast (SPECIES , (byte )10 );
3024+
3025+ @ Test (dataProvider = "byteUnaryOpMaskProvider" )
3026+ static void MAXByte128VectorTestsMaskedWithMemOp (IntFunction <byte []> fa , IntFunction <boolean []> fm ) {
3027+ byte [] a = fa .apply (SPECIES .length ());
3028+ byte [] r = fr .apply (SPECIES .length ());
3029+ boolean [] mask = fm .apply (SPECIES .length ());
3030+ VectorMask <Byte > vmask = VectorMask .fromArray (SPECIES , mask , 0 );
3031+
3032+ for (int ic = 0 ; ic < INVOC_COUNT ; ic ++) {
3033+ for (int i = 0 ; i < a .length ; i += SPECIES .length ()) {
3034+ ByteVector av = ByteVector .fromArray (SPECIES , a , i );
3035+ av .lanewise (VectorOperators .MAX , bv_MAX_M , vmask ).intoArray (r , i );
3036+ }
3037+ }
3038+
3039+ assertArraysEquals (r , a , (byte )10 , mask , Byte128VectorTests ::MAX );
3040+ }
3041+
29103042 static byte MIN (byte a , byte b ) {
29113043 return (byte )(Math .min (a , b ));
29123044 }
0 commit comments