Lines Matching refs:shl
62 bool ReplaceRotateWithRor(HBinaryOperation* op, HUShr* ushr, HShl* shl);
64 bool TryReplaceWithRotateConstantPattern(HBinaryOperation* op, HUShr* ushr, HShl* shl);
65 bool TryReplaceWithRotateRegisterNegPattern(HBinaryOperation* op, HUShr* ushr, HShl* shl);
66 bool TryReplaceWithRotateRegisterSubPattern(HBinaryOperation* op, HUShr* ushr, HShl* shl);
438 HShl *shl = shr_value->AsShl(); in TryReplaceShiftsByConstantWithTypeConversion() local
439 if (!shl->HasOnlyOneNonEnvironmentUse()) { in TryReplaceShiftsByConstantWithTypeConversion()
444 if (shl->GetRight() != shr_amount) { in TryReplaceShiftsByConstantWithTypeConversion()
456 HInstruction* shl_value = shl->GetLeft(); in TryReplaceShiftsByConstantWithTypeConversion()
469 shl->GetBlock()->RemoveInstruction(shl); in TryReplaceShiftsByConstantWithTypeConversion()
557 HShl* shl) { in ReplaceRotateWithRor() argument
568 if (!shl->HasUses()) { in ReplaceRotateWithRor()
569 shl->GetBlock()->RemoveInstruction(shl); in ReplaceRotateWithRor()
571 if (!shl->GetRight()->HasUses()) { in ReplaceRotateWithRor()
572 shl->GetRight()->GetBlock()->RemoveInstruction(shl->GetRight()); in ReplaceRotateWithRor()
586 HShl* shl = left->IsShl() ? left->AsShl() : right->AsShl(); in TryReplaceWithRotate() local
588 if (ushr->GetType() == shl->GetType() && in TryReplaceWithRotate()
589 ushr->GetLeft() == shl->GetLeft()) { in TryReplaceWithRotate()
590 if (ushr->GetRight()->IsConstant() && shl->GetRight()->IsConstant()) { in TryReplaceWithRotate()
593 return TryReplaceWithRotateConstantPattern(op, ushr, shl); in TryReplaceWithRotate()
594 } else if (ushr->GetRight()->IsSub() || shl->GetRight()->IsSub()) { in TryReplaceWithRotate()
596 return TryReplaceWithRotateRegisterSubPattern(op, ushr, shl); in TryReplaceWithRotate()
597 } else if (ushr->GetRight()->IsNeg() || shl->GetRight()->IsNeg()) { in TryReplaceWithRotate()
599 return TryReplaceWithRotateRegisterNegPattern(op, ushr, shl); in TryReplaceWithRotate()
618 HShl* shl) { in TryReplaceWithRotateConstantPattern() argument
622 size_t ldist = Int64FromConstant(shl->GetRight()->AsConstant()); in TryReplaceWithRotateConstantPattern()
624 return ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateConstantPattern()
651 HShl* shl) { in TryReplaceWithRotateRegisterNegPattern() argument
653 DCHECK(ushr->GetRight()->IsNeg() || shl->GetRight()->IsNeg()); in TryReplaceWithRotateRegisterNegPattern()
654 bool neg_is_left = shl->GetRight()->IsNeg(); in TryReplaceWithRotateRegisterNegPattern()
655 HNeg* neg = neg_is_left ? shl->GetRight()->AsNeg() : ushr->GetRight()->AsNeg(); in TryReplaceWithRotateRegisterNegPattern()
659 if (value != (neg_is_left ? ushr->GetRight() : shl->GetRight())) { in TryReplaceWithRotateRegisterNegPattern()
669 return ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateRegisterNegPattern()
690 HShl* shl) { in TryReplaceWithRotateRegisterSubPattern() argument
692 DCHECK(ushr->GetRight()->IsSub() || shl->GetRight()->IsSub()); in TryReplaceWithRotateRegisterSubPattern()
694 HInstruction* shl_shift = shl->GetRight(); in TryReplaceWithRotateRegisterSubPattern()
698 return ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateRegisterSubPattern()
2073 HShl* shl = new (allocator) HShl(type, input_other, shift); in VisitMul() local
2074 block->ReplaceAndRemoveInstructionWith(instruction, shl); in VisitMul()
2083 HShl* shl = new (allocator) HShl(type, in VisitMul() local
2086 HAdd* add = new (allocator) HAdd(type, input_other, shl); in VisitMul()
2088 block->InsertInstructionBefore(shl, instruction); in VisitMul()
2098 HShl* shl = new (allocator) HShl(type, in VisitMul() local
2101 HSub* sub = new (allocator) HSub(type, shl, input_other); in VisitMul()
2103 block->InsertInstructionBefore(shl, instruction); in VisitMul()