hipe_sparc_specific_fp.erl

来自「OTP是开放电信平台的简称」· ERL 代码 · 共 154 行

ERL
154
字号
%%----------------------------------------------------------------------%% File    : hipe_sparc_specific_fp.erl%% Author  : Ingemar 舃erg <d95ina@it.uu.se>%% Purpose : Provide target specific functions to the register allocator%% Created :  2 Apr 2000 by Ingemar 舃erg <d95ina@it.uu.se>%%-----------------------------------------------------------------------module(hipe_sparc_specific_fp).-author('d95ina@it.uu.se').-export([allocatable/0,	 is_precoloured/1,	 %% var_range/1,	 %% def_use/1,	 %% is_fixed/1,	 %% non_alloc/1,	 %% predictionorder/1,	 %% is_move/1,	 number_of_temporaries/1	]).%% The following exports are used as M:F(...) calls from other modules;%% e.g. hipe_x86_ra_ls.-export([analyze/1,	 bb/2,	 args/1,	 labels/1,	 livein/2,	 liveout/2,	 succ_map/1,	 uses/1,	 defines/1,	 is_arg/1,	 is_global/1,	 reg_nr/1,	 physical_name/1,	 new_spill_index/1,	 breadthorder/1,	 postorder/1,	 reverse_postorder/1]).%% Liveness stuffanalyze(CFG) ->  hipe_sparc_liveness:analyze(CFG).liveout(BB_in_out_liveness,Label) ->  hipe_sparc_liveness:liveout(BB_in_out_liveness,Label).livein(Liveness,L) ->  hipe_sparc_liveness:livein(Liveness,L).%% Registers stuffallocatable() ->  [4,6,8,10,12,14,16,18,20,22,24,26,28,30].all_precoloured() -> %% Is this correct?  lists:seq(0, 31).is_precoloured(Reg) ->  lists:member(Reg, all_precoloured()).physical_name(Reg) ->  Reg.is_global(_R) -> %% A fp_reg can't be global.  false.%% is_fixed(_R) -> %% A fp_reg can't be fixed.%%   false.is_arg(_R) ->  false.%% CFG stuff%% Return registers that are used to pass arguments to the CFG.args(_CFG) ->  [].%%  Arity = arity(CFG),%%  arg_vars(Arity).%% non_alloc(_CFG) ->%%   [].%% %% arg_vars(N, Acc) when N >= 0 ->%%   arg_vars(N-1, [arg_var(N)|Acc]);%% arg_vars(_, Acc) -> Acc.%%%% arg_vars(N) ->%%   case N >= hipe_sparc_registers:register_args() of%%     false ->%%       arg_vars(N-1,[]);%%     true ->%%       arg_vars(hipe_sparc_registers:register_args()-1,[])%%   end.%% %% arg_var(X) ->%%   hipe_sparc_registers:arg(X).%%%% arity(CFG) ->%%   {_,_,Arity} = hipe_sparc_cfg:function(CFG). labels(CFG) ->  hipe_sparc_cfg:labels(CFG).reverse_postorder(CFG) ->  hipe_sparc_cfg:reverse_postorder(CFG).breadthorder(CFG) ->  hipe_sparc_cfg:breadthorder(CFG).postorder(CFG) ->  hipe_sparc_cfg:postorder(CFG).%% predictionorder(CFG) ->%%   hipe_sparc_cfg:predictionorder(CFG).%% var_range(_CFG) ->%%   hipe_gensym:get_var(sparc).number_of_temporaries(_CFG) ->  Highest_temporary = hipe_gensym:get_var(sparc),  %% Since we can have temps from 0 to Max adjust by +1.  %% (Well, on sparc this is not entirely true, but lets pretend...)  Highest_temporary + 1.bb(CFG,L) ->  hipe_sparc_cfg:bb(CFG,L).succ_map(CFG) ->  hipe_sparc_cfg:succ_map(CFG).uses(I) ->  hipe_sparc:fp_reg_uses(I).defines(I) ->  hipe_sparc:fp_reg_defines(I).%% def_use(Instruction) ->%%   hipe_sparc:fp_reg_def_use(Instruction).%% is_move(Instruction) ->%%     hipe_sparc:is_move(Instruction).reg_nr(Reg) ->  hipe_sparc:fpreg_nr(Reg).new_spill_index(SpillIndex)->  SpillIndex + 2.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?