diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index eaba3ff708f..f0f4d511cdd 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -246,6 +246,10 @@ task minus_eq(type: UnitKonanTest) { source = "codegen/function/minus_eq.kt" } +task eqeq(type: UnitKonanTest) { + source = "codegen/function/eqeq.kt" +} + task cycle(type: UnitKonanTest) { source = "codegen/cycles/cycle.kt" } diff --git a/backend.native/tests/codegen/function/eqeq-test.c b/backend.native/tests/codegen/function/eqeq-test.c index 6251ca0b5a4..764061ca79f 100644 --- a/backend.native/tests/codegen/function/eqeq-test.c +++ b/backend.native/tests/codegen/function/eqeq-test.c @@ -9,6 +9,22 @@ run_test() { int (*eqeqL)(int64_t, int64_t) = resolve_symbol("kfun:eqeqL(Long;Long)"); int (*eqeqF)(float , float ) = resolve_symbol("kfun:eqeqF(Float;Float)"); int (*eqeqD)(double , double ) = resolve_symbol("kfun:eqeqD(Double;Double)"); + void *(*helloString)() = resolve_symbol("kfun:helloString()"); + void *(*goodbyeString)() = resolve_symbol("kfun:goodbyeString()"); + int (*eqeqStr)(void *, void *) = resolve_symbol("kfun:eqeqStr(String;String)"); + + int (*gtI )(int , int ) = resolve_symbol("kfun:gtI(Int;Int)"); + int (*ltI )(int , int ) = resolve_symbol("kfun:ltI(Int;Int)"); + int (*geI )(int , int ) = resolve_symbol("kfun:geI(Int;Int)"); + int (*leI )(int , int ) = resolve_symbol("kfun:leI(Int;Int)"); + int (*neI )(int , int ) = resolve_symbol("kfun:neI(Int;Int)"); + + int (*gtF )(float , float ) = resolve_symbol("kfun:gtF(Float;Float)"); + int (*ltF )(float , float ) = resolve_symbol("kfun:ltF(Float;Float)"); + int (*geF )(float , float ) = resolve_symbol("kfun:geF(Float;Float)"); + int (*leF )(float , float ) = resolve_symbol("kfun:leF(Float;Float)"); + int (*neF )(float , float ) = resolve_symbol("kfun:neF(Float;Float)"); + if (!eqeqB(3 , 3 )) return 1; if (!eqeqS(3 , 3 )) return 1; if (!eqeqI(3 , 3 )) return 1; @@ -16,5 +32,19 @@ run_test() { if (!eqeqF(3.0f, 3.0f)) return 1; if (!eqeqD(3.0 , 3.0 )) return 1; + if (!eqeqStr(helloString(), helloString())) return 1; + + if (gtI (2 , 3 )) return 1; + if (ltI (3 , 2 )) return 1; + if (geI (2 , 3 )) return 1; + if (leI (3 , 2 )) return 1; + if (neI (2 , 2 )) return 1; + + if (gtF (2.0 , 3.0 )) return 1; + if (ltF (3.0 , 2.0 )) return 1; + if (geF (2.0 , 3.0 )) return 1; + if (leF (3.0 , 2.0 )) return 1; + if (neF (2.0 , 2.0 )) return 1; + return 0; } diff --git a/backend.native/tests/codegen/function/eqeq.kt b/backend.native/tests/codegen/function/eqeq.kt index cc80c896970..b5b42861b47 100644 --- a/backend.native/tests/codegen/function/eqeq.kt +++ b/backend.native/tests/codegen/function/eqeq.kt @@ -1,8 +1,23 @@ -fun eqeqB(a:Byte, b:Byte ) = a == b -fun eqeqS(a:Short, b:Short ) = a == b -fun eqeqI(a:Int, b:Int ) = a == b -fun eqeqL(a:Long, b:Long ) = a == b -fun eqeqF(a:Float, b:Float ) = a == b -fun eqeqD(a:Double, b:Double) = a == b +fun eqeqB (a:Byte, b:Byte ) = a == b +fun eqeqS (a:Short, b:Short ) = a == b +fun eqeqI (a:Int, b:Int ) = a == b +fun eqeqL (a:Long, b:Long ) = a == b +fun eqeqF (a:Float, b:Float ) = a == b +fun eqeqD (a:Double, b:Double) = a == b +fun eqeqStr(a:String, b:String) = a == b -//fun eqeqStr(a:String, b:String) = a == b +fun gtI (a:Int, b:Int ) = a > b +fun ltI (a:Int, b:Int ) = a > b +fun geI (a:Int, b:Int ) = a >= b +fun leI (a:Int, b:Int ) = a <= b +fun neI (a:Int, b:Int ) = a != b + +fun gtF (a:Float, b:Float ) = a > b +fun ltF (a:Float, b:Float ) = a > b +fun geF (a:Float, b:Float ) = a >= b +fun leF (a:Float, b:Float ) = a <= b +fun neF (a:Float, b:Float ) = a != b + + +fun helloString() = "Hello" +fun goodbyeString() = "Goodbye" \ No newline at end of file