[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 3/7] tcg: Swap commutative double-word compariso
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH 3/7] tcg: Swap commutative double-word comparisons |
Date: |
Fri, 28 Sep 2012 01:22:57 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Thu, Sep 27, 2012 at 10:19:53AM -0700, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <address@hidden>
> ---
> tcg/optimize.c | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
>
> diff --git a/tcg/optimize.c b/tcg/optimize.c
> index 004c336..d39926e 100644
> --- a/tcg/optimize.c
> +++ b/tcg/optimize.c
> @@ -397,6 +397,22 @@ static bool swap_commutative(TCGArg dest, TCGArg *p1,
> TCGArg *p2)
> return false;
> }
>
> +static bool swap_commutative2(TCGArg *p1, TCGArg *p2)
> +{
> + int sum = 0;
> + sum += temps[p1[0]].state == TCG_TEMP_CONST;
> + sum += temps[p1[1]].state == TCG_TEMP_CONST;
> + sum -= temps[p2[0]].state == TCG_TEMP_CONST;
> + sum -= temps[p2[1]].state == TCG_TEMP_CONST;
> + if (sum > 0) {
> + TCGArg t;
> + t = p1[0], p1[0] = p2[0], p2[0] = t;
> + t = p1[1], p1[1] = p2[1], p2[1] = t;
> + return true;
> + }
> + return false;
> +}
> +
> /* Propagate constants and copies, fold constant expressions. */
> static TCGArg *tcg_constant_folding(TCGContext *s, uint16_t *tcg_opc_ptr,
> TCGArg *args, TCGOpDef *tcg_op_defs)
> @@ -475,6 +491,16 @@ static TCGArg *tcg_constant_folding(TCGContext *s,
> uint16_t *tcg_opc_ptr,
> swap_commutative(args[0], &args[2], &args[4]);
> swap_commutative(args[1], &args[3], &args[5]);
> break;
> + case INDEX_op_brcond2_i32:
> + if (swap_commutative2(&args[0], &args[2])) {
> + args[4] = tcg_swap_cond(args[4]);
> + }
> + break;
> + case INDEX_op_setcond2_i32:
> + if (swap_commutative2(&args[1], &args[3])) {
> + args[5] = tcg_swap_cond(args[5]);
> + }
> + break;
> default:
> break;
> }
Reviewed-by: Aurelien Jarno <address@hidden>
--
Aurelien Jarno GPG: 1024D/F1BCDB73
address@hidden http://www.aurel32.net
- [Qemu-devel] [PATCH 0/7] Double-word tcg/optimize improvements, Richard Henderson, 2012/09/27
- [Qemu-devel] [PATCH 1/7] tcg: Split out swap_commutative as a subroutine, Richard Henderson, 2012/09/27
- [Qemu-devel] [PATCH 2/7] tcg: Optimize add2 + sub2, Richard Henderson, 2012/09/27
- [Qemu-devel] [PATCH 4/7] tcg: Optimize double-word comparisons against zero, Richard Henderson, 2012/09/27
- [Qemu-devel] [PATCH 7/7] tcg: Do constant folding on double-word comparisons, Richard Henderson, 2012/09/27
- [Qemu-devel] [PATCH 6/7] tcg: Tidy brcond optimization, Richard Henderson, 2012/09/27
- [Qemu-devel] [PATCH 3/7] tcg: Swap commutative double-word comparisons, Richard Henderson, 2012/09/27
- Re: [Qemu-devel] [PATCH 3/7] tcg: Swap commutative double-word comparisons,
Aurelien Jarno <=
- [Qemu-devel] [PATCH 5/7] tcg: Split out subroutines from do_constant_folding_cond, Richard Henderson, 2012/09/27