qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]