|
(!$+) [BTLtypes] |
|
(!$-) [BTLtypes] |
|
($&$) [BTLtypes] |
|
($+) [BTLtypes] |
|
($-) [BTLtypes] |
|
($?) [BTLtypes] |
|
($|$) [BTLtypes] |
|
(~$) [BTLtypes] |
|
A |
abs_loc_of_av_chunk [PrepassSchedulingOracle] |
|
add_aseq_in_gm [BTLcommonaux] |
|
add_outputs_in_gm [BTLcommonaux] |
|
add_sequentiality_constraints [PrepassSchedulingOracle] |
|
add_to_set_in_table [CSE3analysisaux] |
|
address_disjoint [StoreMotionOracle] |
|
aff_add1_int64_uset [LazyCodeCore] |
Set a1 + l in (pc, dst) after eventually updating with the
old value at (pc, a1) .
|
aff_add2_int64_uset [LazyCodeCore] |
Set a1 + a2 in (pc, dst) after eventually updating with the
old values of {(pc, a1), (pc, a2)} .
|
aff_add_int64 [LazyCodeCore] |
|
aff_cargs_update_int64 [LazyCodeCore] |
Fold computing the overall compensation value to add for a given
list of arguments cargs , seeking for defined affine forms in block pc
first, and in replace_pts otherwise (in case some values are out of
the block's scope; it happens in practice).
|
aff_find_update_int64 [LazyCodeCore] |
Finds the first defined affine form with key (pt, arg)
for each pt in pts .
|
aff_inj_const_int64 [LazyCodeCore] |
Grab the constant of affine form with key tup ;
Used for injuring operations.
|
aff_inj_update_int64 [LazyCodeCore] |
Compute the sum of all Aff_term(ci, ri, ...) with
ci * (aff_inj_const_int64 (pc, ri)) .
|
aff_may_replace_int64 [LazyCodeCore] |
If force , replace the value at tup by aff ,
else, add it only if tup is not already defined.
|
aff_mul_int64 [LazyCodeCore] |
|
aff_mul_int64_uset [LazyCodeCore] |
Set a1 * l in (pc, dst) after eventually updating with the
old value at (pc, a1) .
|
affine_add [LazyCodeCore] |
Addition over affine values with type 'a .
|
affine_inj_const [LazyCodeCore] |
|
affine_int64 [LazyCodeCore] |
Maps a tuple (block pc, register) to its int64 affine value, if applicable.
|
affine_mul [LazyCodeCore] |
Affine value times a constant of type 'a .
|
all_ones [Bitv] |
returns true if and only if the vector only contains ones
|
all_zeros [Bitv] |
returns true if and only if the vector only contains zeros
|
analyze_liveness_btl [BTL_Liveness] |
|
append [Bitv] |
(Bitv.append v1 v2) returns a fresh vector containing the
concatenation of the vectors v1 and v2 .
|
apply_liveness_info [BTL_Liveness] |
|
apply_map [Duplicateaux] |
|
apply_map_list [Duplicateaux] |
|
apply_map_opt [Duplicateaux] |
|
apply_optims [BTL_BlockOptimizer] |
|
apply_over_function [BTLcommonaux] |
|
apply_schedule [BTL_BlockOptimizeraux] |
|
B |
bb_analysis [LazyCodeOracle] |
This function performs an analysis over a single basic-block ib .
|
best_predecessor_of [Duplicateaux] |
|
best_successor_of [Duplicateaux] |
|
bfs [Duplicateaux] |
|
bfs_until [Duplicateaux] |
|
blit [Bitv] |
(Bitv.blit v1 o1 v2 o2 len) copies len elements from vector
v1 , starting at element number o1 , to vector v2 , starting at
element number o2 .
|
block_entry [StoreMotionOracle.St_type] |
|
block_entry [StoreMotionOracle.StPartial] |
|
block_entry [StoreMotionOracle.StTotal] |
|
bogus_inputs [OpWeights.KV3] |
|
bogus_register [OpWeights.KV3] |
|
btl [PrintBTL.PrintGV] |
|
btl2rtl [BTLtoRTLaux] |
|
btl_expansions_oracle [BTL_BlockOptimizer] |
|
btl_expansions_rrules [BTL_BlockOptimizer] |
|
btl_gm [PrintBTL.PrintGV] |
|
btl_int_promotion_oracle [BTL_BlockOptimizer] |
|
btl_lazy_code_annotate_analysis [BTL_BlockOptimizer] |
|
btl_lazy_code_oracle [BTL_BlockOptimizer] |
|
btl_lazy_code_rrules [BTL_BlockOptimizer] |
|
btl_max_reg [BTLcommonaux] |
|
btl_scheduling_annotate_analysis [BTL_BlockOptimizer] |
|
btl_scheduling_oracle [BTL_BlockOptimizer] |
|
btl_scheduling_rrules [BTL_BlockOptimizer] |
|
btl_simple_dead_code_elimination [BTL_Liveness] |
|
btl_store_motion_annotate_analysis [BTL_BlockOptimizer] |
|
btl_store_motion_oracle [BTL_BlockOptimizer] |
|
btl_store_motion_rrules [BTL_BlockOptimizer] |
|
build_constraints [PrepassSchedulingOracle] |
|
build_inst_from_ckey [LazyCodeOracle] |
Translate a virtual candidate to a concrete BTL instruction.
|
build_invariants [LazyCodeOracle] |
Build all the needed invariants for LCT:
for each candidate in the list, with a defined vaux:
g1 = (N-REPLACE /\ not N-INSERT) \/ (X-REPLACE /\ not X-INSERT)
g2 = (not N-ISOLATED /\ not X-ISOLATED)
g3 = (not N-DELAYED /\ not X-DELAYED)
pp = g1 \/ (g2 /\ g3)
if the candidate is trapping:
pp = pp /\ N-U-SAFE
for blk_pc in CFG
if blk_pc <> entry:
if candidate is a SRmul && candidate is not immediate SR op && candidate was reduced:
r = constant_reg of candidate
cop, cpc = obtain the constant operation and first appearance block pc
if blk_pc < cpc && r <= last_reg (ie is not a fresh variable) && (blk_pc in pp || r live in blk_pc)
add an history invariant based on the constant operation, along with a corresponding liveness entry.
|
build_ival_from_ckey [LazyCodeOracle] |
|
build_liveness_invariants [BTLcommonaux] |
|
bw_and [Bitv] |
bitwise AND;
raises Invalid_argument if the two vectors do not have the same length
|
bw_not [Bitv] |
|
bw_or [Bitv] |
bitwise OR;
raises Invalid_argument if the two vectors do not have the same length
|
bw_xor [Bitv] |
bitwise XOR;
raises Invalid_argument if the two vectors do not have the same length
|
C |
can_interfere [PrepassSchedulingOracle] |
|
can_interfere_abs [PrepassSchedulingOracle] |
|
can_interfere_abs_opt [PrepassSchedulingOracle] |
|
can_interfere_rel [PrepassSchedulingOracle] |
|
can_interfere_rel_opt [PrepassSchedulingOracle] |
|
cand_dep_reg [StoreMotionOracle] |
|
cand_eq [StoreMotionOracle] |
|
candidate_op_filter [LazyCodeCore] |
|
candidates [LazyCodeCore] |
Maps candidates keys to candidate type cand_t .
|
cascaded_scheduler [InstructionScheduler] |
Apply line scheduler then advanced solver
|
cb_exit_node [Duplicateaux] |
|
change_final_successor_btl [BTLcommonaux] |
|
change_nexts [Duplicateaux] |
|
change_pointers [Duplicateaux] |
|
check_problem [InstructionScheduler] |
Check that a problem is well-formed.
|
check_schedule [InstructionScheduler] |
Validate that a solution is truly a solution of a scheduling problem.
|
check_time [LazyCodeCore] |
|
clone [Duplicateaux] |
Clone a list of instructions into free pc indexes
*
* The list of instructions should be contiguous, and not include any loop.
|
close_subset [StoreMotionOracle.StPartial] |
|
code_motion [LazyCodeOracle] |
Applies code motion using the information in insert_pred and
replace_pred .
|
commit_new_block [LazyCodeOracle] |
|
compensate [StoreMotionOracle.StPartial] |
|
compute_compense_makespan [BTL_IfLiftingOracle] |
|
compute_critical_insertion [LazyCodeOracle] |
|
compute_earliestness [LazyCodeOracle] |
|
compute_greedy_makespan [PrepassSchedulingOracle] |
|
compute_insertion_point [LazyCodeOracle] |
Compute the insertion point for a given basic-block and candidate.
|
compute_invariants [CSE3analysisaux] |
|
compute_latestness [LazyCodeOracle] |
|
compute_lcm_targets_notrap [LazyCodeOracle] |
Non-trapping insertion points: Insert(n) = Latest(n) /\ not Isolated(n)
|
compute_lcm_targets_trap [LazyCodeOracle] |
Trapping insertion points: First computes a set P = , For each pc_p, build the set I = /\
(N-Comp(pc_i) \/ X-Comp(pc_i)) /\ exists (p : path),
p = (pc_i, pc_p) /\ forall n, n in p /\ n > pc_i /\ n < pc_p -> Transp(n)
Then, it applies the below rules:
|I| > 0 -> N-Replace(pc_p) <- true
X-Comp(pc_p) = true -> X-Insert(pc_p) <- true /\ X-replace(pc_p) <- true
For each pc_i,
N-Comp(pc_i) -> N-Insert(pc_i) <- true /\ N-Replace(pc_i) <- true, X-Comp(pc_i) -> X-Insert(pc_i) <- true /\ X-Replace(pc_i) <- true
|
compute_liveins [BTL_Liveness] |
|
compute_surrounding_blocks [BTL_SyntheticNodes] |
|
concat [Bitv] |
Bitv.concat is similar to Bitv.append , but catenates a list of
vectors.
|
constants [LazyCodeCore] |
Maps registers to immediate constant operation (if they are unchanged over
the whole function).
|
copy [Bitv] |
(Bitv.copy v) returns a copy of v ,
that is, a fresh vector containing the same elements as v .
|
count_cbs [BTL_BlockOptimizeraux] |
|
count_ignore_nops [Duplicateaux] |
|
create [Bitv] |
(Bitv.create n b) creates a new bit vector of length n ,
initialized with b .
|
critical_tf [LazyCodeOracle] |
Critical transfer function
sols.(0) should be xcritical and sols.(1) should be ncritical.
|
D |
d_safe_tf [LazyCodeOracle] |
D_Safe transfer function
sols.(0) should be xdsafe and sols.(1) should be ndsafe.
|
dataflow_analysis [LazyCodeOracle] |
|
def_binfo [BTLcommonaux] |
|
def_iinfo [BTLcommonaux] |
|
def_iinfo_shadow [BTLcommonaux] |
|
default_loc [PrepassSchedulingOracle] |
|
default_predicate_value [LazyCodeCore] |
Default predicate value, this setting is very important and quite touchy...
|
define_problem [PrepassSchedulingOracle] |
|
define_sequential_problem [PrepassSchedulingOracle] |
|
delayed_tf [LazyCodeOracle] |
Delayed transfer function
sols.(0) should be ndelayed and sols.(1) should be xdelayed.
|
destination [PrintBTL] |
|
detect_candidates [LazyCodeOracle] |
Detect candidates (transfer function to be used with apply_over_function).
|
detect_constants [LazyCodeOracle] |
Detect constants over the whole function (never erased)
A constant that is defined multiple times is still a constant,
and in this case we keep the oldest (former) one.
|
dfs [Duplicateaux] |
|
do_call_heuristic [Duplicateaux] |
|
do_loop2_heuristic [Duplicateaux] |
|
do_loop_heuristic [Duplicateaux] |
|
do_opcode_heuristic [Duplicateaux] |
|
do_return_heuristic [Duplicateaux] |
|
do_store_heuristic [Duplicateaux] |
|
dubious_compute_greedy_makespan [PrepassSchedulingOracle] |
|
duplicate [Duplicateaux] |
|
E |
eliminate_synthetic_nodes [BTL_SyntheticNodes] |
|
empty [StoreMotionOracle.St_type] |
|
empty [StoreMotionOracle.StPartial] |
|
empty [StoreMotionOracle.StTotal] |
|
empty_csasv [BTLcommonaux] |
|
empty_subset [StoreMotionOracle.St_type] |
|
empty_subset [StoreMotionOracle.StPartial] |
|
empty_subset [StoreMotionOracle.StTotal] |
|
encaps_final [RTLtoBTLaux] |
|
equal [Bitv] |
Returns true if two bit vectors are of the same length and
with the same bits.
|
eqv_of [BTLtoRTLaux] |
|
erase_latest_cand [LazyCodeOracle] |
Compare both cand and old_cand according to their position,
update the lhs field of the earlier,
and and erase the last one by emptying lhs .
|
eval_reladdr [PrepassSchedulingOracle] |
|
exceeds_max_length [Bitv] |
Returns true if the argument exceeds the maximum length of a bit vector
(System dependent).
|
exists_false [Duplicateaux] |
|
exists_false_rec [Duplicateaux] |
|
expanse [ExpansionOracle] |
|
extract_ckey_args [LazyCodeOracle] |
|
extract_ckey_chk_aaddr [LazyCodeOracle] |
|
extract_ckey_const [LazyCodeBackend] |
|
extract_upto_icond [Duplicateaux] |
|
F |
factorize_cfg [BTLtoRTLaux] |
|
fake_args [PrintBTL] |
|
fill [Bitv] |
(Bitv.fill v ofs len b) modifies the vector v in place,
storing b in elements number ofs to ofs + len - 1 .
|
filter_candidates [LazyCodeCore] |
Limit the number of candidates according to the user flag.
|
final_smash [StoreMotionOracle] |
|
final_succ [StoreMotionOracle] |
|
find [BTLtoRTLaux] |
|
find_array [BTL_BlockOptimizeraux] |
|
find_last_node_before_loop [Duplicateaux] |
|
find_last_reg_btl [BTLcommonaux] |
|
find_substcrit_targets [LazyCodeOracle] |
Push critical insertion points forward to the first non critical but
substitution critical point, in the direction of the control-flow.
|
first_approx [BTLtoRTLaux] |
|
flags [LazyCodeCore] |
|
flatten_blk_basics [BTL_BlockOptimizeraux] |
|
flatten_eq [CSE3analysisaux] |
|
flatten_iblock [BTLcommonaux] |
|
flatten_iblock_aux [BTLcommonaux] |
|
fold_left [Bitv] |
(Bitv.fold_left f x v) computes f (... (f (f x (get v 0)) (get
v 1)) ...) (get v (n-1)) , where n is the length of the vector
v .
|
fold_right [Bitv] |
(Bitv.fold_right f a x) computes f (get v 0) (f (get v 1)
( ... (f (get v (n-1)) x) ...)) , where n is the length of the
vector v .
|
foldi_left [Bitv] |
|
foldi_right [Bitv] |
|
forward_replace [LazyCodeOracle] |
Forward substitution of auxiliary variables, and candidate
replacement procedure.
|
fprint_stats [BTL_IfLiftingOracle] |
|
fprint_stats [LazyCodeCore] |
|
fprint_stats_header [BTL_IfLiftingOracle] |
|
fprint_stats_header [LazyCodeCore] |
|
G |
generate_fwmap [Duplicateaux] |
|
generate_revmap [Duplicateaux] |
|
get [Bitv] |
(Bitv.get v n) returns the n th bit of v .
|
get_const_from_reg [LazyCodeBackend] |
|
get_default [CSE3analysisaux] |
|
get_directions [Duplicateaux] |
|
get_freg [BTL_RegisterRenaming] |
|
get_freg_back [BTL_RegisterRenaming] |
|
get_freg_forw [BTL_RegisterRenaming] |
|
get_inner_loops [Duplicateaux] |
|
get_inum [PrepassSchedulingOracle] |
|
get_inumb [BTLcommonaux] |
|
get_inumb_succ [BTLcommonaux] |
|
get_inv_in_gm_or_def [BTLcommonaux] |
|
get_join_points [RTLtoBTLaux] |
|
get_live_regs_entry [BTL_BlockOptimizeraux] |
|
get_liveins [BTL_Liveness] |
|
get_loop_bodies [Duplicateaux] |
|
get_loop_headers [Duplicateaux] |
|
get_loop_info [Duplicateaux] |
|
get_max_latency [InstructionScheduler] |
Get max latency from solution
|
get_nr_instructions [InstructionScheduler] |
Get the number of instructions in a problem
|
get_nr_resources [InstructionScheduler] |
Get the number of resources in a problem
|
get_opweights [OpWeights] |
|
get_outputs [BTL_Liveness] |
|
get_pred [BTLtoRTLaux] |
|
get_predecessors_rtl [Duplicateaux] |
|
get_predicate_cand [LazyCodeCore] |
|
get_predicate_value [LazyCodeCore] |
|
get_regindent [BTLcommonaux] |
Form a list containing both sources and destination regs of a block
|
get_regs_ib [BTLcommonaux] |
|
get_rep [BTLtoRTLaux] |
|
get_succ [BTLtoRTLaux] |
|
get_succ_repr [BTLtoRTLaux] |
|
get_visited [BTLcommonaux] |
|
go_through_predicted [Duplicateaux] |
|
graph [PrintBTL.PrintGV] |
|
gray_iter [Bitv] |
gray_iter f n iterates function f on all bit vectors
of length n , once each, using a Gray code.
|
greedy_scheduler [InstructionScheduler] |
Schedule the problem using the order of instructions without any reordering.
|
H |
has_some [Duplicateaux] |
|
has_timeout [LazyCodeCore] |
|
I |
identify_blocks [LazyCodeOracle] |
This function builds two mappings from block ids to bitvector ids
and its reverse, to facilitate bitvector manipulation.
|
if_lift [BTL_IfLiftingOracle] |
|
ilp_print_problem [InstructionScheduler] |
|
ilp_scheduler [InstructionScheduler] |
|
imp_add_i_j [CSE3analysisaux] |
|
incr [Duplicateaux] |
|
init [Bitv] |
(Bitv.init n f) returns a fresh vector of length n ,
with bit number i initialized to the result of (f i) .
|
init_and_local_analysis [LazyCodeOracle] |
Init non-recursive predicates and computes local ones for a whole function.
|
init_eqc [BTLtoRTLaux] |
|
init_rep [BTLtoRTLaux] |
|
init_state [BTLtoRTLaux] |
|
init_stats [StoreMotionOracle] |
|
init_succm [BTLtoRTLaux] |
|
initial_analysis [CSE3analysisaux] |
|
initialize [LazyCodeOracle] |
|
initialize_nonrec_predicates [LazyCodeOracle] |
Initialize local and non-recursive predicates.
|
input_bin [Bitv] |
|
insert_cand [LazyCodeOracle] |
If the ckey already exist, we check if the candidate was already
seen in block pc , ifso, we add it to the offset set,
ifnot, we create a singleton.
|
insert_node [LazyCodeOracle] |
Insert inst in ib at offset_target , using offset as iterator.
|
insn_of_cond [OpWeights.KV3] |
|
insn_of_load [OpWeights.KV3] |
|
insn_of_op [OpWeights.KV3] |
|
insn_of_store [OpWeights.KV3] |
|
insns_of_cond [OpWeights.KV3] |
|
insns_of_load [OpWeights.KV3] |
|
insns_of_op [OpWeights.KV3] |
|
insns_of_store [OpWeights.KV3] |
|
instr_all_deps [BTLcommonaux] |
|
int_promotion_oracle [IntPromotionOracle] |
|
invert_iconds [Duplicateaux] |
|
is_a_cb [BTL_BlockOptimizeraux] |
|
is_a_load [BTL_BlockOptimizeraux] |
|
is_a_nop [Duplicateaux] |
|
is_affine_op [LazyCodeBackend] |
|
is_constant_op [LazyCodeBackend] |
|
is_constant_reg [LazyCodeCore] |
|
is_fwd_predicate [LazyCodeCore] |
Is the predicate requiring a forward analysis?
|
is_immediate_sr_op [LazyCodeBackend] |
|
is_ld_ckey [LazyCodeCore] |
|
is_real_sr_mul_cand [LazyCodeCore] |
|
is_really_sr_cand [LazyCodeCore] |
If a candidate for strength-reduction is never injured, then we can
perform the code-motion dataflow analysis only.
|
is_some [Duplicateaux] |
|
is_sr_candidate_op [LazyCodeBackend] |
|
is_sr_ckey [LazyCodeCore] |
|
is_sr_mul_ckey [LazyCodeCore] |
|
is_sr_update_op [LazyCodeBackend] |
|
is_trapping_ckey [LazyCodeCore] |
|
is_trivial [CSE3analysisaux] |
|
isolated_tf [LazyCodeOracle] |
Isolated transfer function
sols.(0) should be xisolated and sols.(1) should be nisolated.
|
iter [Bitv] |
(Bitv.iter f v) applies function f in turn to all
the elements of v .
|
iteri [Bitv] |
|
iteri_true [Bitv] |
iteri_true f v applies function f in turn to all indexes of
the elements of v which are set (i.e.
|
J |
jump_visit [BTLcommonaux] |
|
L |
label [BTLtoRTLaux] |
|
latency_of_call [OpWeights.KV3] |
|
latency_of_load [OpWeights.KV3] |
|
latency_of_op [OpWeights.KV3] |
|
lazy_code_oracle [LazyCodeOracle] |
Launch according to cli args.
|
lazy_optim [LazyCodeOracle] |
|
length [Bitv] |
Bitv.length returns the length (number of elements) of the given
vector.
|
length_of_chunk [PrepassSchedulingOracle] |
|
lhs_blk_add [LazyCodeOracle] |
|
lhs_blk_rem [LazyCodeOracle] |
|
limit_size [StoreMotionOracle.StPartial] |
|
limit_size [StoreMotionOracle.StTotal] |
|
lir_to_lr [PrintBTL] |
|
list_scheduler [InstructionScheduler] |
Schedule the problem using a greedy list scheduling algorithm, from the start.
|
liveness_and_dce [LazyCodeOracle] |
|
llog [LazyCodeCore] |
|
local_predicates_for_cand [LazyCodeOracle] |
Computes transp, injure, ncomp and xcomp predicates.
|
log_lvl [LazyCodeCore] |
|
look_ahead [Duplicateaux] |
|
look_ahead_gen [Duplicateaux] |
|
loop_rotate [Duplicateaux] |
|
lsval_length [PrintBTL] |
|
M |
make_identity_ptree [Duplicateaux] |
|
make_identity_ptree_rec [Duplicateaux] |
|
make_load_ckey [LazyCodeOracle] |
|
make_op_ckey [LazyCodeOracle] |
Build a candidate from a btl operation.
|
make_synth_node [RTLtoBTLaux] |
|
makespan_of_solution [PrepassSchedulingOracle] |
|
map [Bitv] |
Given a function f , (Bitv.map f v) applies f to all
the elements of v , and builds a vector with the results returned
by f .
|
mapi [Bitv] |
Bitv.iteri and Bitv.mapi are similar to Bitv.iter
and Bitv.map respectively, but the function is applied to the
index of the element as first argument, and the element itself as
second argument.
|
mark_to_visit [BTLtoRTLaux] |
|
mark_updated_ckey [LazyCodeOracle] |
|
mark_updated_load [LazyCodeOracle] |
|
mark_updated_op [LazyCodeOracle] |
|
match_injuring_op [LazyCodeBackend] |
|
match_load_ckey [LazyCodeOracle] |
|
match_op_ckey [LazyCodeOracle] |
|
max_length [Bitv] |
|
max_simult_cand [StoreMotionOracle] |
|
maximum_critical_path [InstructionScheduler] |
Get the length of a maximal critical path
|
maximum_slot_used [InstructionScheduler] |
Get the number the last scheduling time used for an instruction in a solution.
|
maxint [Duplicateaux] |
|
may_downgrade_ckey [LazyCodeOracle] |
Downgrading an SRadd candidate to a LCM one.
|
meminv [StoreMotionOracle.St_type] |
|
meminv [StoreMotionOracle.StPartial] |
|
meminv [StoreMotionOracle.StTotal] |
|
merge_cand [LazyCodeOracle] |
Merge an eventually existing candidate at ckey with cand ,
and erase the latest one.
|
minimize_output [BTLtoRTLaux] |
|
mk_address [StoreMotionOracle] |
|
mk_binfo [BTLcommonaux] |
|
mk_cand [LazyCodeCore] |
Initialize a new candidate appearing at pc, offset with _memdep, args
and default values.
|
mk_def_df_predicates [LazyCodeCore] |
At the beginning, every predicate option is set to None.
|
mk_finfo [BTLcommonaux] |
|
mk_function [BTLcommonaux] |
|
mk_ibinfo [BTLcommonaux] |
|
mk_iinfo_shadow [BTLcommonaux] |
|
mk_ir [BTLcommonaux] |
|
mk_sr_update_op [LazyCodeBackend] |
|
N |
name_of_permission [PrintBTL] |
|
new_iinfo [BTLcommonaux] |
|
next_approx [BTLtoRTLaux] |
|
next_free_pc [Duplicateaux] |
|
nlist [OpWeights.KV3] |
|
nlist_rec [OpWeights.KV3] |
|
no_join_point_successor [RTLtoBTLaux] |
|
no_succ_inst [BTLtoRTLaux] |
|
node [PrintBTL.PrintGV] |
|
node_code [PrintBTL.PrintGV] |
|
node_exits [PrintBTL.PrintGV] |
|
node_id [PrintBTL.PrintGV] |
|
node_text [PrintBTL.PrintGV] |
|
non_pipelined_resources_of_op [OpWeights.KV3] |
|
nr_non_pipelined_units [OpWeights.KV3] |
|
O |
of_bytes [Bitv] |
|
of_int32_s [Bitv] |
|
of_int32_us [Bitv] |
|
of_int64_s [Bitv] |
|
of_int64_us [Bitv] |
|
of_int_s [Bitv] |
|
of_int_us [Bitv] |
|
of_list [Bitv] |
|
of_list_with_length [Bitv] |
|
of_nativeint_s [Bitv] |
|
of_nativeint_us [Bitv] |
|
of_string [Bitv.M] |
|
of_string [Bitv.L] |
|
optbool [Duplicateaux] |
|
ord_add_eqc [BTLtoRTLaux] |
|
ord_add_rep [BTLtoRTLaux] |
|
output_bin [Bitv] |
|
overlap [PrepassSchedulingOracle] |
|
P |
pget [BTLcommonaux] |
|
plist2IS [BTLcommonaux] |
|
pop [Bitv] |
Population count, i.e., number of 1 bits
|
pp_P [CSE3analysisaux] |
|
pp_eq [CSE3analysisaux] |
|
pp_equation [CSE3analysisaux] |
|
pp_intset [CSE3analysisaux] |
|
pp_list [CSE3analysisaux] |
|
pp_option [CSE3analysisaux] |
|
pp_relation [CSE3analysisaux] |
|
pp_relation_b [CSE3analysisaux] |
|
pp_results [CSE3analysisaux] |
|
pp_rhs [CSE3analysisaux] |
|
pp_set [CSE3analysisaux] |
|
preanalysis [CSE3analysisaux] |
|
preds [BTLtoRTLaux] |
|
prepare_data [LazyCodeOracle] |
|
prepass_scheduler_by_name [PrepassSchedulingOracle] |
|
print [Bitv.M] |
|
print [Bitv.L] |
|
print [StoreMotionOracle.St_type] |
|
print [StoreMotionOracle.StPartial] |
|
print [StoreMotionOracle.StTotal] |
|
print_aaddr [PrintBTL] |
|
print_aaddr_annot_opt [PrintBTL] |
|
print_address [StoreMotionOracle] |
|
print_affine_form [LazyCodeCore] |
|
print_affine_map [LazyCodeCore] |
|
print_analysis [StoreMotionOracle.Make] |
|
print_btl_block [PrintBTL] |
|
print_btl_code [PrintBTL] |
|
print_btl_inst [PrintBTL] |
|
print_cand [LazyCodeCore] |
|
print_candidates [LazyCodeCore] |
|
print_cond [CSE3analysisaux] |
|
print_constants [LazyCodeCore] |
|
print_csasv [PrintBTL] |
|
print_deps [PrepassSchedulingOracle] |
|
print_eq [CSE3analysisaux] |
|
print_gluemap [PrintBTL] |
|
print_iblock [PrintBTL] |
|
print_if [PrintBTL] |
|
print_imap [LazyCodeCore] |
|
print_imem [PrintBTL] |
|
print_inner_loop [Duplicateaux] |
|
print_inner_loops [Duplicateaux] |
|
print_inst_info [PrintBTL] |
|
print_invariant [PrintBTL] |
|
print_ireg [PrintBTL] |
|
print_ireg_list [PrintBTL] |
|
print_istore [PrintBTL] |
|
print_ival [PrintBTL] |
|
print_list [PrintBTL] |
|
print_list_sval [PrintBTL] |
|
print_lsval [PrintBTL] |
|
print_okclause [PrintBTL] |
|
print_option [PrintBTL] |
|
print_ordis [LazyCodeCore] |
|
print_predicates [LazyCodeCore] |
Print every predicates of every candidates in a CSV-like format
separated with semicolumns.
|
print_pref [PrintBTL] |
|
print_problem [InstructionScheduler] |
Print problem for human readability.
|
print_prom_sgns [PrintBTL] |
|
print_pset [Duplicateaux] |
|
print_reg [CSE3analysisaux] |
|
print_rop [PrintBTL] |
|
print_sequence [PrepassSchedulingOracle] |
|
print_sgn [PrintBTL] |
|
print_smem [PrintBTL] |
|
print_solution [PrepassSchedulingOracle] |
|
print_sr_type [LazyCodeCore] |
|
print_sreg [PrintBTL] |
|
print_sstate [PrintBTL] |
|
print_sstates [PrintBTL] |
|
print_stats [StoreMotionOracle] |
|
print_stats_opt [StoreMotionOracle] |
|
print_store_info [PrintBTL] |
|
print_store_num [PrintBTL] |
|
print_subset [StoreMotionOracle.St_type] |
|
print_subset [StoreMotionOracle.StPartial] |
|
print_subset [StoreMotionOracle.StTotal] |
|
print_succ [PrintBTL] |
|
print_sval [PrintBTL] |
|
print_sval_hashcode_opt [PrintBTL] |
|
print_sval_hc [PrintBTL] |
|
print_trace [Duplicateaux] |
|
print_traces [Duplicateaux] |
|
pseudo_boolean_print_problem [InstructionScheduler] |
|
pseudo_boolean_read_solution [InstructionScheduler] |
|
pseudo_boolean_scheduler [InstructionScheduler] |
|
ptree_get_some [Duplicateaux] |
|
push [StoreMotionOracle.St_type] |
|
push [StoreMotionOracle.StPartial] |
|
push [StoreMotionOracle.StTotal] |
|
push0 [StoreMotionOracle.StPartial] |
|
push0 [StoreMotionOracle.StTotal] |
|
R |
rb_glb [CSE3analysisaux] |
|
recompute_inumbs [BTL_Renumber] |
|
recompute_makespan [InstructionScheduler] |
|
reference_counting [BTL_BlockOptimizeraux] |
|
refine_analysis [CSE3analysisaux] |
|
refine_invariants [CSE3analysisaux] |
|
reg [PrintBTL] |
|
reg_pres_scheduler [InstructionScheduler] |
WIP : Same as list_scheduler, but schedules instructions which decrease
register pressure when it gets too high.
|
reg_pres_scheduler_bis [InstructionScheduler] |
|
regenerate_btl_tree [BTL_Renumber] |
|
regs [PrintBTL] |
|
rel_abstract_analysis [PrepassSchedulingOracle] |
|
rel_eval_op [PrepassSchedulingOracle] |
|
rel_loc_of_rv_chunk [PrepassSchedulingOracle] |
|
relvalue_add [PrepassSchedulingOracle] |
|
relvalue_add_imm [PrepassSchedulingOracle] |
|
relvalue_sub [PrepassSchedulingOracle] |
|
remove_addr [StoreMotionOracle.StPartial] |
|
remove_addr [StoreMotionOracle.StTotal] |
|
renumber [BTL_Renumber] |
|
reset_stats [Duplicateaux] |
|
reset_stats [LazyCodeCore] |
|
reset_visited_ib_rec [BTLcommonaux] |
|
reset_visited_ibf [BTLcommonaux] |
|
resource_bounds [OpWeights.KV3] |
|
resources_of_builtin [OpWeights.KV3] |
|
resources_of_call [OpWeights.KV3] |
|
resources_of_cond [OpWeights.KV3] |
|
resources_of_instruction [PrepassSchedulingOracle] |
|
resources_of_load [OpWeights.KV3] |
|
resources_of_op [OpWeights.KV3] |
|
resources_of_store [OpWeights.KV3] |
|
reverse_list_scheduler [InstructionScheduler] |
Schedule a problem from the end using a list scheduler.
|
rewrite_graph [LazyCodeOracle] |
|
right_call [Duplicateaux] |
|
right_loop2 [Duplicateaux] |
|
right_opcode [Duplicateaux] |
|
right_return [Duplicateaux] |
|
ros [PrintBTL] |
|
rotate_inner_loop [Duplicateaux] |
|
rotate_inner_loops [Duplicateaux] |
|
rotatel [Bitv] |
moves bits from least to most significant with wraparound
|
rotater [Bitv] |
moves bits from most to least significant with wraparound
|
round_robin [LazyCodeOracle] |
Main dataflow function: a unidirectionnal round-robin worklist (in wl )
based dataflow algorithm taking a transfer function tf as parameter,
and working on a single candidate cand at a time.
|
rtl2btl [RTLtoBTLaux] |
Main translation function, that can either build basic-blocks or
superblocks, and that can optionnaly insert synthetic nodes
|
rtl2btl_BB [RTLtoBTLaux] |
Translate from RTL to BTL with basic-blocks
|
rtl2btl_BBSN [RTLtoBTLaux] |
Translate from RTL to BTL with basic-blocks and synthetic nodes
|
rtl2btl_SB [RTLtoBTLaux] |
Translate from RTL to BTL with superblocks
|
rtl_successors [Duplicateaux] |
|
rtl_successors_pref [Duplicateaux] |
|
S |
s_join [StoreMotionOracle.St_type] |
|
s_join [StoreMotionOracle.StPartial] |
|
s_join [StoreMotionOracle.StTotal] |
|
save_stats [BTL_IfLiftingOracle] |
|
save_stats [LazyCodeCore] |
|
schedule_blk [BTL_BlockOptimizer] |
|
schedule_get_positions [BTL_IfLiftingOracle] |
|
schedule_reversed [InstructionScheduler] |
Schedule a problem using a scheduler applied in the opposite direction, e.g.
|
schedule_sequence [PrepassSchedulingOracle] |
|
schedule_tf [BTL_BlockOptimizer] |
|
scheduler_by_name [InstructionScheduler] |
Schedule a problem using a scheduler given by a string name
|
select_traces [Duplicateaux] |
|
select_traces_chang [Duplicateaux] |
|
select_traces_linear [Duplicateaux] |
|
select_unvisited_node [Duplicateaux] |
|
self_inv_annot [StoreMotionOracle.St_type] |
|
self_inv_annot [StoreMotionOracle.StPartial] |
|
self_inv_annot [StoreMotionOracle.StTotal] |
|
set [Bitv] |
(Bitv.set v n b) sets the n th bit of v to the value b .
|
set_lct_targets [LazyCodeOracle] |
Set insertion and replacement points in the candidate record.
|
set_predicate_cand [LazyCodeCore] |
|
set_predicate_value [LazyCodeCore] |
|
set_predicates_array [LazyCodeCore] |
Write an array of predicates preds with an array of solutions sols .
|
set_stats_oc [Duplicateaux] |
|
shiftl [Bitv] |
moves bits from least to most significant; introduces zeros
|
shiftr [Bitv] |
moves bits from most to least significant; introduces zeros
|
show_date_ranges [InstructionScheduler] |
|
simple_schedule [BTL_BlockOptimizer] |
|
simplify_id [BTLtoRTLaux] |
|
slice [StoreMotionOracle] |
|
smash [StoreMotionOracle.St_type] |
|
smash [StoreMotionOracle.StPartial] |
|
smash [StoreMotionOracle.StTotal] |
|
smash_all [StoreMotionOracle.St_type] |
|
smash_all [StoreMotionOracle.StPartial] |
|
smash_all [StoreMotionOracle.StTotal] |
|
smash_reg [StoreMotionOracle.St_type] |
|
smash_reg [StoreMotionOracle.StPartial] |
|
smash_reg [StoreMotionOracle.StTotal] |
|
smt_print_problem [InstructionScheduler] |
|
solution_to_position [PrepassSchedulingOracle] |
|
sort_elts [PrintBTL] |
|
split_at [StoreMotionOracle] |
|
sr_update_add [LazyCodeOracle] |
|
sr_update_mul [LazyCodeOracle] |
|
stat_code_motion [LazyCodeCore] |
|
stat_nb_compense [BTL_IfLiftingOracle] |
|
stat_nb_if_lift [BTL_IfLiftingOracle] |
|
stat_nb_makespan_gain [BTL_IfLiftingOracle] |
|
static_predict [Duplicateaux] |
|
stats [LazyCodeCore] |
|
stats_nb_correct_predicts [Duplicateaux] |
|
stats_nb_mispredicts [Duplicateaux] |
|
stats_nb_missed_opportunities [Duplicateaux] |
|
stats_nb_overpredict [Duplicateaux] |
|
stats_nb_total [Duplicateaux] |
|
stats_oc [Duplicateaux] |
|
stats_oc_recording [Duplicateaux] |
|
store_cand [StoreMotionOracle] |
|
store_list_before [StoreMotionOracle] |
|
strength_reduce_update [LazyCodeOracle] |
Insert update assignments for strength reduction candidates
|
strength_reduction [LazyCodeOracle] |
|
string_of_chunk [CSE3analysisaux] |
|
sub [Bitv] |
(Bitv.sub v start len) returns a fresh
vector of length len , containing the bits number start to
start + len - 1 of vector v .
|
subset [StoreMotionOracle.St_type] |
|
subset [StoreMotionOracle.StPartial] |
|
subset [StoreMotionOracle.StTotal] |
|
subst_arg [LazyCodeOracle] |
|
subst_arg_list [LazyCodeOracle] |
|
subst_inst [BTLtoRTLaux] |
|
substcrit_tf [LazyCodeOracle] |
Subst-Crit transfer function
sols.(0) should be nsubstcrit and sols.(1) should be xsubstcrit.
|
successors_block [BTLcommonaux] |
|
successors_instr_btl [BTLcommonaux] |
|
superblockify_traces [Duplicateaux] |
|
T |
t_join [StoreMotionOracle.St_type] |
|
t_join [StoreMotionOracle.StPartial] |
|
t_join [StoreMotionOracle.StTotal] |
|
tail_duplicate [Duplicateaux] |
|
tf_ibf_ib [BTLcommonaux] |
|
to_bytes [Bitv] |
|
to_file [PrintBTL.PrintGV] |
|
to_int32_s [Bitv] |
|
to_int32_us [Bitv] |
|
to_int64_s [Bitv] |
|
to_int64_us [Bitv] |
|
to_int_s [Bitv] |
|
to_int_us [Bitv] |
|
to_list [Bitv] |
|
to_nativeint_s [Bitv] |
|
to_nativeint_us [Bitv] |
|
to_string [Bitv.M] |
|
to_string [Bitv.L] |
|
transfer [BTL_Liveness] |
|
transfer [StoreMotionOracle.Make] |
|
transfer_core [StoreMotionOracle.Make] |
|
translate_function [RTLtoBTLaux] |
|
translate_function [BTLtoRTLaux] |
|
translate_inst [RTLtoBTLaux] |
|
traverse_iblock [StoreMotionOracle] |
|
turn_all_loads_nontrap [BTL_BlockOptimizer] |
|
U |
u_safe_tf [LazyCodeOracle] |
U_Safe transfer function
sols.(0) should be nusafe and sols.(1) should be xusafe.
|
undef_node [BTLcommonaux] |
|
union_list [CSE3analysisaux] |
|
unroll_body [Duplicateaux] |
|
unroll_inner_loop_body [Duplicateaux] |
|
unroll_inner_loop_single [Duplicateaux] |
|
unroll_inner_loops_body [Duplicateaux] |
|
unroll_inner_loops_single [Duplicateaux] |
|
unroll_single [Duplicateaux] |
|
unsafe_get [Bitv] |
|
unsafe_set [Bitv] |
|
update_args_ckey [LazyCodeOracle] |
|
update_ckey [LazyCodeOracle] |
|
update_direction [Duplicateaux] |
|
update_directions [Duplicateaux] |
|
update_liveness_btl [BTL_Liveness] |
|
update_tf [LazyCodeOracle] |
Update transfer function
sols contains the single equation.
|
use_alias_analysis [PrepassSchedulingOracle] |
|
V |
validated_scheduler [InstructionScheduler] |
Apply a scheduler and validate the result against the input problem.
|
W |
write_stats [StoreMotionOracle] |
|
write_stats [BTL_IfLiftingOracle] |
|
write_stats [LazyCodeCore] |
|
write_stats_oc [Duplicateaux] |
|
write_stats_opt [StoreMotionOracle] |
|
wrong_call [Duplicateaux] |
|
wrong_loop2 [Duplicateaux] |
|
wrong_opcode [Duplicateaux] |
|
wrong_return [Duplicateaux] |
|
Z |
zigzag_scheduler [PrepassSchedulingOracle] |
|