MCPcopy Create free account
hub / github.com/Amanieu/regalloc3 / encode

Method encode

src/internal/allocator/queue.rs:53–70  ·  view source on GitHub ↗

Encodes an entry for a virtual register.

(vreg: VirtReg, stage: Stage, virt_regs: &VirtRegs)

Source from the content-addressed store, hash-verified

51impl Entry {
52 /// Encodes an entry for a virtual register.
53 fn encode(vreg: VirtReg, stage: Stage, virt_regs: &VirtRegs) -> Self {
54 let stage = match stage {
55 Stage::Evict => 1,
56 Stage::Split => 0,
57 };
58 let has_fixed_hint = virt_regs[vreg].has_fixed_hint as u64;
59 let group_size = 0;
60 let size = ValueSegment::live_insts(virt_regs.segments(vreg)) as u64;
61 let size = size.min((1 << 27) - 1);
62 let index = vreg.index() as u64;
63 Entry {
64 bits: (stage << 63)
65 | (has_fixed_hint << 62)
66 | (group_size << 59)
67 | (size << 32)
68 | index,
69 }
70 }
71
72 /// Encodes an entry for a virtual register group.
73 fn encode_group(group: VirtRegGroup, stage: Stage, virt_regs: &VirtRegs) -> Self {

Callers

nothing calls this directly

Calls 2

segmentsMethod · 0.80
indexMethod · 0.45

Tested by

no test coverage detected