Add some float casting
This commit is contained in:
parent
3b0aeea6f2
commit
e35b8ca636
1 changed files with 12 additions and 3 deletions
|
|
@ -917,10 +917,19 @@ class CValue(object):
|
||||||
else:
|
else:
|
||||||
return make(self.parent.builder.uitofp(self.value, ty))
|
return make(self.parent.builder.uitofp(self.value, ty))
|
||||||
elif self.is_real:
|
elif self.is_real:
|
||||||
if not unsigned:
|
if _is_int(ty):
|
||||||
return make(self.parent.builder.fptosi(self.value, ty))
|
if not unsigned:
|
||||||
|
return make(self.parent.builder.fptosi(self.value, ty))
|
||||||
|
else:
|
||||||
|
return make(self.parent.builder.fptoui(self.value, ty))
|
||||||
else:
|
else:
|
||||||
return make(self.parent.builder.fptoui(self.value, ty))
|
if ty == types.double:
|
||||||
|
assert self.type == types.float
|
||||||
|
return make(self.parent.builder.fpext(self.value, ty))
|
||||||
|
else:
|
||||||
|
assert ty == types.float
|
||||||
|
assert self.type == types.double
|
||||||
|
return make(self.parent.builder.fptrunc(self.value, ty))
|
||||||
|
|
||||||
errmsg = "Cast from %s to %s is not possible."
|
errmsg = "Cast from %s to %s is not possible."
|
||||||
raise TypeError(errmsg % (self.type, ty))
|
raise TypeError(errmsg % (self.type, ty))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue