emit_x64: Use movdqa instead of movaps in EmitPackedSubU8

While movaps and movdqa are behaviourly equivalent, using movaps may incur
a domain crossing penalty on some microarchitectures. This is because
movaps is an instruction in the floating-point domain while the following
instructions are in the integer domain.
This commit is contained in:
MerryMage 2016-12-05 00:56:56 +00:00
parent 52e1445f43
commit 54d051977f

View file

@ -1314,7 +1314,7 @@ void EmitX64::EmitPackedSubU8(IR::Block& block, IR::Inst* inst) {
code->movd(xmm_a, reg_a);
code->movd(xmm_b, reg_b);
if (ge_inst) {
code->movaps(xmm_ge, xmm_a);
code->movdqa(xmm_ge, xmm_a);
code->pmaxub(xmm_ge, xmm_b);
code->pcmpeqb(xmm_ge, xmm_a);
code->movd(reg_ge, xmm_ge);