Commit 35c009f1 by Nicolas Capens

Support integer rvalues as return value.

Change-Id: I23e9b8de20dae93e7aa5ea7f5ff90abeba672b2b Reviewed-on: https://swiftshader-review.googlesource.com/8091Reviewed-by: 's avatarNicolas Capens <capn@google.com> Tested-by: 's avatarNicolas Capens <capn@google.com>
parent 9dcefbcb
......@@ -6693,16 +6693,9 @@ namespace sw
Nucleus::createUnreachable();
}
void Return(bool ret)
void Return(RValue<Int> ret)
{
Nucleus::createRet(V(Nucleus::createConstantBool(ret)));
Nucleus::setInsertBlock(Nucleus::createBasicBlock());
Nucleus::createUnreachable();
}
void Return(const Int &ret)
{
Nucleus::createRet(ret.loadValue());
Nucleus::createRet(ret.value);
Nucleus::setInsertBlock(Nucleus::createBasicBlock());
Nucleus::createUnreachable();
}
......
......@@ -24,6 +24,7 @@
namespace sw
{
class Bool;
class Byte;
class SByte;
class Byte4;
......@@ -119,20 +120,26 @@ namespace sw
struct type;
};
template<> struct
IntLiteral<Int>
template<>
struct IntLiteral<Bool>
{
typedef bool type;
};
template<>
struct IntLiteral<Int>
{
typedef int type;
};
template<> struct
IntLiteral<UInt>
template<>
struct IntLiteral<UInt>
{
typedef unsigned int type;
};
template<> struct
IntLiteral<Long>
template<>
struct IntLiteral<Long>
{
typedef int64_t type;
};
......@@ -143,8 +150,8 @@ namespace sw
struct type;
};
template<> struct
FloatLiteral<Float>
template<>
struct FloatLiteral<Float>
{
typedef float type;
};
......@@ -2224,8 +2231,7 @@ namespace sw
bool branch(RValue<Bool> cmp, BasicBlock *bodyBB, BasicBlock *endBB);
void Return();
void Return(bool ret);
void Return(const Int &ret);
void Return(RValue<Int> ret);
template<class T>
void Return(const Pointer<T> &ret);
......
......@@ -6507,16 +6507,9 @@ namespace sw
Nucleus::createUnreachable();
}
void Return(bool ret)
void Return(RValue<Int> ret)
{
Nucleus::createRet(Nucleus::createConstantInt(ret));
Nucleus::setInsertBlock(Nucleus::createBasicBlock());
Nucleus::createUnreachable();
}
void Return(const Int &ret)
{
Nucleus::createRet(ret.loadValue());
Nucleus::createRet(ret.value);
Nucleus::setInsertBlock(Nucleus::createBasicBlock());
Nucleus::createUnreachable();
}
......
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