public static void Ucvtf_Gp(ArmEmitterContext context) { OpCodeSimdCvt op = (OpCodeSimdCvt)context.CurrOp; Operand res = GetIntOrZR(context, op.Rn); res = EmitFPConvert(context, res, op.Size, signed: false); context.Copy(GetVec(op.Rd), context.VectorInsert(context.VectorZero(), res, 0)); }
private static void EmitFcvtz__Gp_Fixed(ArmEmitterContext context, bool signed) { OpCodeSimdCvt op = (OpCodeSimdCvt)context.CurrOp; OperandType type = op.Size == 0 ? OperandType.FP32 : OperandType.FP64; Operand ne = context.VectorExtract(type, GetVec(op.Rn), 0); Operand res = signed ? EmitScalarFcvts(context, ne, op.FBits) : EmitScalarFcvtu(context, ne, op.FBits); SetIntOrZR(context, op.Rd, res); }
public static void Scvtf_Gp(ArmEmitterContext context) { OpCodeSimdCvt op = (OpCodeSimdCvt)context.CurrOp; Operand res = GetIntOrZR(context, op.Rn); if (op.RegisterSize == RegisterSize.Int32) { res = context.SignExtend32(OperandType.I64, res); } res = EmitFPConvert(context, res, op.Size, signed: true); context.Copy(GetVec(op.Rd), context.VectorInsert(context.VectorZero(), res, 0)); }