From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49178) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZKTw0-0003YP-A0 for qemu-devel@nongnu.org; Wed, 29 Jul 2015 12:10:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZKTvx-0006Jj-4t for qemu-devel@nongnu.org; Wed, 29 Jul 2015 12:10:24 -0400 Received: from mail-wi0-f180.google.com ([209.85.212.180]:33115) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZKTvw-0006Hx-SW for qemu-devel@nongnu.org; Wed, 29 Jul 2015 12:10:21 -0400 Received: by wicmv11 with SMTP id mv11so225494131wic.0 for ; Wed, 29 Jul 2015 09:10:20 -0700 (PDT) References: <1437755447-10537-1-git-send-email-aurelien@aurel32.net> <1437755447-10537-4-git-send-email-aurelien@aurel32.net> From: Alex =?utf-8?Q?Benn=C3=A9e?= In-reply-to: <1437755447-10537-4-git-send-email-aurelien@aurel32.net> Date: Wed, 29 Jul 2015 17:10:17 +0100 Message-ID: <87lhdzlzbq.fsf@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH for-2.5 03/10] tcg/optimize: track const/copy status separately List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Aurelien Jarno Cc: qemu-devel@nongnu.org, Richard Henderson Aurelien Jarno writes: > Use two bools to track constants and copies instead of an enum. More of an explanation would be useful as to why, otherwise it seems to me we are just increasing the size of the structure (assuming the compiler uses the same base sizes for the bool and enum). > > Cc: Richard Henderson > Signed-off-by: Aurelien Jarno > --- > tcg/optimize.c | 30 +++++++++++++++--------------- > 1 file changed, 15 insertions(+), 15 deletions(-) > > diff --git a/tcg/optimize.c b/tcg/optimize.c > index d2b63a4..f16eb1e 100644 > --- a/tcg/optimize.c > +++ b/tcg/optimize.c > @@ -35,14 +35,9 @@ > glue(glue(case INDEX_op_, x), _i32): \ > glue(glue(case INDEX_op_, x), _i64) > > -typedef enum { > - TCG_TEMP_UNDEF = 0, > - TCG_TEMP_CONST, > - TCG_TEMP_COPY, > -} tcg_temp_state; > - > struct tcg_temp_info { > - tcg_temp_state state; > + bool is_const; > + bool is_copy; > uint16_t prev_copy; > uint16_t next_copy; > tcg_target_ulong val; > @@ -54,12 +49,12 @@ static TCGTempSet temps_used; > > static inline bool temp_is_const(TCGArg arg) > { > - return temps[arg].state == TCG_TEMP_CONST; > + return temps[arg].is_const; > } > > static inline bool temp_is_copy(TCGArg arg) > { > - return temps[arg].state == TCG_TEMP_COPY; > + return temps[arg].is_copy; > } > > /* Reset TEMP's state to TCG_TEMP_UNDEF. If TEMP only had one copy, remove > @@ -68,13 +63,14 @@ static void reset_temp(TCGArg temp) > { > if (temp_is_copy(temp)) { > if (temps[temp].prev_copy == temps[temp].next_copy) { > - temps[temps[temp].next_copy].state = TCG_TEMP_UNDEF; > + temps[temps[temp].next_copy].is_copy = false; > } else { > temps[temps[temp].next_copy].prev_copy = temps[temp].prev_copy; > temps[temps[temp].prev_copy].next_copy = temps[temp].next_copy; > } > } > - temps[temp].state = TCG_TEMP_UNDEF; > + temps[temp].is_const = false; > + temps[temp].is_copy = false; > temps[temp].mask = -1; > } > > @@ -88,7 +84,8 @@ static void reset_all_temps(int nb_temps) > static void init_temp_info(TCGArg temp) > { > if (!test_bit(temp, temps_used.l)) { > - temps[temp].state = TCG_TEMP_UNDEF; > + temps[temp].is_const = false; > + temps[temp].is_copy = false; > temps[temp].mask = -1; > set_bit(temp, temps_used.l); > } > @@ -218,7 +215,8 @@ static void tcg_opt_gen_movi(TCGContext *s, TCGOp *op, TCGArg *args, > op->opc = new_op; > > reset_temp(dst); > - temps[dst].state = TCG_TEMP_CONST; > + temps[dst].is_const = true; > + temps[dst].is_copy = false; > temps[dst].val = val; > mask = val; > if (TCG_TARGET_REG_BITS > 32 && new_op == INDEX_op_movi_i32) { > @@ -261,11 +259,13 @@ static void tcg_opt_gen_mov(TCGContext *s, TCGOp *op, TCGArg *args, > > if (s->temps[src].type == s->temps[dst].type) { > if (!temp_is_copy(src)) { > - temps[src].state = TCG_TEMP_COPY; > + temps[src].is_const = false; > + temps[src].is_copy = true; > temps[src].next_copy = src; > temps[src].prev_copy = src; > } > - temps[dst].state = TCG_TEMP_COPY; > + temps[dst].is_const = false; > + temps[dst].is_copy = true; > temps[dst].next_copy = temps[src].next_copy; > temps[dst].prev_copy = src; > temps[temps[dst].next_copy].prev_copy = dst; -- Alex Bennée