Lines Matching refs:ushr

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);
419 HUShr* ushr, in ReplaceRotateWithRor() argument
423 new (GetGraph()->GetAllocator()) HRor(ushr->GetType(), ushr->GetLeft(), ushr->GetRight()); in ReplaceRotateWithRor()
425 if (!ushr->HasUses()) { in ReplaceRotateWithRor()
426 ushr->GetBlock()->RemoveInstruction(ushr); in ReplaceRotateWithRor()
428 if (!ushr->GetRight()->HasUses()) { in ReplaceRotateWithRor()
429 ushr->GetRight()->GetBlock()->RemoveInstruction(ushr->GetRight()); in ReplaceRotateWithRor()
448 HUShr* ushr = left->IsUShr() ? left->AsUShr() : right->AsUShr(); in TryReplaceWithRotate() local
450 DCHECK(DataType::IsIntOrLongType(ushr->GetType())); in TryReplaceWithRotate()
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()
480 HUShr* ushr, in TryReplaceWithRotateConstantPattern() argument
483 size_t reg_bits = DataType::Size(ushr->GetType()) * kBitsPerByte; in TryReplaceWithRotateConstantPattern()
484 size_t rdist = Int64FromConstant(ushr->GetRight()->AsConstant()); in TryReplaceWithRotateConstantPattern()
487 ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateConstantPattern()
510 HUShr* ushr, in TryReplaceWithRotateRegisterNegPattern() argument
513 DCHECK(ushr->GetRight()->IsNeg() || 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()
540 HUShr* ushr, in TryReplaceWithRotateRegisterSubPattern() argument
543 DCHECK(ushr->GetRight()->IsSub() || shl->GetRight()->IsSub()); in TryReplaceWithRotateRegisterSubPattern()
544 size_t reg_bits = DataType::Size(ushr->GetType()) * kBitsPerByte; in TryReplaceWithRotateRegisterSubPattern()
546 HInstruction* ushr_shift = ushr->GetRight(); in TryReplaceWithRotateRegisterSubPattern()
549 return ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateRegisterSubPattern()
1425 HUShr* ushr = new (GetGraph()->GetAllocator()) HUShr(instruction->GetType(), in VisitAnd() local
1429 instruction->GetBlock()->ReplaceAndRemoveInstructionWith(instruction, ushr); in VisitAnd()