SPU LLVM: Optimize FM when op.ra == op.rb

This commit is contained in:
Malcolm Jestadt 2020-06-05 04:19:15 -04:00 committed by Ivan
parent 8357523ec0
commit dcf5c06d6d
1 changed files with 7 additions and 0 deletions

View File

@ -7478,6 +7478,13 @@ public:
{
const auto a = get_vr<f32[4]>(op.ra);
const auto b = get_vr<f32[4]>(op.rb);
if (op.ra == op.rb && !m_interp_magn)
{
set_vr(op.rt, a * b);
return;
}
const auto ma = eval(sext<s32[4]>(fcmp_uno(a != fsplat<f32[4]>(0.))));
const auto mb = eval(sext<s32[4]>(fcmp_uno(b != fsplat<f32[4]>(0.))));
const auto ca = eval(bitcast<f32[4]>(bitcast<s32[4]>(a) & mb));