mirror of
https://github.com/openjdk/jdk.git
synced 2026-01-28 03:58:21 +00:00
8367028: compiler/c2/irTests/TestFloat16ScalarOperations.java failing intermittently because of constant folding
Reviewed-by: chagedorn, syan, rcastanedalo
This commit is contained in:
parent
830c4d3b19
commit
a4eb57c5ec
@ -68,6 +68,15 @@ public class TestFloat16ScalarOperations {
|
||||
private static final Float16 RANDOM4 = Float16.valueOf(genF.next());
|
||||
private static final Float16 RANDOM5 = Float16.valueOf(genF.next());
|
||||
|
||||
// We have to ensure that the constants are not special values that lead the operations to
|
||||
// constant fold. For example "x + 0" could constant fold to "x", so we need to avoid that
|
||||
// the add constant is zero.
|
||||
private static Generator<Float> genSmallRangeF = G.uniformFloats(0.1f, 0.9f);
|
||||
private static final Float16 RANDOM_CON_ADD = Float16.valueOf(genSmallRangeF.next());
|
||||
private static final Float16 RANDOM_CON_SUB = Float16.valueOf(genSmallRangeF.next());
|
||||
private static final Float16 RANDOM_CON_MUL = Float16.valueOf(genSmallRangeF.next());
|
||||
private static final Float16 RANDOM_CON_DIV = Float16.valueOf(genSmallRangeF.next());
|
||||
|
||||
private static Float16 RANDOM1_VAR = RANDOM1;
|
||||
private static Float16 RANDOM2_VAR = RANDOM2;
|
||||
private static Float16 RANDOM3_VAR = RANDOM3;
|
||||
@ -435,10 +444,10 @@ public class TestFloat16ScalarOperations {
|
||||
@Warmup(10000)
|
||||
public short testRandomFP16ConstantPatternSet1() {
|
||||
short res = 0;
|
||||
res += Float.floatToFloat16(RANDOM1_VAR.floatValue() + RANDOM2.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM2_VAR.floatValue() - RANDOM3.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM3_VAR.floatValue() * RANDOM4.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM4_VAR.floatValue() / RANDOM5.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM1_VAR.floatValue() + RANDOM_CON_ADD.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM2_VAR.floatValue() - RANDOM_CON_SUB.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM3_VAR.floatValue() * RANDOM_CON_MUL.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM4_VAR.floatValue() / RANDOM_CON_DIV.floatValue());
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -456,10 +465,10 @@ public class TestFloat16ScalarOperations {
|
||||
@Warmup(10000)
|
||||
public short testRandomFP16ConstantPatternSet2() {
|
||||
short res = 0;
|
||||
res += Float.floatToFloat16(RANDOM2.floatValue() + RANDOM1_VAR.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM3.floatValue() - RANDOM2_VAR.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM4.floatValue() * RANDOM3_VAR.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM5.floatValue() / RANDOM4_VAR.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM_CON_ADD.floatValue() + RANDOM1_VAR.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM_CON_SUB.floatValue() - RANDOM2_VAR.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM_CON_MUL.floatValue() * RANDOM3_VAR.floatValue());
|
||||
res += Float.floatToFloat16(RANDOM_CON_DIV.floatValue() / RANDOM4_VAR.floatValue());
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user