diff --git a/src/mono/mono/mini/simd-intrinsics.c b/src/mono/mono/mini/simd-intrinsics.c index 700099737d29c1..bf4b192ad39758 100644 --- a/src/mono/mono/mini/simd-intrinsics.c +++ b/src/mono/mono/mini/simd-intrinsics.c @@ -577,6 +577,7 @@ static guint16 sri_vector_methods [] = { SN_AsVector3, SN_AsVector4, SN_Ceiling, + SN_ConditionalSelect, SN_Create, SN_CreateScalar, SN_CreateScalarUnsafe, @@ -661,6 +662,13 @@ emit_sri_vector (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsi return emit_simd_ins_for_sig (cfg, klass, OP_XOP_OVR_X_X, ceil_or_floor, arg0_type, fsig, args); #else return NULL; +#endif + } + case SN_ConditionalSelect: { +#ifdef TARGET_ARM64 + return emit_simd_ins_for_sig (cfg, klass, OP_ARM64_BSL, -1, arg0_type, fsig, args); +#else + return NULL; #endif } case SN_Create: { diff --git a/src/mono/mono/mini/simd-methods.h b/src/mono/mono/mini/simd-methods.h index d223b2ba5aee87..4cce99c7c7c1c6 100644 --- a/src/mono/mono/mini/simd-methods.h +++ b/src/mono/mono/mini/simd-methods.h @@ -59,6 +59,7 @@ METHOD(AsVector4) METHOD(Create) METHOD(CreateScalar) METHOD(CreateScalarUnsafe) +METHOD(ConditionalSelect) METHOD(GetElement) METHOD(GetLower) METHOD(GetUpper)