Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-23 Thread Richard Henderson
On 5/23/19 8:59 AM, David Hildenbrand wrote: > I guess I can simplify to > > t0 = rol64(b0, i); > t1 = rol64(b1, i); Yes. > My approach: Compare all elements of B at a time > Your approach: Compare a single element of B at a time Ah, I get it now. This makes total sense, and does make the

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-23 Thread David Hildenbrand
On 23.05.19 14:34, David Hildenbrand wrote: > On 23.05.19 14:27, Richard Henderson wrote: >> On 5/23/19 3:50 AM, David Hildenbrand wrote: >>> /* >>> * Returns the number of bits composing one element. >>> */ >>> static uint8_t get_element_bits(uint8_t es) >>> { >>> return (1 << es) *

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-23 Thread David Hildenbrand
On 23.05.19 14:27, Richard Henderson wrote: > On 5/23/19 3:50 AM, David Hildenbrand wrote: >> /* >> * Returns the number of bits composing one element. >> */ >> static uint8_t get_element_bits(uint8_t es) >> { >> return (1 << es) * BITS_PER_BYTE; >> } >> >> /* >> * Returns the bitmask for a

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-23 Thread Richard Henderson
On 5/23/19 3:50 AM, David Hildenbrand wrote: > /* > * Returns the number of bits composing one element. > */ > static uint8_t get_element_bits(uint8_t es) > { > return (1 << es) * BITS_PER_BYTE; > } > > /* > * Returns the bitmask for a single element. > */ > static uint64_t

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-23 Thread Alex Bennée
David Hildenbrand writes: > On 22.05.19 13:09, Richard Henderson wrote: >> On 5/22/19 7:01 AM, David Hildenbrand wrote: >>> I also think that, if we create a bunch more of these wrappers: > +DEF_VFAE_HELPER(8) > +DEF_VFAE_HELPER(16) > +DEF_VFAE_HELPER(32) then

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-23 Thread David Hildenbrand
On 22.05.19 20:46, Richard Henderson wrote: > On 5/22/19 2:16 PM, David Hildenbrand wrote: >> On 22.05.19 17:59, Richard Henderson wrote: >>> On Wed, 22 May 2019 at 07:16, David Hildenbrand wrote: > Also plausible. I guess it would be good to know, anyway. I'll dump the parameters

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-22 Thread Richard Henderson
On 5/22/19 2:16 PM, David Hildenbrand wrote: > On 22.05.19 17:59, Richard Henderson wrote: >> On Wed, 22 May 2019 at 07:16, David Hildenbrand wrote: Also plausible. I guess it would be good to know, anyway. >>> >>> I'll dump the parameters when booting Linux. My gut feeling is that the >>>

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-22 Thread David Hildenbrand
On 22.05.19 17:59, Richard Henderson wrote: > On Wed, 22 May 2019 at 07:16, David Hildenbrand wrote: >>> Also plausible. I guess it would be good to know, anyway. >> >> I'll dump the parameters when booting Linux. My gut feeling is that the >> cc option is basically never used ... > > It looks

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-22 Thread Richard Henderson
On Wed, 22 May 2019 at 07:16, David Hildenbrand wrote: > > Also plausible. I guess it would be good to know, anyway. > > I'll dump the parameters when booting Linux. My gut feeling is that the > cc option is basically never used ... It looks like our intuition is wrong about that.

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-22 Thread David Hildenbrand
On 22.05.19 13:09, Richard Henderson wrote: > On 5/22/19 7:01 AM, David Hildenbrand wrote: >> >>> I also think that, if we create a bunch more of these wrappers: >>> +DEF_VFAE_HELPER(8) +DEF_VFAE_HELPER(16) +DEF_VFAE_HELPER(32) >>> >>> then RT and ZS can be passed in as constant

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-22 Thread Richard Henderson
On 5/22/19 7:01 AM, David Hildenbrand wrote: > >> I also think that, if we create a bunch more of these wrappers: >> >>> +DEF_VFAE_HELPER(8) >>> +DEF_VFAE_HELPER(16) >>> +DEF_VFAE_HELPER(32) >> >> then RT and ZS can be passed in as constant parameters to the above, and then >> the compiler will

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-22 Thread David Hildenbrand
> I also think that, if we create a bunch more of these wrappers: > >> +DEF_VFAE_HELPER(8) >> +DEF_VFAE_HELPER(16) >> +DEF_VFAE_HELPER(32) > > then RT and ZS can be passed in as constant parameters to the above, and then > the compiler will fold away all of the stuff that's not needed for each

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-20 Thread David Hildenbrand
On 17.05.19 18:16, Richard Henderson wrote: > On 5/15/19 1:31 PM, David Hildenbrand wrote: >> +#define DEF_VFAE(BITS) >>\ >> +static int vfae##BITS(void *v1, const void *v2, const void *v3, uint8_t m5) >> > > > First, because this

Re: [Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-17 Thread Richard Henderson
On 5/15/19 1:31 PM, David Hildenbrand wrote: > +#define DEF_VFAE(BITS) > \ > +static int vfae##BITS(void *v1, const void *v2, const void *v3, uint8_t m5) > First, because this *is* complicated stuff, can we find a way to use inline

[Qemu-devel] [PATCH v1 1/5] s390x/tcg: Implement VECTOR FIND ANY ELEMENT EQUAL

2019-05-15 Thread David Hildenbrand
Complicated stuff. Provide two variants, one for the CC and one without the CC. The CC is returned via cpu_env. Signed-off-by: David Hildenbrand --- target/s390x/Makefile.objs | 2 +- target/s390x/helper.h| 8 +++ target/s390x/insn-data.def | 5 ++