Lines Matching refs:HInstruction

113   bool CanEnsureNotNullAt(HInstruction* instr, HInstruction* at) const;
222 HInstruction* left = op->GetLeft(); in TryDeMorganNegationFactoring()
223 HInstruction* right = op->GetRight(); in TryDeMorganNegationFactoring()
238 HInstruction* src_left = left->InputAt(0); in TryDeMorganNegationFactoring()
239 HInstruction* src_right = right->InputAt(0); in TryDeMorganNegationFactoring()
255 HInstruction* hnot; in TryDeMorganNegationFactoring()
292 HInstruction* use = mul->GetUses().front().GetUser(); in TryCombineVecMultiplyAccumulate()
305 HInstruction* accumulator = nullptr; in TryCombineVecMultiplyAccumulate()
307 HInstruction* binop_left = binop->GetLeft(); in TryCombineVecMultiplyAccumulate()
308 HInstruction* binop_right = binop->GetRight(); in TryCombineVecMultiplyAccumulate()
318 HInstruction::InstructionKind kind = in TryCombineVecMultiplyAccumulate()
319 use->IsVecAdd() ? HInstruction::kAdd : HInstruction::kSub; in TryCombineVecMultiplyAccumulate()
344 HInstruction* shift_amount = instruction->GetRight(); in VisitShift()
345 HInstruction* value = instruction->GetLeft(); in VisitShift()
412 static bool IsSubRegBitsMinusOther(HSub* sub, size_t reg_bits, HInstruction* other) { in IsSubRegBitsMinusOther()
444 HInstruction* left = op->GetLeft(); in TryReplaceWithRotate()
445 HInstruction* right = op->GetRight(); in TryReplaceWithRotate()
545 HInstruction* shl_shift = shl->GetRight(); in TryReplaceWithRotateRegisterSubPattern()
546 HInstruction* ushr_shift = ushr->GetRight(); in TryReplaceWithRotateRegisterSubPattern()
555 HInstruction* obj = null_check->InputAt(0); in VisitNullCheck()
565 bool InstructionSimplifierVisitor::CanEnsureNotNullAt(HInstruction* input, HInstruction* at) const { in CanEnsureNotNullAt()
570 for (const HUseListNode<HInstruction*>& use : input->GetUses()) { in CanEnsureNotNullAt()
571 HInstruction* user = use.GetUser(); in CanEnsureNotNullAt()
583 HInstruction* object, in TypeCheckHasKnownOutcome()
617 HInstruction* object = check_cast->InputAt(0); in VisitCheckCast()
658 HInstruction* object = instruction->InputAt(0); in VisitInstanceOf()
722 static HCondition* GetOppositeConditionSwapOps(ArenaAllocator* allocator, HInstruction* cond) { in GetOppositeConditionSwapOps()
723 HInstruction *lhs = cond->InputAt(0); in GetOppositeConditionSwapOps()
724 HInstruction *rhs = cond->InputAt(1); in GetOppositeConditionSwapOps()
726 case HInstruction::kEqual: in GetOppositeConditionSwapOps()
728 case HInstruction::kNotEqual: in GetOppositeConditionSwapOps()
730 case HInstruction::kLessThan: in GetOppositeConditionSwapOps()
732 case HInstruction::kLessThanOrEqual: in GetOppositeConditionSwapOps()
734 case HInstruction::kGreaterThan: in GetOppositeConditionSwapOps()
736 case HInstruction::kGreaterThanOrEqual: in GetOppositeConditionSwapOps()
738 case HInstruction::kBelow: in GetOppositeConditionSwapOps()
740 case HInstruction::kBelowOrEqual: in GetOppositeConditionSwapOps()
742 case HInstruction::kAbove: in GetOppositeConditionSwapOps()
744 case HInstruction::kAboveOrEqual: in GetOppositeConditionSwapOps()
753 HInstruction* input_const = equal->GetConstantRight(); in VisitEqual()
755 HInstruction* input_value = equal->GetLeastConstantLeft(); in VisitEqual()
785 HInstruction* input_const = not_equal->GetConstantRight(); in VisitNotEqual()
787 HInstruction* input_value = not_equal->GetLeastConstantLeft(); in VisitNotEqual()
817 HInstruction* input = bool_not->InputAt(0); in VisitBooleanNot()
818 HInstruction* replace_with = nullptr; in VisitBooleanNot()
847 static HInstruction* NewIntegralAbs(ArenaAllocator* allocator, in NewIntegralAbs()
848 HInstruction* x, in NewIntegralAbs()
849 HInstruction* cursor) { in NewIntegralAbs()
858 static HInstruction* NewIntegralMinMax(ArenaAllocator* allocator, in NewIntegralMinMax()
859 HInstruction* x, in NewIntegralMinMax()
860 HInstruction* y, in NewIntegralMinMax()
861 HInstruction* cursor, in NewIntegralMinMax()
877 static bool AreLowerPrecisionArgs(DataType::Type to_type, HInstruction* a, HInstruction* b) { in AreLowerPrecisionArgs()
896 static HInstruction* AllowInMinMax(IfCondition cmp, in AllowInMinMax()
897 HInstruction* a, in AllowInMinMax()
898 HInstruction* b, in AllowInMinMax()
899 HInstruction* c) { in AllowInMinMax()
919 HInstruction* replace_with = nullptr; in VisitSelect()
920 HInstruction* condition = select->GetCondition(); in VisitSelect()
921 HInstruction* true_value = select->GetTrueValue(); in VisitSelect()
922 HInstruction* false_value = select->GetFalseValue(); in VisitSelect()
956 HInstruction* a = condition->InputAt(0); in VisitSelect()
957 HInstruction* b = condition->InputAt(1); in VisitSelect()
968 HInstruction* new_a = AllowInMinMax(cmp, a, b, true_value); in VisitSelect()
983 HInstruction* the_negated = negLeft ? true_value->InputAt(0) : false_value->InputAt(0); in VisitSelect()
984 HInstruction* not_negated = negLeft ? false_value : true_value; in VisitSelect()
992 HInstruction* true_sub1 = true_value->InputAt(0); in VisitSelect()
993 HInstruction* true_sub2 = true_value->InputAt(1); in VisitSelect()
994 HInstruction* false_sub1 = false_value->InputAt(0); in VisitSelect()
995 HInstruction* false_sub2 = false_value->InputAt(1); in VisitSelect()
1018 HInstruction* condition = instruction->InputAt(0); in VisitIf()
1028 HInstruction* input = instruction->InputAt(0); in VisitArrayLength()
1040 HInstruction* value = instruction->GetValue(); in VisitArraySet()
1097 static inline bool TryReplaceFieldOrArrayGetType(HInstruction* maybe_get, DataType::Type new_type) { in TryReplaceFieldOrArrayGetType()
1137 for (const HUseListNode<HInstruction*>& use : type_conversion->GetUses()) { in IsTypeConversionForStoringIntoNoWiderFieldOnly()
1138 HInstruction* instruction = use.GetUser(); in IsTypeConversionForStoringIntoNoWiderFieldOnly()
1165 HInstruction* input = instruction->GetInput(); in VisitTypeConversion()
1177 HInstruction* original_input = input_conversion->GetInput(); in VisitTypeConversion()
1224 HInstruction* original_input = input_and->GetLeastConstantLeft(); in VisitTypeConversion()
1261 HInstruction* input = instruction->GetInput(); in VisitAbs()
1273 HInstruction* input_other = instruction->GetLeastConstantLeft(); in VisitAdd()
1291 HInstruction* left = instruction->GetLeft(); in VisitAdd()
1292 HInstruction* right = instruction->GetRight(); in VisitAdd()
1313 HInstruction* other = left_is_neg ? right : left; in VisitAdd()
1360 HInstruction* input_other = instruction->GetLeastConstantLeft(); in VisitAnd()
1392 HInstruction* new_and_input = input_other->InputAt(0); in VisitAnd()
1518 HInstruction* input_one = condition->InputAt(0); in RecognizeAndSimplifyClassCheck()
1519 HInstruction* input_two = condition->InputAt(1); in RecognizeAndSimplifyClassCheck()
1540 HInstruction* receiver = field_get->InputAt(0); in RecognizeAndSimplifyClassCheck()
1593 HInstruction* left = condition->GetLeft(); in VisitCondition()
1594 HInstruction* right = condition->GetRight(); in VisitCondition()
1654 HInstruction* input_other = instruction->GetLeastConstantLeft(); in VisitDiv()
1710 static HInstruction* FindDivWithInputsInBasicBlock(HInstruction* dividend, in FindDivWithInputsInBasicBlock()
1711 HInstruction* divisor, in FindDivWithInputsInBasicBlock()
1713 for (const HUseListNode<HInstruction*>& use : dividend->GetUses()) { in FindDivWithInputsInBasicBlock()
1714 HInstruction* user = use.GetUser(); in FindDivWithInputsInBasicBlock()
1737 HInstruction* dividend = rem->GetLeft(); in TryToReuseDiv()
1738 HInstruction* divisor = rem->GetRight(); in TryToReuseDiv()
1750 HInstruction* quotient = FindDivWithInputsInBasicBlock(dividend, divisor, basic_block); in TryToReuseDiv()
1759 HInstruction* mul = new (allocator) HMul(type, quotient, divisor); in TryToReuseDiv()
1761 HInstruction* sub = new (allocator) HSub(type, dividend, mul); in TryToReuseDiv()
1774 HInstruction* input_other = instruction->GetLeastConstantLeft(); in VisitMul()
1882 HInstruction* input = instruction->GetInput(); in VisitNeg()
1927 HInstruction* input = instruction->GetInput(); in VisitNot()
1949 HInstruction* input_other = instruction->GetLeastConstantLeft(); in VisitOr()
1997 HInstruction* input_other = instruction->GetLeastConstantLeft(); in VisitSub()
2021 HInstruction* left = instruction->GetLeft(); in VisitSub()
2022 HInstruction* right = instruction->GetRight(); in VisitSub()
2112 HInstruction* input_other = instruction->GetLeastConstantLeft(); in VisitXor()
2148 HInstruction* left = instruction->GetLeft(); in VisitXor()
2149 HInstruction* right = instruction->GetRight(); in VisitXor()
2178 HInstruction* argument = instruction->InputAt(1); in SimplifyStringEquals()
2179 HInstruction* receiver = instruction->InputAt(0); in SimplifyStringEquals()
2201 static bool IsArrayLengthOf(HInstruction* potential_length, HInstruction* potential_array) { in IsArrayLengthOf()
2214 HInstruction* source = instruction->InputAt(0); in SimplifySystemArrayCopy()
2215 HInstruction* destination = instruction->InputAt(2); in SimplifySystemArrayCopy()
2216 HInstruction* count = instruction->InputAt(4); in SimplifySystemArrayCopy()
2321 HInstruction* x = invoke->InputAt(0); in SimplifyFP2Int()
2324 HInstruction* nan; in SimplifyFP2Int()
2344 HInstruction* select = new (GetGraph()->GetAllocator()) HSelect(condition, nan, invoke, dex_pc); in SimplifyFP2Int()
2350 HInstruction* str = invoke->InputAt(0); in SimplifyStringCharAt()
2351 HInstruction* index = invoke->InputAt(1); in SimplifyStringCharAt()
2373 HInstruction* str = invoke->InputAt(0); in SimplifyStringLength()
2423 HInstruction* arg = invoke->InputAt(n); in SimplifyNPEOnArgN()
2432 HInstruction* receiver = invoke->InputAt(0); in SimplifyReturnThis()
2439 static bool NoEscapeForStringBufferReference(HInstruction* reference, HInstruction* user) { in NoEscapeForStringBufferReference()
2470 HInstruction* sb = invoke->InputAt(0); in TryReplaceStringBuilderAppend()
2480 for (const HUseListNode<HInstruction*>& use : sb->GetUses()) { in TryReplaceStringBuilderAppend()
2498 HInstruction* args[StringBuilderAppend::kMaxArgs]; // Added in reverse order. in TryReplaceStringBuilderAppend()
2500 HInstruction* user = iter.Current(); in TryReplaceStringBuilderAppend()
2604 HInstruction* holder = use.GetUser()->GetHolder(); in TryReplaceStringBuilderAppend()
2658 HInstruction* receiver = invoke->InputAt(0); in SimplifyAllocationIntrinsic()
2756 HInstruction* cond = deoptimize->InputAt(0); in VisitDeoptimize()
2784 HInstruction* left = instruction->GetLeft(); in TryHandleAssociativeAndCommutativeOperation()
2785 HInstruction* right = instruction->GetRight(); in TryHandleAssociativeAndCommutativeOperation()
2825 static HBinaryOperation* AsAddOrSub(HInstruction* binop) { in AsAddOrSub()
2862 HInstruction* left = instruction->GetLeft(); in TrySubtractionChainSimplification()
2863 HInstruction* right = instruction->GetRight(); in TrySubtractionChainSimplification()
2886 HInstruction* x = (const1 == left) ? y->GetRight() : left; in TrySubtractionChainSimplification()
2903 HInstruction* z; in TrySubtractionChainSimplification()