X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fs390-abi.cs;h=88f99a99493256d3c1424426bf3f9f8d6996f7b9;hb=222df67b5f5a9bd5e2c8da9e454b0f2883e1fe41;hp=ec404b10c83a4fa759d7bb1c42dbd29e502bc54f;hpb=b585d00928892398dfbfc315ed78b8032fa14708;p=mono.git diff --git a/mono/mini/s390-abi.cs b/mono/mini/s390-abi.cs index ec404b10c83..88f99a99493 100644 --- a/mono/mini/s390-abi.cs +++ b/mono/mini/s390-abi.cs @@ -91,9 +91,17 @@ class Tests { return 3; } - static TestStruct3 spill_struct (TestStruct3 regStruct) + static TestStruct3 spill_struct (TestStruct3 regStruct, int value) { - regStruct.c = 99; + regStruct.c = value; + return(regStruct); + } + + static TestStruct3 ret_big_struct (int value_a, int value_c) + { + TestStruct3 regStruct = new TestStruct3(); + regStruct.a = value_a; + regStruct.c = value_c; return(regStruct); } @@ -185,7 +193,7 @@ class Tests { myStruct.a = 64; myStruct.b = 255; myStruct.c = 127; - myStruct = spill_struct(myStruct); + myStruct = spill_struct(myStruct, 99); if (myStruct.c == 99) return 0; return myStruct.c; @@ -284,6 +292,16 @@ class Tests { return (pass_struct_spill_big (myStruct)); } + static int test_0_pass_ret_big_struct () + { + TestStruct3 myStruct; + myStruct = ret_big_struct(10,132); + if (myStruct.c == 132) + return 0; + else + return 1; + } + static int test_0_pass_spill_struct_spill () { TestStruct2 myStruct; @@ -316,4 +334,38 @@ class Tests { return 9; } + static float pass_double_ret_float(double a) + { + float b; + b = (float) a; + return b; + } + + static int test_0_pass_double_ret_float () + { + double a = 654.34; + float b = 654.34f; + if (pass_double_ret_float(a) == b) + return 0; + else + return 10; + } + + static double pass_float_ret_double(float a) + { + double b; + b = (double) a; + return b; + } + + static int test_0_pass_float_ret_double () + { + float a = 654.34f; + double b = 654.34; + if (pass_float_ret_double(a) == b) + return 0; + else + return 11; + } + }