Skip to content

Commit a4eb57c

Browse files
committed
8367028: compiler/c2/irTests/TestFloat16ScalarOperations.java failing intermittently because of constant folding
Reviewed-by: chagedorn, syan, rcastanedalo
1 parent 830c4d3 commit a4eb57c

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

test/hotspot/jtreg/compiler/c2/irTests/TestFloat16ScalarOperations.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,15 @@ public class TestFloat16ScalarOperations {
6868
private static final Float16 RANDOM4 = Float16.valueOf(genF.next());
6969
private static final Float16 RANDOM5 = Float16.valueOf(genF.next());
7070

71+
// We have to ensure that the constants are not special values that lead the operations to
72+
// constant fold. For example "x + 0" could constant fold to "x", so we need to avoid that
73+
// the add constant is zero.
74+
private static Generator<Float> genSmallRangeF = G.uniformFloats(0.1f, 0.9f);
75+
private static final Float16 RANDOM_CON_ADD = Float16.valueOf(genSmallRangeF.next());
76+
private static final Float16 RANDOM_CON_SUB = Float16.valueOf(genSmallRangeF.next());
77+
private static final Float16 RANDOM_CON_MUL = Float16.valueOf(genSmallRangeF.next());
78+
private static final Float16 RANDOM_CON_DIV = Float16.valueOf(genSmallRangeF.next());
79+
7180
private static Float16 RANDOM1_VAR = RANDOM1;
7281
private static Float16 RANDOM2_VAR = RANDOM2;
7382
private static Float16 RANDOM3_VAR = RANDOM3;
@@ -435,10 +444,10 @@ public void checkExactFP16ConstantPatterns(short actual) {
435444
@Warmup(10000)
436445
public short testRandomFP16ConstantPatternSet1() {
437446
short res = 0;
438-
res += Float.floatToFloat16(RANDOM1_VAR.floatValue() + RANDOM2.floatValue());
439-
res += Float.floatToFloat16(RANDOM2_VAR.floatValue() - RANDOM3.floatValue());
440-
res += Float.floatToFloat16(RANDOM3_VAR.floatValue() * RANDOM4.floatValue());
441-
res += Float.floatToFloat16(RANDOM4_VAR.floatValue() / RANDOM5.floatValue());
447+
res += Float.floatToFloat16(RANDOM1_VAR.floatValue() + RANDOM_CON_ADD.floatValue());
448+
res += Float.floatToFloat16(RANDOM2_VAR.floatValue() - RANDOM_CON_SUB.floatValue());
449+
res += Float.floatToFloat16(RANDOM3_VAR.floatValue() * RANDOM_CON_MUL.floatValue());
450+
res += Float.floatToFloat16(RANDOM4_VAR.floatValue() / RANDOM_CON_DIV.floatValue());
442451
return res;
443452
}
444453

@@ -456,10 +465,10 @@ public void checkRandomFP16ConstantPatternSet1(short actual) {
456465
@Warmup(10000)
457466
public short testRandomFP16ConstantPatternSet2() {
458467
short res = 0;
459-
res += Float.floatToFloat16(RANDOM2.floatValue() + RANDOM1_VAR.floatValue());
460-
res += Float.floatToFloat16(RANDOM3.floatValue() - RANDOM2_VAR.floatValue());
461-
res += Float.floatToFloat16(RANDOM4.floatValue() * RANDOM3_VAR.floatValue());
462-
res += Float.floatToFloat16(RANDOM5.floatValue() / RANDOM4_VAR.floatValue());
468+
res += Float.floatToFloat16(RANDOM_CON_ADD.floatValue() + RANDOM1_VAR.floatValue());
469+
res += Float.floatToFloat16(RANDOM_CON_SUB.floatValue() - RANDOM2_VAR.floatValue());
470+
res += Float.floatToFloat16(RANDOM_CON_MUL.floatValue() * RANDOM3_VAR.floatValue());
471+
res += Float.floatToFloat16(RANDOM_CON_DIV.floatValue() / RANDOM4_VAR.floatValue());
463472
return res;
464473
}
465474

0 commit comments

Comments
 (0)