class __extend__(pairtype(IntegerRepr, BoolRepr)): def convert_from_to((r_from, r_to), v, llops): if r_from.lowleveltype == Unsigned and r_to.lowleveltype == Bool: log.debug('explicit cast_uint_to_bool') return llops.genop('uint_is_true', [v], resulttype=Bool) if r_from.lowleveltype == Signed and r_to.lowleveltype == Bool: log.debug('explicit cast_int_to_bool') return llops.genop('int_is_true', [v], resulttype=Bool) return NotImplemented
class __extend__(pairtype(IntegerRepr, IntegerRepr)): def convert_from_to((r_from, r_to), v, llops): if r_from.lowleveltype == Signed and r_to.lowleveltype == Unsigned: log.debug('explicit cast_int_to_uint') return llops.genop('cast_int_to_uint', [v], resulttype=Unsigned) if r_from.lowleveltype == Unsigned and r_to.lowleveltype == Signed: log.debug('explicit cast_uint_to_int') return llops.genop('cast_uint_to_int', [v], resulttype=Signed) if r_from.lowleveltype == Signed and r_to.lowleveltype == SignedLongLong: return llops.genop('cast_int_to_longlong', [v], resulttype=SignedLongLong) if r_from.lowleveltype == SignedLongLong and r_to.lowleveltype == Signed: return llops.genop('truncate_longlong_to_int', [v], resulttype=Signed) return llops.genop('cast_primitive', [v], resulttype=r_to.lowleveltype)
class __extend__(pairtype(FloatRepr, IntegerRepr)): def convert_from_to((r_from, r_to), v, llops): if r_from.lowleveltype == Float and r_to.lowleveltype == Unsigned: log.debug('explicit cast_float_to_uint') return llops.genop('cast_float_to_uint', [v], resulttype=Unsigned) if r_from.lowleveltype == Float and r_to.lowleveltype == Signed: log.debug('explicit cast_float_to_int') return llops.genop('cast_float_to_int', [v], resulttype=Signed) if r_from.lowleveltype == Float and r_to.lowleveltype == SignedLongLong: log.debug('explicit cast_float_to_longlong') return llops.genop('cast_float_to_longlong', [v], resulttype=SignedLongLong) if r_from.lowleveltype == Float and r_to.lowleveltype == UnsignedLongLong: log.debug('explicit cast_float_to_ulonglong') return llops.genop('cast_float_to_ulonglong', [v], resulttype=UnsignedLongLong) return NotImplemented
class __extend__(pairtype(BoolRepr, IntegerRepr)): def convert_from_to((r_from, r_to), v, llops): if r_from.lowleveltype == Bool and r_to.lowleveltype == Unsigned: log.debug('explicit cast_bool_to_uint') return llops.genop('cast_bool_to_uint', [v], resulttype=Unsigned) if r_from.lowleveltype == Bool and r_to.lowleveltype == Signed: return llops.genop('cast_bool_to_int', [v], resulttype=Signed) if r_from.lowleveltype == Bool: from rpython.rtyper.rint import signed_repr v_int = llops.genop('cast_bool_to_int', [v], resulttype=Signed) return llops.convertvar(v_int, signed_repr, r_to) return NotImplemented
class __extend__(pairtype(FloatRepr, BoolRepr)): def convert_from_to((r_from, r_to), v, llops): if r_from.lowleveltype == Float and r_to.lowleveltype == Bool: log.debug('explicit cast_float_to_bool') return llops.genop('float_is_true', [v], resulttype=Bool) return NotImplemented
class __extend__(pairtype(BoolRepr, FloatRepr)): def convert_from_to((r_from, r_to), v, llops): if r_from.lowleveltype == Bool and r_to.lowleveltype == Float: log.debug('explicit cast_bool_to_float') return llops.genop('cast_bool_to_float', [v], resulttype=Float) return NotImplemented