Commit 928dfeed by Chris Forbes

Return newly-created value from SpirvRoutine::createIntermediate

All the callers needed to fetch this immediately afterward; save some effort. Bug: b/126475489 Change-Id: I622d30aa955c27df8e12fdf87762c0db96133666 Reviewed-on: https://swiftshader-review.googlesource.com/c/25648Tested-by: 's avatarChris Forbes <chrisforbes@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Reviewed-by: 's avatarBen Clayton <bclayton@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent baf7ad35
......@@ -790,7 +790,6 @@ namespace sw
auto &objectTy = getType(object.type);
auto &pointer = getObject(pointerId);
auto &pointerTy = getType(pointer.type);
routine->createIntermediate(objectId, objectTy.sizeInComponents);
auto &pointerBase = getObject(pointer.pointerBase);
auto &pointerBaseTy = getType(pointerBase.type);
......@@ -805,7 +804,7 @@ namespace sw
}
auto &ptrBase = routine->getValue(pointer.pointerBase);
auto &dst = routine->getIntermediate(objectId);
auto &dst = routine->createIntermediate(objectId, objectTy.sizeInComponents);
if (pointer.kind == Object::Kind::Value)
{
......@@ -840,7 +839,6 @@ namespace sw
auto &object = getObject(objectId);
auto &type = getType(typeId);
auto &base = getObject(baseId);
routine->createIntermediate(objectId, type.sizeInComponents);
auto &pointerBase = getObject(object.pointerBase);
auto &pointerBaseTy = getType(pointerBase.type);
assert(type.sizeInComponents == 1);
......@@ -852,7 +850,7 @@ namespace sw
{
UNIMPLEMENTED("Descriptor-backed OpAccessChain not yet implemented");
}
auto &dst = routine->getIntermediate(objectId);
auto &dst = routine->createIntermediate(objectId, type.sizeInComponents);
dst.emplace(0, As<Float4>(WalkAccessChain(baseId, insn.wordCount() - 4, insn.wordPointer(4), routine)));
break;
}
......
......@@ -367,11 +367,12 @@ namespace sw
lvalues.emplace(id, Value(size));
}
void createIntermediate(SpirvShader::ObjectID id, uint32_t size)
Intermediate& createIntermediate(SpirvShader::ObjectID id, uint32_t size)
{
intermediates.emplace(std::piecewise_construct,
auto it = intermediates.emplace(std::piecewise_construct,
std::forward_as_tuple(id),
std::forward_as_tuple(size));
return it.first->second;
}
Value& getValue(SpirvShader::ObjectID id)
......
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