Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Urban <bernhard.urban@xamarin.com>2017-02-27 19:55:54 +0300
committerBernhard Urban <bernhard.urban@xamarin.com>2017-03-01 00:59:28 +0300
commit78da0216d20d554cb7f801ee97709a8e521df01a (patch)
tree6fb973cce6cd59857edbc7ef509ed8cd9b0f66ec
parentf39517dcc9247d831e94002cd4c60b9d1119c8f5 (diff)
[interpreter] add basic-vectors.cs to richeck target
-rwxr-xr-xmono/mini/Makefile.am.in3
-rw-r--r--mono/mini/basic-vectors.cs3
-rw-r--r--mono/mini/interpreter/interp.c3
-rw-r--r--mono/mini/interpreter/transform.c42
4 files changed, 50 insertions, 1 deletions
diff --git a/mono/mini/Makefile.am.in b/mono/mini/Makefile.am.in
index 3474a35a28a..e231385c8c8 100755
--- a/mono/mini/Makefile.am.in
+++ b/mono/mini/Makefile.am.in
@@ -540,7 +540,8 @@ iregtests = \
exceptions.exe \
devirtualization.exe \
generics.exe \
- basic-simd.exe
+ basic-simd.exe \
+ basic-vectors.exe
if X86
arch_sources = $(x86_sources)
diff --git a/mono/mini/basic-vectors.cs b/mono/mini/basic-vectors.cs
index a2cf101450e..1174292433a 100644
--- a/mono/mini/basic-vectors.cs
+++ b/mono/mini/basic-vectors.cs
@@ -113,6 +113,7 @@ public class VectorTests {
return Vector2.Abs (v1);
}
+ [Category ("!INTERPRETER")]
public static int test_0_vector2_abs () {
var v1 = new Vector2 (-1.0f, -2.0f);
var v2 = new Vector2 (1.0f, 2.0f);
@@ -350,6 +351,7 @@ public class VectorTests {
return Vector4.Abs (v1);
}
+ [Category ("!INTERPRETER")]
public static int test_0_vector4_abs () {
var v1 = new Vector4 (-1.0f, -2.0f, -3.0f, -4.0f);
var v2 = new Vector4 (1.0f, 2.0f, 3.0f, 4.0f);
@@ -588,6 +590,7 @@ public class VectorTests {
return Vector3.Abs (v1);
}
+ [Category ("!INTERPRETER")]
public static int test_0_vector3_abs () {
var v1 = new Vector3 (-1.0f, -2.0f, -3.0f);
var v2 = new Vector3 (1.0f, 2.0f, 3.0f);
diff --git a/mono/mini/interpreter/interp.c b/mono/mini/interpreter/interp.c
index e604233bec0..a459917bfae 100644
--- a/mono/mini/interpreter/interp.c
+++ b/mono/mini/interpreter/interp.c
@@ -772,6 +772,7 @@ static MethodArguments* build_args_from_sig (MonoMethodSignature *sig, MonoInvoc
case MONO_TYPE_GENERICINST:
margs->ilen++;
break;
+ case MONO_TYPE_R4:
case MONO_TYPE_R8:
margs->flen++;
break;
@@ -828,6 +829,7 @@ static MethodArguments* build_args_from_sig (MonoMethodSignature *sig, MonoInvoc
#endif
int_i++;
break;
+ case MONO_TYPE_R4:
case MONO_TYPE_R8:
margs->fargs [int_f] = frame->stack_args [i].data.f;
int_f++;
@@ -858,6 +860,7 @@ static MethodArguments* build_args_from_sig (MonoMethodSignature *sig, MonoInvoc
case MONO_TYPE_GENERICINST:
margs->retval = &(frame->retval->data.p);
break;
+ case MONO_TYPE_R4:
case MONO_TYPE_R8:
margs->retval = &(frame->retval->data.p);
margs->is_float_ret = 1;
diff --git a/mono/mini/interpreter/transform.c b/mono/mini/interpreter/transform.c
index 4e6105f0f8f..e5e2ec931d3 100644
--- a/mono/mini/interpreter/transform.c
+++ b/mono/mini/interpreter/transform.c
@@ -2265,12 +2265,54 @@ generate (MonoMethod *method, RuntimeMethod *rtm, unsigned char *is_bb_start, Mo
token = read32 (td.ip + 1);
klass = mono_class_get_full (image, token, generic_context);
switch (mint_type (&klass->byval_arg)) {
+ case MINT_TYPE_I1:
+ ENSURE_I4 (&td, 1);
+ SIMPLE_OP (td, MINT_LDELEM_I1);
+ --td.sp;
+ SET_SIMPLE_TYPE(td.sp - 1, STACK_TYPE_I4);
+ break;
+ case MINT_TYPE_U1:
+ ENSURE_I4 (&td, 1);
+ SIMPLE_OP (td, MINT_LDELEM_U1);
+ --td.sp;
+ SET_SIMPLE_TYPE(td.sp - 1, STACK_TYPE_I4);
+ break;
+ case MINT_TYPE_U2:
+ ENSURE_I4 (&td, 1);
+ SIMPLE_OP (td, MINT_LDELEM_U2);
+ --td.sp;
+ SET_SIMPLE_TYPE(td.sp - 1, STACK_TYPE_I4);
+ break;
+ case MINT_TYPE_I2:
+ ENSURE_I4 (&td, 1);
+ SIMPLE_OP (td, MINT_LDELEM_I2);
+ --td.sp;
+ SET_SIMPLE_TYPE(td.sp - 1, STACK_TYPE_I4);
+ break;
case MINT_TYPE_I4:
ENSURE_I4 (&td, 1);
SIMPLE_OP (td, MINT_LDELEM_I4);
--td.sp;
SET_SIMPLE_TYPE(td.sp - 1, STACK_TYPE_I4);
break;
+ case MINT_TYPE_I8:
+ ENSURE_I4 (&td, 1);
+ SIMPLE_OP (td, MINT_LDELEM_I8);
+ --td.sp;
+ SET_SIMPLE_TYPE(td.sp - 1, STACK_TYPE_I8);
+ break;
+ case MINT_TYPE_R4:
+ ENSURE_I4 (&td, 1);
+ SIMPLE_OP (td, MINT_LDELEM_R4);
+ --td.sp;
+ SET_SIMPLE_TYPE(td.sp - 1, STACK_TYPE_R8);
+ break;
+ case MINT_TYPE_R8:
+ ENSURE_I4 (&td, 1);
+ SIMPLE_OP (td, MINT_LDELEM_R8);
+ --td.sp;
+ SET_SIMPLE_TYPE(td.sp - 1, STACK_TYPE_R8);
+ break;
case MINT_TYPE_O:
ENSURE_I4 (&td, 1);
SIMPLE_OP (td, MINT_LDELEM_REF);