1 import jdk.incubator.vector.*; 2 import jdk.internal.vm.annotation.ForceInline; 3 import org.testng.Assert; 4 import org.testng.annotations.Test; 5 import org.testng.annotations.DataProvider; 6 7 import java.util.Arrays; 8 import java.util.List; 9 import java.util.function.IntFunction; 10 11 /** 12 * @test 13 * @modules jdk.incubator.vector 14 * @modules java.base/jdk.internal.vm.annotation 15 * @run testng VectorReshapeTests 16 */ 17 18 @Test 19 public class VectorReshapeTests { 20 static final int INVOC_COUNT = Integer.getInteger("jdk.incubator.vector.test.loop-iterations", 100); 21 static final int NUM_ITER = 200 * INVOC_COUNT; 22 23 static final IntVector.IntSpecies<Shapes.S64Bit> ispec64 = IntVector.speciesInstance(Shapes.S_64_BIT); 24 static final FloatVector.FloatSpecies<Shapes.S64Bit> fspec64 = FloatVector.speciesInstance(Shapes.S_64_BIT); 25 static final LongVector.LongSpecies<Shapes.S64Bit> lspec64 = LongVector.speciesInstance(Shapes.S_64_BIT); 26 static final DoubleVector.DoubleSpecies<Shapes.S64Bit> dspec64 = DoubleVector.speciesInstance(Shapes.S_64_BIT); 27 static final ByteVector.ByteSpecies<Shapes.S64Bit> bspec64 = ByteVector.speciesInstance(Shapes.S_64_BIT); 28 static final ShortVector.ShortSpecies<Shapes.S64Bit> sspec64 = ShortVector.speciesInstance(Shapes.S_64_BIT); 29 30 static final IntVector.IntSpecies<Shapes.S128Bit> ispec128 = IntVector.speciesInstance(Shapes.S_128_BIT); 31 static final FloatVector.FloatSpecies<Shapes.S128Bit> fspec128 = FloatVector.speciesInstance(Shapes.S_128_BIT); 32 static final LongVector.LongSpecies<Shapes.S128Bit> lspec128 = LongVector.speciesInstance(Shapes.S_128_BIT); 33 static final DoubleVector.DoubleSpecies<Shapes.S128Bit> dspec128 = DoubleVector.speciesInstance(Shapes.S_128_BIT); 34 static final ByteVector.ByteSpecies<Shapes.S128Bit> bspec128 = ByteVector.speciesInstance(Shapes.S_128_BIT); 35 static final ShortVector.ShortSpecies<Shapes.S128Bit> sspec128 = ShortVector.speciesInstance(Shapes.S_128_BIT); 36 37 static final IntVector.IntSpecies<Shapes.S256Bit> ispec256 = IntVector.speciesInstance(Shapes.S_256_BIT); 38 static final FloatVector.FloatSpecies<Shapes.S256Bit> fspec256 = FloatVector.speciesInstance(Shapes.S_256_BIT); 39 static final LongVector.LongSpecies<Shapes.S256Bit> lspec256 = LongVector.speciesInstance(Shapes.S_256_BIT); 40 static final DoubleVector.DoubleSpecies<Shapes.S256Bit> dspec256 = DoubleVector.speciesInstance(Shapes.S_256_BIT); 41 static final ByteVector.ByteSpecies<Shapes.S256Bit> bspec256 = ByteVector.speciesInstance(Shapes.S_256_BIT); 42 static final ShortVector.ShortSpecies<Shapes.S256Bit> sspec256 = ShortVector.speciesInstance(Shapes.S_256_BIT); 43 44 static final IntVector.IntSpecies<Shapes.S512Bit> ispec512 = IntVector.speciesInstance(Shapes.S_512_BIT); 45 static final FloatVector.FloatSpecies<Shapes.S512Bit> fspec512 = FloatVector.speciesInstance(Shapes.S_512_BIT); 46 static final LongVector.LongSpecies<Shapes.S512Bit> lspec512 = LongVector.speciesInstance(Shapes.S_512_BIT); 47 static final DoubleVector.DoubleSpecies<Shapes.S512Bit> dspec512 = DoubleVector.speciesInstance(Shapes.S_512_BIT); 48 static final ByteVector.ByteSpecies<Shapes.S512Bit> bspec512 = ByteVector.speciesInstance(Shapes.S_512_BIT); 49 static final ShortVector.ShortSpecies<Shapes.S512Bit> sspec512 = ShortVector.speciesInstance(Shapes.S_512_BIT); 50 51 static <T> IntFunction<T> withToString(String s, IntFunction<T> f) { 52 return new IntFunction<T>() { 53 @Override 54 public T apply(int v) { 55 return f.apply(v); 56 } 57 58 @Override 59 public String toString() { 60 return s; 61 } 62 }; 63 } 64 65 interface ToByteF { 66 byte apply(int i); 67 } 68 69 static byte[] fill_byte(int s , ToByteF f) { 70 return fill_byte(new byte[s], f); 71 } 72 73 static byte[] fill_byte(byte[] a, ToByteF f) { 74 for (int i = 0; i < a.length; i++) { 75 a[i] = f.apply(i); 76 } 77 return a; 78 } 79 80 interface ToBoolF { 81 boolean apply(int i); 82 } 83 84 static boolean[] fill_bool(int s , ToBoolF f) { 85 return fill_bool(new boolean[s], f); 86 } 87 88 static boolean[] fill_bool(boolean[] a, ToBoolF f) { 89 for (int i = 0; i < a.length; i++) { 90 a[i] = f.apply(i); 91 } 92 return a; 93 } 94 95 static final List<IntFunction<byte[]>> BYTE_GENERATORS = List.of( 96 withToString("byte(i)", (int s) -> { 97 return fill_byte(s, i -> (byte)i); 98 }) 99 ); 100 101 @DataProvider 102 public Object[][] byteUnaryOpProvider() { 103 return BYTE_GENERATORS.stream(). 104 map(f -> new Object[]{f}). 105 toArray(Object[][]::new); 106 } 107 108 static final List<IntFunction<boolean[]>> BOOL_GENERATORS = List.of( 109 withToString("boolean(i%3)", (int s) -> { 110 return fill_bool(s, i -> i % 3 == 0); 111 }) 112 ); 113 114 @DataProvider 115 public Object[][] booleanUnaryOpProvider() { 116 return BOOL_GENERATORS.stream(). 117 map(f -> new Object[]{f}). 118 toArray(Object[][]::new); 119 } 120 121 @ForceInline 122 static <E,S extends Vector.Shape,T extends Vector.Shape> 123 void testVectorResize(Vector.Species<E,S> a, Vector.Species<E,T> b, byte[] input, byte[] output) { 124 Vector<E, S> av = a.fromByteArray(input, 0); 125 Vector<E, T> bv = b.resize(av); 126 bv.intoByteArray(output, 0); 127 128 byte[] expected = Arrays.copyOf(input, output.length); 129 130 131 Assert.assertEquals(expected, output); 132 } 133 134 @Test(dataProvider = "byteUnaryOpProvider") 135 static void testResizeByte(IntFunction<byte[]> fa) { 136 byte[] bin64 = fa.apply(64/Byte.SIZE); 137 byte[] bin128 = fa.apply(128/Byte.SIZE); 138 byte[] bin256 = fa.apply(256/Byte.SIZE); 139 byte[] bin512 = fa.apply(512/Byte.SIZE); 140 byte[] bout64 = new byte[bin64.length]; 141 byte[] bout128 = new byte[bin128.length]; 142 byte[] bout256 = new byte[bin256.length]; 143 byte[] bout512 = new byte[bin512.length]; 144 145 for (int i = 0; i < NUM_ITER; i++) { 146 testVectorResize(bspec64, bspec64, bin64, bout64); 147 testVectorResize(bspec64, bspec128, bin64, bout128); 148 testVectorResize(bspec64, bspec256, bin64, bout256); 149 testVectorResize(bspec64, bspec512, bin64, bout512); 150 151 testVectorResize(bspec128, bspec64, bin128, bout64); 152 testVectorResize(bspec128, bspec128, bin128, bout128); 153 testVectorResize(bspec128, bspec256, bin128, bout256); 154 testVectorResize(bspec128, bspec512, bin128, bout512); 155 156 testVectorResize(bspec256, bspec64, bin256, bout64); 157 testVectorResize(bspec256, bspec128, bin256, bout128); 158 testVectorResize(bspec256, bspec256, bin256, bout256); 159 testVectorResize(bspec256, bspec512, bin256, bout512); 160 161 testVectorResize(bspec512, bspec64, bin512, bout64); 162 testVectorResize(bspec512, bspec128, bin512, bout128); 163 testVectorResize(bspec512, bspec256, bin512, bout256); 164 testVectorResize(bspec512, bspec512, bin512, bout512); 165 } 166 } 167 168 @Test(dataProvider = "byteUnaryOpProvider") 169 static void testResizeShort(IntFunction<byte[]> fa) { 170 byte[] bin64 = fa.apply(64/Byte.SIZE); 171 byte[] bin128 = fa.apply(128/Byte.SIZE); 172 byte[] bin256 = fa.apply(256/Byte.SIZE); 173 byte[] bin512 = fa.apply(512/Byte.SIZE); 174 byte[] bout64 = new byte[bin64.length]; 175 byte[] bout128 = new byte[bin128.length]; 176 byte[] bout256 = new byte[bin256.length]; 177 byte[] bout512 = new byte[bin512.length]; 178 179 for (int i = 0; i < NUM_ITER; i++) { 180 testVectorResize(sspec64, sspec64, bin64, bout64); 181 testVectorResize(sspec64, sspec128, bin64, bout128); 182 testVectorResize(sspec64, sspec256, bin64, bout256); 183 testVectorResize(sspec64, sspec512, bin64, bout512); 184 185 testVectorResize(sspec128, sspec64, bin128, bout64); 186 testVectorResize(sspec128, sspec128, bin128, bout128); 187 testVectorResize(sspec128, sspec256, bin128, bout256); 188 testVectorResize(sspec128, sspec512, bin128, bout512); 189 190 testVectorResize(sspec256, sspec64, bin256, bout64); 191 testVectorResize(sspec256, sspec128, bin256, bout128); 192 testVectorResize(sspec256, sspec256, bin256, bout256); 193 testVectorResize(sspec256, sspec512, bin256, bout512); 194 195 testVectorResize(sspec512, sspec64, bin512, bout64); 196 testVectorResize(sspec512, sspec128, bin512, bout128); 197 testVectorResize(sspec512, sspec256, bin512, bout256); 198 testVectorResize(sspec512, sspec512, bin512, bout512); 199 } 200 } 201 202 @Test(dataProvider = "byteUnaryOpProvider") 203 static void testResizeInt(IntFunction<byte[]> fa) { 204 byte[] bin64 = fa.apply(64/Byte.SIZE); 205 byte[] bin128 = fa.apply(128/Byte.SIZE); 206 byte[] bin256 = fa.apply(256/Byte.SIZE); 207 byte[] bin512 = fa.apply(512/Byte.SIZE); 208 byte[] bout64 = new byte[bin64.length]; 209 byte[] bout128 = new byte[bin128.length]; 210 byte[] bout256 = new byte[bin256.length]; 211 byte[] bout512 = new byte[bin512.length]; 212 213 for (int i = 0; i < NUM_ITER; i++) { 214 testVectorResize(ispec64, ispec64, bin64, bout64); 215 testVectorResize(ispec64, ispec128, bin64, bout128); 216 testVectorResize(ispec64, ispec256, bin64, bout256); 217 testVectorResize(ispec64, ispec512, bin64, bout512); 218 219 testVectorResize(ispec128, ispec64, bin128, bout64); 220 testVectorResize(ispec128, ispec128, bin128, bout128); 221 testVectorResize(ispec128, ispec256, bin128, bout256); 222 testVectorResize(ispec128, ispec512, bin128, bout512); 223 224 testVectorResize(ispec256, ispec64, bin256, bout64); 225 testVectorResize(ispec256, ispec128, bin256, bout128); 226 testVectorResize(ispec256, ispec256, bin256, bout256); 227 testVectorResize(ispec256, ispec512, bin256, bout512); 228 229 testVectorResize(ispec512, ispec64, bin512, bout64); 230 testVectorResize(ispec512, ispec128, bin512, bout128); 231 testVectorResize(ispec512, ispec256, bin512, bout256); 232 testVectorResize(ispec512, ispec512, bin512, bout512); 233 } 234 } 235 236 @Test(dataProvider = "byteUnaryOpProvider") 237 static void testResizeLong(IntFunction<byte[]> fa) { 238 byte[] bin64 = fa.apply(64/Byte.SIZE); 239 byte[] bin128 = fa.apply(128/Byte.SIZE); 240 byte[] bin256 = fa.apply(256/Byte.SIZE); 241 byte[] bin512 = fa.apply(512/Byte.SIZE); 242 byte[] bout64 = new byte[bin64.length]; 243 byte[] bout128 = new byte[bin128.length]; 244 byte[] bout256 = new byte[bin256.length]; 245 byte[] bout512 = new byte[bin512.length]; 246 247 for (int i = 0; i < NUM_ITER; i++) { 248 testVectorResize(lspec64, lspec64, bin64, bout64); 249 testVectorResize(lspec64, lspec128, bin64, bout128); 250 testVectorResize(lspec64, lspec256, bin64, bout256); 251 testVectorResize(lspec64, lspec512, bin64, bout512); 252 253 testVectorResize(lspec128, lspec64, bin128, bout64); 254 testVectorResize(lspec128, lspec128, bin128, bout128); 255 testVectorResize(lspec128, lspec256, bin128, bout256); 256 testVectorResize(lspec128, lspec512, bin128, bout512); 257 258 testVectorResize(lspec256, lspec64, bin256, bout64); 259 testVectorResize(lspec256, lspec128, bin256, bout128); 260 testVectorResize(lspec256, lspec256, bin256, bout256); 261 testVectorResize(lspec256, lspec512, bin256, bout512); 262 263 testVectorResize(lspec512, lspec64, bin512, bout64); 264 testVectorResize(lspec512, lspec128, bin512, bout128); 265 testVectorResize(lspec512, lspec256, bin512, bout256); 266 testVectorResize(lspec512, lspec512, bin512, bout512); 267 } 268 } 269 270 @Test(dataProvider = "byteUnaryOpProvider") 271 static void testResizeFloat(IntFunction<byte[]> fa) { 272 byte[] bin64 = fa.apply(64/Byte.SIZE); 273 byte[] bin128 = fa.apply(128/Byte.SIZE); 274 byte[] bin256 = fa.apply(256/Byte.SIZE); 275 byte[] bin512 = fa.apply(512/Byte.SIZE); 276 byte[] bout64 = new byte[bin64.length]; 277 byte[] bout128 = new byte[bin128.length]; 278 byte[] bout256 = new byte[bin256.length]; 279 byte[] bout512 = new byte[bin512.length]; 280 281 for (int i = 0; i < NUM_ITER; i++) { 282 testVectorResize(fspec64, fspec64, bin64, bout64); 283 testVectorResize(fspec64, fspec128, bin64, bout128); 284 testVectorResize(fspec64, fspec256, bin64, bout256); 285 testVectorResize(fspec64, fspec512, bin64, bout512); 286 287 testVectorResize(fspec128, fspec64, bin128, bout64); 288 testVectorResize(fspec128, fspec128, bin128, bout128); 289 testVectorResize(fspec128, fspec256, bin128, bout256); 290 testVectorResize(fspec128, fspec512, bin128, bout512); 291 292 testVectorResize(fspec256, fspec64, bin256, bout64); 293 testVectorResize(fspec256, fspec128, bin256, bout128); 294 testVectorResize(fspec256, fspec256, bin256, bout256); 295 testVectorResize(fspec256, fspec512, bin256, bout512); 296 297 testVectorResize(fspec512, fspec64, bin512, bout64); 298 testVectorResize(fspec512, fspec128, bin512, bout128); 299 testVectorResize(fspec512, fspec256, bin512, bout256); 300 testVectorResize(fspec512, fspec512, bin512, bout512); 301 } 302 } 303 304 @Test(dataProvider = "byteUnaryOpProvider") 305 static void testResizeDouble(IntFunction<byte[]> fa) { 306 byte[] bin64 = fa.apply(64/Byte.SIZE); 307 byte[] bin128 = fa.apply(128/Byte.SIZE); 308 byte[] bin256 = fa.apply(256/Byte.SIZE); 309 byte[] bin512 = fa.apply(512/Byte.SIZE); 310 byte[] bout64 = new byte[bin64.length]; 311 byte[] bout128 = new byte[bin128.length]; 312 byte[] bout256 = new byte[bin256.length]; 313 byte[] bout512 = new byte[bin512.length]; 314 315 for (int i = 0; i < NUM_ITER; i++) { 316 testVectorResize(dspec64, dspec64, bin64, bout64); 317 testVectorResize(dspec64, dspec128, bin64, bout128); 318 testVectorResize(dspec64, dspec256, bin64, bout256); 319 testVectorResize(dspec64, dspec512, bin64, bout512); 320 321 testVectorResize(dspec128, dspec64, bin128, bout64); 322 testVectorResize(dspec128, dspec128, bin128, bout128); 323 testVectorResize(dspec128, dspec256, bin128, bout256); 324 testVectorResize(dspec128, dspec512, bin128, bout512); 325 326 testVectorResize(dspec256, dspec64, bin256, bout64); 327 testVectorResize(dspec256, dspec128, bin256, bout128); 328 testVectorResize(dspec256, dspec256, bin256, bout256); 329 testVectorResize(dspec256, dspec512, bin256, bout512); 330 331 testVectorResize(dspec512, dspec64, bin512, bout64); 332 testVectorResize(dspec512, dspec128, bin512, bout128); 333 testVectorResize(dspec512, dspec256, bin512, bout256); 334 testVectorResize(dspec512, dspec512, bin512, bout512); 335 } 336 } 337 338 @ForceInline 339 static <E,F,S extends Vector.Shape> 340 void testVectorRebracket(Vector.Species<E,S> a, Vector.Species<F,S> b, byte[] input, byte[] output) { 341 assert(input.length == output.length); 342 343 Vector<E, S> av = a.fromByteArray(input, 0); 344 Vector<F, S> bv = b.rebracket(av); 345 bv.intoByteArray(output, 0); 346 347 Assert.assertEquals(input, output); 348 } 349 350 @Test(dataProvider = "byteUnaryOpProvider") 351 static void testRebracket64(IntFunction<byte[]> fa) { 352 byte[] barr = fa.apply(64/Byte.SIZE); 353 byte[] bout = new byte[barr.length]; 354 for (int i = 0; i < NUM_ITER; i++) { 355 testVectorRebracket(bspec64, bspec64, barr, bout); 356 testVectorRebracket(bspec64, sspec64, barr, bout); 357 testVectorRebracket(bspec64, ispec64, barr, bout); 358 testVectorRebracket(bspec64, lspec64, barr, bout); 359 testVectorRebracket(bspec64, fspec64, barr, bout); 360 testVectorRebracket(bspec64, dspec64, barr, bout); 361 362 testVectorRebracket(sspec64, bspec64, barr, bout); 363 testVectorRebracket(sspec64, sspec64, barr, bout); 364 testVectorRebracket(sspec64, ispec64, barr, bout); 365 testVectorRebracket(sspec64, lspec64, barr, bout); 366 testVectorRebracket(sspec64, fspec64, barr, bout); 367 testVectorRebracket(sspec64, dspec64, barr, bout); 368 369 testVectorRebracket(ispec64, bspec64, barr, bout); 370 testVectorRebracket(ispec64, sspec64, barr, bout); 371 testVectorRebracket(ispec64, ispec64, barr, bout); 372 testVectorRebracket(ispec64, lspec64, barr, bout); 373 testVectorRebracket(ispec64, fspec64, barr, bout); 374 testVectorRebracket(ispec64, dspec64, barr, bout); 375 376 testVectorRebracket(lspec64, bspec64, barr, bout); 377 testVectorRebracket(lspec64, sspec64, barr, bout); 378 testVectorRebracket(lspec64, ispec64, barr, bout); 379 testVectorRebracket(lspec64, lspec64, barr, bout); 380 testVectorRebracket(lspec64, fspec64, barr, bout); 381 testVectorRebracket(lspec64, dspec64, barr, bout); 382 383 testVectorRebracket(fspec64, bspec64, barr, bout); 384 testVectorRebracket(fspec64, sspec64, barr, bout); 385 testVectorRebracket(fspec64, ispec64, barr, bout); 386 testVectorRebracket(fspec64, lspec64, barr, bout); 387 testVectorRebracket(fspec64, fspec64, barr, bout); 388 testVectorRebracket(fspec64, dspec64, barr, bout); 389 390 testVectorRebracket(dspec64, bspec64, barr, bout); 391 testVectorRebracket(dspec64, sspec64, barr, bout); 392 testVectorRebracket(dspec64, ispec64, barr, bout); 393 testVectorRebracket(dspec64, lspec64, barr, bout); 394 testVectorRebracket(dspec64, fspec64, barr, bout); 395 testVectorRebracket(dspec64, dspec64, barr, bout); 396 } 397 } 398 399 @Test(dataProvider = "byteUnaryOpProvider") 400 static void testRebracket128(IntFunction<byte[]> fa) { 401 byte[] barr = fa.apply(128/Byte.SIZE); 402 byte[] bout = new byte[barr.length]; 403 for (int i = 0; i < NUM_ITER; i++) { 404 testVectorRebracket(bspec128, bspec128, barr, bout); 405 testVectorRebracket(bspec128, sspec128, barr, bout); 406 testVectorRebracket(bspec128, ispec128, barr, bout); 407 testVectorRebracket(bspec128, lspec128, barr, bout); 408 testVectorRebracket(bspec128, fspec128, barr, bout); 409 testVectorRebracket(bspec128, dspec128, barr, bout); 410 411 testVectorRebracket(sspec128, bspec128, barr, bout); 412 testVectorRebracket(sspec128, sspec128, barr, bout); 413 testVectorRebracket(sspec128, ispec128, barr, bout); 414 testVectorRebracket(sspec128, lspec128, barr, bout); 415 testVectorRebracket(sspec128, fspec128, barr, bout); 416 testVectorRebracket(sspec128, dspec128, barr, bout); 417 418 testVectorRebracket(ispec128, bspec128, barr, bout); 419 testVectorRebracket(ispec128, sspec128, barr, bout); 420 testVectorRebracket(ispec128, ispec128, barr, bout); 421 testVectorRebracket(ispec128, lspec128, barr, bout); 422 testVectorRebracket(ispec128, fspec128, barr, bout); 423 testVectorRebracket(ispec128, dspec128, barr, bout); 424 425 testVectorRebracket(lspec128, bspec128, barr, bout); 426 testVectorRebracket(lspec128, sspec128, barr, bout); 427 testVectorRebracket(lspec128, ispec128, barr, bout); 428 testVectorRebracket(lspec128, lspec128, barr, bout); 429 testVectorRebracket(lspec128, fspec128, barr, bout); 430 testVectorRebracket(lspec128, dspec128, barr, bout); 431 432 testVectorRebracket(fspec128, bspec128, barr, bout); 433 testVectorRebracket(fspec128, sspec128, barr, bout); 434 testVectorRebracket(fspec128, ispec128, barr, bout); 435 testVectorRebracket(fspec128, lspec128, barr, bout); 436 testVectorRebracket(fspec128, fspec128, barr, bout); 437 testVectorRebracket(fspec128, dspec128, barr, bout); 438 439 testVectorRebracket(dspec128, bspec128, barr, bout); 440 testVectorRebracket(dspec128, sspec128, barr, bout); 441 testVectorRebracket(dspec128, ispec128, barr, bout); 442 testVectorRebracket(dspec128, lspec128, barr, bout); 443 testVectorRebracket(dspec128, fspec128, barr, bout); 444 testVectorRebracket(dspec128, dspec128, barr, bout); 445 } 446 } 447 448 @Test(dataProvider = "byteUnaryOpProvider") 449 static void testRebracket256(IntFunction<byte[]> fa) { 450 byte[] barr = fa.apply(256/Byte.SIZE); 451 byte[] bout = new byte[barr.length]; 452 for (int i = 0; i < NUM_ITER; i++) { 453 testVectorRebracket(bspec256, bspec256, barr, bout); 454 testVectorRebracket(bspec256, sspec256, barr, bout); 455 testVectorRebracket(bspec256, ispec256, barr, bout); 456 testVectorRebracket(bspec256, lspec256, barr, bout); 457 testVectorRebracket(bspec256, fspec256, barr, bout); 458 testVectorRebracket(bspec256, dspec256, barr, bout); 459 460 testVectorRebracket(sspec256, bspec256, barr, bout); 461 testVectorRebracket(sspec256, sspec256, barr, bout); 462 testVectorRebracket(sspec256, ispec256, barr, bout); 463 testVectorRebracket(sspec256, lspec256, barr, bout); 464 testVectorRebracket(sspec256, fspec256, barr, bout); 465 testVectorRebracket(sspec256, dspec256, barr, bout); 466 467 testVectorRebracket(ispec256, bspec256, barr, bout); 468 testVectorRebracket(ispec256, sspec256, barr, bout); 469 testVectorRebracket(ispec256, ispec256, barr, bout); 470 testVectorRebracket(ispec256, lspec256, barr, bout); 471 testVectorRebracket(ispec256, fspec256, barr, bout); 472 testVectorRebracket(ispec256, dspec256, barr, bout); 473 474 testVectorRebracket(lspec256, bspec256, barr, bout); 475 testVectorRebracket(lspec256, sspec256, barr, bout); 476 testVectorRebracket(lspec256, ispec256, barr, bout); 477 testVectorRebracket(lspec256, lspec256, barr, bout); 478 testVectorRebracket(lspec256, fspec256, barr, bout); 479 testVectorRebracket(lspec256, dspec256, barr, bout); 480 481 testVectorRebracket(fspec256, bspec256, barr, bout); 482 testVectorRebracket(fspec256, sspec256, barr, bout); 483 testVectorRebracket(fspec256, ispec256, barr, bout); 484 testVectorRebracket(fspec256, lspec256, barr, bout); 485 testVectorRebracket(fspec256, fspec256, barr, bout); 486 testVectorRebracket(fspec256, dspec256, barr, bout); 487 488 testVectorRebracket(dspec256, bspec256, barr, bout); 489 testVectorRebracket(dspec256, sspec256, barr, bout); 490 testVectorRebracket(dspec256, ispec256, barr, bout); 491 testVectorRebracket(dspec256, lspec256, barr, bout); 492 testVectorRebracket(dspec256, fspec256, barr, bout); 493 testVectorRebracket(dspec256, dspec256, barr, bout); 494 } 495 } 496 497 @Test(dataProvider = "byteUnaryOpProvider") 498 static void testRebracket512(IntFunction<byte[]> fa) { 499 byte[] barr = fa.apply(512/Byte.SIZE); 500 byte[] bout = new byte[barr.length]; 501 for (int i = 0; i < NUM_ITER; i++) { 502 testVectorRebracket(bspec512, bspec512, barr, bout); 503 testVectorRebracket(bspec512, sspec512, barr, bout); 504 testVectorRebracket(bspec512, ispec512, barr, bout); 505 testVectorRebracket(bspec512, lspec512, barr, bout); 506 testVectorRebracket(bspec512, fspec512, barr, bout); 507 testVectorRebracket(bspec512, dspec512, barr, bout); 508 509 testVectorRebracket(sspec512, bspec512, barr, bout); 510 testVectorRebracket(sspec512, sspec512, barr, bout); 511 testVectorRebracket(sspec512, ispec512, barr, bout); 512 testVectorRebracket(sspec512, lspec512, barr, bout); 513 testVectorRebracket(sspec512, fspec512, barr, bout); 514 testVectorRebracket(sspec512, dspec512, barr, bout); 515 516 testVectorRebracket(ispec512, bspec512, barr, bout); 517 testVectorRebracket(ispec512, sspec512, barr, bout); 518 testVectorRebracket(ispec512, ispec512, barr, bout); 519 testVectorRebracket(ispec512, lspec512, barr, bout); 520 testVectorRebracket(ispec512, fspec512, barr, bout); 521 testVectorRebracket(ispec512, dspec512, barr, bout); 522 523 testVectorRebracket(lspec512, bspec512, barr, bout); 524 testVectorRebracket(lspec512, sspec512, barr, bout); 525 testVectorRebracket(lspec512, ispec512, barr, bout); 526 testVectorRebracket(lspec512, lspec512, barr, bout); 527 testVectorRebracket(lspec512, fspec512, barr, bout); 528 testVectorRebracket(lspec512, dspec512, barr, bout); 529 530 testVectorRebracket(fspec512, bspec512, barr, bout); 531 testVectorRebracket(fspec512, sspec512, barr, bout); 532 testVectorRebracket(fspec512, ispec512, barr, bout); 533 testVectorRebracket(fspec512, lspec512, barr, bout); 534 testVectorRebracket(fspec512, fspec512, barr, bout); 535 testVectorRebracket(fspec512, dspec512, barr, bout); 536 537 testVectorRebracket(dspec512, bspec512, barr, bout); 538 testVectorRebracket(dspec512, sspec512, barr, bout); 539 testVectorRebracket(dspec512, ispec512, barr, bout); 540 testVectorRebracket(dspec512, lspec512, barr, bout); 541 testVectorRebracket(dspec512, fspec512, barr, bout); 542 testVectorRebracket(dspec512, dspec512, barr, bout); 543 } 544 } 545 }