Esempio n. 1
0
def expr_init(rhs):
    if rhs is None:
        return Expr(_ti_core.expr_alloca())
    if isinstance(rhs, Matrix):
        if rhs.in_python_scope or isinstance(rhs, _IntermediateMatrix):
            return Matrix(rhs.to_list())
        return rhs
    if isinstance(rhs, Struct):
        if rhs.in_python_scope or isinstance(rhs, _IntermediateStruct):
            return Struct(rhs.to_dict())
        return rhs
    if isinstance(rhs, list):
        return [expr_init(e) for e in rhs]
    if isinstance(rhs, tuple):
        return tuple(expr_init(e) for e in rhs)
    if isinstance(rhs, dict):
        return dict((key, expr_init(val)) for key, val in rhs.items())
    if isinstance(rhs, _ti_core.DataType):
        return rhs
    if isinstance(rhs, _ti_core.Arch):
        return rhs
    if isinstance(rhs, ti.ndrange):
        return rhs
    if isinstance(rhs, MeshElementFieldProxy):
        return rhs
    if isinstance(rhs, MeshRelationAccessProxy):
        return rhs
    if hasattr(rhs, '_data_oriented'):
        return rhs
    return Expr(_ti_core.expr_var(Expr(rhs).ptr))
Esempio n. 2
0
def expr_init(rhs):
    if rhs is None:
        return Expr(get_runtime().prog.current_ast_builder().expr_alloca())
    if isinstance(rhs, Matrix) and (hasattr(rhs, "_DIM")):
        return type(rhs)(*rhs.to_list())
    if isinstance(rhs, Matrix):
        return Matrix(rhs.to_list())
    if isinstance(rhs, Struct):
        return Struct(rhs.to_dict())
    if isinstance(rhs, list):
        return [expr_init(e) for e in rhs]
    if isinstance(rhs, tuple):
        return tuple(expr_init(e) for e in rhs)
    if isinstance(rhs, dict):
        return dict((key, expr_init(val)) for key, val in rhs.items())
    if isinstance(rhs, _ti_core.DataType):
        return rhs
    if isinstance(rhs, _ti_core.Arch):
        return rhs
    if isinstance(rhs, _Ndrange):
        return rhs
    if isinstance(rhs, MeshElementFieldProxy):
        return rhs
    if isinstance(rhs, MeshRelationAccessProxy):
        return rhs
    if hasattr(rhs, '_data_oriented'):
        return rhs
    return Expr(get_runtime().prog.current_ast_builder().expr_var(
        Expr(rhs).ptr))