Commit fdcca2dc by Nicolas Capens

Implement Return() variants.

Bug swiftshader:6 Change-Id: I4a52eda6583a8731fd8e7a8bc15e716a772b8842 Reviewed-on: https://swiftshader-review.googlesource.com/7756Reviewed-by: 's avatarNicolas Capens <capn@google.com> Tested-by: 's avatarNicolas Capens <capn@google.com> Reviewed-on: https://swiftshader-review.googlesource.com/8137Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com>
parent a8f9863d
...@@ -503,12 +503,14 @@ namespace sw ...@@ -503,12 +503,14 @@ namespace sw
void Nucleus::createRetVoid() void Nucleus::createRetVoid()
{ {
assert(false && "UNIMPLEMENTED"); Ice::InstRet *ret = Ice::InstRet::create(::function);
::basicBlock->appendInst(ret);
} }
void Nucleus::createRet(Value *v) void Nucleus::createRet(Value *v)
{ {
assert(false && "UNIMPLEMENTED"); Ice::InstRet *ret = Ice::InstRet::create(::function, v);
::basicBlock->appendInst(ret);
} }
void Nucleus::createBr(BasicBlock *dest) void Nucleus::createBr(BasicBlock *dest)
...@@ -1023,7 +1025,8 @@ namespace sw ...@@ -1023,7 +1025,8 @@ namespace sw
void Nucleus::createUnreachable() void Nucleus::createUnreachable()
{ {
assert(false && "UNIMPLEMENTED"); Ice::InstUnreachable *unreachable = Ice::InstUnreachable::create(::function);
::basicBlock->appendInst(unreachable);
} }
static Value *createSwizzle4(Value *val, unsigned char select) static Value *createSwizzle4(Value *val, unsigned char select)
...@@ -6092,15 +6095,16 @@ namespace sw ...@@ -6092,15 +6095,16 @@ namespace sw
void Return(bool ret) void Return(bool ret)
{ {
Ice::Operand *Ret = Ice::ConstantInteger32::create(::context, Ice::IceType_i32, ret ? 1 : 0); Nucleus::createRet(Nucleus::createConstantInt(ret));
Ice::InstRet *retu = Ice::InstRet::create(::function, Ret); Nucleus::setInsertBlock(Nucleus::createBasicBlock());
::basicBlock->appendInst(retu); Nucleus::createUnreachable();
} }
void Return(const Int &ret) void Return(const Int &ret)
{ {
Ice::InstRet *retu = Ice::InstRet::create(::function, ret.loadValue()); Nucleus::createRet(ret.loadValue());
::basicBlock->appendInst(retu); Nucleus::setInsertBlock(Nucleus::createBasicBlock());
Nucleus::createUnreachable();
} }
BasicBlock *beginLoop() BasicBlock *beginLoop()
......
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