53 _node_info(arena(), 8, 0, SWNodeInfo::initial), // info needed per node 54 _align_to_ref(NULL), // memory reference to align vectors to 55 _disjoint_ptrs(arena(), 8, 0, OrderedPair::initial), // runtime disambiguated pointer pairs 56 _dg(_arena), // dependence graph 57 _visited(arena()), // visited node set 58 _post_visited(arena()), // post visited node set 59 _n_idx_list(arena(), 8), // scratch list of (node,index) pairs 60 _stk(arena(), 8, 0, NULL), // scratch stack of nodes 61 _nlist(arena(), 8, 0, NULL), // scratch list of nodes 62 _lpt(NULL), // loop tree node 63 _lp(NULL), // LoopNode 64 _bb(NULL), // basic block 65 _iv(NULL) // induction var 66 {} 67 68 //------------------------------transform_loop--------------------------- 69 void SuperWord::transform_loop(IdealLoopTree* lpt) { 70 assert(lpt->_head->is_CountedLoop(), "must be"); 71 CountedLoopNode *cl = lpt->_head->as_CountedLoop(); 72 73 if (!cl->is_main_loop() ) return; // skip normal, pre, and post loops 74 75 // Check for no control flow in body (other than exit) 76 Node *cl_exit = cl->loopexit(); 77 if (cl_exit->in(0) != lpt->_head) return; 78 79 // Make sure the are no extra control users of the loop backedge 80 if (cl->back_control()->outcnt() != 1) { 81 return; 82 } 83 84 // Check for pre-loop ending with CountedLoopEnd(Bool(Cmp(x,Opaque1(limit)))) 85 CountedLoopEndNode* pre_end = get_pre_loop_end(cl); 86 if (pre_end == NULL) return; 87 Node *pre_opaq1 = pre_end->limit(); 88 if (pre_opaq1->Opcode() != Op_Opaque1) return; 89 90 // Do vectors exist on this architecture? 91 if (vector_width_in_bytes() == 0) return; 92 | 53 _node_info(arena(), 8, 0, SWNodeInfo::initial), // info needed per node 54 _align_to_ref(NULL), // memory reference to align vectors to 55 _disjoint_ptrs(arena(), 8, 0, OrderedPair::initial), // runtime disambiguated pointer pairs 56 _dg(_arena), // dependence graph 57 _visited(arena()), // visited node set 58 _post_visited(arena()), // post visited node set 59 _n_idx_list(arena(), 8), // scratch list of (node,index) pairs 60 _stk(arena(), 8, 0, NULL), // scratch stack of nodes 61 _nlist(arena(), 8, 0, NULL), // scratch list of nodes 62 _lpt(NULL), // loop tree node 63 _lp(NULL), // LoopNode 64 _bb(NULL), // basic block 65 _iv(NULL) // induction var 66 {} 67 68 //------------------------------transform_loop--------------------------- 69 void SuperWord::transform_loop(IdealLoopTree* lpt) { 70 assert(lpt->_head->is_CountedLoop(), "must be"); 71 CountedLoopNode *cl = lpt->_head->as_CountedLoop(); 72 73 if (!cl->is_valid_counted_loop()) return; // skip malformed counted loop 74 75 if (!cl->is_main_loop() ) return; // skip normal, pre, and post loops 76 77 // Check for no control flow in body (other than exit) 78 Node *cl_exit = cl->loopexit(); 79 if (cl_exit->in(0) != lpt->_head) return; 80 81 // Make sure the are no extra control users of the loop backedge 82 if (cl->back_control()->outcnt() != 1) { 83 return; 84 } 85 86 // Check for pre-loop ending with CountedLoopEnd(Bool(Cmp(x,Opaque1(limit)))) 87 CountedLoopEndNode* pre_end = get_pre_loop_end(cl); 88 if (pre_end == NULL) return; 89 Node *pre_opaq1 = pre_end->limit(); 90 if (pre_opaq1->Opcode() != Op_Opaque1) return; 91 92 // Do vectors exist on this architecture? 93 if (vector_width_in_bytes() == 0) return; 94 |