if (dst == src3) { \
instr(dst.fp().V##format(), src1.fp().V##format(), src2.fp().V##format()); \
} else if (dst != src1 && dst != src2) { \
Mov(dst.fp().V##format(), src3.fp().V##format()); \
instr(dst.fp().V##format(), src1.fp().V##format(), src2.fp().V##format()); \
} else { \
DCHECK(dst == src1 || dst == src2); \
UseScratchRegisterScope temps(this); \
VRegister tmp = temps.AcquireV(kFormat##format); \
Mov(tmp, src3.fp().V##format()); \
instr(tmp, src1.fp().V##format(), src2.fp().V##format()); \
Mov(dst.fp().V##format(), tmp); \
}