예제 #1
0
instruction_list * isl_ast_to_noclock_ast (isl_ast_node * ast)
{
    enum isl_ast_node_type t = isl_ast_node_get_type (ast);

    instruction_list * list = NULL;
    switch (t)
    {
        case isl_ast_node_for:
            list = isl_for_to_noclock (ast);
            break;
        case isl_ast_node_if:
            list = isl_if_to_noclock (ast);
            break;
        case isl_ast_node_block:
            list = isl_block_to_noclock (ast);
            break;
        case isl_ast_node_user:
            list = isl_user_to_noclock (ast);
            break;
        default:
            fdebug (stderr, "isl_ast_to_noclock_ast(): "
                    "Unexpected node_type: %u\n", t);
            break;
    }

    return list;
}
예제 #2
0
void cpp_from_isl::process_node(isl_ast_node *node)
{
    auto type = isl_ast_node_get_type(node);
    switch(type)
    {
    case isl_ast_node_for:
        process_for(node); break;
    case isl_ast_node_if:
        process_if(node); break;
    case isl_ast_node_block:
        process_block(node); break;
    case isl_ast_node_user:
        process_user(node); break;
    case isl_ast_node_mark:
    {
        // TODO: label the stmt?
        auto marked_node = isl_ast_node_mark_get_node(node);
        process_node(marked_node);
        isl_ast_node_free(marked_node);
        break;
    }
    default:
        throw error("Unexpected AST node type.");
    }
}