Index of values

(!$+) [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]

bitwise NOT

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]

Main dataflow analysis.

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 nth 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]

the useful one.

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 nth 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]