/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 | 59 HLoopInformation* loop = header->GetLoopInformation(); local 60 size_t num_blocks = loop->GetBlocks().NumSetBits(); 63 if (loop->Contains(*block)) { 68 } else if (found_blocks == num_blocks && !loop->IsBackEdge(*block)) { 87 // - Blocks in a loop are consecutive, 88 // - 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. 113 // range analysis on outer loop while visiting inner loops. 122 void HInductionVarAnalysis::VisitLoop(HLoopInformation* loop) { argument 123 // Find strongly connected components (SSCs) in the SSA graph of this loop using Tarjan's 129 for (HBlocksInLoopIterator it_loop(*loop); !it_loop.Done(); it_loop.Advance()) { 132 if (loop_block->GetLoopInformation() != loop) { 157 VisitNode(HLoopInformation* loop, HInstruction* instruction) argument 201 VisitDescendant(HLoopInformation* loop, HInstruction* instruction) argument 219 ClassifyTrivial(HLoopInformation* loop, HInstruction* instruction) argument 256 ClassifyNonTrivial(HLoopInformation* loop) argument 407 TransferPhi(HLoopInformation* loop, HInstruction* phi, size_t input_index, size_t adjust_input_size) argument 557 SolvePhiAllInputs( HLoopInformation* loop, HInstruction* entry_phi, HInstruction* phi) argument 586 SolveAddSub(HLoopInformation* loop, HInstruction* entry_phi, HInstruction* instruction, HInstruction* x, HInstruction* y, InductionOp op, bool is_first_call) argument 647 SolveOp(HLoopInformation* loop, HInstruction* entry_phi, HInstruction* instruction, HInstruction* x, HInstruction* y, InductionOp op) argument 706 SolveTest(HLoopInformation* loop, HInstruction* entry_phi, HInstruction* instruction, int64_t opposite_value) argument 722 SolveConversion( HLoopInformation* loop, HInstruction* entry_phi, HTypeConversion* conversion) argument 750 VisitControl(HLoopInformation* loop) argument 778 VisitCondition(HLoopInformation* loop, InductionInfo* a, InductionInfo* b, Primitive::Type type, IfCondition cmp) argument 828 VisitTripCount(HLoopInformation* loop, InductionInfo* lower_expr, InductionInfo* upper_expr, InductionInfo* stride_expr, int64_t stride_value, Primitive::Type type, IfCondition cmp) argument 980 AssignInfo(HLoopInformation* loop, HInstruction* instruction, InductionInfo* info) argument 993 LookupInfo(HLoopInformation* loop, HInstruction* instruction) argument 1083 GetShiftConstant(HLoopInformation* loop, HInstruction* instruction, InductionInfo* initial) argument [all...] |
H A D | induction_var_range.cc | 185 /** Obtains loop's control instruction. */ 186 static HInstruction* GetLoopControl(HLoopInformation* loop) { argument 187 DCHECK(loop != nullptr); 188 return loop->GetHeader()->GetLastInstruction(); 207 HLoopInformation* loop = nullptr; local 210 if (!HasInductionInfo(context, instruction, &loop, &info, &trip)) { 227 bool in_body = context->GetBlock() != loop->GetHeader(); 354 for (HLoopInformation* lp = instruction->GetBlock()->GetLoopInformation(); // closest enveloping loop 359 // Update loop's trip-count information. 364 bool InductionVarRange::IsFinite(HLoopInformation* loop, /*ou argument 377 HLoopInformation* loop = nullptr; local 399 GenerateTripCount(HLoopInformation* loop, HGraph* graph, HBasicBlock* block) argument 457 HasInductionInfo( HInstruction* context, HInstruction* instruction, HLoopInformation** loop, HInductionVarAnalysis::InductionInfo** info, HInductionVarAnalysis::InductionInfo** trip) const argument 965 HLoopInformation* loop = nullptr; local [all...] |
H A D | bounds_check_elimination.cc | 285 * of an existing value range, NewArray or a loop phi corresponding to an 486 const int32_t increment_; // Increment for each loop iteration. 504 // Added blocks for loop body entry test. 564 // 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. 885 // Try loop-based dynamic elimination. 886 HLoopInformation* loop = bounds_check->GetBlock()->GetLoopInformation(); variable 889 if (DynamicBCESeemsProfitable(loop, bounds_chec 1165 HLoopInformation* loop = array_get->GetBlock()->GetLoopInformation(); variable 1340 TransformLoopForDynamicBCE(HLoopInformation* loop, HBoundsCheck* bounds_check) argument 1467 DynamicBCESeemsProfitable(HLoopInformation* loop, HBasicBlock* block) argument 1500 IsEarlyExitLoop(HLoopInformation* loop) argument 1526 CanHandleLength(HLoopInformation* loop, HInstruction* length, bool needs_taken_test) argument 1542 CanHandleNullCheck(HLoopInformation* loop, HInstruction* check, bool needs_taken_test) argument 1569 CanHandleInfiniteLoop(HLoopInformation* loop, HInstruction* index, bool needs_infinite_test) argument 1600 GetPreHeader(HLoopInformation* loop, HInstruction* instruction) argument 1619 InsertDeoptInLoop(HLoopInformation* loop, HBasicBlock* block, HInstruction* condition, bool is_null_check = false) argument 1647 HoistToPreHeaderOrDeoptBlock(HLoopInformation* loop, HInstruction* instruction) argument 1689 TransformLoopForDeoptimizationIfNeeded(HLoopInformation* loop, bool needs_taken_test) argument [all...] |
H A D | intrinsics_mips64.cc | 409 // A(n unrolled) loop-based algorithm requires 25 instructions. 412 // to a(n unrolled) loop based algorithm which requires 38 instructions. 1713 Mips64Label loop; local 1782 __ Bind(&loop); 1790 __ Bgtzc(temp1, &loop); 1793 // If loop does not result in returning false, we return true. 2040 Mips64Label loop; local 2067 // Copy loop for compressed src, copying 1 character (8-bit) to (16-bit) at a time. 2085 __ Bind(&loop); 2091 __ Bnezc(numChrs, &loop); 2213 Mips64Label loop; local [all...] |
H A D | optimizing_compiler.cc | 776 HLoopOptimization* loop = new (arena) HLoopOptimization(graph, driver, induction); local 813 loop,
|
H A D | intrinsics_arm.cc | 99 // Slow path implementing the SystemArrayCopy intrinsic copy loop with read barriers. 133 Label loop; variable 134 __ Bind(&loop); variable 155 // TODO: Load the entrypoint once before the loop, instead of 164 __ b(&loop, NE); 783 // Potentially need temps for ldrexd-strexd loop. 1138 Label loop; local 1184 // Check if both strings using same compression style to use this comparison loop. 1195 // Store offset of string value in preparation for comparison loop. 1201 "String data must be 8-byte aligned for unrolled CompareTo loop 1368 Label loop; local 2065 Label loop; local 2083 Label loop; local 2535 Label loop, remainder; local [all...] |
H A D | intrinsics_arm64.cc | 156 // Slow path implementing the SystemArrayCopy intrinsic copy loop with read barriers. 205 // TODO: Load the entrypoint once before the loop, instead of 1281 vixl::aarch64::Label loop; local 1326 // Check if both strings using same compression style to use this comparison loop. 1333 // Store offset of string value in preparation for comparison loop. 1355 __ Bind(&loop); 1363 __ B(&loop, hi); 1423 // will allow `subs temp0, #2; bhi different_compression_loop` to serve as the loop condition. 1460 // The cut off for unrolling the loop in String.equals() intrinsic for const strings. 1461 // The normal loop plu 1516 vixl::aarch64::Label loop; local 2055 vixl::aarch64::Label loop; local 2318 vixl::aarch64::Label loop, done; local 2819 vixl::aarch64::Label loop; local 2844 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); 1119 // Potentially need temps for ldrexd-strexd loop. 1488 vixl32::Label loop; local 1544 // Check if both strings using same compression style to use this comparison loop. 1560 // Store offset of string value in preparation for comparison loop. 1566 "String data must be 8-byte aligned for unrolled CompareTo loop 1748 vixl32::Label loop; local 2443 vixl32::Label loop; local 2465 vixl32::Label loop; local 2903 vixl32::Label loop, remainder; local [all...] |
H A D | intrinsics_mips.cc | 632 // A(n unrolled) loop-based algorithm required 25 instructions. 638 // instructions compared to a loop-based algorithm which required 47 2093 MipsLabel loop; local 2167 __ Bind(&loop); 2175 __ Bgtz(temp1, &loop); 2178 // If loop does not result in returning false, we return true. 2689 MipsLabel loop; local 2716 // Copy loop for compressed src, copying 1 character (8-bit) to (16-bit) at a time. 2734 __ Bind(&loop); 2740 __ Bnez(numChrs, &loop); 3060 MipsLabel loop; local [all...] |
H A D | intrinsics_x86.cc | 80 // Slow path implementing the SystemArrayCopy intrinsic copy loop with read barriers. 118 // - the loop index (`i`); 125 NearLabel loop; variable 126 __ Bind(&loop); variable 162 // if (i != length) goto loop 164 __ j(kNotEqual, &loop); 1465 // If loop does not result in returning false, we return true. 1820 // Start the loop to copy String's value to Array of Char. 3239 // If it is needed (in the case of the fast-path loop), the base 3275 NearLabel loop, don local 3330 NearLabel loop, done; local [all...] |
H A D | intrinsics_x86_64.cc | 73 // Slow path implementing the SystemArrayCopy intrinsic copy loop with read barriers. 99 NearLabel loop; variable 100 __ Bind(&loop); variable 117 __ j(kNotEqual, &loop); 1443 NearLabel loop, done; local 1445 // Don't enter copy loop if `length == 0`. 1476 __ Bind(&loop); 1482 __ j(kNotEqual, &loop); 1491 NearLabel loop, done; local 1494 __ Bind(&loop); [all...] |
H A D | nodes.cc | 169 // set the loop information on each block. 334 // Make sure the loop has only one pre header. This simplifies SSA building by having 336 // loop. Also, don't allow the entry block to be a pre header: this simplifies inlining 354 // Make sure the first predecessor of a loop header is the incoming block. 404 // NOTE: We're appending new blocks inside the loop, so we need to use index because iterators 437 // a loop got dismantled. Just remove the suspend check. 445 // `PopulateRecursive` needs this guarantee to know whether a natural loop 446 // contains an irreducible loop. 470 os << " in loop: " << idx << std::endl; 595 // If `block` is in `finalized`, we know its membership in the loop ha 2337 HLoopInformation* loop = header->GetLoopInformation(); local [all...] |
H A D | code_generator_arm64.cc | 3936 vixl::aarch64::Label loop, success; local 3937 __ Bind(&loop); 3947 __ B(ne, &loop); 3964 vixl::aarch64::Label loop, success; local 3965 __ Bind(&loop); 3974 __ Cbnz(out, &loop); 4185 vixl::aarch64::Label loop; local 4186 __ Bind(&loop); 4199 __ B(ne, &loop); 4213 vixl::aarch64::Label loop; local [all...] |
H A D | code_generator_arm.cc | 7127 Label loop; local 7128 __ Bind(&loop); 7138 __ b(&loop, NE); 7152 Label loop, success; local 7153 __ Bind(&loop); 7163 // proper value for the code that follows the loop, i.e. not `EQ`. 7165 __ b(&loop, HS); 7393 Label loop; local 7394 __ Bind(&loop); 7408 __ b(&loop, N 7422 Label loop; local [all...] |
H A D | code_generator_arm_vixl.cc | 7183 vixl32::Label loop; local 7184 __ Bind(&loop); 7194 __ B(ne, &loop, /* far_target */ false); 7208 vixl32::Label loop, success; local 7209 __ Bind(&loop); 7219 // proper value for the code that follows the loop, i.e. not `eq`. 7221 __ B(hs, &loop, /* far_target */ false); 7461 vixl32::Label loop; local 7462 __ Bind(&loop); 7476 __ B(ne, &loop, /* far_targe 7490 vixl32::Label loop; local [all...] |
H A D | code_generator_x86.cc | 6508 NearLabel loop; local 6509 __ Bind(&loop); 6525 __ j(kNotEqual, &loop); 6541 NearLabel loop, success; local 6542 __ Bind(&loop); 6557 __ j(kNotEqual, &loop); 6701 // Require a register for the interface check since there is a loop that compares the class to 6784 NearLabel loop; local 6785 __ Bind(&loop); 6805 __ j(kNotEqual, &loop); 6818 NearLabel loop; local [all...] |
H A D | code_generator_x86_64.cc | 5889 NearLabel loop, success; local 5890 __ Bind(&loop); 5906 __ j(kNotEqual, &loop); 5922 NearLabel loop, success; local 5923 __ Bind(&loop); 5938 __ j(kNotEqual, &loop); 6082 // Require a register for the interface check since there is a loop that compares the class to 6166 NearLabel loop; local 6167 __ Bind(&loop); 6186 __ j(kNotEqual, &loop); 6198 NearLabel loop; local [all...] |
/art/runtime/arch/mips/ |
H A D | quick_entrypoints_mips.S | 963 loop: label 1031 LOAD_WORD_TO_REG a2, t8, t6, loop # a2 = current argument, gpr_index += 16 1032 LOAD_WORD_TO_REG a3, t8, t6, loop # a3 = current argument, gpr_index += 16 1033 LOAD_WORD_TO_REG t0, t8, t6, loop # t0 = current argument, gpr_index += 16 1034 LOAD_WORD_TO_REG t1, t8, t6, loop # t1 = current argument, gpr_index += 16 1035 LOAD_END t6, 4*16, loop # no more GPR args, gpr_index = 4*16 1037 LOAD_LONG_TO_REG a2, a3, t8, t6, 2*16, loop # a2_a3 = curr_arg, gpr_index = 2*16 1038 LOAD_LONG_TO_REG t0, t1, t8, t6, 4*16, loop # t0_t1 = curr_arg, gpr_index = 4*16 1039 LOAD_LONG_TO_REG t0, t1, t8, t6, 4*16, loop # t0_t1 = curr_arg, gpr_index = 4*16 1040 LOAD_END t6, 4*16, loop # n [all...] |