[Webkit-unassigned] [Bug 235027] [JSC][ARMv7] Cleanup GPR numbering

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Mar 28 09:39:40 PDT 2022


https://bugs.webkit.org/show_bug.cgi?id=235027

--- Comment #10 from Geza Lore <glore at igalia.com> ---
(In reply to Yusuke Suzuki from comment #8)

> > Source/JavaScriptCore/llint/LLIntData.h:398
> > +#if CPU(ARM_THUMB2)
> > +    static constexpr GPRReg pcGPR = ARMRegisters::r8;
> > +#else
> >      static constexpr GPRReg pcGPR = GPRInfo::regT4;
> > +#endif
> 
> We should use regT4 in all architectures.

Why is this important? (this change is what allows us LLInt t4 !== GPRInfo::regT4)


More generally what is the relevance of LLInt vs GPRInfo numbering of temporaries? (CSRs are the right way around)


Ideally, on ARM_THUMB2, we want GPRInfo::regT4 (and also GPRInfo::regT5) to be something less than ARMRegisters::r8 for code size (otherwise the zillions of ifdefs come back and is pretty hard to get right unless you are very conscious). This is an important saving in baseline code size (5-10%). And ideally we also want the LLInt PC to be higher or same than r8, as it's not frequently used, so we can keep the cheaper registers for other use. This is what the current patch does.

If GPRInfo::regT4 must absolutely be the same as LLInt t4, I will change llint t4 to ARMRegisters::r4 as well, but that is sacrificing the llint code size/performance for the JIT. I would like to have both if I can.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20220328/16071ca2/attachment.htm>


More information about the webkit-unassigned mailing list