Lines Matching refs:op
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);
72 bool TryDeMorganNegationFactoring(HBinaryOperation* op);
227 bool InstructionSimplifierVisitor::TryDeMorganNegationFactoring(HBinaryOperation* op) { in TryDeMorganNegationFactoring() argument
228 DCHECK(op->IsAnd() || op->IsOr()) << op->DebugName(); in TryDeMorganNegationFactoring()
229 DataType::Type type = op->GetType(); in TryDeMorganNegationFactoring()
230 HInstruction* left = op->GetLeft(); in TryDeMorganNegationFactoring()
231 HInstruction* right = op->GetRight(); in TryDeMorganNegationFactoring()
248 uint32_t dex_pc = op->GetDexPc(); in TryDeMorganNegationFactoring()
258 if (op->IsAnd()) { in TryDeMorganNegationFactoring()
270 op->GetBlock()->InsertInstructionBefore(hbin, op); in TryDeMorganNegationFactoring()
271 op->GetBlock()->ReplaceAndRemoveInstructionWith(op, hnot); in TryDeMorganNegationFactoring()
555 bool InstructionSimplifierVisitor::ReplaceRotateWithRor(HBinaryOperation* op, in ReplaceRotateWithRor() argument
558 DCHECK(op->IsAdd() || op->IsXor() || op->IsOr()) << op->DebugName(); in ReplaceRotateWithRor()
561 op->GetBlock()->ReplaceAndRemoveInstructionWith(op, ror); in ReplaceRotateWithRor()
579 bool InstructionSimplifierVisitor::TryReplaceWithRotate(HBinaryOperation* op) { in TryReplaceWithRotate() argument
580 DCHECK(op->IsAdd() || op->IsXor() || op->IsOr()); in TryReplaceWithRotate()
581 HInstruction* left = op->GetLeft(); in TryReplaceWithRotate()
582 HInstruction* right = op->GetRight(); in TryReplaceWithRotate()
593 return TryReplaceWithRotateConstantPattern(op, ushr, shl); in TryReplaceWithRotate()
596 return TryReplaceWithRotateRegisterSubPattern(op, ushr, shl); in TryReplaceWithRotate()
599 return TryReplaceWithRotateRegisterNegPattern(op, ushr, shl); in TryReplaceWithRotate()
616 bool InstructionSimplifierVisitor::TryReplaceWithRotateConstantPattern(HBinaryOperation* op, in TryReplaceWithRotateConstantPattern() argument
619 DCHECK(op->IsAdd() || op->IsXor() || op->IsOr()); in TryReplaceWithRotateConstantPattern()
624 return ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateConstantPattern()
649 bool InstructionSimplifierVisitor::TryReplaceWithRotateRegisterNegPattern(HBinaryOperation* op, in TryReplaceWithRotateRegisterNegPattern() argument
652 DCHECK(op->IsAdd() || op->IsXor() || op->IsOr()); in TryReplaceWithRotateRegisterNegPattern()
663 const bool needs_non_zero_value = !op->IsOr(); in TryReplaceWithRotateRegisterNegPattern()
669 return ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateRegisterNegPattern()
688 bool InstructionSimplifierVisitor::TryReplaceWithRotateRegisterSubPattern(HBinaryOperation* op, in TryReplaceWithRotateRegisterSubPattern() argument
691 DCHECK(op->IsAdd() || op->IsXor() || op->IsOr()); in TryReplaceWithRotateRegisterSubPattern()
698 return ReplaceRotateWithRor(op, ushr, shl); in TryReplaceWithRotateRegisterSubPattern()
3408 bool TryMergeNegatedInput(HBinaryOperation* op) { in TryMergeNegatedInput() argument
3409 DCHECK(op->IsAnd() || op->IsOr() || op->IsXor()) << op->DebugName(); in TryMergeNegatedInput()
3410 HInstruction* left = op->GetLeft(); in TryMergeNegatedInput()
3411 HInstruction* right = op->GetRight(); in TryMergeNegatedInput()
3439 HBitwiseNegatedRight(op->GetType(), op->GetKind(), hother, src, op->GetDexPc()); in TryMergeNegatedInput()
3441 op->GetBlock()->ReplaceAndRemoveInstructionWith(op, neg_op); in TryMergeNegatedInput()