x86/64: Add a couple of more cases to very minor vertex skinning optimization

This commit is contained in:
Henrik Rydgard 2016-03-28 18:40:23 +02:00
parent a8c386b94c
commit 0a8d74728a

View File

@ -386,11 +386,10 @@ void VertexDecoderJitCache::Jit_WeightsFloat() {
MOVUPS(MDisp(dstReg, dec_->decFmt.w0off), XMM3);
break;
// Don't we have an emitter for MOVQ?
//case 2:
// MOVQ(XMM3, MDisp(srcReg, dec_->weightoff));
// MOVUPS(MDisp(dstReg, dec_->decFmt.w0off), XMM3);
// break;
case 2:
MOVQ_xmm(XMM3, MDisp(srcReg, dec_->weightoff));
MOVUPS(MDisp(dstReg, dec_->decFmt.w0off), XMM3);
break;
case 4:
MOVUPS(XMM3, MDisp(srcReg, dec_->weightoff));
@ -404,6 +403,13 @@ void VertexDecoderJitCache::Jit_WeightsFloat() {
MOVUPS(MDisp(dstReg, dec_->decFmt.w0off + 16), XMM4);
break;
case 6:
MOVUPS(XMM3, MDisp(srcReg, dec_->weightoff));
MOVQ_xmm(XMM4, MDisp(srcReg, dec_->weightoff + 16));
MOVUPS(MDisp(dstReg, dec_->decFmt.w0off), XMM3);
MOVUPS(MDisp(dstReg, dec_->decFmt.w0off + 16), XMM4);
break;
case 8:
MOVUPS(XMM3, MDisp(srcReg, dec_->weightoff));
MOVUPS(XMM4, MDisp(srcReg, dec_->weightoff + 16));