[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 16/26] target/s390x: implement COMPARE LOGICAL L
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH 16/26] target/s390x: implement COMPARE LOGICAL LONG |
Date: |
Mon, 29 May 2017 15:00:23 +0200 |
User-agent: |
NeoMutt/20170113 (1.7.2) |
On 2017-05-26 08:32, Richard Henderson wrote:
> On 05/25/2017 02:04 PM, Aurelien Jarno wrote:
> > - if (srclen) {
> > - v1 = cpu_ldub_data_ra(env, src, ra);
> > + if (*srclen) {
> > + v1 = cpu_ldub_data_ra(env, *src, ra);
> > }
> > - if (destlen) {
> > - v2 = cpu_ldub_data_ra(env, dest, ra);
> > + if (*destlen) {
> > + v2 = cpu_ldub_data_ra(env, *dest, ra);
> > }
> > if (v1 != v2) {
> > @@ -746,16 +743,55 @@ uint32_t HELPER(clcle)(CPUS390XState *env, uint32_t
> > r1, uint64_t a2,
> > break;
> > }
> > - if (srclen) {
> > - src++;
> > - srclen--;
> > + if (*srclen) {
> > + *src += 1;
> > + *srclen -= 1;
> > }
> > - if (destlen) {
> > - dest++;
> > - destlen--;
> > + if (*destlen) {
> > + *dest += 1;
> > + *destlen -= 1;
> > }
> > }
>
> If you don't access these as pointers in the inner loop like this, the
> compiler will give you better code without needing to force the function to
> be inlined.
I agree that it would allow to drop the inline from the pointers point of
view. That said we still want to the compiler to optimize out the call to
cpu_ldusize_data_ra, check_alignment (both introduced in the CLCLU
patch), or length limit.
My goal of using a common code for clcl/clcle/clclu was mostly to unify
code to having different bugs depending on the function. That could also
have been done using the preprocessor.
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
address@hidden http://www.aurel32.net
- [Qemu-devel] [PATCH 09/26] target/s390x: implement MOVE NUMERICS, (continued)
- [Qemu-devel] [PATCH 09/26] target/s390x: implement MOVE NUMERICS, Aurelien Jarno, 2017/05/25
- [Qemu-devel] [PATCH 14/26] target/s390x: improve 24-bit and 31-bit lengths read/write, Aurelien Jarno, 2017/05/25
- [Qemu-devel] [PATCH 26/26] target/s390x: update maximum TCG model to z800, Aurelien Jarno, 2017/05/25
- [Qemu-devel] [PATCH 15/26] target/s390x: fix COMPARE LOGICAL LONG EXTENDED, Aurelien Jarno, 2017/05/25
- [Qemu-devel] [PATCH 16/26] target/s390x: implement COMPARE LOGICAL LONG, Aurelien Jarno, 2017/05/25
- [Qemu-devel] [PATCH 22/26] target/s390x: implement UNPACK ASCII, Aurelien Jarno, 2017/05/25
- [Qemu-devel] [PATCH 25/26] target/s390x: implement TRANSLATE ONE/TWO TO ONE/TWO, Aurelien Jarno, 2017/05/25
- Re: [Qemu-devel] [PATCH 25/26] target/s390x: implement TRANSLATE ONE/TWO TO ONE/TWO, Richard Henderson, 2017/05/26
- Re: [Qemu-devel] [PATCH 25/26] target/s390x: implement TRANSLATE ONE/TWO TO ONE/TWO, Aurelien Jarno, 2017/05/29
- Re: [Qemu-devel] [PATCH 25/26] target/s390x: implement TRANSLATE ONE/TWO TO ONE/TWO, Richard Henderson, 2017/05/30
- Re: [Qemu-devel] [PATCH 25/26] target/s390x: implement TRANSLATE ONE/TWO TO ONE/TWO, Aurelien Jarno, 2017/05/30
- Re: [Qemu-devel] [PATCH 25/26] target/s390x: implement TRANSLATE ONE/TWO TO ONE/TWO, Richard Henderson, 2017/05/30
- Re: [Qemu-devel] [PATCH 25/26] target/s390x: implement TRANSLATE ONE/TWO TO ONE/TWO, Aurelien Jarno, 2017/05/30