File: hipe_sparc_ra_fp_ls.erl

package info (click to toggle)
erlang 1%3A12.b.3-dfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 77,780 kB
  • ctags: 157,528
  • sloc: erlang: 664,178; ansic: 241,119; makefile: 15,725; xml: 8,378; java: 7,780; sh: 6,789; lisp: 5,396; pascal: 3,637; perl: 2,310; asm: 1,438; cpp: 975; tcl: 245; python: 21; sed: 20; awk: 15
file content (32 lines) | stat: -rw-r--r-- 903 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
%% $Id$
%% Linear Scan register allocator for sparc

-module(hipe_sparc_ra_fp_ls).
-export([alloc/4]).
-define(HIPE_INSTRUMENT_COMPILER, true). %% Turn on instrumentation.
%-define(DEBUG,true).
-include("../main/hipe.hrl").

alloc(CFG, Options, NextPos, _TempMap) ->
  SpillLimit = hipe_sparc_specific_fp:number_of_temporaries(CFG),
  alloc1(CFG, NextPos, SpillLimit, Options).

alloc1(SparcCfg, SpillIndex, SpillLimit, Options) ->
  {Map, NewSpillIndex} = 
    hipe_ls_regalloc:regalloc(SparcCfg,
			      hipe_sparc_specific_fp:allocatable(),
			      [hipe_sparc_cfg:start_label(SparcCfg)],
			      SpillIndex,
			      SpillLimit,
			      Options,
			      hipe_sparc_specific_fp),

  FpMap = hipe_temp_map:cols2tuple(Map, hipe_sparc_specific_fp),
  NewCfg = hipe_sparc_ra_post_ls_fp:rewrite(SparcCfg, FpMap, Options),

  %% Consider counting fp spills here.

  {NewCfg, FpMap, NewSpillIndex}.