Lines Matching refs:shl
56 bool ReplaceRotateWithRor(HBinaryOperation* op, HUShr* ushr, HShl* shl);
58 bool TryReplaceWithRotateConstantPattern(HBinaryOperation* op, HUShr* ushr, HShl* shl);
59 bool TryReplaceWithRotateRegisterNegPattern(HBinaryOperation* op, HUShr* ushr, HShl* shl);
60 bool TryReplaceWithRotateRegisterSubPattern(HBinaryOperation* op, HUShr* ushr, HShl* shl);
420 HShl* shl) { in ReplaceRotateWithRor() argument
431 if (!shl->HasUses()) { in ReplaceRotateWithRor()
432 shl->GetBlock()->RemoveInstruction(shl); in ReplaceRotateWithRor()
434 if (!shl->GetRight()->HasUses()) { in ReplaceRotateWithRor()
435 shl->GetRight()->GetBlock()->RemoveInstruction(shl->GetRight()); in ReplaceRotateWithRor()
449 HShl* shl = left->IsShl() ? left->AsShl() : right->AsShl(); in TryReplaceWithRotate() local
451 if (ushr->GetType() == shl->GetType() && in TryReplaceWithRotate()
452 ushr->GetLeft() == shl->GetLeft()) { in TryReplaceWithRotate()
453 if (ushr->GetRight()->IsConstant() && shl->GetRight()->IsConstant()) { in TryReplaceWithRotate()
456 return TryReplaceWithRotateConstantPattern(op, ushr, shl); in TryReplaceWithRotate()
457 } else if (ushr->GetRight()->IsSub() || shl->GetRight()->IsSub()) { in TryReplaceWithRotate()
459 return TryReplaceWithRotateRegisterSubPattern(op, ushr, shl); in TryReplaceWithRotate()
460 } else if (ushr->GetRight()->IsNeg() || shl->GetRight()->IsNeg()) { in TryReplaceWithRotate()
462 return TryReplaceWithRotateRegisterNegPattern(op, ushr, shl); in TryReplaceWithRotate()
481 HShl* shl) { in TryReplaceWithRotateConstantPattern() argument
485 size_t ldist = Int64FromConstant(shl->GetRight()->AsConstant()); in TryReplaceWithRotateConstantPattern()
487 ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateConstantPattern()
511 HShl* shl) { in TryReplaceWithRotateRegisterNegPattern() argument
513 DCHECK(ushr->GetRight()->IsNeg() || shl->GetRight()->IsNeg()); in TryReplaceWithRotateRegisterNegPattern()
514 bool neg_is_left = shl->GetRight()->IsNeg(); in TryReplaceWithRotateRegisterNegPattern()
515 HNeg* neg = neg_is_left ? shl->GetRight()->AsNeg() : ushr->GetRight()->AsNeg(); in TryReplaceWithRotateRegisterNegPattern()
517 if (neg->InputAt(0) == (neg_is_left ? ushr->GetRight() : shl->GetRight())) { in TryReplaceWithRotateRegisterNegPattern()
518 ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateRegisterNegPattern()
541 HShl* shl) { in TryReplaceWithRotateRegisterSubPattern() argument
543 DCHECK(ushr->GetRight()->IsSub() || shl->GetRight()->IsSub()); in TryReplaceWithRotateRegisterSubPattern()
545 HInstruction* shl_shift = shl->GetRight(); in TryReplaceWithRotateRegisterSubPattern()
549 return ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateRegisterSubPattern()
1839 HShl* shl = new (allocator) HShl(type, input_other, shift); in VisitMul() local
1840 block->ReplaceAndRemoveInstructionWith(instruction, shl); in VisitMul()
1849 HShl* shl = new (allocator) HShl(type, in VisitMul() local
1852 HAdd* add = new (allocator) HAdd(type, input_other, shl); in VisitMul()
1854 block->InsertInstructionBefore(shl, instruction); in VisitMul()
1864 HShl* shl = new (allocator) HShl(type, in VisitMul() local
1867 HSub* sub = new (allocator) HSub(type, shl, input_other); in VisitMul()
1869 block->InsertInstructionBefore(shl, instruction); in VisitMul()