< prev index next > test/hotspot/jtreg/compiler/loopopts/superword/TestUnorderedReductionPartialVectorization.java
Print this page
@Test
@IR(counts = {IRNode.LOAD_VECTOR_I, IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0",
IRNode.VECTOR_CAST_I2L, IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0",
IRNode.OR_REDUCTION_V, "> 0",},
- applyIfOr = {"AlignVector", "false", "UseCompactObjectHeaders", "false"},
applyIfPlatform = {"64-bit", "true"},
applyIfCPUFeatureOr = {"avx2", "true"})
static long test1(int[] data, long sum) {
for (int i = 0; i < data.length; i+=2) {
// Mixing int and long ops means we only end up allowing half of the int
// Now, we no longer ignore reductions, and now we unroll half as much before SuperWord. This
// means we would only get one pack per operation, and that one would get ruined, and we have
// no vectorization. We now ensure there are again 2 packs per operation with a 2x hand unroll.
int v2 = data[i + 1];
sum |= v2;
-
- // With AlignVector, we need 8-byte alignment of vector loads/stores.
- // UseCompactObjectHeaders=false UseCompactObjectHeaders=true
- // adr = base + 16 + 8*i -> always adr = base + 12 + 8*i -> never
- // -> vectorize -> no vectorization
}
return sum;
}
static long ref1(int[] data, long sum) {
< prev index next >