2
-record(rtl, {'fun', %% Name of the function (MFA)
3
args, %% List of argument names (formals)
4
closure, %% True if this is code for a closure.
5
leaf, %% True if this is a leaf function.
6
code, %% Linear list of rtl-instructions.
8
var_range, %% {Min,Max} First and last name used for
9
%% regs fpregs or vars.
10
%% (they use a common namespace)
11
label_range, %% {Min,Max} First and last name used for labels
12
info=[] %% A keylist with arbitrary information.
15
-record(move, {dst, src, info}).
16
-record(multimove, {dst, src, info}).
17
-record(alu, {dst, src1, op, src2, info}).
18
-record(load, {dst, src, off, size, sign, info}).
19
-record(store, {dst, off, src, size, info}).
20
-record(load_address, {dst, address, type, info}).
21
-record(branch, {src1, src2, 'cond', true_label, false_label, p, info}).
22
-record(switch, {src, labels, sorted_by=[], info}).
23
-record(alub, {dst, src1, op, src2, 'cond', true_label, false_label, p, info}).
24
-record(call, {dst, 'fun', args, type, continuation, failcontinuation, info}).
25
-record(enter, {'fun', args, type, info}).
26
-record(return, {vars, info}).
27
-record(gctest, {words, info}).
28
-record(load_atom, {dst, atom, info}).
29
-record(load_word_index, {dst, block, index, info}).
30
-record(goto_index, {block, index, labels, info}).
31
-record(label, {name, info}).
32
-record(restore_catch, {vars, info}).
33
-record(comment, {text, info}).
34
-record(goto, {label, info}).
35
-record(fail_to, {reason, label, info}).
36
-record(fload, {dst, src, off, info}).
37
-record(fstore, {dst, off, src, info}).
38
-record(fmov, {dst, src, info=[]}).
39
-record(fp, {dst, src1, op, src2, info}).
40
-record(fp_unop, {dst, src, op, info}).
41
-record(fconv, {dst, src, info=[]}).
1
%% -*- erlang-indent-level: 2 -*-
2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4
%% Provides the abstract datatypes for HiPE's RTL (Register Transfer Language).
6
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8
-record(alu, {dst, src1, op, src2}).
9
-record(alub, {dst, src1, op, src2, 'cond', true_label, false_label, p}).
10
-record(branch, {src1, src2, 'cond', true_label, false_label, p}).
11
-record(call, {dstlist, 'fun', arglist, type, continuation, failcontinuation}).
12
-record(comment, {text}).
13
-record(enter, {'fun', arglist, type}).
14
-record(fconv, {dst, src}).
15
-record(fixnumop, {dst, src, type}).
16
-record(fload, {dst, src, offset}).
17
-record(fmove, {dst, src}).
18
-record(fp, {dst, src1, op, src2}).
19
-record(fp_unop, {dst, src, op}).
20
-record(fstore, {base, offset, src}).
21
-record(gctest, {words}).
22
-record(binbase, {dst, orig, offset}).
23
-record(goto, {label}).
24
-record(goto_index, {block, index, labels}).
25
-record(label, {name}).
26
-record(load, {dst, src, offset, size, sign}).
27
-record(load_address, {dst, address, type}).
28
-record(load_atom, {dst, atom}).
29
-record(load_word_index, {dst, block, index}).
30
-record(move, {dst, src}).
31
-record(multimove, {dstlist, srclist}).
32
-record(phi, {dst, id, arglist}).
33
-record(return, {varlist}).
34
-record(store, {base, offset, src, size}).
35
-record(switch, {src, labels, sorted_by=[]}).
37
%%---------------------------------------------------------------------
39
%% An efficient macro to convert byte sizes to bit sizes
40
-define(bytes_to_bits(Bytes), ((Bytes) bsl 3)). % (N * 8)
42
%%---------------------------------------------------------------------