Lines Matching refs:shl

54   bool ReplaceRotateWithRor(HBinaryOperation* op, HUShr* ushr, HShl* shl);
56 bool TryReplaceWithRotateConstantPattern(HBinaryOperation* op, HUShr* ushr, HShl* shl);
57 bool TryReplaceWithRotateRegisterNegPattern(HBinaryOperation* op, HUShr* ushr, HShl* shl);
58 bool TryReplaceWithRotateRegisterSubPattern(HBinaryOperation* op, HUShr* ushr, HShl* shl);
414 HShl* shl) { in ReplaceRotateWithRor() argument
425 if (!shl->HasUses()) { in ReplaceRotateWithRor()
426 shl->GetBlock()->RemoveInstruction(shl); in ReplaceRotateWithRor()
428 if (!shl->GetRight()->HasUses()) { in ReplaceRotateWithRor()
429 shl->GetRight()->GetBlock()->RemoveInstruction(shl->GetRight()); in ReplaceRotateWithRor()
443 HShl* shl = left->IsShl() ? left->AsShl() : right->AsShl(); in TryReplaceWithRotate() local
445 if (ushr->GetType() == shl->GetType() && in TryReplaceWithRotate()
446 ushr->GetLeft() == shl->GetLeft()) { in TryReplaceWithRotate()
447 if (ushr->GetRight()->IsConstant() && shl->GetRight()->IsConstant()) { in TryReplaceWithRotate()
450 return TryReplaceWithRotateConstantPattern(op, ushr, shl); in TryReplaceWithRotate()
451 } else if (ushr->GetRight()->IsSub() || shl->GetRight()->IsSub()) { in TryReplaceWithRotate()
453 return TryReplaceWithRotateRegisterSubPattern(op, ushr, shl); in TryReplaceWithRotate()
454 } else if (ushr->GetRight()->IsNeg() || shl->GetRight()->IsNeg()) { in TryReplaceWithRotate()
456 return TryReplaceWithRotateRegisterNegPattern(op, ushr, shl); in TryReplaceWithRotate()
475 HShl* shl) { in TryReplaceWithRotateConstantPattern() argument
479 size_t ldist = Int64FromConstant(shl->GetRight()->AsConstant()); in TryReplaceWithRotateConstantPattern()
481 ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateConstantPattern()
505 HShl* shl) { in TryReplaceWithRotateRegisterNegPattern() argument
507 DCHECK(ushr->GetRight()->IsNeg() || shl->GetRight()->IsNeg()); in TryReplaceWithRotateRegisterNegPattern()
508 bool neg_is_left = shl->GetRight()->IsNeg(); in TryReplaceWithRotateRegisterNegPattern()
509 HNeg* neg = neg_is_left ? shl->GetRight()->AsNeg() : ushr->GetRight()->AsNeg(); in TryReplaceWithRotateRegisterNegPattern()
511 if (neg->InputAt(0) == (neg_is_left ? ushr->GetRight() : shl->GetRight())) { in TryReplaceWithRotateRegisterNegPattern()
512 ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateRegisterNegPattern()
535 HShl* shl) { in TryReplaceWithRotateRegisterSubPattern() argument
537 DCHECK(ushr->GetRight()->IsSub() || shl->GetRight()->IsSub()); in TryReplaceWithRotateRegisterSubPattern()
539 HInstruction* shl_shift = shl->GetRight(); in TryReplaceWithRotateRegisterSubPattern()
543 return ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateRegisterSubPattern()
1768 HShl* shl = new (allocator) HShl(type, input_other, shift); in VisitMul() local
1769 block->ReplaceAndRemoveInstructionWith(instruction, shl); in VisitMul()
1778 HShl* shl = new (allocator) HShl(type, in VisitMul() local
1781 HAdd* add = new (allocator) HAdd(type, input_other, shl); in VisitMul()
1783 block->InsertInstructionBefore(shl, instruction); in VisitMul()
1793 HShl* shl = new (allocator) HShl(type, in VisitMul() local
1796 HSub* sub = new (allocator) HSub(type, shl, input_other); in VisitMul()
1798 block->InsertInstructionBefore(shl, instruction); in VisitMul()