[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 08/10] tcg: Save flags and computed sizemask in
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH 08/10] tcg: Save flags and computed sizemask in TCGHelperInfo |
Date: |
Tue, 13 May 2014 10:38:29 +0100 |
User-agent: |
mu4e 0.9.9.6pre3; emacs 24.3.91.1 |
Richard Henderson <address@hidden> writes:
> Signed-off-by: Richard Henderson <address@hidden>
> ---
<snip>
> +#define DEF_HELPER_FLAGS_0(NAME, FLAGS, ret) \
> + { .func = HELPER(NAME), .name = #NAME, .flags = FLAGS, \
> + .sizemask = dh_sizemask(ret, 0) },
> +
> +#define DEF_HELPER_FLAGS_1(NAME, FLAGS, ret, t1) \
> + { .func = HELPER(NAME), .name = #NAME, .flags = FLAGS, \
> + .sizemask = dh_sizemask(ret, 0) | dh_sizemask(t1, 1) },
> +
> +#define DEF_HELPER_FLAGS_2(NAME, FLAGS, ret, t1, t2) \
> + { .func = HELPER(NAME), .name = #NAME, .flags = FLAGS, \
> + .sizemask = dh_sizemask(ret, 0) | dh_sizemask(t1, 1) \
> + | dh_sizemask(t2, 2) },
> +
> +#define DEF_HELPER_FLAGS_3(NAME, FLAGS, ret, t1, t2, t3) \
> + { .func = HELPER(NAME), .name = #NAME, .flags = FLAGS, \
> + .sizemask = dh_sizemask(ret, 0) | dh_sizemask(t1, 1) \
> + | dh_sizemask(t2, 2) | dh_sizemask(t3, 3) },
> +
> +#define DEF_HELPER_FLAGS_4(NAME, FLAGS, ret, t1, t2, t3, t4) \
> + { .func = HELPER(NAME), .name = #NAME, .flags = FLAGS, \
> + .sizemask = dh_sizemask(ret, 0) | dh_sizemask(t1, 1) \
> + | dh_sizemask(t2, 2) | dh_sizemask(t3, 3) | dh_sizemask(t4, 4) },
> +
> +#define DEF_HELPER_FLAGS_5(NAME, FLAGS, ret, t1, t2, t3, t4, t5) \
> + { .func = HELPER(NAME), .name = #NAME, .flags = FLAGS, \
> + .sizemask = dh_sizemask(ret, 0) | dh_sizemask(t1, 1) \
> + | dh_sizemask(t2, 2) | dh_sizemask(t3, 3) | dh_sizemask(t4, 4) \
> + | dh_sizemask(t5, 5) },
I'll come back to this when I understand the sizemask stuff better.
>
> #include "helper.h"
> #include "tcg-runtime.h"
> diff --git a/tcg/tcg.c b/tcg/tcg.c
> index 3bbf982..d71a9bf 100644
> --- a/tcg/tcg.c
> +++ b/tcg/tcg.c
> @@ -310,6 +310,8 @@ void tcg_pool_reset(TCGContext *s)
> typedef struct TCGHelperInfo {
> void *func;
> const char *name;
> + unsigned flags;
> + unsigned sizemask;
> } TCGHelperInfo;
>
> #include "exec/helper-proto.h"
> @@ -696,6 +698,11 @@ void tcg_gen_callN(TCGContext *s, void *func, unsigned
> int flags,
> int real_args;
> int nb_rets;
> TCGArg *nparam;
> + TCGHelperInfo *info;
> +
> + info = g_hash_table_lookup(s->helpers, (gpointer)func);
> + assert(info != NULL);
> + assert(info->sizemask == sizemask);
I assume g_assert vs assert is purely cosmetic? QEMU seems inconsistent
at best about this :-/
>
> #if defined(__sparc__) && !defined(__arch64__) \
> && !defined(CONFIG_TCG_INTERPRETER)
--
Alex Bennée
- [Qemu-devel] [PATCH 03/10] tcg: Push tcg-runtime routines into exec/helper-*, (continued)
- [Qemu-devel] [PATCH 03/10] tcg: Push tcg-runtime routines into exec/helper-*, Richard Henderson, 2014/05/12
- [Qemu-devel] [PATCH 05/10] tcg: Inline tcg_gen_helperN, Richard Henderson, 2014/05/12
- [Qemu-devel] [PATCH 06/10] tcg: Move side effects out of dh_sizemask, Richard Henderson, 2014/05/12
- [Qemu-devel] [PATCH 04/10] tcg: Use helper-gen.h in tcg-op.h, Richard Henderson, 2014/05/12
- [Qemu-devel] [PATCH 08/10] tcg: Save flags and computed sizemask in TCGHelperInfo, Richard Henderson, 2014/05/12
- Re: [Qemu-devel] [PATCH 08/10] tcg: Save flags and computed sizemask in TCGHelperInfo,
Alex Bennée <=
- [Qemu-devel] [PATCH 07/10] tcg: Register the helper info struct rather than the name, Richard Henderson, 2014/05/12
- [Qemu-devel] [PATCH 09/10] tcg: Remove sizemask and flags arguments to tcg_gen_callN, Richard Henderson, 2014/05/12
- [Qemu-devel] [PATCH 10/10] tcg: Move size effects out of dh_arg, Richard Henderson, 2014/05/12