Commit b314f2706b7db8def5d4e82024fd8e7d244493ef
1 parent
4f7de373
suppressed unused macro handling
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4580 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
2 additions
and
109 deletions
tcg/tcg-op.h
... | ... | @@ -1396,12 +1396,6 @@ static inline void tcg_gen_discard_i64(TCGv arg) |
1396 | 1396 | #endif |
1397 | 1397 | |
1398 | 1398 | /***************************************/ |
1399 | -static inline void tcg_gen_macro_2(TCGv ret0, TCGv ret1, int macro_id) | |
1400 | -{ | |
1401 | - tcg_gen_op3i(INDEX_op_macro_2, ret0, ret1, macro_id); | |
1402 | -} | |
1403 | - | |
1404 | -/***************************************/ | |
1405 | 1399 | /* QEMU specific operations. Their type depend on the QEMU CPU |
1406 | 1400 | type. */ |
1407 | 1401 | #ifndef TARGET_LONG_BITS | ... | ... |
tcg/tcg-opc.h
... | ... | @@ -36,11 +36,6 @@ DEF2(nop1, 0, 0, 1, 0) |
36 | 36 | DEF2(nop2, 0, 0, 2, 0) |
37 | 37 | DEF2(nop3, 0, 0, 3, 0) |
38 | 38 | DEF2(nopn, 0, 0, 1, 0) /* variable number of parameters */ |
39 | -/* macro handling */ | |
40 | -DEF2(macro_2, 2, 0, 1, 0) | |
41 | -DEF2(macro_start, 0, 0, 2, 0) | |
42 | -DEF2(macro_end, 0, 0, 2, 0) | |
43 | -DEF2(macro_goto, 0, 0, 3, 0) | |
44 | 39 | |
45 | 40 | DEF2(discard, 1, 0, 0, 0) |
46 | 41 | ... | ... |
tcg/tcg.c
... | ... | @@ -259,11 +259,6 @@ void tcg_set_frame(TCGContext *s, int reg, |
259 | 259 | s->frame_reg = reg; |
260 | 260 | } |
261 | 261 | |
262 | -void tcg_set_macro_func(TCGContext *s, TCGMacroFunc *func) | |
263 | -{ | |
264 | - s->macro_func = func; | |
265 | -} | |
266 | - | |
267 | 262 | void tcg_func_start(TCGContext *s) |
268 | 263 | { |
269 | 264 | int i; |
... | ... | @@ -1120,76 +1115,6 @@ void tcg_liveness_analysis(TCGContext *s) |
1120 | 1115 | /* mark the temporary as dead */ |
1121 | 1116 | dead_temps[args[0]] = 1; |
1122 | 1117 | break; |
1123 | - case INDEX_op_macro_2: | |
1124 | - { | |
1125 | - int dead_args[2], macro_id; | |
1126 | - int saved_op_index, saved_arg_index; | |
1127 | - int macro_op_index, macro_arg_index; | |
1128 | - int macro_end_op_index, macro_end_arg_index; | |
1129 | - int last_nb_temps; | |
1130 | - | |
1131 | - nb_args = 3; | |
1132 | - args -= nb_args; | |
1133 | - dead_args[0] = dead_temps[args[0]]; | |
1134 | - dead_args[1] = dead_temps[args[1]]; | |
1135 | - macro_id = args[2]; | |
1136 | - | |
1137 | - /* call the macro function which generate code | |
1138 | - depending on the live outputs */ | |
1139 | - saved_op_index = op_index; | |
1140 | - saved_arg_index = args - gen_opparam_buf; | |
1141 | - | |
1142 | - /* add a macro start instruction */ | |
1143 | - *gen_opc_ptr++ = INDEX_op_macro_start; | |
1144 | - *gen_opparam_ptr++ = saved_op_index; | |
1145 | - *gen_opparam_ptr++ = saved_arg_index; | |
1146 | - | |
1147 | - macro_op_index = gen_opc_ptr - gen_opc_buf; | |
1148 | - macro_arg_index = gen_opparam_ptr - gen_opparam_buf; | |
1149 | - | |
1150 | - last_nb_temps = s->nb_temps; | |
1151 | - | |
1152 | - s->macro_func(s, macro_id, dead_args); | |
1153 | - | |
1154 | - /* realloc temp info (XXX: make it faster) */ | |
1155 | - if (s->nb_temps > last_nb_temps) { | |
1156 | - uint8_t *new_dead_temps; | |
1157 | - | |
1158 | - new_dead_temps = tcg_malloc(s->nb_temps); | |
1159 | - memcpy(new_dead_temps, dead_temps, last_nb_temps); | |
1160 | - memset(new_dead_temps + last_nb_temps, 1, | |
1161 | - s->nb_temps - last_nb_temps); | |
1162 | - dead_temps = new_dead_temps; | |
1163 | - } | |
1164 | - | |
1165 | - macro_end_op_index = gen_opc_ptr - gen_opc_buf; | |
1166 | - macro_end_arg_index = gen_opparam_ptr - gen_opparam_buf; | |
1167 | - | |
1168 | - /* end of macro: add a goto to the next instruction */ | |
1169 | - *gen_opc_ptr++ = INDEX_op_macro_end; | |
1170 | - *gen_opparam_ptr++ = op_index + 1; | |
1171 | - *gen_opparam_ptr++ = saved_arg_index + nb_args; | |
1172 | - | |
1173 | - /* modify the macro operation to be a macro_goto */ | |
1174 | - gen_opc_buf[op_index] = INDEX_op_macro_goto; | |
1175 | - args[0] = macro_op_index; | |
1176 | - args[1] = macro_arg_index; | |
1177 | - args[2] = 0; /* dummy third arg to match the | |
1178 | - macro parameters */ | |
1179 | - | |
1180 | - /* set the next instruction to the end of the macro */ | |
1181 | - op_index = macro_end_op_index; | |
1182 | - args = macro_end_arg_index + gen_opparam_buf; | |
1183 | - } | |
1184 | - break; | |
1185 | - case INDEX_op_macro_start: | |
1186 | - args -= 2; | |
1187 | - op_index = args[0]; | |
1188 | - args = gen_opparam_buf + args[1]; | |
1189 | - break; | |
1190 | - case INDEX_op_macro_goto: | |
1191 | - case INDEX_op_macro_end: | |
1192 | - tcg_abort(); /* should never happen in liveness analysis */ | |
1193 | 1118 | case INDEX_op_end: |
1194 | 1119 | break; |
1195 | 1120 | /* XXX: optimize by hardcoding common cases (e.g. triadic ops) */ |
... | ... | @@ -1916,7 +1841,7 @@ void dump_op_count(void) |
1916 | 1841 | static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf, |
1917 | 1842 | long search_pc) |
1918 | 1843 | { |
1919 | - int opc, op_index, macro_op_index; | |
1844 | + int opc, op_index; | |
1920 | 1845 | const TCGOpDef *def; |
1921 | 1846 | unsigned int dead_iargs; |
1922 | 1847 | const TCGArg *args; |
... | ... | @@ -1950,7 +1875,6 @@ static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf, |
1950 | 1875 | s->code_buf = gen_code_buf; |
1951 | 1876 | s->code_ptr = gen_code_buf; |
1952 | 1877 | |
1953 | - macro_op_index = -1; | |
1954 | 1878 | args = gen_opparam_buf; |
1955 | 1879 | op_index = 0; |
1956 | 1880 | |
... | ... | @@ -2002,19 +1926,6 @@ static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf, |
2002 | 1926 | } |
2003 | 1927 | } |
2004 | 1928 | break; |
2005 | - case INDEX_op_macro_goto: | |
2006 | - macro_op_index = op_index; /* only used for exceptions */ | |
2007 | - op_index = args[0] - 1; | |
2008 | - args = gen_opparam_buf + args[1]; | |
2009 | - goto next; | |
2010 | - case INDEX_op_macro_end: | |
2011 | - macro_op_index = -1; /* only used for exceptions */ | |
2012 | - op_index = args[0] - 1; | |
2013 | - args = gen_opparam_buf + args[1]; | |
2014 | - goto next; | |
2015 | - case INDEX_op_macro_start: | |
2016 | - /* must never happen here */ | |
2017 | - tcg_abort(); | |
2018 | 1929 | case INDEX_op_set_label: |
2019 | 1930 | tcg_reg_alloc_bb_end(s, s->reserved_regs); |
2020 | 1931 | tcg_out_label(s, args[0], (long)s->code_ptr); |
... | ... | @@ -2052,10 +1963,7 @@ static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf, |
2052 | 1963 | args += def->nb_args; |
2053 | 1964 | next: ; |
2054 | 1965 | if (search_pc >= 0 && search_pc < s->code_ptr - gen_code_buf) { |
2055 | - if (macro_op_index >= 0) | |
2056 | - return macro_op_index; | |
2057 | - else | |
2058 | - return op_index; | |
1966 | + return op_index; | |
2059 | 1967 | } |
2060 | 1968 | op_index++; |
2061 | 1969 | #ifndef NDEBUG | ... | ... |
tcg/tcg.h
... | ... | @@ -205,8 +205,6 @@ typedef struct TCGHelperInfo { |
205 | 205 | |
206 | 206 | typedef struct TCGContext TCGContext; |
207 | 207 | |
208 | -typedef void TCGMacroFunc(TCGContext *s, int macro_id, const int *dead_args); | |
209 | - | |
210 | 208 | struct TCGContext { |
211 | 209 | uint8_t *pool_cur, *pool_end; |
212 | 210 | TCGPool *pool_first, *pool_current; |
... | ... | @@ -240,7 +238,6 @@ struct TCGContext { |
240 | 238 | uint8_t *code_ptr; |
241 | 239 | TCGTemp static_temps[TCG_MAX_TEMPS]; |
242 | 240 | |
243 | - TCGMacroFunc *macro_func; | |
244 | 241 | TCGHelperInfo *helpers; |
245 | 242 | int nb_helpers; |
246 | 243 | int allocated_helpers; |
... | ... | @@ -301,7 +298,6 @@ int dyngen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, long offset); |
301 | 298 | |
302 | 299 | void tcg_set_frame(TCGContext *s, int reg, |
303 | 300 | tcg_target_long start, tcg_target_long size); |
304 | -void tcg_set_macro_func(TCGContext *s, TCGMacroFunc *func); | |
305 | 301 | TCGv tcg_global_reg_new(TCGType type, int reg, const char *name); |
306 | 302 | TCGv tcg_global_reg2_new_hack(TCGType type, int reg1, int reg2, |
307 | 303 | const char *name); | ... | ... |