1 /*
2  * Copyright (c) 2018, NVIDIA CORPORATION.  All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 
18 #ifndef EXPUTIL_H_
19 #define EXPUTIL_H_
20 
21 #include "gbldefs.h"
22 #include "global.h"
23 #include "symtab.h"
24 
25 /**
26    \brief ...
27  */
28 int access_swtab_base_label(int base_label, int sptr, int flag);
29 
30 /**
31    \brief ...
32  */
33 int access_swtab_case_label(int case_label, int *case_val, int sptr, int flag);
34 
35 /**
36    \brief ...
37  */
38 int add_reg_arg_ili(int arglist, int argili, int nmex, DTYPE dtype);
39 
40 /**
41    \brief ...
42  */
43 int check_ilm(int ilmx, int ilix);
44 
45 /**
46    \brief ...
47  */
48 SPTR find_argasym(int sptr);
49 
50 /**
51    \brief ...
52  */
53 SPTR get_byval_local(int argsptr);
54 
55 /**
56    \brief ...
57  */
58 SPTR mk_argasym(int sptr);
59 
60 /**
61    \brief ...
62  */
63 int mk_impsym(SPTR sptr);
64 
65 /**
66    \brief ...
67  */
68 int mk_swlist(INT n, SWEL *swhdr, int doinit);
69 
70 /**
71    \brief ...
72  */
73 int mk_swtab(INT n, SWEL *swhdr, int deflab, int doinit);
74 
75 /**
76    \brief ...
77  */
78 int mk_swtab_ll(INT n, SWEL *swhdr, int deflab, int doinit);
79 
80 /**
81    \brief ...
82  */
83 SPTR mkfunc_cncall(const char *nmptr);
84 
85 /**
86    \brief ...
87  */
88 SPTR mkfunc_sflags(const char *nmptr, const char *flags);
89 
90 /**
91    \brief ...
92  */
93 void chk_block(int newili);
94 
95 /**
96    \brief ...
97  */
98 void chk_block_suppress_throw(int newili);
99 
100 /**
101    \brief ...
102  */
103 void cr_block(void);
104 
105 /**
106    \brief add IL_LD of the rhs, IL_ST to the lhs, for two integer-type symbols
107  */
108 void exp_add_copy(SPTR lhssptr, SPTR rhssptr);
109 
110 /**
111    \brief ...
112  */
113 void expdumpilms(void);
114 
115 /**
116    \brief ...
117  */
118 void flsh_block(void);
119 
120 /**
121    \brief ...
122  */
123 void mkarglist(int cnt, DTYPE dt);
124 
125 /**
126    \brief ...
127  */
128 void put_funccount(void);
129 
130 /**
131    \brief ...
132  */
133 void wr_block(void);
134 
135 #endif
136