< prev index next >

src/share/vm/opto/superword.cpp

Print this page




2236 #endif
2237     }
2238   }//for (int i = 0; i < _block.length(); i++)
2239 
2240   C->set_max_vector_size(max_vlen_in_bytes);
2241 
2242   if (SuperWordLoopUnrollAnalysis) {
2243     if (cl->has_passed_slp()) {
2244       uint slp_max_unroll_factor = cl->slp_max_unroll();
2245       if (slp_max_unroll_factor == max_vlen) {
2246         if (TraceSuperWordLoopUnrollAnalysis) {
2247           tty->print_cr("vector loop(unroll=%d, len=%d)\n", max_vlen, max_vlen_in_bytes*BitsPerByte);
2248         }
2249         // For atomic unrolled loops which are vector mapped, instigate more unrolling.
2250         cl->set_notpassed_slp();
2251         // if vector resources are limited, do not allow additional unrolling
2252         if (FLOATPRESSURE > 8) {
2253           C->set_major_progress();
2254         }
2255         cl->mark_do_unroll_only();



2256       }
2257     }
2258   }
2259 
2260   if (do_reserve_copy()) {
2261     make_reversable.use_new();
2262   }
2263   NOT_PRODUCT(if(is_trace_loop_reverse()) {tty->print_cr("\n Final loop after SuperWord"); print_loop(true);})
2264   return;
2265 }
2266 
2267 //------------------------------vector_opd---------------------------
2268 // Create a vector operand for the nodes in pack p for operand: in(opd_idx)
2269 Node* SuperWord::vector_opd(Node_List* p, int opd_idx) {
2270   Node* p0 = p->at(0);
2271   uint vlen = p->size();
2272   Node* opd = p0->in(opd_idx);
2273 
2274   if (same_inputs(p, opd_idx)) {
2275     if (opd->is_Vector() || opd->is_LoadVector()) {




2236 #endif
2237     }
2238   }//for (int i = 0; i < _block.length(); i++)
2239 
2240   C->set_max_vector_size(max_vlen_in_bytes);
2241 
2242   if (SuperWordLoopUnrollAnalysis) {
2243     if (cl->has_passed_slp()) {
2244       uint slp_max_unroll_factor = cl->slp_max_unroll();
2245       if (slp_max_unroll_factor == max_vlen) {
2246         if (TraceSuperWordLoopUnrollAnalysis) {
2247           tty->print_cr("vector loop(unroll=%d, len=%d)\n", max_vlen, max_vlen_in_bytes*BitsPerByte);
2248         }
2249         // For atomic unrolled loops which are vector mapped, instigate more unrolling.
2250         cl->set_notpassed_slp();
2251         // if vector resources are limited, do not allow additional unrolling
2252         if (FLOATPRESSURE > 8) {
2253           C->set_major_progress();
2254         }
2255         cl->mark_do_unroll_only();
2256         if (do_reserve_copy()) {
2257           cl->mark_loop_vectorized();
2258         }
2259       }
2260     }
2261   }
2262 
2263   if (do_reserve_copy()) {
2264     make_reversable.use_new();
2265   }
2266   NOT_PRODUCT(if(is_trace_loop_reverse()) {tty->print_cr("\n Final loop after SuperWord"); print_loop(true);})
2267   return;
2268 }
2269 
2270 //------------------------------vector_opd---------------------------
2271 // Create a vector operand for the nodes in pack p for operand: in(opd_idx)
2272 Node* SuperWord::vector_opd(Node_List* p, int opd_idx) {
2273   Node* p0 = p->at(0);
2274   uint vlen = p->size();
2275   Node* opd = p0->in(opd_idx);
2276 
2277   if (same_inputs(p, opd_idx)) {
2278     if (opd->is_Vector() || opd->is_LoadVector()) {


< prev index next >