本文整理汇总了C++中PPCEmuAssembler::divsd方法的典型用法代码示例。如果您正苦于以下问题:C++ PPCEmuAssembler::divsd方法的具体用法?C++ PPCEmuAssembler::divsd怎么用?C++ PPCEmuAssembler::divsd使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PPCEmuAssembler
的用法示例。
在下文中一共展示了PPCEmuAssembler::divsd方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: jit_fallback
static bool
fpArithGeneric(PPCEmuAssembler& a, Instruction instr)
{
if (instr.rc) {
return jit_fallback(a, instr);
}
// FPSCR, FPRF supposed to be updated here...
auto tmpSrcA = a.allocXmmTmp(a.loadRegisterRead(a.fprps[instr.frA]));
switch (op) {
case FPAdd: {
auto srcB = a.loadRegisterRead(a.fprps[instr.frB]);
a.addsd(tmpSrcA, srcB);
break;
}
case FPSub: {
auto srcB = a.loadRegisterRead(a.fprps[instr.frB]);
a.subsd(tmpSrcA, srcB);
break;
}
case FPMul: {
auto tmpSrcC = a.allocXmmTmp(a.loadRegisterRead(a.fprps[instr.frC]));
if (ShouldRound) {
// PPC has this weird behaviour with fmuls where it truncates the
// RHS operator to 24-bits of mantissa before multiplying...
roundTo24BitSd(a, tmpSrcC);
}
a.mulsd(tmpSrcA, tmpSrcC);
break;
}
case FPDiv: {
auto srcB = a.loadRegisterRead(a.fprps[instr.frB]);
a.divsd(tmpSrcA, srcB);
break;
}
}
if (ShouldRound) {
roundToSingleSd(a, tmpSrcA, tmpSrcA);
auto dst = a.loadRegisterWrite(a.fprps[instr.frD]);
a.movddup(dst, tmpSrcA);
} else {
auto dst = a.loadRegisterReadWrite(a.fprps[instr.frD]);
a.movsd(dst, tmpSrcA);
}
return true;
}
示例2: jit_fallback
static bool
fdiv(PPCEmuAssembler& a, Instruction instr)
{
if (instr.rc) {
return jit_fallback(a, instr);
}
// FPSCR, FPRF supposed to be updated here...
a.movq(a.xmm0, a.ppcfpr[instr.frA]);
a.movq(a.xmm1, a.ppcfpr[instr.frB]);
a.divsd(a.xmm0, a.xmm1);
a.movq(a.ppcfpr[instr.frD], a.xmm0);
return true;
}