src/share/vm/opto/compile.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/opto

src/share/vm/opto/compile.cpp

Print this page




3032       if (d) {
3033         // Replace them with a fused divmod if supported
3034         if (Matcher::has_match_rule(Op_DivModL)) {
3035           DivModLNode* divmod = DivModLNode::make(n);
3036           d->subsume_by(divmod->div_proj(), this);
3037           n->subsume_by(divmod->mod_proj(), this);
3038         } else {
3039           // replace a%b with a-((a/b)*b)
3040           Node* mult = new MulLNode(d, d->in(2));
3041           Node* sub  = new SubLNode(d->in(1), mult);
3042           n->subsume_by(sub, this);
3043         }
3044       }
3045     }
3046     break;
3047 
3048   case Op_LoadVector:
3049   case Op_StoreVector:
3050     break;
3051 









3052   case Op_PackB:
3053   case Op_PackS:
3054   case Op_PackI:
3055   case Op_PackF:
3056   case Op_PackL:
3057   case Op_PackD:
3058     if (n->req()-1 > 2) {
3059       // Replace many operand PackNodes with a binary tree for matching
3060       PackNode* p = (PackNode*) n;
3061       Node* btp = p->binary_tree_pack(1, n->req());
3062       n->subsume_by(btp, this);
3063     }
3064     break;
3065   case Op_Loop:
3066   case Op_CountedLoop:
3067     if (n->as_Loop()->is_inner_loop()) {
3068       frc.inc_inner_loop_count();
3069     }
3070     break;
3071   case Op_LShiftI:




3032       if (d) {
3033         // Replace them with a fused divmod if supported
3034         if (Matcher::has_match_rule(Op_DivModL)) {
3035           DivModLNode* divmod = DivModLNode::make(n);
3036           d->subsume_by(divmod->div_proj(), this);
3037           n->subsume_by(divmod->mod_proj(), this);
3038         } else {
3039           // replace a%b with a-((a/b)*b)
3040           Node* mult = new MulLNode(d, d->in(2));
3041           Node* sub  = new SubLNode(d->in(1), mult);
3042           n->subsume_by(sub, this);
3043         }
3044       }
3045     }
3046     break;
3047 
3048   case Op_LoadVector:
3049   case Op_StoreVector:
3050     break;
3051 
3052   case Op_AddReductionVI:
3053   case Op_AddReductionVL:
3054   case Op_AddReductionVF:
3055   case Op_AddReductionVD:
3056   case Op_MulReductionVI:
3057   case Op_MulReductionVF:
3058   case Op_MulReductionVD:
3059     break;
3060 
3061   case Op_PackB:
3062   case Op_PackS:
3063   case Op_PackI:
3064   case Op_PackF:
3065   case Op_PackL:
3066   case Op_PackD:
3067     if (n->req()-1 > 2) {
3068       // Replace many operand PackNodes with a binary tree for matching
3069       PackNode* p = (PackNode*) n;
3070       Node* btp = p->binary_tree_pack(1, n->req());
3071       n->subsume_by(btp, this);
3072     }
3073     break;
3074   case Op_Loop:
3075   case Op_CountedLoop:
3076     if (n->as_Loop()->is_inner_loop()) {
3077       frc.inc_inner_loop_count();
3078     }
3079     break;
3080   case Op_LShiftI:


src/share/vm/opto/compile.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File