File: TODO

package info (click to toggle)
rust-regalloc2 0.10.2-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 680 kB
  • sloc: makefile: 22; sh: 1
file content (34 lines) | stat: -rw-r--r-- 1,142 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Features

- Large-input support (> 1M vregs, > 1M blocks)
  - Two operand impls: u64-based and u32-based. Always accept
    u64-based `Operand` publicly (do not expose this in interface).
  - Trait to generalize over them and support both internally
    (parameterize the whole allocator impl)
  - On data-structure init, choose one or the other based on max vreg
    index
  - Update halfmove keys: u128 rather than u64

- Support allocation of register pairs (or overlapping registers generally)

- Rematerialization
- Stack-location constraints that place operands in user-defined stack
  locations (distinct from SpillSlots) (e.g., stack args)

# Performance

- Investigate better register hinting
- Investigate more principled cost functions and split locations,
  especially around loop nests

- Investigate ways to improve bundle-merging; e.g., merge moves before
  other types of connections

- Add limited inter-block redundant-move elimination: propagate across
  splits but not joins.

- Optimize allocations (some reports of 5-7% of time spent in allocator)

# Cleanup

- Remove support for non-SSA code once no longer necessary