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: |