nx_regalloc.nx
buildroot/runtime/nx_regalloc.nx
about
dependencies 3 imports · 26 importers
diagram shows first 10 each side; +0 more imports, +16 more importers in the complete lists below.
imports: nx_syscalls.nxnx_types.nxnx_ir.nx
imported by: _offc_probe_irbuild.nx_offc_regalloc_min.nxnx_main.nxnx_nxc.nxnx_regalloc_liveness_diag.nxnx_regalloc_soundness_test.nxnx_smoke_nxc_pipeline.nxnx_smoke_nxc_pipeline10.nxnx_smoke_nxc_pipeline13.nxnx_smoke_nxc_pipeline15.nxnx_smoke_nxc_pipeline2.nxnx_smoke_nxc_pipeline7.nxnx_smoke_nxc_pipeline8.nxnx_smoke_nxc_pipeline9.nxnx_smoke_nxc_tilde.nxnx_smoke_regalloc_min.nxnx_smoke_regalloc_min2.nxnx_smoke_regalloc_min3.nxnx_smoke_regalloc_min4.nxnx_smoke_regalloc_min5.nxnx_smoke_regalloc_min6.nxnx_smoke_regalloc_step.nxregalloc.nxregalloc_evict_test.nxregalloc_fpr_evict_test.nxregalloc_test.nx
structs
| 61 | struct Interval { |
consts
| 54 | const FREG_MAGIC_1024: i64 = 1024 |
| 55 | const FREG_MAGIC_4096: i64 = 4096 |
| 94 | const FREG_BASE_T: i64 = 100 // ft0 = 100 |
| 95 | const FREG_BASE_S: i64 = 200 // fs0 = 200 |
| 96 | const NUM_FT: i64 = 12 // ft0..ft11 |
| 97 | const NUM_FS: i64 = 12 // fs0..fs11 |
| 108 | const VREG_BASE: i64 = 300 // v0 = 300 |
| 109 | const NUM_V: i64 = 32 // v0..v31 |
| 110 | const VREG_SCRATCH_0: i64 = 300 // v0 (ISA mask reg) |
| 111 | const VREG_SCRATCH_1: i64 = 301 // v1 (spill scratch) |
| 143 | const FREG_SCRATCH_4: i64 = 104 // ft4 |
| 144 | const FREG_SCRATCH_5: i64 = 105 // ft5 |
| 145 | const FREG_SCRATCH_6: i64 = 106 // ft6 |
functions
| 113 | func is_vec_reg(r: i64) -> i64 {
called by 1: main |
| 118 | func num_vregs() -> i64 { return NUM_V - 2 } // minus v0/v1 scratches |
| 120 | func is_float_reg(r: i64) -> i64 {
called by 1: main |
| 125 | func is_callee_saved(r: i64) -> i64 { |
| 133 | func num_regs() -> i64 { return 16 }
called by 1: linear_scan |
| 134 | func num_fregs() -> i64 { return NUM_FT + NUM_FS } |
| 151 | func is_float_value(f: *Function, v: i64) -> i64 { |
| 164 | func intv_at(buf: *Interval, id: i64) -> *Interval { |
| 177 | func build_intervals(f: *Function, |
| 341 | func cl_bit_get(bs: *i64, v: i64) -> i64 {
called by 1: compute_liveness |
| 347 | func cl_bit_set(bs: *i64, v: i64) -> i64 {
called by 1: compute_liveness |
| 355 | func cl_words(n: i64) -> i64 {
called by 1: compute_liveness |
| 359 | func compute_liveness(f: *Function, intv: *Interval, |
| 587 | func mark_crosses_call(intv: *Interval, n_values: i64, |
| 620 | func pop_free(free_regs: *i64, n_free_ptr: *i64, |
| 652 | func expire(active: *i64, n_active_ptr: *i64, |
| 678 | func active_insert(active: *i64, n_active_ptr: *i64, |
| 723 | func spill_furthest_active(active: *i64, n_active_ptr: *i64, |
| 757 | func linear_scan(intv: *Interval,
called by 4: regalloc_functionmainmainmain calls 7: sys_mmapnum_regsintv_atexpirepop_freespill_furthest_active+1 |
| 844 | func linear_scan_fpr(intv: *Interval,
called by 2: regalloc_functionmain calls 6: sys_mmapintv_atexpirepop_freespill_furthest_activeactive_insert |
| 932 | func sort_by_start(ids: *i64, n: i64, intv: *Interval) -> i64 { |
| 973 | func is_rematerialisable(f: *Function, v: i64) -> i64 { |
| 986 | func regalloc_function(f: *Function, locs: *ValueLoc, |