Re: [Qemu-devel] [PATCH v1 19/33] s390x/tcg: Implement VECTOR MERGE (HIGH|LOW)

2019-02-28 Thread David Hildenbrand
On 27.02.19 17:20, Richard Henderson wrote: > On 2/26/19 3:39 AM, David Hildenbrand wrote: >> +for (dst_idx = 0; dst_idx < NUM_VEC_ELEMENTS(es); dst_idx++) { >> +src_idx = dst_idx / 2; >> +if (!high) { >> +src_idx += NUM_VEC_ELEMENTS(es) / 2; >> +} >> +

Re: [Qemu-devel] [PATCH v1 19/33] s390x/tcg: Implement VECTOR MERGE (HIGH|LOW)

2019-02-27 Thread Richard Henderson
On 2/26/19 3:39 AM, David Hildenbrand wrote: > +for (dst_idx = 0; dst_idx < NUM_VEC_ELEMENTS(es); dst_idx++) { > +src_idx = dst_idx / 2; > +if (!high) { > +src_idx += NUM_VEC_ELEMENTS(es) / 2; > +} > +if (dst_idx % 2 == 0) { > +

Re: [Qemu-devel] [PATCH v1 19/33] s390x/tcg: Implement VECTOR MERGE (HIGH|LOW)

2019-02-27 Thread Richard Henderson
On 2/26/19 3:39 AM, David Hildenbrand wrote: > We cannot use gvec expansion as source and destination elements are > have different element numbers. So we'll expand using a fancy loop. > Also, we have to take care of overlapping source and target registers and > use a temporary register in case

[Qemu-devel] [PATCH v1 19/33] s390x/tcg: Implement VECTOR MERGE (HIGH|LOW)

2019-02-26 Thread David Hildenbrand
We cannot use gvec expansion as source and destination elements are have different element numbers. So we'll expand using a fancy loop. Also, we have to take care of overlapping source and target registers and use a temporary register in case they do. Signed-off-by: David Hildenbrand ---