[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 25/26] target/s390x: implement TRANSLATE ONE/TWO
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH 25/26] target/s390x: implement TRANSLATE ONE/TWO TO ONE/TWO |
Date: |
Tue, 30 May 2017 22:01:19 +0200 |
User-agent: |
NeoMutt/20170113 (1.7.2) |
On 2017-05-30 12:42, Richard Henderson wrote:
> On 05/30/2017 12:25 PM, Aurelien Jarno wrote:
> > On 2017-05-30 09:45, Richard Henderson wrote:
> > > On 05/29/2017 04:17 AM, Aurelien Jarno wrote:
> > > > On 2017-05-26 10:10, Richard Henderson wrote:
> > > > > On 05/25/2017 02:05 PM, Aurelien Jarno wrote:
> > > > > > +uint32_t HELPER(trXX)(CPUS390XState *env, uint32_t r1, uint32_t r2,
> > > > > > + uint32_t sizes)
> > > > > > +{
> > > > > > + uintptr_t ra = GETPC();
> > > > > > + int dsize = (sizes & 1) ? 1 : 2;
> > > > > > + int ssize = (sizes & 2) ? 1 : 2;
> > > > > > + uint16_t tst = env->regs[0] & ((1 << (8 * dsize)) - 1);
> > > > >
> > > > > I think you should pass in tst as an argument. That way you can pass
> > > > > in an
> > > > > out-of-band value when we implement ETF2 and test field M3 bit 3.
> > > >
> > > > I don't mind passing r0 as an argument. That said if we want to pass tst
> > > > or bundle the M3 field, it means we need to use TCG instructions to do
> > > > so. I am not sure it brings a lot compare to doing so in the helper
> > > > side.
> > >
> > > Not at all -- the M3 bit test would be a translation-time check.
> >
> > I still don't really see the point. On the TCG side it means we need
> > something like that:
> >
> > if (m3 & 1) {
> > tcg_gen_movi_tl(r0, -1);
> > } else if (dsize == 1) {
> > tcg_gen_ext8u(r0, regs[0]);
> > } else if (dsize == 2)
> > tcg_gen_ext16u(r0, regs[0]);
> > }
>
> Yes, exactly.
>
> > On the helper side we then need to check if the value passed equals -1
> > or not to get m3 instead of directly accessing the value in register 0.
>
> How's that? Why would you need to check for -1 at all? The existing helper
> test works fine, with -1 not matching any value loaded.
Ok, I get your point now, i'll implement that in the next version.
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
address@hidden http://www.aurel32.net
- Re: [Qemu-devel] [PATCH 16/26] target/s390x: implement COMPARE LOGICAL LONG, (continued)
[Qemu-devel] [PATCH 23/26] target/s390x: implement UNPACK UNICODE, Aurelien Jarno, 2017/05/25
[Qemu-devel] [PATCH 02/26] target/s390x: make IPTE SMP aware, Aurelien Jarno, 2017/05/25
[Qemu-devel] [PATCH 10/26] target/s390x: implement MOVE WITH OFFSET, Aurelien Jarno, 2017/05/25
[Qemu-devel] [PATCH 07/26] target/s390x: implement STORE PAIR TO QUADWORD, Aurelien Jarno, 2017/05/25
[Qemu-devel] [PATCH 06/26] target/s390x: implement LOAD PAIR FROM QUADWORD, Aurelien Jarno, 2017/05/25