Implement support for arrays. Bug swiftshader:6 Change-Id: I9ffcca588014466acb7f13a3df551a696ada8a91 Reviewed-on: https://swiftshader-review.googlesource.com/7755 Reviewed-by: Nicolas Capens <capn@google.com> Tested-by: Nicolas Capens <capn@google.com> Reviewed-on: https://swiftshader-review.googlesource.com/8136 Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/Reactor/SubzeroReactor.cpp b/src/Reactor/SubzeroReactor.cpp index 52fca8b..6b0f406 100644 --- a/src/Reactor/SubzeroReactor.cpp +++ b/src/Reactor/SubzeroReactor.cpp
@@ -446,14 +446,13 @@ Value *Nucleus::allocateStackVariable(Type *t, int arraySize) { - assert(arraySize == 0 && "UNIMPLEMENTED"); - Ice::Type type = T(t); - int size = Ice::typeWidthInBytes(type); + int typeSize = Ice::typeWidthInBytes(type); + int totalSize = typeSize * (arraySize ? arraySize : 1); - auto bytes = Ice::ConstantInteger32::create(::context, type, size); + auto bytes = Ice::ConstantInteger32::create(::context, type, totalSize); auto address = ::function->makeVariable(T(getPointerType(t))); - auto alloca = Ice::InstAlloca::create(::function, address, bytes, size); + auto alloca = Ice::InstAlloca::create(::function, address, bytes, typeSize); ::function->getEntryNode()->getInsts().push_front(alloca); return V(address);