How to use the numba.targets.imputils.lower_builtin function in numba

To help you get started, we’ve selected a few numba examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github numba / numba / numba / targets / numbers.py View on Github external
lower_builtin(operator.ne, ty, ty)(int_ne_impl)

    lower_builtin(operator.lshift, ty, ty)(int_shl_impl)
    lower_builtin(operator.ilshift, ty, ty)(int_shl_impl)
    lower_builtin(operator.rshift, ty, ty)(int_shr_impl)
    lower_builtin(operator.irshift, ty, ty)(int_shr_impl)

    lower_builtin(operator.neg, ty)(int_negate_impl)
    lower_builtin(operator.pos, ty)(int_positive_impl)

    lower_builtin(operator.pow, ty, ty)(int_power_impl)
    lower_builtin(operator.ipow, ty, ty)(int_power_impl)
    lower_builtin(pow, ty, ty)(int_power_impl)

    for ty in types.unsigned_domain:
        lower_builtin(operator.lt, ty, ty)(int_ult_impl)
        lower_builtin(operator.le, ty, ty)(int_ule_impl)
        lower_builtin(operator.gt, ty, ty)(int_ugt_impl)
        lower_builtin(operator.ge, ty, ty)(int_uge_impl)
        lower_builtin(operator.pow, types.Float, ty)(int_power_impl)
        lower_builtin(operator.ipow, types.Float, ty)(int_power_impl)
        lower_builtin(pow, types.Float, ty)(int_power_impl)
        lower_builtin(abs, ty)(uint_abs_impl)

    lower_builtin(operator.lt, types.IntegerLiteral, types.IntegerLiteral)(int_slt_impl)
    lower_builtin(operator.gt, types.IntegerLiteral, types.IntegerLiteral)(int_slt_impl)
    lower_builtin(operator.le, types.IntegerLiteral, types.IntegerLiteral)(int_slt_impl)
    lower_builtin(operator.ge, types.IntegerLiteral, types.IntegerLiteral)(int_slt_impl)
    for ty in types.signed_domain:
        lower_builtin(operator.lt, ty, ty)(int_slt_impl)
        lower_builtin(operator.le, ty, ty)(int_sle_impl)
        lower_builtin(operator.gt, ty, ty)(int_sgt_impl)
github numba / numba / numba / targets / arraymath.py View on Github external
@lower_builtin(np.sinc, types.Number)
def scalar_sinc(context, builder, sig, args):
    scalar_dtype = sig.return_type
    def scalar_sinc_impl(val):
        if val == 0.e0: # to match np impl
            val = 1e-20
        val *= np.pi # np sinc is the normalised variant
        return np.sin(val)/val
    res = context.compile_internal(builder, scalar_sinc_impl, sig, args,
                                   locals=dict(c=scalar_dtype))
    return impl_ret_untracked(context, builder, sig.return_type, res)
github numba / numba / numba / targets / listobj.py View on Github external
@lower_builtin('getiter', types.List)
def getiter_list(context, builder, sig, args):
    inst = ListIterInstance.from_list(context, builder, sig.return_type, args[0])
    return impl_ret_borrowed(context, builder, sig.return_type, inst.value)
github numba / numba / numba / targets / setobj.py View on Github external
@lower_builtin("set.pop", types.Set)
def set_pop(context, builder, sig, args):
    inst = SetInstance(context, builder, sig.args[0], args[0])
    used = inst.payload.used
    with builder.if_then(cgutils.is_null(builder, used), likely=False):
        context.call_conv.return_user_exc(builder, KeyError,
                                          ("set.pop(): empty set",))

    return inst.pop()
github numba / numba / numba / targets / numbers.py View on Github external
builder.store(x, presult)

    res = builder.load(presult)
    return impl_ret_untracked(context, builder, sig.return_type, res)


ty = types.Float

lower_builtin(operator.add, ty, ty)(real_add_impl)
lower_builtin(operator.iadd, ty, ty)(real_add_impl)
lower_builtin(operator.sub, ty, ty)(real_sub_impl)
lower_builtin(operator.isub, ty, ty)(real_sub_impl)
lower_builtin(operator.mul, ty, ty)(real_mul_impl)
lower_builtin(operator.imul, ty, ty)(real_mul_impl)
lower_builtin(operator.floordiv, ty, ty)(real_floordiv_impl)
lower_builtin(operator.ifloordiv, ty, ty)(real_floordiv_impl)
lower_builtin(operator.truediv, ty, ty)(real_div_impl)
lower_builtin(operator.itruediv, ty, ty)(real_div_impl)

if not utils.IS_PY3:
    lower_builtin(operator.div, ty, ty)(real_div_impl)
    lower_builtin(operator.idiv, ty, ty)(real_div_impl)

lower_builtin(operator.mod, ty, ty)(real_mod_impl)
lower_builtin(operator.imod, ty, ty)(real_mod_impl)
lower_builtin(operator.pow, ty, ty)(real_power_impl)
lower_builtin(operator.ipow, ty, ty)(real_power_impl)
lower_builtin(pow, ty, ty)(real_power_impl)

