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()) { |