Commit afe27e92 by Nicolas Capens Committed by Nicolas Capens

Emulate MultiplyAddPairs intrinsic.

Bug b/37496078 Change-Id: I2940cee7a7b174c98f28282831c414c1f524702d Reviewed-on: https://swiftshader-review.googlesource.com/10933Tested-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 6c15744a
...@@ -3609,15 +3609,26 @@ namespace sw ...@@ -3609,15 +3609,26 @@ namespace sw
RValue<Int2> MulAdd(RValue<Short4> x, RValue<Short4> y) RValue<Int2> MulAdd(RValue<Short4> x, RValue<Short4> y)
{ {
Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16); if(emulateIntrinsics)
const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::MultiplyAddPairs, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F}; {
auto target = ::context->getConstantUndef(Ice::IceType_i32); Int2 result;
auto pmaddwd = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic); result = Insert(result, Int(Extract(x, 0)) * Int(Extract(y, 0)) + Int(Extract(x, 1)) * Int(Extract(y, 1)), 0);
pmaddwd->addArg(x.value); result = Insert(result, Int(Extract(x, 2)) * Int(Extract(y, 2)) + Int(Extract(x, 3)) * Int(Extract(y, 3)), 1);
pmaddwd->addArg(y.value);
::basicBlock->appendInst(pmaddwd);
return As<Int2>(V(result)); return result;
}
else
{
Ice::Variable *result = ::function->makeVariable(Ice::IceType_v8i16);
const Ice::Intrinsics::IntrinsicInfo intrinsic = {Ice::Intrinsics::MultiplyAddPairs, Ice::Intrinsics::SideEffects_F, Ice::Intrinsics::ReturnsTwice_F, Ice::Intrinsics::MemoryWrite_F};
auto target = ::context->getConstantUndef(Ice::IceType_i32);
auto pmaddwd = Ice::InstIntrinsicCall::create(::function, 2, result, target, intrinsic);
pmaddwd->addArg(x.value);
pmaddwd->addArg(y.value);
::basicBlock->appendInst(pmaddwd);
return As<Int2>(V(result));
}
} }
RValue<SByte8> Pack(RValue<Short4> x, RValue<Short4> y) RValue<SByte8> Pack(RValue<Short4> x, RValue<Short4> y)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment