< prev index next >

src/share/vm/opto/superword.cpp

Print this page




2230         max_vlen_in_bytes = vlen_in_bytes;
2231       }
2232 #ifdef ASSERT
2233       if (TraceNewVectors) {
2234         tty->print("new Vector node: ");
2235         vn->dump();
2236       }
2237 #endif
2238     }
2239   }//for (int i = 0; i < _block.length(); i++)
2240 
2241   C->set_max_vector_size(max_vlen_in_bytes);
2242 
2243   if (SuperWordLoopUnrollAnalysis) {
2244     if (cl->has_passed_slp()) {
2245       uint slp_max_unroll_factor = cl->slp_max_unroll();
2246       if (slp_max_unroll_factor == max_vlen) {
2247         NOT_PRODUCT(if (TraceSuperWordLoopUnrollAnalysis) tty->print_cr("vector loop(unroll=%d, len=%d)\n", max_vlen, max_vlen_in_bytes*BitsPerByte));
2248         // For atomic unrolled loops which are vector mapped, instigate more unrolling.
2249         cl->set_notpassed_slp();


2250         C->set_major_progress();

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




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


< prev index next >