2307 Node* src1 = vector_opd(p, 2); //2=CMoveNode::IfFalse 2308 if (src1 == NULL) { 2309 if (do_reserve_copy()) { 2310 NOT_PRODUCT(if(is_trace_loop_reverse() || TraceLoopOpts) {tty->print_cr("SWPointer::output: src1 should not be NULL, exiting SuperWord");}) 2311 return; //and reverse to backup IG 2312 } 2313 ShouldNotReachHere(); 2314 } 2315 Node* src2 = vector_opd(p, 3); //3=CMoveNode::IfTrue 2316 if (src2 == NULL) { 2317 if (do_reserve_copy()) { 2318 NOT_PRODUCT(if(is_trace_loop_reverse() || TraceLoopOpts) {tty->print_cr("SWPointer::output: src2 should not be NULL, exiting SuperWord");}) 2319 return; //and reverse to backup IG 2320 } 2321 ShouldNotReachHere(); 2322 } 2323 BasicType bt = velt_basic_type(n); 2324 const TypeVect* vt = TypeVect::make(bt, vlen); 2325 vn = new CMoveVDNode(cc, src1, src2, vt); 2326 NOT_PRODUCT(if(is_trace_cmov()) {tty->print("SWPointer::output: created new CMove node %d: ", vn->_idx); vn->dump();}) 2327 } else { 2328 if (do_reserve_copy()) { 2329 NOT_PRODUCT(if(is_trace_loop_reverse() || TraceLoopOpts) {tty->print_cr("SWPointer::output: ShouldNotReachHere, exiting SuperWord");}) 2330 return; //and reverse to backup IG 2331 } 2332 ShouldNotReachHere(); 2333 } 2334 2335 assert(vn != NULL, "sanity"); 2336 if (vn == NULL) { 2337 if (do_reserve_copy()){ 2338 NOT_PRODUCT(if(is_trace_loop_reverse() || TraceLoopOpts) {tty->print_cr("SWPointer::output: got NULL node, cannot proceed, exiting SuperWord");}) 2339 return; //and reverse to backup IG 2340 } 2341 ShouldNotReachHere(); 2342 } 2343 2344 _block.at_put(i, vn); 2345 _igvn.register_new_node_with_optimizer(vn); 2346 _phase->set_ctrl(vn, _phase->get_ctrl(p->at(0))); | 2307 Node* src1 = vector_opd(p, 2); //2=CMoveNode::IfFalse 2308 if (src1 == NULL) { 2309 if (do_reserve_copy()) { 2310 NOT_PRODUCT(if(is_trace_loop_reverse() || TraceLoopOpts) {tty->print_cr("SWPointer::output: src1 should not be NULL, exiting SuperWord");}) 2311 return; //and reverse to backup IG 2312 } 2313 ShouldNotReachHere(); 2314 } 2315 Node* src2 = vector_opd(p, 3); //3=CMoveNode::IfTrue 2316 if (src2 == NULL) { 2317 if (do_reserve_copy()) { 2318 NOT_PRODUCT(if(is_trace_loop_reverse() || TraceLoopOpts) {tty->print_cr("SWPointer::output: src2 should not be NULL, exiting SuperWord");}) 2319 return; //and reverse to backup IG 2320 } 2321 ShouldNotReachHere(); 2322 } 2323 BasicType bt = velt_basic_type(n); 2324 const TypeVect* vt = TypeVect::make(bt, vlen); 2325 vn = new CMoveVDNode(cc, src1, src2, vt); 2326 NOT_PRODUCT(if(is_trace_cmov()) {tty->print("SWPointer::output: created new CMove node %d: ", vn->_idx); vn->dump();}) 2327 } else if (opc == Op_FmaD || opc == Op_FmaF) { 2328 // Promote operands to vector 2329 Node* in1 = vector_opd(p, 1); 2330 Node* in2 = vector_opd(p, 2); 2331 Node* in3 = vector_opd(p, 3); 2332 vn = VectorNode::make(opc, in1, in2, in3, vlen, velt_basic_type(n)); 2333 vlen_in_bytes = vn->as_Vector()->length_in_bytes(); 2334 } else { 2335 if (do_reserve_copy()) { 2336 NOT_PRODUCT(if(is_trace_loop_reverse() || TraceLoopOpts) {tty->print_cr("SWPointer::output: ShouldNotReachHere, exiting SuperWord");}) 2337 return; //and reverse to backup IG 2338 } 2339 ShouldNotReachHere(); 2340 } 2341 2342 assert(vn != NULL, "sanity"); 2343 if (vn == NULL) { 2344 if (do_reserve_copy()){ 2345 NOT_PRODUCT(if(is_trace_loop_reverse() || TraceLoopOpts) {tty->print_cr("SWPointer::output: got NULL node, cannot proceed, exiting SuperWord");}) 2346 return; //and reverse to backup IG 2347 } 2348 ShouldNotReachHere(); 2349 } 2350 2351 _block.at_put(i, vn); 2352 _igvn.register_new_node_with_optimizer(vn); 2353 _phase->set_ctrl(vn, _phase->get_ctrl(p->at(0))); |