diff options
author | Tuowen Zhao <ztuowen@gmail.com> | 2016-10-12 17:17:33 -0600 |
---|---|---|
committer | Tuowen Zhao <ztuowen@gmail.com> | 2016-10-12 17:17:33 -0600 |
commit | 43a22099d0f62f90306f47fa29471ca62b53eebd (patch) | |
tree | e8d38c27aa9425bfbee09dca986e97aa30bcf00c /src/transformations/loop.cc | |
parent | b75ada05fe0e59efa0d5cb09487e76895c885db7 (diff) | |
download | chill-43a22099d0f62f90306f47fa29471ca62b53eebd.tar.gz chill-43a22099d0f62f90306f47fa29471ca62b53eebd.tar.bz2 chill-43a22099d0f62f90306f47fa29471ca62b53eebd.zip |
added lexical ordering
Diffstat (limited to 'src/transformations/loop.cc')
-rw-r--r-- | src/transformations/loop.cc | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/transformations/loop.cc b/src/transformations/loop.cc index d176981..96c0c43 100644 --- a/src/transformations/loop.cc +++ b/src/transformations/loop.cc @@ -466,16 +466,16 @@ void Loop::buildIS(std::vector<ir_tree_node*> &ir_tree,std::vector<int> &lexical for (int j = 1; j <= num_dep_dim; j++) { EQ_Handle h = f_xform->add_EQ(); - h.update_coef(stmt[i].xform.output_var(2 * j), 1); - h.update_coef(stmt[i].xform.input_var(j), -1); + h.update_coef(stmt[loc].xform.output_var(2 * j), 1); + h.update_coef(stmt[loc].xform.input_var(j), -1); } for (int j = 1; j <= 2 * num_dep_dim + 1; j += 2) { EQ_Handle h = f_xform->add_EQ(); - h.update_coef(stmt[i].xform.output_var(j), 1); + h.update_coef(stmt[loc].xform.output_var(j), 1); h.update_const(-lexicalOrder[(j-1)/2]); } - stmt[i].xform.simplify(); + stmt[loc].xform.simplify(); // Update lexical ordering for next statement lexicalOrder[lexicalOrder.size()-1]++; break; @@ -484,8 +484,9 @@ void Loop::buildIS(std::vector<ir_tree_node*> &ir_tree,std::vector<int> &lexical ir_tree[i]->payload = level; ctrls.push_back(ir_tree[i]); try { + lexicalOrder.push_back(0); buildIS(ir_tree[i]->children, lexicalOrder, ctrls, level +1); - lexicalOrder.emplace_back(lexicalOrder[lexicalOrder.size()-1] + 1); + lexicalOrder.pop_back(); } catch (chill::error::ir &e) { for (int j =0;j<ir_tree[i]->children.size(); ++j) delete ir_tree[i]->children[j]; |