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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
%% ========================-*-erlang-*-=================================
%%
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 2003-2009. All Rights Reserved.
%%
%% The contents of this file are subject to the Erlang Public License,
%% Version 1.1, (the "License"); you may not use this file except in
%% compliance with the License. You should have received a copy of the
%% Erlang Public License along with this software. If not, it can be
%% retrieved online at http://www.erlang.org/.
%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and limitations
%% under the License.
%%
%% %CopyrightEnd%
%%
%% Predefined Core Erlang primitive operations used by HiPE
%%
%% Copyright (C) 2000 Richard Carlsson
%%
%% Author contact: [email protected]
%% =====================================================================
%% These definitions give the names of Core Erlang primops recognized by
%% HiPE. Many of them (e.g., 'not'/'and'/'or', and the type tests), are
%% not primops on the Icode level, but are inline-expanded by the
%% translation from Core Erlang to Icode, or are renamed/rewritten to a
%% corresponding ICode primop; they only exist to help the translation.
%%-define(PRIMOP_IDENTITY, identity). % arity 1
-define(PRIMOP_NOT, 'not'). % arity 1
-define(PRIMOP_AND, 'and'). % arity 2
-define(PRIMOP_OR, 'or'). % arity 2
-define(PRIMOP_XOR, 'xor'). % arity 2
-define(PRIMOP_ADD, '+'). % arity 2
-define(PRIMOP_SUB, '-'). % arity 2
-define(PRIMOP_NEG, neg). % arity 1
-define(PRIMOP_MUL, '*'). % arity 2
-define(PRIMOP_DIV, '/'). % arity 2
-define(PRIMOP_INTDIV, 'div'). % arity 2
-define(PRIMOP_REM, 'rem'). % arity 2
-define(PRIMOP_BAND, 'band'). % arity 2
-define(PRIMOP_BOR, 'bor'). % arity 2
-define(PRIMOP_BXOR, 'bxor'). % arity 2
-define(PRIMOP_BNOT, 'bnot'). % arity 1
-define(PRIMOP_BSL, 'bsl'). % arity 2
-define(PRIMOP_BSR, 'bsr'). % arity 2
-define(PRIMOP_EQ, '=='). % arity 2
-define(PRIMOP_NE, '/='). % arity 2
-define(PRIMOP_EXACT_EQ, '=:='). % arity 2
-define(PRIMOP_EXACT_NE, '=/='). % arity 2
-define(PRIMOP_LT, '<'). % arity 2
-define(PRIMOP_GT, '>'). % arity 2
-define(PRIMOP_LE, '=<'). % arity 2
-define(PRIMOP_GE, '>='). % arity 2
-define(PRIMOP_IS_ATOM, 'is_atom'). % arity 1
-define(PRIMOP_IS_BIGNUM, 'is_bignum'). % arity 1
-define(PRIMOP_IS_BINARY, 'is_binary'). % arity 1
-define(PRIMOP_IS_CONSTANT, 'is_constant'). % arity 1
-define(PRIMOP_IS_FIXNUM, 'is_fixnum'). % arity 1
-define(PRIMOP_IS_FLOAT, 'is_float'). % arity 1
-define(PRIMOP_IS_FUNCTION, 'is_function'). % arity 1
-define(PRIMOP_IS_INTEGER, 'is_integer'). % arity 1
-define(PRIMOP_IS_LIST, 'is_list'). % arity 1
-define(PRIMOP_IS_NUMBER, 'is_number'). % arity 1
-define(PRIMOP_IS_PID, 'is_pid'). % arity 1
-define(PRIMOP_IS_PORT, 'is_port'). % arity 1
-define(PRIMOP_IS_REFERENCE, 'is_reference'). % arity 1
-define(PRIMOP_IS_TUPLE, 'is_tuple'). % arity 1
-define(PRIMOP_IS_RECORD, 'is_record'). % arity 3
-define(PRIMOP_EXIT, exit). % arity 1
-define(PRIMOP_THROW, throw). % arity 1
-define(PRIMOP_ERROR, error). % arity 1,2
-define(PRIMOP_RETHROW, raise). % arity 2
-define(PRIMOP_RECEIVE_SELECT, receive_select). % arity 0
-define(PRIMOP_RECEIVE_NEXT, receive_next). % arity 0
-define(PRIMOP_ELEMENT, element). % arity 2
-define(PRIMOP_DSETELEMENT, dsetelement). % arity 3
-define(PRIMOP_MAKE_FUN, make_fun). % arity 6
-define(PRIMOP_APPLY_FUN, apply_fun). % arity 2
-define(PRIMOP_FUN_ELEMENT, closure_element). % arity 2
-define(PRIMOP_SET_LABEL, set_label). % arity 1
-define(PRIMOP_GOTO_LABEL, goto_label). % arity 1
-define(PRIMOP_REDUCTION_TEST, reduction_test). % arity 0
-define(PRIMOP_BS_CONTEXT_TO_BINARY, bs_context_to_binary). % arity 1
|