public static void Cmhs_V(ArmEmitterContext context) { OpCodeSimdReg op = (OpCodeSimdReg)context.CurrOp; if (Optimizations.UseSse41 && op.Size < 3) { Operand n = GetVec(op.Rn); Operand m = GetVec(op.Rm); Intrinsic maxInst = X86PmaxuInstruction[op.Size]; Operand res = context.AddIntrinsic(maxInst, n, m); Intrinsic cmpInst = X86PcmpeqInstruction[op.Size]; res = context.AddIntrinsic(cmpInst, res, n); if (op.RegisterSize == RegisterSize.Simd64) { res = context.VectorZeroUpper64(res); } context.Copy(GetVec(op.Rd), res); } else { EmitCmpOp(context, (op1, op2) => context.ICompareGreaterOrEqualUI(op1, op2), scalar: false); } }
public static void EmitSubsCCheck(ArmEmitterContext context, Operand n, Operand m) { // C = Rn >= Rm SetFlag(context, PState.CFlag, context.ICompareGreaterOrEqualUI(n, m)); }
public static void Cmhs_S(ArmEmitterContext context) { EmitCmpOp(context, (op1, op2) => context.ICompareGreaterOrEqualUI(op1, op2), scalar: true); }