Implement IR primitives for number comparisons in JVM BE

This commit is contained in:
Dmitry Petrov
2018-02-02 11:49:44 +03:00
parent bf18186045
commit 4776535205
9 changed files with 235 additions and 70 deletions
@@ -0,0 +1,15 @@
fun ltDD(x: Comparable<Double>, y: Double) =
x is Double && x < y
fun ltCD(x: Comparable<Double>, y: Double) =
x < y
fun box(): String {
val Z = 0.0
val NZ = -0.0
if (ltDD(NZ, Z)) return "Fail 1"
if (!ltCD(NZ, Z)) return "Fail 2"
return "OK"
}
@@ -0,0 +1,17 @@
fun eqeq(x: Any, y: Any) =
x is Double && y is Double && x == y
fun anyEqeq(x: Any, y: Any) =
x == y
fun box(): String {
val Z = 0.0
val NZ = -0.0
if (!(Z == NZ)) return "Fail 1"
if (!eqeq(Z, NZ)) return "Fail 2"
if (anyEqeq(Z, NZ)) return "Fail A"
return "OK"
}
@@ -0,0 +1,17 @@
fun eqeq(x: Any, y: Any) =
x is Float && y is Float && x == y
fun anyEqeq(x: Any, y: Any) =
x == y
fun box(): String {
val Z = 0.0F
val NZ = -0.0F
if (!(Z == NZ)) return "Fail 1"
if (!eqeq(Z, NZ)) return "Fail 2"
if (anyEqeq(Z, NZ)) return "Fail A"
return "OK"
}
@@ -0,0 +1,8 @@
fun ltDI(x: Any, y: Any) =
x is Double && y is Int && x < y
fun box(): String {
if (ltDI(-0.0, 0)) return "Fail 1"
return "OK"
}