[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [qemu-s390x] [Qemu-devel] [PATCH v1 07/41] s390x/tcg: Implement VECT
From: |
Richard Henderson |
Subject: |
Re: [qemu-s390x] [Qemu-devel] [PATCH v1 07/41] s390x/tcg: Implement VECTOR AVERAGE |
Date: |
Fri, 12 Apr 2019 12:34:11 -1000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 4/11/19 12:08 AM, David Hildenbrand wrote:
> +}
> +static DisasJumpType op_vavg(DisasContext *s, DisasOps *o)
> +{
Watch your spacing.
> + static const GVecGen3 g[4] = {
> + { .fno = gen_helper_gvec_vavg8, },
> + { .fno = gen_helper_gvec_vavg16, },
> + { .fni4 = gen_avg_i32, },
> + { .fni8 = gen_avg_i64, },
> + };
Pondering possible vector expansions. I think one possibility is
t1 = (a >> 1) + (b >> 1);
We still have the two "0.5 bits" to add back in, plus we round up by adding
another 0.5. This means if either lsb is set, then we have carry in to the 1's
bit. So:
t1 = t1 + ((a | b) & 1);
Which leads to
tcg_gen_sari_vec(vece, t0, a, 1);
tcg_gen_sari_vec(vece, t1, b, 1);
tcg_gen_or_vec(vece, t2, a, b);
tcg_gen_add_vec(vece, t0, t0, t1);
tcg_gen_dupi_vec(vece, t1, 1);
tcg_gen_and_vec(vece, t2, t2, t1);
tcg_gen_add_vec(vece, t0, t0, t2);
{ .fnv = gen_avg_vec,
.fno = gen_helper_gvec_vavg8,
.opc = INDEX_op_sari_vec },
But what you have here is correct and the above is mere optimization so,
Reviewed-by: Richard Henderson <address@hidden>
r~
- Re: [qemu-s390x] [Qemu-devel] [PATCH v1 05/41] s390x/tcg: Implement VECTOR ADD WITH CARRY COMPUTE CARRY, (continued)
[qemu-s390x] [PATCH v1 07/41] s390x/tcg: Implement VECTOR AVERAGE, David Hildenbrand, 2019/04/11
- Re: [qemu-s390x] [Qemu-devel] [PATCH v1 07/41] s390x/tcg: Implement VECTOR AVERAGE,
Richard Henderson <=
[qemu-s390x] [PATCH v1 04/41] s390x/tcg: Implement VECTOR ADD WITH CARRY, David Hildenbrand, 2019/04/11
[qemu-s390x] [PATCH v1 03/41] s390x/tcg: Implement VECTOR ADD COMPUTE CARRY, David Hildenbrand, 2019/04/11
- Re: [qemu-s390x] [PATCH v1 03/41] s390x/tcg: Implement VECTOR ADD COMPUTE CARRY, Richard Henderson, 2019/04/12
- Re: [qemu-s390x] [PATCH v1 03/41] s390x/tcg: Implement VECTOR ADD COMPUTE CARRY, David Hildenbrand, 2019/04/16
- Re: [qemu-s390x] [PATCH v1 03/41] s390x/tcg: Implement VECTOR ADD COMPUTE CARRY, Richard Henderson, 2019/04/16
- Re: [qemu-s390x] [PATCH v1 03/41] s390x/tcg: Implement VECTOR ADD COMPUTE CARRY, David Hildenbrand, 2019/04/16
- Re: [qemu-s390x] [PATCH v1 03/41] s390x/tcg: Implement VECTOR ADD COMPUTE CARRY, Richard Henderson, 2019/04/16
- Re: [qemu-s390x] [PATCH v1 03/41] s390x/tcg: Implement VECTOR ADD COMPUTE CARRY, David Hildenbrand, 2019/04/16