[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH v1 02/43] accel/tcg: Add bitreverse and funnel-shift runt
From: |
Anton Johansson |
Subject: |
Re: [RFC PATCH v1 02/43] accel/tcg: Add bitreverse and funnel-shift runtime helper functions |
Date: |
Tue, 3 Dec 2024 18:50:00 +0100 |
On 22/11/24, Richard Henderson wrote:
> On 11/20/24 19:49, Anton Johansson wrote:
> > Adds necessary helper functions for mapping LLVM IR onto TCG.
> > Specifically, helpers corresponding to the bitreverse and funnel-shift
> > intrinsics in LLVM.
> >
> > Note: these may be converted to more efficient implementations in the
> > future, but for the time being it allows helper-to-tcg to support a
> > wider subset of LLVM IR.
> >
> > Signed-off-by: Anton Johansson <anjo@rev.ng>
> > ---
> > accel/tcg/tcg-runtime.c | 29 +++++++++++++++++++++++++++++
> > accel/tcg/tcg-runtime.h | 5 +++++
> > 2 files changed, 34 insertions(+)
>
> For things in tcg-runtime.c, we generally have wrapper functions in
> include/tcg/tcg-op-common.h which hide the fact that the operation is being
> expanded by a helper.
>
> We would also have tcg_gen_bitreverse{8,16,32}_i64, and *_tl macros in
> include/tcg/tcg-op.h.
>
> I've been meaning to add something like these for a while, because they are
> common to quite a few targets.
>
> > +uint32_t HELPER(bitreverse8_i32)(uint32_t x)
> > +{
> > + return revbit8((uint8_t) x);
> > +}
>
> Also common is bit-reversing every byte in the word, not just the lowest.
> Worth implementing both? Or simply zero-extending the input/output when the
> target only requires the lowest byte?
>
> We might want to audit the other targets to determine which forms are used...
I'll take a stab at auditing usage of revbit*() in targets, and add
appropriate tcg_gen_bitreverse*() versions. I guess it makes sense to split
this out into a small separate patchset in that case.
//Anton
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [RFC PATCH v1 02/43] accel/tcg: Add bitreverse and funnel-shift runtime helper functions,
Anton Johansson <=