lower_builtin(operator.eq, ty, ty)(real_eq_impl)
lower_builtin(operator.ne, ty, ty)(real_ne_impl)
lower_builtin(operator.lt, ty, ty)(real_lt_impl)
github numba / numba / numba / targets / enumimpl.py View on Github external
@lower_builtin('static_getitem', types.EnumClass, types.Const)
def enum_class_getitem(context, builder, sig, args):
    """
    Return an enum member by index name.
    """
    enum_cls_typ, idx = sig.args
    member = enum_cls_typ.instance_class[idx.value]
    return context.get_constant_generic(builder, enum_cls_typ.dtype,
                                        member.value)
github numba / numba / numba / targets / numbers.py View on Github external
def complex_abs(z):
        return math.hypot(z.real, z.imag)

    res = context.compile_internal(builder, complex_abs, sig, args)
    return impl_ret_untracked(context, builder, sig.return_type, res)


ty = types.Complex

lower_builtin(operator.add, ty, ty)(complex_add_impl)
lower_builtin(operator.iadd, ty, ty)(complex_add_impl)
lower_builtin(operator.sub, ty, ty)(complex_sub_impl)
lower_builtin(operator.isub, ty, ty)(complex_sub_impl)
lower_builtin(operator.mul, ty, ty)(complex_mul_impl)
lower_builtin(operator.imul, ty, ty)(complex_mul_impl)
lower_builtin(operator.truediv, ty, ty)(complex_div_impl)
lower_builtin(operator.itruediv, ty, ty)(complex_div_impl)

if not utils.IS_PY3:
    lower_builtin(operator.div, ty, ty)(complex_div_impl)
    lower_builtin(operator.idiv, ty, ty)(complex_div_impl)

lower_builtin(operator.neg, ty)(complex_negate_impl)
lower_builtin(operator.pos, ty)(complex_positive_impl)
# Complex modulo is deprecated in python3

lower_builtin(operator.eq, ty, ty)(complex_eq_impl)
lower_builtin(operator.ne, ty, ty)(complex_ne_impl)

lower_builtin(abs, ty)(complex_abs_impl)

del ty
github numba / numba / numba / targets / npdatetime.py View on Github external
@lower_builtin(operator.iadd, types.NPDatetime, types.NPTimedelta)
def datetime_plus_timedelta(context, builder, sig, args):
    dt_arg, td_arg = args
    dt_type, td_type = sig.args
    res = _datetime_plus_timedelta(context, builder,
                                    dt_arg, dt_type.unit,
                                    td_arg, td_type.unit,
                                    sig.return_type.unit)
    return impl_ret_untracked(context, builder, sig.return_type, res)
github numba / numba / numba / targets / numbers.py View on Github external
lower_builtin(operator.lt, ty, ty)(int_ult_impl)
        lower_builtin(operator.le, ty, ty)(int_ule_impl)
        lower_builtin(operator.gt, ty, ty)(int_ugt_impl)
        lower_builtin(operator.ge, ty, ty)(int_uge_impl)
        lower_builtin(operator.pow, types.Float, ty)(int_power_impl)
        lower_builtin(operator.ipow, types.Float, ty)(int_power_impl)
        lower_builtin(pow, types.Float, ty)(int_power_impl)
        lower_builtin(abs, ty)(uint_abs_impl)

    lower_builtin(operator.lt, types.IntegerLiteral, types.IntegerLiteral)(int_slt_impl)
    lower_builtin(operator.gt, types.IntegerLiteral, types.IntegerLiteral)(int_slt_impl)
    lower_builtin(operator.le, types.IntegerLiteral, types.IntegerLiteral)(int_slt_impl)
    lower_builtin(operator.ge, types.IntegerLiteral, types.IntegerLiteral)(int_slt_impl)
    for ty in types.signed_domain:
        lower_builtin(operator.lt, ty, ty)(int_slt_impl)
        lower_builtin(operator.le, ty, ty)(int_sle_impl)
        lower_builtin(operator.gt, ty, ty)(int_sgt_impl)
        lower_builtin(operator.ge, ty, ty)(int_sge_impl)
        lower_builtin(operator.pow, types.Float, ty)(int_power_impl)
        lower_builtin(operator.ipow, types.Float, ty)(int_power_impl)
        lower_builtin(pow, types.Float, ty)(int_power_impl)
        lower_builtin(abs, ty)(int_abs_impl)
github numba / numba / numba / targets / setobj.py View on Github external
@lower_builtin("set.difference_update", types.Set, types.IterableType)
def set_difference_update(context, builder, sig, args):
    inst = SetInstance(context, builder, sig.args[0], args[0])
    other = SetInstance(context, builder, sig.args[1], args[1])

    inst.difference(other)

    return context.get_dummy_value()