MCPcopy Create free account

hub / github.com/Amanieu/regalloc3 / functions

Functions705 in github.com/Amanieu/regalloc3

↓ 1 callersMethodadvance_left
( &mut self, gap_idx: usize, interference_weight: &mut f32,
src/internal/allocator/split.rs:608
↓ 1 callersMethodall_value_sets
Returns all value sets and their associated `ValueSegment`s.
src/internal/value_live_ranges.rs:189
↓ 1 callersMethodalloc_emergency_spillslot
Allocates a logical `SpillSlot` of the given size after regular spill slot allocation has already finished. This is used in the move resolver when a
src/internal/spill_allocator.rs:162
↓ 1 callersMethodallocate
Assigns a `SpillSlot` to each `ValueSet` that has segments spilled into it. The basic algorithm here is based on linear scan allocation from <https:/
src/internal/spill_allocator.rs:175
↓ 1 callersMethodallocate_registers
Runs the register allocator on the given function.
src/lib.rs:207
↓ 1 callersMethodallocations
Returns all operand allocations in the function.
src/internal/allocations.rs:86
↓ 1 callersMethodarbitrary
(u: &mut Unstructured)
fuzz/fuzz_targets/parallel_moves.rs:117
↓ 1 callersMethodas_mut_vec
(&mut self)
src/entity/sparse.rs:227
↓ 1 callersMethodassert_all_assigned
Asserts that all allocations have been assigned.
src/internal/allocations.rs:91
↓ 1 callersMethodblock_dominates
Returns whether block `a` dominates block `b`. This should return true if `a == b`.
src/function.rs:650
↓ 1 callersMethodbuild_gap_segments
Builds the `GapSegments` by splitting the vreg's segments at gap boundaries. The new `GapSegments` only cover the parts of a gap where the vreg is act
src/internal/allocator/split.rs:491
↓ 1 callersMethodbuild_initial_vregs
Builds virtual registers from value live ranges.
src/internal/virt_regs/mod.rs:188
↓ 1 callersMethodbuild_segments
Computes the live range for the given value.
src/internal/value_live_ranges.rs:866
↓ 1 callersMethodcalc_block_live_in_out
Calculates the live-in/live-out bitsets for each block of the value's live range. This returns the highest numbered block found by the search.
src/internal/value_live_ranges.rs:799
↓ 1 callersMethodcheck_bank
Check a register bank.
src/debug_utils/validate_reginfo.rs:96
↓ 1 callersMethodcheck_block
Check a basic block.
src/debug_utils/validate_func.rs:417
↓ 1 callersMethodcheck_block
Checks the allocation result for a block and then propagates the end state to any successor blocks.
src/debug_utils/checker.rs:239
↓ 1 callersMethodcheck_class
Check a register class.
src/debug_utils/validate_reginfo.rs:157
↓ 1 callersMethodcheck_function
Main entry point for `Function` validation.
src/debug_utils/validate_func.rs:828
↓ 1 callersMethodcheck_function
Top-level function for the checker.
src/debug_utils/checker.rs:191
↓ 1 callersMethodcheck_inst
Check an instruction.
src/debug_utils/validate_func.rs:346
↓ 1 callersMethodcheck_inst
Checks an `OutputInst` and updates the checker state to reflect that instruction.
src/debug_utils/checker.rs:319
↓ 1 callersMethodcheck_inst_range
Checks a range of instructions.
src/debug_utils/validate_func.rs:131
↓ 1 callersMethodcheck_limits
Check the limits on the number of entities.
src/debug_utils/validate_func.rs:139
↓ 1 callersMethodcheck_limits
Check the limits on the number of entities.
src/debug_utils/validate_reginfo.rs:71
↓ 1 callersMethodcheck_operand
Checks the allocation assigned to an instruction operand. Also updates the checker state for def operands. `pass` indicates which set of operands to
src/debug_utils/checker.rs:727
↓ 1 callersFunctioncheck_output
Verifies the output of the register allocator. If this fails then it indicates a bug in the register allocator, assuming the `Function` and `RegInfo`
src/debug_utils/checker.rs:911
↓ 1 callersMethodcheck_reg
Check a register.
src/debug_utils/validate_reginfo.rs:320
↓ 1 callersMethodcheck_reg_group
Check a register group.
src/debug_utils/validate_reginfo.rs:348
↓ 1 callersMethodcheck_reginfo
Main entry point for `RegInfo` validation.
src/debug_utils/validate_reginfo.rs:380
↓ 1 callersMethodcheck_remat_input
Checks an indirect-remat input allocation.
src/debug_utils/checker.rs:607
↓ 1 callersMethodcheck_ssa_dominance
Check that defs dominate uses. At this point the dominator tree should be valid and all values should have a `ValueDef`.
src/debug_utils/validate_func.rs:604
↓ 1 callersMethodcheck_stack
Checks the stack layout and spill slot definitions.
src/debug_utils/checker.rs:217
↓ 1 callersMethodcheck_value
(&mut self, value: Value)
src/debug_utils/validate_func.rs:715
↓ 1 callersMethodclear
(&mut self)
src/internal/virt_regs/builder.rs:106
↓ 1 callersMethodcoalesce_in_block
Find pairs of values to merge in the given block. We merge pairs where allocating both values to the same register would eliminate the need for a mov
src/internal/coalescing.rs:145
↓ 1 callersMethodcollect_fixed_preferences
Scans the uses of the given virtual register to find any preferences for a particular register due to fixed-register constraints.
src/internal/allocator/order.rs:186
↓ 1 callersMethodcollect_gaps
Buids gaps between `SplitUse`s, also splitting at block frequency transitions so that we can extend splits to include an entire loop. Returns the ind
src/internal/allocator/split.rs:314
↓ 1 callersMethodcollect_used_spillslots
Removes spill slots that are no longer referenced after optimization.
src/internal/spill_allocator.rs:235
↓ 1 callersMethodcollect_uses
Iterate over all blocks and instructions to collect value uses.
src/internal/value_live_ranges.rs:289
↓ 1 callersMethodcollect_uses
Collects all instructions where the given virtual register is used.
src/internal/allocator/split.rs:174
↓ 1 callersMethodcomponents
Iterates over all components of this value segment in order. This will indicate live-in/out, block boundaries and uses.
src/internal/live_range.rs:370
↓ 1 callersMethodcompute
Computes the allocation order for the given virtual register.
src/internal/allocator/order.rs:66
↓ 1 callersMethodcompute_alloc_offsets
Computes the offsets for each instruction's operands in the allocation vector.
src/internal/allocations.rs:36
↓ 1 callersMethodcompute_block_order
Computes an ordering of blocks sorted by priority. Each merge eliminates the need for one move instruction in the final program. However a successful
src/internal/coalescing.rs:109
↓ 1 callersMethodcompute_common_dominator
Computes the common dominator of two basic blocks using only the parent links in the tree.
src/debug_utils/dominator_tree.rs:187
↓ 1 callersMethodcompute_constraints
Computes register class constraints for the live range uses in the current set of segments. If a conflict is found, the segments are split and the no
src/internal/virt_regs/builder.rs:457
↓ 1 callersMethodcompute_entry_states
Computes the entry state for all blocks in the function.
src/internal/move_optimizer.rs:187
↓ 1 callersMethodcompute_idoms
Computes the immediate dominator of each basic block. The algorithm is based on https://www.cs.rice.edu/~keith/EMBED/dom.pdf.
src/debug_utils/dominator_tree.rs:133
↓ 1 callersFunctioncompute_preds_and_dominators
(func: &mut GenericFunction)
src/debug_utils/generic_function/parse.rs:360
↓ 1 callersMethodcontains_key
(&self, key: K)
src/entity/sparse.rs:146
↓ 1 callersMethodcount_live_insts
Counts the number of instructions in each gap. This is needed to correctly estimate the spill weight of a vreg covering this gap.
src/internal/allocator/split.rs:440
↓ 1 callersMethoddequeue
Dequeues the entry with the highest priority from the queue.
src/internal/allocator/queue.rs:157
↓ 1 callersMethoddivert
Diverts the given value to a scratch register to resolve cyclic conflicts in the parallel moves. A scratch register is selected and returned.
src/internal/parallel_moves.rs:353
↓ 1 callersMethoddo_split
Actually perform the split at the given split points. `hint` is applied to the middle portion between `left` and `right`.
src/internal/allocator/split.rs:842
↓ 1 callersMethoddump
(&self)
src/internal/reg_matrix.rs:475
↓ 1 callersMethoddump
Dumps the virtual registers to the log.
src/internal/virt_regs/mod.rs:248
↓ 1 callersMethodedits_from_mut
Returns the mutable list of edits starting from the given instruction.
src/internal/move_resolver.rs:545
↓ 1 callersMethodedits_to_mut
Returns the mutable list of edits ending at the given instruction.
src/internal/move_resolver.rs:551
↓ 1 callersMethodemit
Writes the register definition to the given sink.
regalloc3-tool/src/example_reginfo/mod.rs:100
↓ 1 callersMethodemit_vregs_for_conflicts
Emits a set of vregs containing single `Use`s which were removed from another vreg due to a constraint conflict on the same instruction.
src/internal/virt_regs/builder.rs:609
↓ 1 callersMethodend_point
Returns the live range point at which this use ends. For a use, this is the point at which the value is used. For a definition, this is the next ins
src/internal/uses.rs:92
↓ 1 callersMethodextend
(&mut self, iter: I)
src/entity/small_set.rs:266
↓ 1 callersMethodextend
(&mut self, iter: I)
src/entity/set.rs:257
↓ 1 callersMethodfinalize
Finalizes the function by assigning instruction numbers to each instruction, in block order.
src/debug_utils/generic_function/arbitrary.rs:838
↓ 1 callersMethodfinalize_stack_layout
Assigns final stack offsets to all active spill slots.
src/internal/spill_allocator.rs:278
↓ 1 callersMethodfind_available_reg
Searches for a register that has no interference with the given virtual register.
src/internal/allocator/mod.rs:659
↓ 1 callersMethodfind_best_use
Finds the "best" use with the highest weight that we should build a split region around. Even if we can't build a region for it, we can isolate it an
src/internal/allocator/split.rs:276
↓ 1 callersMethodfind_conflict_start_point
Starting from the `Use` that caused a conflict, scan backwards to find the corresponding `Use` that actually conflicts with the other `Use`. This wil
src/internal/virt_regs/builder.rs:697
↓ 1 callersMethodfind_optimal_split_point
Finds an optimal split point which is between the two instuctions given, based on basic block frequencies. `prefer_early` indicates whether to prefer
src/internal/split_placement.rs:96
↓ 1 callersMethodfind_reused_values
Scans the operand list of an instruction to find input values whose register is reused for an output.
src/internal/value_live_ranges.rs:344
↓ 1 callersMethodgen_bank
Creates a new register bank.
src/debug_utils/generic_reginfo/arbitrary.rs:106
↓ 1 callersMethodgen_block_insts
Generate the contents of a basic block. This should be called in CFG post-order so that uses come before definitions.
src/debug_utils/generic_function/arbitrary.rs:371
↓ 1 callersMethodgen_block_start_defs
Generates instructions containing the remaining defs in a block after other instructions have been emitted.
src/debug_utils/generic_function/arbitrary.rs:697
↓ 1 callersMethodgen_cfg_skeleton
Generates a function skeleton with a randomly generated CFG. These blocks do not contain any instructions yet.
src/debug_utils/generic_function/arbitrary.rs:225
↓ 1 callersMethodgen_groups
Creates register groups from the given registers.
src/debug_utils/generic_reginfo/arbitrary.rs:262
↓ 1 callersMethodgen_reg
Creates a new register in a bank, making sure it doesn't share a unit with an existing register in the bank.
src/debug_utils/generic_reginfo/arbitrary.rs:295
↓ 1 callersMethodgen_reginfo
(self, num_fixed_stack: usize)
regalloc3-tool/src/example_reginfo/mod.rs:22
↓ 1 callersMethodgenerate_moves
Processes all virtual register segments to assign allocations to the output vector and generates move instruction that connect live ranges together.
src/internal/move_resolver.rs:232
↓ 1 callersMethodgrow_to
(&mut self, max_index: usize)
src/entity/sparse.rs:82
↓ 1 callersMethodgrow_to
(&mut self, max_index: usize)
src/entity/secondary_map.rs:90
↓ 1 callersMethodhandle_use
(&mut self, u: &Use, segment: &ValueSegment, alloc: Option<Allocation>)
src/internal/move_resolver.rs:827
↓ 1 callersMethodhas_fixed_hint
Quickly checks whether the given value has a fixed-register hint.
src/internal/hints.rs:174
↓ 1 callersMethodhighest_preferrence_weight
Returns the highest preferrence weight in the available candidates.
src/internal/allocator/order.rs:177
↓ 1 callersMethodhinted_order
Returns the subset of the allocation order that comes from hints rather than the class allocation order.
src/internal/allocator/order.rs:149
↓ 1 callersMethodhints_for_split
Given a live range split, returns whether the left and right sides of the split still have a fixed register hint.
src/internal/hints.rs:195
↓ 1 callersMethodindex
(&self, set: ValueSet)
src/internal/value_live_ranges.rs:164
↓ 1 callersMethodindirect_remat_inputs
Finds the concrete input allocations needed for a shallow indirect rematerialization of `value` into `dest`.
src/internal/move_optimizer.rs:717
↓ 1 callersMethodinit
Initializes the allocation queue from the set of existing virtual register and virtual register groups.
src/internal/allocator/queue.rs:132
↓ 1 callersMethodinsert_iter_at
(&self, index: usize, iter: I, pool: &mut CompactListPool<T>)
src/entity/compact_list.rs:77
↓ 1 callersMethodinst_allocations_mut
Returns a mutable slice of allocations for an instruction's operands.
src/internal/allocations.rs:79
↓ 1 callersMethodinto_iter
(self)
src/entity/primary_map.rs:262
↓ 1 callersMethodinto_iter
(self)
src/entity/sparse.rs:322
↓ 1 callersMethodinto_iter
(self)
src/entity/secondary_map.rs:216
↓ 1 callersMethodinvalidate_value_group_mapping
Invalidates the mapping of a group operand to a `VirtRegGroup`. This is used when a virtual register is split or spilled into a new set of virtual re
src/internal/virt_regs/builder.rs:114
↓ 1 callersMethodis_def
Whether this `UseKind` represents the definition of a `Value`.
src/internal/uses.rs:262
↓ 1 callersMethodis_late
Whether this is a late move on a jump instruction.
src/internal/move_resolver.rs:96
↓ 1 callersMethodis_memory
(self, reginfo: &impl RegInfo)
src/output.rs:146
↓ 1 callersMethodis_reachable
Returns whether a basic block is reachable from any entry point.
src/debug_utils/postorder.rs:69
↓ 1 callersMethodis_unit_free
Checks whether the given register unit is free for the given live range segment.
src/internal/reg_matrix.rs:331
← previousnext →301–400 of 705, ranked by callers