Skip to content

Commit e631031

Browse files
authored
Implement missing Sse2 intrinsics (#33056)
1 parent 9dec6ae commit e631031

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

src/mono/mono/mini/simd-intrinsics-netcore.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,10 @@ static guint16 sse2_methods [] = {
673673
SN_CompareGreaterThan,
674674
SN_CompareLessThan,
675675
SN_CompareNotEqual,
676+
SN_ConvertScalarToVector128UInt32,
677+
SN_ConvertScalarToVector128UInt64,
678+
SN_ConvertToUInt32,
679+
SN_ConvertToUInt64,
676680
SN_LoadAlignedVector128,
677681
SN_LoadVector128,
678682
SN_MoveMask,
@@ -849,6 +853,14 @@ emit_x86_intrinsics (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature
849853
return emit_simd_ins_for_sig (cfg, klass, arg0_type == MONO_TYPE_R8 ? OP_XCOMPARE_FP : OP_XCOMPARE, CMP_GT, arg0_type, fsig, args);
850854
case SN_CompareLessThan:
851855
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);
852864
case SN_LoadAlignedVector128:
853865
return emit_simd_ins_for_sig (cfg, klass, OP_SSE_LOADU, 16 /*alignment*/, arg0_type, fsig, args);
854866
case SN_LoadVector128:

src/mono/mono/mini/simd-methods-netcore.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ METHOD(Or)
8383
METHOD(LoadAlignedVector128)
8484
METHOD(Xor)
8585
METHOD(CompareGreaterThan)
86+
METHOD(ConvertScalarToVector128UInt32)
87+
METHOD(ConvertScalarToVector128UInt64)
8688
METHOD(PackUnsignedSaturate)
8789
METHOD(StoreScalar)
8890
METHOD(StoreAligned)

0 commit comments

Comments
 (0)