public static void Umulh(AILEmitterCtx Context) { AOpCodeMul Op = (AOpCodeMul)Context.CurrOp; Context.EmitLdintzr(Op.Rn); Context.EmitLdintzr(Op.Rm); ASoftFallback.EmitCall(Context, nameof(ASoftFallback.UMulHi128)); Context.EmitStintzr(Op.Rd); }
private static void EmitMul(AILEmitterCtx Context, OpCode ILOp) { AOpCodeMul Op = (AOpCodeMul)Context.CurrOp; Context.EmitLdintzr(Op.Ra); Context.EmitLdintzr(Op.Rn); Context.EmitLdintzr(Op.Rm); Context.Emit(OpCodes.Mul); Context.Emit(ILOp); Context.EmitStintzr(Op.Rd); }
private static void EmitMull(AILEmitterCtx Context, OpCode AddSubOp, bool Signed) { AOpCodeMul Op = (AOpCodeMul)Context.CurrOp; OpCode CastOp = Signed ? OpCodes.Conv_I8 : OpCodes.Conv_U8; Context.EmitLdintzr(Op.Ra); Context.EmitLdintzr(Op.Rn); Context.Emit(OpCodes.Conv_I4); Context.Emit(CastOp); Context.EmitLdintzr(Op.Rm); Context.Emit(OpCodes.Conv_I4); Context.Emit(CastOp); Context.Emit(OpCodes.Mul); Context.Emit(AddSubOp); Context.EmitStintzr(Op.Rd); }