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,12 +1396,6 @@ static inline void tcg_gen_discard_i64(TCGv arg)
1396 #endif 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 /* QEMU specific operations. Their type depend on the QEMU CPU 1399 /* QEMU specific operations. Their type depend on the QEMU CPU
1406 type. */ 1400 type. */
1407 #ifndef TARGET_LONG_BITS 1401 #ifndef TARGET_LONG_BITS
tcg/tcg-opc.h
@@ -36,11 +36,6 @@ DEF2(nop1, 0, 0, 1, 0) @@ -36,11 +36,6 @@ DEF2(nop1, 0, 0, 1, 0)
36 DEF2(nop2, 0, 0, 2, 0) 36 DEF2(nop2, 0, 0, 2, 0)
37 DEF2(nop3, 0, 0, 3, 0) 37 DEF2(nop3, 0, 0, 3, 0)
38 DEF2(nopn, 0, 0, 1, 0) /* variable number of parameters */ 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 DEF2(discard, 1, 0, 0, 0) 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,11 +259,6 @@ void tcg_set_frame(TCGContext *s, int reg,
259 s->frame_reg = reg; 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 void tcg_func_start(TCGContext *s) 262 void tcg_func_start(TCGContext *s)
268 { 263 {
269 int i; 264 int i;
@@ -1120,76 +1115,6 @@ void tcg_liveness_analysis(TCGContext *s) @@ -1120,76 +1115,6 @@ void tcg_liveness_analysis(TCGContext *s)
1120 /* mark the temporary as dead */ 1115 /* mark the temporary as dead */
1121 dead_temps[args[0]] = 1; 1116 dead_temps[args[0]] = 1;
1122 break; 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 case INDEX_op_end: 1118 case INDEX_op_end:
1194 break; 1119 break;
1195 /* XXX: optimize by hardcoding common cases (e.g. triadic ops) */ 1120 /* XXX: optimize by hardcoding common cases (e.g. triadic ops) */
@@ -1916,7 +1841,7 @@ void dump_op_count(void) @@ -1916,7 +1841,7 @@ void dump_op_count(void)
1916 static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf, 1841 static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf,
1917 long search_pc) 1842 long search_pc)
1918 { 1843 {
1919 - int opc, op_index, macro_op_index; 1844 + int opc, op_index;
1920 const TCGOpDef *def; 1845 const TCGOpDef *def;
1921 unsigned int dead_iargs; 1846 unsigned int dead_iargs;
1922 const TCGArg *args; 1847 const TCGArg *args;
@@ -1950,7 +1875,6 @@ static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf, @@ -1950,7 +1875,6 @@ static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf,
1950 s->code_buf = gen_code_buf; 1875 s->code_buf = gen_code_buf;
1951 s->code_ptr = gen_code_buf; 1876 s->code_ptr = gen_code_buf;
1952 1877
1953 - macro_op_index = -1;  
1954 args = gen_opparam_buf; 1878 args = gen_opparam_buf;
1955 op_index = 0; 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,19 +1926,6 @@ static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf,
2002 } 1926 }
2003 } 1927 }
2004 break; 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 case INDEX_op_set_label: 1929 case INDEX_op_set_label:
2019 tcg_reg_alloc_bb_end(s, s->reserved_regs); 1930 tcg_reg_alloc_bb_end(s, s->reserved_regs);
2020 tcg_out_label(s, args[0], (long)s->code_ptr); 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,10 +1963,7 @@ static inline int tcg_gen_code_common(TCGContext *s, uint8_t *gen_code_buf,
2052 args += def->nb_args; 1963 args += def->nb_args;
2053 next: ; 1964 next: ;
2054 if (search_pc >= 0 && search_pc < s->code_ptr - gen_code_buf) { 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 op_index++; 1968 op_index++;
2061 #ifndef NDEBUG 1969 #ifndef NDEBUG
tcg/tcg.h
@@ -205,8 +205,6 @@ typedef struct TCGHelperInfo { @@ -205,8 +205,6 @@ typedef struct TCGHelperInfo {
205 205
206 typedef struct TCGContext TCGContext; 206 typedef struct TCGContext TCGContext;
207 207
208 -typedef void TCGMacroFunc(TCGContext *s, int macro_id, const int *dead_args);  
209 -  
210 struct TCGContext { 208 struct TCGContext {
211 uint8_t *pool_cur, *pool_end; 209 uint8_t *pool_cur, *pool_end;
212 TCGPool *pool_first, *pool_current; 210 TCGPool *pool_first, *pool_current;
@@ -240,7 +238,6 @@ struct TCGContext { @@ -240,7 +238,6 @@ struct TCGContext {
240 uint8_t *code_ptr; 238 uint8_t *code_ptr;
241 TCGTemp static_temps[TCG_MAX_TEMPS]; 239 TCGTemp static_temps[TCG_MAX_TEMPS];
242 240
243 - TCGMacroFunc *macro_func;  
244 TCGHelperInfo *helpers; 241 TCGHelperInfo *helpers;
245 int nb_helpers; 242 int nb_helpers;
246 int allocated_helpers; 243 int allocated_helpers;
@@ -301,7 +298,6 @@ int dyngen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, long offset); @@ -301,7 +298,6 @@ int dyngen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, long offset);
301 298
302 void tcg_set_frame(TCGContext *s, int reg, 299 void tcg_set_frame(TCGContext *s, int reg,
303 tcg_target_long start, tcg_target_long size); 300 tcg_target_long start, tcg_target_long size);
304 -void tcg_set_macro_func(TCGContext *s, TCGMacroFunc *func);  
305 TCGv tcg_global_reg_new(TCGType type, int reg, const char *name); 301 TCGv tcg_global_reg_new(TCGType type, int reg, const char *name);
306 TCGv tcg_global_reg2_new_hack(TCGType type, int reg1, int reg2, 302 TCGv tcg_global_reg2_new_hack(TCGType type, int reg1, int reg2,
307 const char *name); 303 const char *name);