From b9b13f0fc10496e54c5b72993c589ca24fa636ab Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Mon, 2 Sep 2019 23:55:07 +0200 Subject: [PATCH] Use CMP_GE/CMP_LE/CMP_GE_UN/CMP_LE_UN instead of manual decomposition --- mono/mini/simd-intrinsics-netcore.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/mono/mini/simd-intrinsics-netcore.c b/mono/mini/simd-intrinsics-netcore.c index 44af04b2a02..96b020f1a76 100644 --- a/mono/mini/simd-intrinsics-netcore.c +++ b/mono/mini/simd-intrinsics-netcore.c @@ -418,22 +418,20 @@ emit_sys_numerics_vector_t (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSig ins = emit_xcompare (cfg, klass, etype, args [0], args [1]); switch (id) { case SN_GreaterThan: - case SN_GreaterThanOrEqual: ins->inst_c0 = is_unsigned ? CMP_GT_UN : CMP_GT; break; + case SN_GreaterThanOrEqual: + ins->inst_c0 = is_unsigned ? CMP_GE_UN : CMP_GE; + break; case SN_LessThan: - case SN_LessThanOrEqual: ins->inst_c0 = is_unsigned ? CMP_LT_UN : CMP_LT; break; + case SN_LessThanOrEqual: + ins->inst_c0 = is_unsigned ? CMP_LE_UN : CMP_LE; + break; default: g_assert_not_reached (); } - if (id == SN_GreaterThanOrEqual || id == SN_LessThanOrEqual) { - MonoInst *eq_ins; - eq_ins = emit_xcompare (cfg, klass, etype, args [0], args [1]); - ins = emit_simd_ins (cfg, klass, OP_XBINOP, ins->dreg, eq_ins->dreg); - ins->inst_c0 = OP_IOR; - } return ins; case SN_op_Explicit: return emit_simd_ins (cfg, klass, OP_XCAST, args [0]->dreg, -1); -- 2.11.4.GIT