Commit b314f2706b7db8def5d4e82024fd8e7d244493ef

Authored by bellard
1 parent 4f7de373

suppressed unused macro handling

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4580 c046a42c-6fe2-441c-8c8c-71466251a162
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);
... ...