/art/test/652-deopt-intrinsic/src/ |
H A D | Main.java | 20 loop(); 22 loop(); 25 public static void loop() { method in class:Main
|
/art/compiler/optimizing/ |
H A D | induction_var_range.h | 64 * to protect the range evaluation inside its loop. The parameter chase_hint defines an 78 * are needed to protect the range evaluation inside its loop. 89 * upper, respectively. For a loop invariant, lower is not set. 108 * Generates explicit taken-test for the loop in the given context. Code is generated in 117 * the given instruction inside the closest enveloping loop. 122 * Generates last value of the given instruction in the closest enveloping loop. 136 * Incrementally updates induction information for just the given loop. 138 void ReVisit(HLoopInformation* loop) { argument 139 induction_analysis_->induction_.erase(loop); 140 for (HInstructionIterator it(loop [all...] |
H A D | linear_order.cc | 63 HLoopInformation* loop = header->GetLoopInformation(); local 64 size_t num_blocks = loop->GetBlocks().NumSetBits(); 67 if (loop->Contains(*block)) { 72 } else if (found_blocks == num_blocks && !loop->IsBackEdge(*block)) { 89 // - Blocks in a loop are consecutive, 90 // - Back-edge is the last block before loop exits.
|
H A D | induction_var_analysis.cc | 26 * classification, the lexicographically first loop-phi is rotated to the front. 28 static void RotateEntryPhiFirst(HLoopInformation* loop, argument 31 // Find very first loop-phi. 32 const HInstructionList& phis = loop->GetHeader()->GetPhis(); 44 // If found, bring that loop-phi to front. 97 * Returns true if loop is guarded by "a cmp b" on entry. 99 static bool IsGuardedBy(HLoopInformation* loop, argument 112 HBasicBlock* guard = loop->GetPreHeader(); 113 HBasicBlock* entry = loop->GetHeader(); 145 /* Finds first loop heade 146 FindFirstLoopHeaderPhiUse(HLoopInformation* loop, HInstruction* instruction) argument 160 FixOutsideUse(HLoopInformation* loop, HInstruction* instruction, HInstruction* replacement, bool rewrite) argument 200 RewriteBreakLoopBody(HLoopInformation* loop, HBasicBlock* body, HInstruction* cond, HInstruction* index, HInstruction* upper, bool rewrite) argument 258 VisitLoop(HLoopInformation* loop) argument 293 VisitNode(HLoopInformation* loop, HInstruction* instruction) argument 337 VisitDescendant(HLoopInformation* loop, HInstruction* instruction) argument 355 ClassifyTrivial(HLoopInformation* loop, HInstruction* instruction) argument 392 ClassifyNonTrivial(HLoopInformation* loop) argument 544 TransferPhi(HLoopInformation* loop, HInstruction* phi, size_t input_index, size_t adjust_input_size) argument 694 SolvePhiAllInputs( HLoopInformation* loop, HInstruction* entry_phi, HInstruction* phi) argument 723 SolveAddSub(HLoopInformation* loop, HInstruction* entry_phi, HInstruction* instruction, HInstruction* x, HInstruction* y, InductionOp op, bool is_first_call) argument 784 SolveOp(HLoopInformation* loop, HInstruction* entry_phi, HInstruction* instruction, HInstruction* x, HInstruction* y, InductionOp op) argument 843 SolveTest(HLoopInformation* loop, HInstruction* entry_phi, HInstruction* instruction, int64_t opposite_value) argument 859 SolveConversion( HLoopInformation* loop, HInstruction* entry_phi, HTypeConversion* conversion) argument 891 VisitControl(HLoopInformation* loop) argument 919 VisitCondition(HLoopInformation* loop, HBasicBlock* body, InductionInfo* a, InductionInfo* b, DataType::Type type, IfCondition cmp) argument 976 VisitTripCount(HLoopInformation* loop, InductionInfo* lower_expr, InductionInfo* upper_expr, InductionInfo* stride_expr, int64_t stride_value, DataType::Type type, IfCondition cmp) argument 1128 RewriteBreakLoop(HLoopInformation* loop, HBasicBlock* body, int64_t stride_value, DataType::Type type) argument 1191 AssignInfo(HLoopInformation* loop, HInstruction* instruction, InductionInfo* info) argument 1204 LookupInfo(HLoopInformation* loop, HInstruction* instruction) argument 1294 GetShiftConstant(HLoopInformation* loop, HInstruction* instruction, InductionInfo* initial) argument [all...] |
H A D | induction_var_range.cc | 188 /** Obtains loop's control instruction. */ 189 static HInstruction* GetLoopControl(HLoopInformation* loop) { argument 190 DCHECK(loop != nullptr); 191 return loop->GetHeader()->GetLastInstruction(); 210 HLoopInformation* loop = nullptr; local 213 if (!HasInductionInfo(context, instruction, &loop, &info, &trip)) { 231 bool in_body = context->GetBlock() != loop->GetHeader(); 358 for (HLoopInformation* lp = instruction->GetBlock()->GetLoopInformation(); // closest enveloping loop 363 // Update loop's trip-count information. 368 bool InductionVarRange::IsFinite(HLoopInformation* loop, /*ou argument 382 HLoopInformation* loop = nullptr; local 405 GenerateTripCount(HLoopInformation* loop, HGraph* graph, HBasicBlock* block) argument 464 HasInductionInfo( HInstruction* context, HInstruction* instruction, HLoopInformation** loop, HInductionVarAnalysis::InductionInfo** info, HInductionVarAnalysis::InductionInfo** trip) const argument 981 HLoopInformation* loop = nullptr; local [all...] |
H A D | bounds_check_elimination.cc | 286 * of an existing value range, NewArray or a loop phi corresponding to an 487 const int32_t increment_; // Increment for each loop iteration. 505 // Added blocks for loop body entry test. 563 // Clear the loop data structures. 615 // Make sure the comparison is in the loop header so each increment is 635 // Comparison needs to be in loop header to make sure it's done after each 711 // if it's not defined in the loop header. 906 // Try loop-based dynamic elimination. 907 HLoopInformation* loop = bounds_check->GetBlock()->GetLoopInformation(); variable 910 if (DynamicBCESeemsProfitable(loop, bounds_chec 1245 HLoopInformation* loop = array_get->GetBlock()->GetLoopInformation(); variable 1421 TransformLoopForDynamicBCE(HLoopInformation* loop, HBoundsCheck* bounds_check) argument 1551 DynamicBCESeemsProfitable(HLoopInformation* loop, HBasicBlock* block) argument 1584 IsEarlyExitLoop(HLoopInformation* loop) argument 1610 CanHandleLength(HLoopInformation* loop, HInstruction* length, bool needs_taken_test) argument 1626 CanHandleNullCheck(HLoopInformation* loop, HInstruction* check, bool needs_taken_test) argument 1653 CanHandleInfiniteLoop(HLoopInformation* loop, HInstruction* index, bool needs_infinite_test) argument 1684 GetPreHeader(HLoopInformation* loop, HInstruction* instruction) argument 1703 InsertDeoptInLoop(HLoopInformation* loop, HBasicBlock* block, HInstruction* condition, bool is_null_check = false) argument 1734 HoistToPreHeaderOrDeoptBlock(HLoopInformation* loop, HInstruction* instruction) argument 1776 TransformLoopForDeoptimizationIfNeeded(HLoopInformation* loop, bool needs_taken_test) argument [all...] |
H A D | intrinsics_mips64.cc | 408 // A(n unrolled) loop-based algorithm requires 25 instructions. 411 // to a(n unrolled) loop based algorithm which requires 38 instructions. 1671 Mips64Label loop; local 1740 __ Bind(&loop); 1748 __ Bgtzc(temp1, &loop); 1751 // If loop does not result in returning false, we return true. 1992 Mips64Label loop; local 2019 // Copy loop for compressed src, copying 1 character (8-bit) to (16-bit) at a time. 2037 __ Bind(&loop); 2043 __ Bnezc(numChrs, &loop); 2165 Mips64Label loop; local [all...] |
H A D | intrinsics_arm64.cc | 157 // Slow path implementing the SystemArrayCopy intrinsic copy loop with read barriers. 206 // TODO: Load the entrypoint once before the loop, instead of 1326 vixl::aarch64::Label loop; local 1371 // Check if both strings using same compression style to use this comparison loop. 1378 // Store offset of string value in preparation for comparison loop. 1400 __ Bind(&loop); 1408 __ B(&loop, hi); 1468 // will allow `subs temp0, #2; bhi different_compression_loop` to serve as the loop condition. 1505 // The cut off for unrolling the loop in String.equals() intrinsic for const strings. 1506 // The normal loop plu 1567 vixl::aarch64::Label loop; local 2105 vixl::aarch64::Label loop; local 2368 vixl::aarch64::Label loop, done; local 2870 vixl::aarch64::Label loop; local 2895 vixl::aarch64::Label loop; local [all...] |
H A D | intrinsics_arm_vixl.cc | 171 // Slow path implementing the SystemArrayCopy intrinsic copy loop with read barriers. 205 vixl32::Label loop; variable 206 __ Bind(&loop); variable 227 // TODO: Load the entrypoint once before the loop, instead of 236 __ B(ne, &loop, /* far_target */ false); 1103 // Potentially need temps for ldrexd-strexd loop. 1541 // Check if both strings using same compression style to use this comparison loop. 1585 vixl32::Label loop; local 1589 // Store offset of string value in preparation for comparison loop. 1595 "String data must be 8-byte aligned for unrolled CompareTo loop 1808 vixl32::Label loop; local 2557 vixl32::Label loop; local 2579 vixl32::Label loop; local 3145 vixl32::Label loop, remainder; local [all...] |
H A D | intrinsics_mips.cc | 631 // A(n unrolled) loop-based algorithm required 25 instructions. 637 // instructions compared to a loop-based algorithm which required 47 2096 MipsLabel loop; local 2170 __ Bind(&loop); 2178 __ Bgtz(temp1, &loop); 2181 // If loop does not result in returning false, we return true. 2685 MipsLabel loop; local 2712 // Copy loop for compressed src, copying 1 character (8-bit) to (16-bit) at a time. 2730 __ Bind(&loop); 2736 __ Bnez(numChrs, &loop); 3063 MipsLabel loop; local [all...] |
H A D | intrinsics_x86.cc | 81 // Slow path implementing the SystemArrayCopy intrinsic copy loop with read barriers. 119 // - the loop index (`i`); 126 NearLabel loop; variable 127 __ Bind(&loop); variable 162 // if (i != length) goto loop 164 __ j(kNotEqual, &loop); 1460 // If loop does not result in returning false, we return true. 1809 // Start the loop to copy String's value to Array of Char. 3172 // If it is needed (in the case of the fast-path loop), the base 3208 NearLabel loop, don local 3263 NearLabel loop, done; local [all...] |
H A D | intrinsics_x86_64.cc | 74 // Slow path implementing the SystemArrayCopy intrinsic copy loop with read barriers. 100 NearLabel loop; variable 101 __ Bind(&loop); variable 117 __ j(kNotEqual, &loop); 1437 NearLabel loop, done; local 1439 // Don't enter copy loop if `length == 0`. 1470 __ Bind(&loop); 1476 __ j(kNotEqual, &loop); 1485 NearLabel loop, done; local 1488 __ Bind(&loop); [all...] |
H A D | nodes.cc | 207 // set the loop information on each block. 382 // Make sure that the first predecessor of a loop header is the incoming block. 400 // Transform control flow of the loop to a single preheader format (don't touch the data flow). 514 // Make sure the loop has only one pre header. This simplifies SSA building by having 516 // loop. Also, don't allow the entry block to be a pre header: this simplifies inlining 562 // NOTE: We're appending new blocks inside the loop, so we need to use index because iterators 595 // a loop got dismantled. Just remove the suspend check. 603 // `PopulateRecursive` needs this guarantee to know whether a natural loop 604 // contains an irreducible loop. 629 os << " in loop 2683 HLoopInformation* loop = header->GetLoopInformation(); local [all...] |
H A D | code_generator_arm64.cc | 2609 // data offset constant generation out of the loop and reduce the critical path length in the 2610 // loop. 3940 vixl::aarch64::Label loop, success; local 3941 __ Bind(&loop); 3951 __ B(ne, &loop); 3970 vixl::aarch64::Label loop, success; local 3971 __ Bind(&loop); 3980 __ Cbnz(out, &loop); 4165 vixl::aarch64::Label loop; local 4166 __ Bind(&loop); 4193 vixl::aarch64::Label loop; local [all...] |
H A D | code_generator_arm_vixl.cc | 7523 vixl32::Label loop; local 7524 __ Bind(&loop); 7534 __ B(ne, &loop, /* far_target */ false); 7550 vixl32::Label loop, success; local 7551 __ Bind(&loop); 7561 // proper value for the code that follows the loop, i.e. not `eq`. 7563 __ B(hs, &loop, /* far_target */ false); 7777 vixl32::Label loop; local 7778 __ Bind(&loop); 7792 __ B(ne, &loop, /* far_targe 7806 vixl32::Label loop; local [all...] |
H A D | code_generator_mips.cc | 682 // the compare-and-set (CAS) loop below would abort, leaving the 3352 MipsLabel loop; local 3353 __ Bind(&loop); 3364 __ Bne(temp, cls, &loop); 3377 MipsLabel loop; local 3378 __ Bind(&loop); 3387 // exception. Otherwise, jump to the beginning of the loop. 3388 __ Bnez(temp, &loop); 3452 MipsLabel loop; local 3453 __ Bind(&loop); 7473 MipsLabel loop; local 7499 MipsLabel loop, success; local [all...] |
H A D | code_generator_x86.cc | 6525 NearLabel loop; local 6526 __ Bind(&loop); 6542 __ j(kNotEqual, &loop); 6560 NearLabel loop, success; local 6561 __ Bind(&loop); 6576 __ j(kNotEqual, &loop); 6702 // Require a register for the interface check since there is a loop that compares the class to 6780 NearLabel loop; local 6781 __ Bind(&loop); 6801 __ j(kNotEqual, &loop); 6814 NearLabel loop; local [all...] |
H A D | code_generator_x86_64.cc | 5920 NearLabel loop, success; local 5921 __ Bind(&loop); 5937 __ j(kNotEqual, &loop); 5955 NearLabel loop, success; local 5956 __ Bind(&loop); 5971 __ j(kNotEqual, &loop); 6097 // Require a register for the interface check since there is a loop that compares the class to 6177 NearLabel loop; local 6178 __ Bind(&loop); 6197 __ j(kNotEqual, &loop); 6209 NearLabel loop; local [all...] |
/art/runtime/arch/mips/ |
H A D | quick_entrypoints_mips.S | 1021 loop: label 1090 LOAD_WORD_TO_REG a2, t8, t6, loop # a2 = current argument, gpr_index += 16 1091 LOAD_WORD_TO_REG a3, t8, t6, loop # a3 = current argument, gpr_index += 16 1092 LOAD_WORD_TO_REG t0, t8, t6, loop # t0 = current argument, gpr_index += 16 1093 LOAD_WORD_TO_REG t1, t8, t6, loop # t1 = current argument, gpr_index += 16 1094 LOAD_END t6, 4*16, loop # no more GPR args, gpr_index = 4*16 1096 LOAD_LONG_TO_REG a2, a3, t8, t6, 2*16, loop # a2_a3 = curr_arg, gpr_index = 2*16 1097 LOAD_LONG_TO_REG t0, t1, t8, t6, 4*16, loop # t0_t1 = curr_arg, gpr_index = 4*16 1098 LOAD_LONG_TO_REG t0, t1, t8, t6, 4*16, loop # t0_t1 = curr_arg, gpr_index = 4*16 1099 LOAD_END t6, 4*16, loop # n [all...] |