yes but if isSSE2Present() returns false the code becomes very simple so I doubt it may be slow. what's the benefit to enable/disable ALTERNATE_JSIMMEDIATE? thanks joe
--- On Fri, 2/27/09, Gavin Barraclough <barraclo...@apple.com> wrote: > From: Gavin Barraclough <barraclo...@apple.com> > Subject: Re: [webkit-dev] want to port JIT to MIPS - how to get of SSE2 now? > To: "WebKit Development" <webkit-dev@lists.webkit.org> > Date: Friday, February 27, 2009, 6:03 AM > SSE2 code generation is guarded by calls to a function > 'isSSE2Present()'. > > On Feb 26, 2009, at 12:27 PM, x yz wrote: > > > > > Hi, > > Old version seems use ENABLE_JIT_OPTIMIZE_ARITHMETIC > to enable sse2 > > and only for X86_64, current version changes conf to: > > 1. you must ENABLE_JIT_OPTIMIZE_ARITHMETIC or else you > use > > interpreter for arithmatic. > > 2. if ALTERNATE_JSIMMEDIATE not enabled you must have > sse2 engine > > 3. if ALTERNATE_JSIMMEDIATE enabled, you use mmx > arithematic, but > > ALTERNATE_JSIMMEDIATE is enabled in paltform.h only > for X86_64 && > > MAC. That means on X86 you need sse2??? > > thanks for your time! > > joe > > > > > > > > --- On Sun, 2/22/09, x yz <last...@yahoo.com> > wrote: > > > >> From: x yz <last...@yahoo.com> > >> Subject: Re: [webkit-dev] want to port JIT to MIPS > >> To: "WebKit Development" > <webkit-dev@lists.webkit.org>, "Gavin > >> Barraclough" <barraclo...@apple.com> > >> Date: Sunday, February 22, 2009, 4:34 PM > >> Thanks a lot otherwise I have misunderstanding. > Yes I'll > >> do wrec first. I just want to clean up possible > blocking > >> issues. > >> > >> I see wrec uses regparm(3) and jit always use > fastcall for > >> X86? > >> In JIT.cpp ctiTrampoline put CallFrame in edi, but > how > >> about other arguments - where are they be > fetched/poped from > >> stack? > >> > >> when deal with caller/callee saved regs, gcc MIPS > just > >> preserves them when necesasary. The problem is > after JIT > >> used gcc may not have enough knowledge on > >> "necessary", do we have a way to force > gcc always > >> preserve > >> them? > >> > >> how to identify a patch > (patchimm/patchptr/patchaddr) > >> relates to a data field in an instruction or > relates to an > >> element in a data array? In Mips the former means > the 32bit > >> needs to be separated into two 16bits and patched > into two > >> instructions. But if a 32bit is a pointer in a > pointer > >> array, we can save it directly. > >> > >> rgds > >> joe > >> > >> > >> --- On Fri, 2/20/09, Gavin Barraclough > >> <barraclo...@apple.com> wrote: > >> > >>> From: Gavin Barraclough > <barraclo...@apple.com> > >>> Subject: Re: [webkit-dev] want to port JIT to > MIPS > >>> To: "WebKit Development" > >> <webkit-dev@lists.webkit.org> > >>> Date: Friday, February 20, 2009, 2:01 PM > >>> On Feb 19, 2009, at 8:27 PM, x yz wrote: > >>> > >>>> I'd appreaciate your help to clarify > the > >> problem I > >>> faced: > >>>> > >>>> 1.In JIT.cpp I roughly understand > ctiTrampoline() > >>> except for sp-0x1C, I guess the 1C includes 6 > argument > >> yet > >>> the 7th or 1st may be the hidden C++ pointer? > And the > >>> reserved 1C stack space seems not used? why > esi is > >> forced to > >>> be 512 rather than use input argument? > >>> > >>> The JIT allocates a fixed frame on the stack > which is > >> used > >>> to pass arguments into stub functions. The > 0x1C > >> contains a > >>> spare word or two to maintain stack alignment. > %esi > >> is used > >>> in the timeout check mechanism. > >>> > >>>> 2.How to understand the stack balance in > >>> ctiVMThrowTrampoline()? why after calling we > still add > >> 1C > >>> w/o sub 1C before calling? where comes > >>> _ZN3JSC11Interpreter12cti_vm_throwEPPv and how > do I > >> know > >>> which name for Mips? does this one relates to > variable > >>> argument function call? > >>> > >>> ctiVMThrowTrampoline is never called as a > function (it > >> is > >>> declared as a function only to provide a > symbol that > >> can be > >>> manipulated from C code). > ctiVMThrowTrampoline is > >> used in > >>> returning back from JIT generated code, in the > case of > >> an > >>> exception. > >>> > >>>> 3.I know how to handle jump in Mips, but > not sure > >>> how/when to handle > patchAddress/patchImm/patchPointer > >>> because I'm not sure the instructions > related. I > >> guess > >>> all patches are for last 32bit IMM field of > >> instructions. > >>>> Mips can't load 32bit in one > instruction, > >> thus I > >>> need to know the instruction before I can > patch/add in > >> the > >>> 32bit data. > >>>> > >>>> 4.I'm kind of want no asm code outside > >>> <assembler> folder, any plan for that? > >>> > >>> No. The assembler is intended to be > independent of > >>> JavaScript types - it's just an assembler. > The > >> asm > >>> trampolines are specific to the JIT. It is > currently > >> the > >>> intention that architecture specific parts of > the JIT > >>> implementation will remain in the jit folder. > >>> > >>> I'd suggest that in attempting to port the > jit, > >> WREC > >>> would be a good place to start. > >>> > >>> cheers, > >>> G. > >>> > >>>> > >>>> rgds > >>>> joe > >>>> > >>>> --- On Mon, 2/16/09, x yz > >> <last...@yahoo.com> > >>> wrote: > >>>> > >>>>> From: x yz <last...@yahoo.com> > >>>>> Subject: Re: [webkit-dev] want to port > JIT to > >> MIPS > >>> - when WREC/JIT enabled? > >>>>> To: "Gavin Barraclough" > >>> <barraclo...@apple.com> > >>>>> Cc: "WebKit Development" > >>> <webkit-dev@lists.webkit.org> > >>>>> Date: Monday, February 16, 2009, 5:25 > AM > >>>>> Hi, > >>>>> from paltform.h it is enabled only on > X86 > >> MAC/WIN; > >>> from > >>>>> javaScriptCore.pri it is also enabled > for > >>> (QT_ARCH,i386). > >>>>> But, from config.log I see them are > enabled! > >>>>> > >>>>> how can I run WREC/JIT test so I can > trace in > >> X86 > >>> asm coce > >>>>> generated? > >>>>> thanks a lot. > >>>>> joe > >>>>> > >>>>> > >>>>> > >>>>> --- On Sat, 2/7/09, Gavin Barraclough > >>>>> <barraclo...@apple.com> wrote: > >>>>> > >>>>>> From: Gavin Barraclough > >>> <barraclo...@apple.com> > >>>>>> Subject: Re: [webkit-dev] want to > port > >> JIT to > >>> MIPS - > >>>>> using X86::ecx as base > >>>>>> To: last...@yahoo.com > >>>>>> Cc: "WebKit Development" > >>>>> <webkit-dev@lists.webkit.org> > >>>>>> Date: Saturday, February 7, 2009, > 7:08 AM > >>>>>> On Feb 6, 2009, at 2:52 PM, x yz > wrote: > >>>>>> > >>>>>>> 1.what's the meaning of > >>> ALTERNATE_JSIMMEDIATE > >>>>> and > >>>>>> slow case? > >>>>>> > >>>>>> On x86-64 we use a different > >> implementation of > >>> the > >>>>> class > >>>>>> JSImmediate. See JSImmediate.h. > >>>>>> Re 'slow case', in the JIT > code > >>> generation is > >>>>>> performed as two passes over the > bytecode > >> – > >>> see > >>>>>> JIT::privateCompileMainPass and > >>>>>> JIT::privateCompileSlowCases. > >>>>>> > >>>>>>> 2.how come the following code > can use > >> ECX > >>> as base > >>>>>> register? > >>>>>>> load32(Address(X86::ecx, > >>> FIELD_OFFSET(Structure, > >>>>>> m_typeInfo.m_flags)), X86::ecx); > >>>>>>> if the X86::ecx just means its > value > >> 1 in > >>> ModR/M, > >>>>> does > >>>>>> it means [BX+DI]? > >>>>>> > >>>>>> I think you're looking at the > old > >> 16-bit > >>>>> addressing > >>>>>> mode tables; 32/64-bit x86 can > happily > >> encode > >>> ecx as a > >>>>> base > >>>>>> register. If you're looking > at the > >> Intel > >>> IA-32 > >>>>> manual > >>>>>> volume 2, see table 2-2 on the > next page. > >>>>>> > >>>>>>> 3. can anybody help me on my > previous > >>> questions? > >>>>> does > >>>>>> JIT support floating point? > >>>>>> > >>>>>> Yes, some. See JITArithmetic.cpp. > >>>>>> > >>>>>> cheers, > >>>>>> G. > >>>>> > >>>>> > >>>>> > >>>>> > >> _______________________________________________ > >>>>> webkit-dev mailing list > >>>>> webkit-dev@lists.webkit.org > >>>>> > >>> > >> > http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev > >>>> > >>>> > >>>> > >>> > >>> > _______________________________________________ > >>> webkit-dev mailing list > >>> webkit-dev@lists.webkit.org > >>> > >> > http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev > >> > >> > >> > >> _______________________________________________ > >> webkit-dev mailing list > >> webkit-dev@lists.webkit.org > >> > http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev > > > > > > > > _______________________________________________ > webkit-dev mailing list > webkit-dev@lists.webkit.org > http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev _______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev