Skip to content

Commit 2d47263

Browse files
committed
Ensure mono-llvm handles char as a simd element type
1 parent fe59aea commit 2d47263

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

src/mono/mono/mini/mini.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4681,10 +4681,12 @@ mini_get_simd_type_info (MonoClass *klass, guint32 *nelems)
46814681
*nelems = 4;
46824682
return MONO_TYPE_R4;
46834683
} else if (!strcmp (klass_name, "Vector`1") || !strcmp (klass_name, "Vector64`1") || !strcmp (klass_name, "Vector128`1") || !strcmp (klass_name, "Vector256`1") || !strcmp (klass_name, "Vector512`1")) {
4684-
MonoType *etype = mono_class_get_generic_class (klass)->context.class_inst->type_argv [0];
4684+
MonoTypeEnum etype = mono_class_get_generic_class (klass)->context.class_inst->type_argv [0]->type;
4685+
if (etype == MONO_TYPE_CHAR) // e.g. Vector128<char> => MONO_TYPE_U2
4686+
etype = MONO_TYPE_U2;
46854687
int size = mono_class_value_size (klass, NULL);
4686-
*nelems = size / mini_primitive_type_size (etype->type);
4687-
return etype->type;
4688+
*nelems = size / mini_primitive_type_size (type);
4689+
return type;
46884690
} else {
46894691
printf ("%s\n", klass_name);
46904692
NOT_IMPLEMENTED;

0 commit comments

Comments
 (0)