[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 7/8] tcg/optimize: add constant folding for setc
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH 7/8] tcg/optimize: add constant folding for setcond |
Date: |
Thu, 06 Sep 2012 09:40:57 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120828 Thunderbird/15.0 |
On 09/06/2012 08:00 AM, Aurelien Jarno wrote:
> Signed-off-by: Aurelien Jarno <address@hidden>
> ---
> tcg/optimize.c | 79
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 79 insertions(+)
>
> diff --git a/tcg/optimize.c b/tcg/optimize.c
> index 7debc8a..c4af1e8 100644
> --- a/tcg/optimize.c
> +++ b/tcg/optimize.c
> @@ -267,6 +267,65 @@ static TCGArg do_constant_folding(TCGOpcode op, TCGArg
> x, TCGArg y)
> return res;
> }
>
> +static TCGArg do_constant_folding_cond(TCGOpcode op, TCGArg x,
> + TCGArg y, TCGCond c)
> +{
> + switch (op_bits(op)) {
> + case 32:
> + switch (c) {
> + case TCG_COND_EQ:
> + return (uint32_t)x == (uint32_t)y;
> + case TCG_COND_NE:
> + return (uint32_t)x != (uint32_t)y;
> + case TCG_COND_LT:
> + return (int32_t)x < (int32_t)y;
> + case TCG_COND_GE:
> + return (int32_t)x >= (int32_t)y;
> + case TCG_COND_LE:
> + return (int32_t)x <= (int32_t)y;
> + case TCG_COND_GT:
> + return (int32_t)x > (int32_t)y;
> + case TCG_COND_LTU:
> + return (uint32_t)x < (uint32_t)y;
> + case TCG_COND_GEU:
> + return (uint32_t)x >= (uint32_t)y;
> + case TCG_COND_LEU:
> + return (uint32_t)x <= (uint32_t)y;
> + case TCG_COND_GTU:
> + return (uint32_t)x > (uint32_t)y;
> + }
> + case 64:
> + switch (c) {
> + case TCG_COND_EQ:
> + return (uint64_t)x == (uint64_t)y;
> + case TCG_COND_NE:
> + return (uint64_t)x != (uint64_t)y;
> + case TCG_COND_LT:
> + return (int64_t)x < (int64_t)y;
> + case TCG_COND_GE:
> + return (int64_t)x >= (int64_t)y;
> + case TCG_COND_LE:
> + return (int64_t)x <= (int64_t)y;
> + case TCG_COND_GT:
> + return (int64_t)x > (int64_t)y;
> + case TCG_COND_LTU:
> + return (uint64_t)x < (uint64_t)y;
> + case TCG_COND_GEU:
> + return (uint64_t)x >= (uint64_t)y;
> + case TCG_COND_LEU:
> + return (uint64_t)x <= (uint64_t)y;
> + case TCG_COND_GTU:
> + return (uint64_t)x > (uint64_t)y;
> + }
> + default:
> + fprintf(stderr,
> + "Unrecognized bitness %d or condition %d in "
> + "do_constant_folding_cond.\n", op_bits(op), c);
> + tcg_abort();
> + }
You probably don't want the default here, but the statements after
the outer switch, and with proper breaks between the two cases.
Otherwise the error doesn't do what you wanted it to do.
r~
- [Qemu-devel] [PATCH 0/8] Improve TCG optimizer, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 1/8] tcg: improve profiler, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 4/8] tcg/optimize: simplify and r, a, 0 cases, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 2/8] tcg/optimize: split expression simplification, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 8/8] tcg/optimize: add constant folding for brcond, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 6/8] tcg/optimize: swap brcond/setcond arguments when possible, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 7/8] tcg/optimize: add constant folding for setcond, Aurelien Jarno, 2012/09/06
- Re: [Qemu-devel] [PATCH 7/8] tcg/optimize: add constant folding for setcond,
Richard Henderson <=
- [Qemu-devel] [PATCH 5/8] tcg/optimize: simplify shift/rot r, 0, a => movi r, 0 cases, Aurelien Jarno, 2012/09/06
- [Qemu-devel] [PATCH 3/8] tcg/optimize: simplify or/xor r, a, 0 cases, Aurelien Jarno, 2012/09/06
- Re: [Qemu-devel] [PATCH 0/8] Improve TCG optimizer, Richard Henderson, 2012/09/06
- Re: [Qemu-devel] [PATCH 0/8] Improve TCG optimizer, Peter Maydell, 2012/09/07