- Use SSE2 for min/max instead

This commit is contained in:
Magnus Norddahl 2018-12-02 07:35:02 +01:00
parent 49f2a38799
commit 706a923884

View file

@ -852,7 +852,7 @@ void JitCompiler::EmitMINF_RR()
auto rc = CheckRegF(C, A); auto rc = CheckRegF(C, A);
if (A != B) if (A != B)
cc.movsd(regF[A], regF[B]); cc.movsd(regF[A], regF[B]);
cc.minsd(regF[A], rc); cc.minpd(regF[A], rc); // minsd required SSE 4.1
} }
void JitCompiler::EmitMINF_RK() void JitCompiler::EmitMINF_RK()
@ -861,7 +861,7 @@ void JitCompiler::EmitMINF_RK()
auto tmp = newTempIntPtr(); auto tmp = newTempIntPtr();
cc.mov(tmp, asmjit::imm_ptr(&konstf[C])); cc.mov(tmp, asmjit::imm_ptr(&konstf[C]));
cc.movsd(regF[A], asmjit::x86::qword_ptr(tmp)); cc.movsd(regF[A], asmjit::x86::qword_ptr(tmp));
cc.minsd(regF[A], rb); cc.minpd(regF[A], rb); // minsd required SSE 4.1
} }
void JitCompiler::EmitMAXF_RR() void JitCompiler::EmitMAXF_RR()
@ -869,7 +869,7 @@ void JitCompiler::EmitMAXF_RR()
auto rc = CheckRegF(C, A); auto rc = CheckRegF(C, A);
if (A != B) if (A != B)
cc.movsd(regF[A], regF[B]); cc.movsd(regF[A], regF[B]);
cc.maxsd(regF[A], rc); cc.maxpd(regF[A], rc); // maxsd required SSE 4.1
} }
void JitCompiler::EmitMAXF_RK() void JitCompiler::EmitMAXF_RK()
@ -878,7 +878,7 @@ void JitCompiler::EmitMAXF_RK()
auto tmp = newTempIntPtr(); auto tmp = newTempIntPtr();
cc.mov(tmp, asmjit::imm_ptr(&konstf[C])); cc.mov(tmp, asmjit::imm_ptr(&konstf[C]));
cc.movsd(regF[A], asmjit::x86::qword_ptr(tmp)); cc.movsd(regF[A], asmjit::x86::qword_ptr(tmp));
cc.maxsd(regF[A], rb); cc.maxpd(regF[A], rb); // maxsd required SSE 4.1
} }
void JitCompiler::EmitATAN2() void JitCompiler::EmitATAN2()