Changes between Version 1 and Version 2 of Insieme


Ignore:
Timestamp:
05/25/16 10:36:18 (10 years ago)
Author:
zmanchun
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Insieme

    v1 v2  
    1515}}}
    1616
     17Translation unit:
     18{{{
     19TU(
     20        Types:
     21                _omp_lock_t => struct _omp_lock_t <insieme_omp_lock_struct_marker:int<4>>,
     22        Globals:
     23                ,
     24        Initializer:
     25                ,
     26        Functions:
     27                main : ((int<4>,ref<array<ref<array<char,1>>,1>>)->int<4>) => fun(int<4> v2, ref<array<ref<array<char,1>>,1>> v3) -> int<4> {decl ref<vector<real<8>,10>> v4 = ( var(undefined(type<vector<real<8>,10>>)));decl ref<int<4>> v54 = ( var(undefined(type<int<4>>)));{merge(parallel(job(([1-inf])){bind(){fun(ref<vector<real<8>,10>> v103) -> unit {{pfor(getThreadGroup(0), 0, 10, 1, bind(v91, v92, v93){fun(ref<vector<real<8>,10>> v87, int<4> v88, int<4> v89, int<4> v90) -> unit {for(decl int<4> v64 = v88 .. v89 : v90) {((ref_vector_to_ref_array(v87)&[int_to_uint(v64, 4)]) := 0.0);};}(v103, v91, v92, v93)});(barrier());};mergeAll();}(v4)}}));};merge(parallel(job(([1-inf])){bind(){fun(ref<int<4>> v105) -> unit {{(v105 := 10);};mergeAll();}(v54)}}));},
     28        Entry Points:   {},
     29        MetaInfos:      {_omp_lock_t : [class-info <
     30>
     31]}
     32)
     33}}}
     34
    1735Insieme IR:
    1836{{{
     
    6179}}}
    6280
     81target code:
     82{{{
     83/**
     84 * ------------------------ Auto-generated Code ------------------------
     85 *           This code was generated by the Insieme Compiler
     86 * ---------------------------------------------------------------------
     87 */
     88#include <ir_interface.h>
     89#include <irt_all_impls.h>
     90#include <standalone.h>
     91#include <stdbool.h>
     92#include <stdint.h>
     93
     94struct __insieme_type_10;
     95typedef struct __insieme_type_10 __insieme_type_10;
     96
     97struct __insieme_type_19;
     98typedef struct __insieme_type_19 __insieme_type_19;
     99
     100struct __insieme_type_19 {
     101    irt_type_id c0;
     102    __insieme_type_10* c1;
     103};
     104
     105struct __insieme_type_24;
     106typedef struct __insieme_type_24 __insieme_type_24;
     107
     108struct __insieme_type_24 {
     109    irt_type_id c0;
     110    int32_t* c1;
     111};
     112
     113struct __insieme_type_26;
     114typedef struct __insieme_type_26 __insieme_type_26;
     115
     116struct __insieme_type_26 {
     117    irt_type_id c0;
     118    int32_t c1;
     119    char** c2;
     120};
     121
     122// --- components for type table entries ---
     123irt_type_id g_type_2_components[] = {0,1};
     124irt_type_id g_type_4_components[] = {0,3};
     125irt_type_id g_type_7_components[] = {0,5,6};
     126
     127// --- the type table ---
     128irt_type g_insieme_type_table[] = {
     129    {IRT_T_UINT32, sizeof(irt_type_id), 0, 0},
     130    {IRT_T_POINTER, sizeof(__insieme_type_10*), 0, 0},
     131    {IRT_T_STRUCT, sizeof(__insieme_type_19), 2, g_type_2_components},
     132    {IRT_T_POINTER, sizeof(int32_t*), 0, 0},
     133    {IRT_T_STRUCT, sizeof(__insieme_type_24), 2, g_type_4_components},
     134    {IRT_T_INT32, sizeof(int32_t), 0, 0},
     135    {IRT_T_POINTER, sizeof(char**), 0, 0},
     136    {IRT_T_STRUCT, sizeof(__insieme_type_26), 3, g_type_7_components}
     137};
     138
     139struct __insieme_type_10 {
     140    double data[10];
     141};
     142
     143/* ------- Function Definitions --------- */
     144void insieme_wi_0_var_0_impl(irt_work_item* var_1) {
     145    irt_work_item_range var_2 = (*var_1).range;
     146    int32_t var_3 = var_2.begin;
     147    int32_t var_4 = var_2.end;
     148    int32_t var_5 = var_2.step;
     149    {
     150        for (int32_t i_ins_it = var_3; i_ins_it < var_4; i_ins_it+=var_5) {
     151            ((double*)(*(__insieme_type_19*)(*var_1).parameters).c1)[i_ins_it] = 0.0;
     152        };
     153    };
     154}
     155/* ------- Function Definitions --------- */
     156void __insieme_fun_21(int32_t* var_1) {
     157    {
     158        *var_1 = 10;
     159    };
     160    irt_wi_join_all(irt_wi_get_current());
     161}
     162/* ------- Function Definitions --------- */
     163void insieme_wi_2_var_0_impl(irt_work_item* var_1) {
     164    __insieme_fun_21((*(__insieme_type_24*)(*var_1).parameters).c1);
     165}
     166// --- the meta info table ---
     167irt_meta_info_table_entry g_insieme_meta_table[] = {
     168    {{ false, 0, 0 },{ false, 0, -1, -1, 0, -1, -1, 0, -1, -1, 0, -1, -1, (2147483647 * 2U + 1U), (2147483647 * 2U + 1U) },{ false, false },{ false, { 0 }, { 0 }, 0, 0, 0 },{ false, "" }}, /* the no-info-entry */
     169    {{ false, 0, 0 },{ false, 0, -1, -1, 0, -1, -1, 0, -1, -1, 0, -1, -1, (2147483647 * 2U + 1U), (2147483647 * 2U + 1U) },{ true, (bool)false },{ false, { 0 }, { 0 }, 0, 0, 0 },{ false, "" }}
     170};
     171
     172extern irt_wi_implementation g_insieme_impl_table[];
     173/* ------- Function Definitions --------- */
     174void __insieme_fun_13(__insieme_type_10* var_1) {
     175    {
     176        irt_pfor(irt_wi_get_current(), irt_wi_get_wg(irt_wi_get_current(), 0u), (irt_work_item_range){0, 10, 1}, &g_insieme_impl_table[0], (irt_lw_data_item*)(&(__insieme_type_19){2, var_1}));
     177        irt_wg_barrier(irt_wi_get_wg(irt_wi_get_current(), 0u));
     178    };
     179    irt_wi_join_all(irt_wi_get_current());
     180}
     181/* ------- Function Definitions --------- */
     182void insieme_wi_1_var_0_impl(irt_work_item* var_1) {
     183    __insieme_fun_13((*(__insieme_type_19*)(*var_1).parameters).c1);
     184}
     185/* ------- Function Definitions --------- */
     186int32_t __insieme_fun_8(int32_t argc, char** argv) {
     187    __insieme_type_10 a;
     188    int32_t i;
     189    {
     190        irt_merge(irt_parallel(&(irt_parallel_job){(uint64_t)1, (uint64_t)4294967295, (uint64_t)1, &g_insieme_impl_table[1], (irt_lw_data_item*)(&(__insieme_type_19){2, &a})}));
     191    };
     192    irt_merge(irt_parallel(&(irt_parallel_job){(uint64_t)1, (uint64_t)4294967295, (uint64_t)1, &g_insieme_impl_table[2], (irt_lw_data_item*)(&(__insieme_type_24){4, &i})}));
     193    return 0;
     194}
     195/* ------- Function Definitions --------- */
     196void insieme_wi_3_var_0_impl(irt_work_item* var_229) {
     197    __insieme_fun_8((*(__insieme_type_26*)(*var_229).parameters).c1, (*(__insieme_type_26*)(*var_229).parameters).c2);
     198}
     199// --- work item variants ---
     200irt_wi_implementation_variant g_insieme_wi_0_variants[] = {
     201    { &insieme_wi_0_var_0_impl, 0, NULL, 0, NULL,  &(g_insieme_meta_table[1]) },
     202};
     203irt_wi_implementation_variant g_insieme_wi_1_variants[] = {
     204    { &insieme_wi_1_var_0_impl, 0, NULL, 0, NULL,  &(g_insieme_meta_table[0]) },
     205};
     206irt_wi_implementation_variant g_insieme_wi_2_variants[] = {
     207    { &insieme_wi_2_var_0_impl, 0, NULL, 0, NULL,  &(g_insieme_meta_table[0]) },
     208};
     209irt_wi_implementation_variant g_insieme_wi_3_variants[] = {
     210    { &insieme_wi_3_var_0_impl, 0, NULL, 0, NULL,  &(g_insieme_meta_table[0]) },
     211};
     212// --- the implementation table ---
     213irt_wi_implementation g_insieme_impl_table[] = {
     214    { 1, 1, g_insieme_wi_0_variants },
     215    { 2, 1, g_insieme_wi_1_variants },
     216    { 3, 1, g_insieme_wi_2_variants },
     217    { 4, 1, g_insieme_wi_3_variants },
     218};
     219
     220void insieme_init_context(irt_context* context) {
     221    context->type_table_size = 8;
     222    context->type_table = g_insieme_type_table;
     223    context->impl_table_size = 4;
     224    context->impl_table = g_insieme_impl_table;
     225    context->info_table_size = 2;
     226    context->info_table = g_insieme_meta_table;
     227    context->num_regions = 1;
     228}
     229
     230void insieme_cleanup_context(irt_context* context) {
     231}
     232
     233/* ------- Function Definitions --------- */
     234int32_t main(int32_t var_227, char** var_228) {
     235    irt_runtime_standalone(irt_get_default_worker_count(), &insieme_init_context, &insieme_cleanup_context, &g_insieme_impl_table[3], (irt_lw_data_item*)(&(__insieme_type_26){7, var_227, var_228}));
     236    return 0;
     237}
     238
     239
     240}}}
     241
     242
     243
     244
     245
     246-----
    63247No OpenMP transformation (ignoring OpenMP pragma):
    64248{{{