2322 } |
2322 } |
2323 BasicType bt = velt_basic_type(n); |
2323 BasicType bt = velt_basic_type(n); |
2324 const TypeVect* vt = TypeVect::make(bt, vlen); |
2324 const TypeVect* vt = TypeVect::make(bt, vlen); |
2325 vn = new CMoveVDNode(cc, src1, src2, vt); |
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();}) |
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(); |
2327 } else { |
2334 } else { |
2328 if (do_reserve_copy()) { |
2335 if (do_reserve_copy()) { |
2329 NOT_PRODUCT(if(is_trace_loop_reverse() || TraceLoopOpts) {tty->print_cr("SWPointer::output: ShouldNotReachHere, exiting SuperWord");}) |
2336 NOT_PRODUCT(if(is_trace_loop_reverse() || TraceLoopOpts) {tty->print_cr("SWPointer::output: ShouldNotReachHere, exiting SuperWord");}) |
2330 return; //and reverse to backup IG |
2337 return; //and reverse to backup IG |
2331 } |
2338 } |