< prev index next > test/hotspot/jtreg/compiler/c2/cmove/TestConditionalMove.java
Print this page
@Test
@IR(counts = {IRNode.LOAD_VECTOR_F, ">0",
IRNode.VECTOR_MASK_CMP_F, ">0",
IRNode.VECTOR_BLEND_F, ">0",
IRNode.STORE_VECTOR, ">0"},
- applyIfAnd = {"UseCompactObjectHeaders", "false", "UseVectorCmov", "true"},
- applyIfCPUFeatureOr = {"avx", "true", "asimd", "true", "rvv", "true"})
- @IR(counts = {IRNode.LOAD_VECTOR_F, ">0",
- IRNode.VECTOR_MASK_CMP_F, ">0",
- IRNode.VECTOR_BLEND_F, ">0",
- IRNode.STORE_VECTOR, ">0"},
- applyIfAnd = {"AlignVector", "false", "UseVectorCmov", "true"},
+ applyIf = {"UseVectorCmov", "true"},
applyIfCPUFeatureOr = {"avx", "true", "asimd", "true", "rvv", "true"})
@IR(failOn = {IRNode.STORE_VECTOR},
applyIf = {"UseVectorCmov", "false"})
@IR(counts = {IRNode.CMOVE_F, ">0", IRNode.CMP_F, ">0"},
applyIf = {"UseVectorCmov", "false"},
applyIfPlatformOr = {"riscv64", "true", "x64", "true", "aarch64", "true"})
private static void testCMoveFLTforFConstH2(float[] a, float[] b, float[] c) {
for (int i = 0; i < a.length; i+=2) {
c[i+0] = (a[i+0] < b[i+0]) ? 0.1f : -0.1f;
c[i+1] = (a[i+1] < b[i+1]) ? 0.1f : -0.1f;
- // 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
}
}
@Test
@IR(counts = {IRNode.LOAD_VECTOR_F, ">0",
IRNode.VECTOR_MASK_CMP_F, ">0",
IRNode.VECTOR_BLEND_F, ">0",
IRNode.STORE_VECTOR, ">0"},
- applyIfAnd = {"UseCompactObjectHeaders", "false", "UseVectorCmov", "true"},
- applyIfCPUFeatureOr = {"avx", "true", "asimd", "true", "rvv", "true"})
- @IR(counts = {IRNode.LOAD_VECTOR_F, ">0",
- IRNode.VECTOR_MASK_CMP_F, ">0",
- IRNode.VECTOR_BLEND_F, ">0",
- IRNode.STORE_VECTOR, ">0"},
- applyIfAnd = {"AlignVector", "false", "UseVectorCmov", "true"},
+ applyIf = {"UseVectorCmov", "true"},
applyIfCPUFeatureOr = {"avx", "true", "asimd", "true", "rvv", "true"})
@IR(failOn = {IRNode.STORE_VECTOR},
applyIf = {"UseVectorCmov", "false"})
@IR(counts = {IRNode.CMOVE_F, ">0", IRNode.CMP_F, ">0"},
applyIf = {"UseVectorCmov", "false"},
applyIfPlatformOr = {"riscv64", "true", "x64", "true", "aarch64", "true"})
private static void testCMoveFLEforFConstH2(float[] a, float[] b, float[] c) {
for (int i = 0; i < a.length; i+=2) {
c[i+0] = (a[i+0] <= b[i+0]) ? 0.1f : -0.1f;
c[i+1] = (a[i+1] <= b[i+1]) ? 0.1f : -0.1f;
- // 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
}
}
@Test
@IR(counts = {IRNode.LOAD_VECTOR_F, "=0",
< prev index next >