Commit a0c2fc50 by Nicolas Capens

Implement cast operations.

Bug swiftshader:6 Change-Id: I12e1c109c5954ef65ea00750c2d5b027c0c7765a Reviewed-on: https://swiftshader-review.googlesource.com/7394Tested-by: 's avatarNicolas Capens <capn@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent 6d738712
......@@ -524,16 +524,6 @@ namespace sw
return V(::builder->CreateFPExt(v, destType));
}
Value *Nucleus::createPtrToInt(Value *v, Type *destType)
{
return V(::builder->CreatePtrToInt(v, destType));
}
Value *Nucleus::createIntToPtr(Value *v, Type *destType)
{
return V(::builder->CreateIntToPtr(v, destType));
}
Value *Nucleus::createBitCast(Value *v, Type *destType)
{
return V(::builder->CreateBitCast(v, destType));
......
......@@ -113,8 +113,6 @@ namespace sw
static Value *createSIToFP(Value *V, Type *destType);
static Value *createFPTrunc(Value *V, Type *destType);
static Value *createFPExt(Value *V, Type *destType);
static Value *createPtrToInt(Value *V, Type *destType);
static Value *createIntToPtr(Value *V, Type *destType);
static Value *createBitCast(Value *V, Type *destType);
static Value *createIntCast(Value *V, Type *destType, bool isSigned);
......
......@@ -498,59 +498,63 @@ namespace sw
assert(false && "UNIMPLEMENTED"); return nullptr;
}
static Value *createCast(Ice::InstCast::OpKind op, Value *v, Type *destType)
{
if(T(v->getType()) == destType)
{
return v;
}
Ice::Variable *result = ::function->makeVariable(T(destType));
Ice::InstCast *cast = Ice::InstCast::create(::function, op, result, v);
::basicBlock->appendInst(cast);
return V(result);
}
Value *Nucleus::createTrunc(Value *v, Type *destType)
{
assert(false && "UNIMPLEMENTED"); return nullptr;
return createCast(Ice::InstCast::Trunc, v, destType);
}
Value *Nucleus::createZExt(Value *v, Type *destType)
{
assert(false && "UNIMPLEMENTED"); return nullptr;
return createCast(Ice::InstCast::Zext, v, destType);
}
Value *Nucleus::createSExt(Value *v, Type *destType)
{
assert(false && "UNIMPLEMENTED"); return nullptr;
return createCast(Ice::InstCast::Sext, v, destType);
}
Value *Nucleus::createFPToSI(Value *v, Type *destType)
{
assert(false && "UNIMPLEMENTED"); return nullptr;
return createCast(Ice::InstCast::Fptosi, v, destType);
}
Value *Nucleus::createUIToFP(Value *v, Type *destType)
{
assert(false && "UNIMPLEMENTED"); return nullptr;
return createCast(Ice::InstCast::Uitofp, v, destType);
}
Value *Nucleus::createSIToFP(Value *v, Type *destType)
{
assert(false && "UNIMPLEMENTED"); return nullptr;
return createCast(Ice::InstCast::Sitofp, v, destType);
}
Value *Nucleus::createFPTrunc(Value *v, Type *destType)
{
assert(false && "UNIMPLEMENTED"); return nullptr;
return createCast(Ice::InstCast::Fptrunc, v, destType);
}
Value *Nucleus::createFPExt(Value *v, Type *destType)
{
assert(false && "UNIMPLEMENTED"); return nullptr;
}
Value *Nucleus::createPtrToInt(Value *v, Type *destType)
{
assert(false && "UNIMPLEMENTED"); return nullptr;
}
Value *Nucleus::createIntToPtr(Value *v, Type *destType)
{
assert(false && "UNIMPLEMENTED"); return nullptr;
return createCast(Ice::InstCast::Fpext, v, destType);
}
Value *Nucleus::createBitCast(Value *v, Type *destType)
{
assert(false && "UNIMPLEMENTED"); return nullptr;
return createCast(Ice::InstCast::Bitcast, v, destType);
}
Value *Nucleus::createIntCast(Value *v, Type *destType, bool isSigned)
......
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