@@ -673,6 +673,10 @@ static guint16 sse2_methods [] = {
673
673
SN_CompareGreaterThan ,
674
674
SN_CompareLessThan ,
675
675
SN_CompareNotEqual ,
676
+ SN_ConvertScalarToVector128UInt32 ,
677
+ SN_ConvertScalarToVector128UInt64 ,
678
+ SN_ConvertToUInt32 ,
679
+ SN_ConvertToUInt64 ,
676
680
SN_LoadAlignedVector128 ,
677
681
SN_LoadVector128 ,
678
682
SN_MoveMask ,
@@ -849,6 +853,14 @@ emit_x86_intrinsics (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature
849
853
return emit_simd_ins_for_sig (cfg , klass , arg0_type == MONO_TYPE_R8 ? OP_XCOMPARE_FP : OP_XCOMPARE , CMP_GT , arg0_type , fsig , args );
850
854
case SN_CompareLessThan :
851
855
return emit_simd_ins_for_sig (cfg , klass , arg0_type == MONO_TYPE_R8 ? OP_XCOMPARE_FP : OP_XCOMPARE , CMP_LT , arg0_type , fsig , args );
856
+ case SN_ConvertScalarToVector128UInt32 :
857
+ return emit_simd_ins_for_sig (cfg , klass , OP_EXPAND_I4 , -1 , arg0_type , fsig , args );
858
+ case SN_ConvertScalarToVector128UInt64 :
859
+ return emit_simd_ins_for_sig (cfg , klass , OP_EXPAND_I8 , -1 , arg0_type , fsig , args );
860
+ case SN_ConvertToUInt32 :
861
+ return emit_simd_ins_for_sig (cfg , klass , OP_EXTRACT_I4 , 0 /*element index*/ , arg0_type , fsig , args );
862
+ case SN_ConvertToUInt64 :
863
+ return emit_simd_ins_for_sig (cfg , klass , OP_EXTRACT_I8 , 0 /*element index*/ , arg0_type , fsig , args );
852
864
case SN_LoadAlignedVector128 :
853
865
return emit_simd_ins_for_sig (cfg , klass , OP_SSE_LOADU , 16 /*alignment*/ , arg0_type , fsig , args );
854
866
case SN_LoadVector128 :
0 commit comments