|
From: Borja F. <bor...@gm...> - 2013-06-17 23:38:24
|
Sure Stepan, go ahead. I can do any post commit cleanups afterwards.
2013/6/17 John Myers <ato...@gm...>
> You should have commit access.
>
>
> On Mon, Jun 17, 2013 at 1:35 PM, Stepan Dyatkovskiy <stp...@na...>wrote:
>
>> Hi Borja,
>>
>> 2.1:
>> You're right. Will return C_Register.
>> About Q, I'd want to learn a bit more before it would be implemented.
>> Perhaps there is nothing special, but I'd want to check.
>>
>> 2.2. Yes, we can return cw_constant. I had used ARM template :-) They
>> just had set it as cw_other :-)
>>
>> 3. avr-llvm has appeared in "My Projects" in source forge menu. Does it
>> mean I have permissions already? Can I do test commit (one more \n in
>> README)?
>>
>> 4. I propose to commit everything (with fixes you proposed) to avoid
>> growing snow ball patch ;-)
>>
>> --
>> Truly yours,
>> Stepan Dyatkovskiy
>>
>>
>> 17.06.2013, 22:50, "Borja Ferrer" <bor...@gm...>:
>>
>> Ok thanks for the fixes, more things:
>>
>> 2.1) AVRTargetLowering::getConstraintType: Looking at other backends, I
>> think the x, y, z, t constraints should return C_Register instead of
>> C_RegisterClass since these are used for specific regs inside a regclass.
>> Probably the same for the q one. What do you think?
>>
>> 2.2) Ok, so you've given the largest weight to the bigger regclasses d,
>> r, l and then for the other reg constraints the smaller weight, I agree
>> then.
>> Now, for the constant constraints you should return CW_Constant instead,
>> other backends first check that the imm val is in range and if it is then
>> set it to that value, this is taken from the x86 one:
>> case 'K':
>> if (ConstantInt *C = dyn_cast<ConstantInt>(CallOperandVal)) {
>> if ((C->getSExtValue() >= -0x80) && (C->getSExtValue() <= 0x7f))
>> weight = CW_Constant;
>> }
>> break;
>> Finally for Q we should return CW_Memory no?
>>
>> 2.3) In getRegForInlineAsmConstraint, if this inline asm stuff is run
>> after type legalization you could turn that type checking at the top of the
>> function into an assert()
>> comment: Upper register r16..r32. <<-- typo registerS and r32
>>
>> John or Eric, please give Stepan commit permissions.
>>
>>
>>
>> 2013/6/17 Stepan Dyatkovskiy <stp...@na...>
>>
>> Hello Borja,
>>
>>
>> ok here we go:
>>
>> 1) in AVRRegisterInfo.td: im ok with the lGPR8 regclass since we dont
>> have it yet and i guess it's needed for the l constraint, but rename it
>> to GPR8lo. The hGPR8 regclass comment says lower registers, so typo
>> there, but anyways can't you use the LD8 regclass? Rename simplehGPR8 to
>> LD8lo, we'll need it in the future for some MUL instructions.
>>
>> Everything here were fixed as you mentioned.
>>
>>
>>
>> 2) in AVRISelLowering.cpp: for the t, x, y, z shouldn't we return
>> C_Register? Probably for b aswell.
>> 2.1) in getSingleConstraintMatchWeight can you clarify me what's the
>> diff between CW_SpecificReg and CW_Register. Shouldn't the G constraint
>> be a Constant? Same for the other constraints?
>>
>> All this stuff with weights is due to support of multiple constraints.
>> For some operands you may set *the set* of constraints, e.g. 'mr': get
>> either memory of register. In that case we're use weights. What should we
>> select for 'bx' constraint for example? One of y,z or x? So, currently llvm
>> gets register first from class with bigger weight. Since CW_SpecificReg <
>> CW_Register it will select one of y,z.
>>
>> For more information see implementation of "TargetLowering::**
>> getMultipleConstraintMatchWeig**ht" and "TargetLowering::**
>> ParseConstraints".
>>
>> 'G' shouldn't be CW_Register, of course, that was my typo. I've fixed it,
>> now it as all other constants just a CW_Default.
>>
>>
>> 2.2) in getRegForInlineAsmConstraint fixup the regclasses per point (1).
>> for w you could use the IWREGS regclass, the docs say they are regpairs,
>> not 8 bit regs as you declared in the .td file.
>>
>> That was also fixed.
>>
>> -Stepan.
>>
>>
>> The rest looks great.
>>
>>
>> 2013/6/14 Borja Ferrer <bor...@gm...
>> <mailto:bor...@gm...>**>
>>
>>
>> Going to review the patch now.
>>
>> No, there is no test for allocation order, I don't know a good way
>> of testing that. If you want you can replace the register list by
>> several sequences.
>>
>>
>> 2013/6/14 Stepan Dyatkovskiy <stp...@na...
>> <mailto:stp...@na...>>
>>
>>
>> Hi Borja,
>> All constraints are supported now.
>> The new patch is attached.
>>
>> -- Added support for all documented constraints.
>> -- Fixed tests as you mentioned.
>>
>> Relative to GPR8,
>> Do we have some tests that check allocation order? If so, all of
>> them were passed :-)
>>
>> Though I can use the explicit enumeration way you're currently
>> using...
>>
>> -Stepan.
>>
>> Borja Ferrer wrote:
>>
>> Ok, there are some small style issues but i will fix them
>> after you can
>> commit (braces in AVRAsmPrinter::__**PrintAsmOperand),
>>
>> afterwards you may
>> check them for future reference.
>>
>> About the GPR8 replacement, I'm not sure now, but will it
>> change the
>> register allocation order using the "sequence" set
>> instruction? This was
>> changed some time ago so I dont remember what was the new
>> behaviour.
>> In the test cases please add a CHECK line for the function
>> name, check
>> the other test cases in the folder to see what i mean.
>> You may need to add inline asm support in clang aswell,
>> there are some
>> methods that need to be implemented there inside the AVR
>> classes,
>> probably for error reporting stuff.
>>
>> 1) I dont know of any compatible projects, sorry. I've
>> tested big C
>> programs like a floating point emulation library.
>> 2) for now only the tests there.
>> 3) John please give Stepan commit access to SVN.
>>
>> Heh Eric, that's ok, for inline asm there's no room for
>> optimizations
>> but for other compiler features sure :)
>>
>>
>>
>>
>> 2013/6/13 Stepan Dyatkovskiy <stp...@na...
>> <mailto:stp...@na...> <mailto:stp...@na...
>> <mailto:stp...@na...>>>
>>
>> Hi Borja,
>> This is today patch.
>> 1. Added and tested support for register constraints
>> (a,b,d,e,q,r,t,w,x,y,z,l).
>> 2. Refactored GPR8 registers class, added new registers
>> classes:
>> lGPR8, hGPR8, simplehGPR8 and specialUpperGPR8.
>> 3. Fixed code-style.
>>
>> P.S.: In case you decided to give me commit access:
>> 1. Do you have some AVR projects that are compilable
>> with avr-llvm?
>> I mean kind of llvm's test-suite replacement.
>> 2. What ought to be tested before commit, except the
>> "test/CodeGen/AVR" tests?
>> 3. My SourceForge account name is: "kaomoneus".
>>
>> -Stepan.
>>
>> Borja Ferrer wrote:
>>
>> The patch looks good, some comments about coding
>> style. We use a
>> different standard compared to llvm's, most
>> important things are:
>> 1) braces go into new lines.
>> 2) always place braces even if they're for a 1 line
>> statement
>>
>> this:
>> + std::pair<unsigned, const TargetRegisterClass*>
>> + getRegForInlineAsmConstraint(_**
>> ___const
>>
>> std::string
>>
>> &Constraint,
>> + EVT VT) const;
>> +
>> should be:
>> std::pair<unsigned, const TargetRegisterClass *>
>> << space
>> between
>> name and *
>> getRegForInlineAsmConstraint(_**___const std::string
>>
>> &Constraint,
>> EVT VT) const;
>>
>> this:
>> + ConstraintWeight getSingleConstraintMatchWeight**
>> ____(
>>
>>
>> + AsmOperandInfo &info, const char *constraint)
>> const;
>> should be:
>> ConstraintWeight
>> getSingleConstraintMatchWeight**____(AsmOperandInfo
>>
>> &info,
>>
>>
>> const char
>> *constraint)
>> const;
>>
>>
>> if there are any other small details i can fix them
>> post commit.
>>
>>
>>
>> 2013/6/13 Borja Ferrer <bor...@gm...
>> <mailto:bor...@gm...>
>> <mailto:bor...@gm...
>> <mailto:bor...@gm...>**>
>> <mailto:bor...@gm...
>> <mailto:bor...@gm...> <mailto:bor...@gm...
>> <mailto:bor...@gm...>**>__>__>
>>
>>
>>
>>
>> Nice Stepan, I will review your patch later
>> on. You should
>> be given
>> commit access to this svn repo until we
>> finally decide
>> where to move
>> on all of the code.
>>
>>
>> 2013/6/13 Stepan Dyatkovskiy
>> <stp...@na... <mailto:stp...@na...>
>> <mailto:stp...@na... <mailto:stp...@na...
>> >>
>> <mailto:stp...@na...
>> <mailto:stp...@na...> <mailto:stp...@na...
>> <mailto:stp...@na...>>>>
>>
>>
>>
>> Hi all,
>> I'll use this reference for
>> implementation, right?
>> http://savannah.nongnu.org/___**
>> _download/avr-libc/avr-libc-__**__user-manual-1.8.0.pdf.bz2<http://savannah.nongnu.org/____download/avr-libc/avr-libc-____user-manual-1.8.0.pdf.bz2>
>> <http://savannah.nongnu.org/__**download/avr-libc/avr-libc-__
>> **user-manual-1.8.0.pdf.bz2<http://savannah.nongnu.org/__download/avr-libc/avr-libc-__user-manual-1.8.0.pdf.bz2>
>> >
>>
>>
>>
>> <http://savannah.nongnu.org/__**download/avr-libc/avr-libc-__
>> **user-manual-1.8.0.pdf.bz2<http://savannah.nongnu.org/__download/avr-libc/avr-libc-__user-manual-1.8.0.pdf.bz2>
>> <http://savannah.nongnu.org/**download/avr-libc/avr-libc-**
>> user-manual-1.8.0.pdf.bz2<http://savannah.nongnu.org/download/avr-libc/avr-libc-user-manual-1.8.0.pdf.bz2>
>> >>
>>
>> -Stepan.
>>
>> Stepan Dyatkovskiy wrote:
>> > Ops. Forget to apply patch itself...
>> >
>> > -Stepan.
>> >
>> > Stepan Dyatkovskiy wrote:
>> >> Hi all. That's a Thursday patch with
>> inline asm.
>> Currently
>> the only
>> >> constraint is supported: register ('r').
>> >>
>> >> -Stepan.
>> >>
>> >>
>>
>> ------------------------------**
>> ____--------------------------**--__--__------------------
>>
>>
>> >>
>> >> This SF.net email is sponsored by
>> Windows:
>> >>
>> >> Build for Windows Store.
>> >>
>> >>
>> http://p.sf.net/sfu/windows-__**__dev2dev<http://p.sf.net/sfu/windows-____dev2dev>
>> <http://p.sf.net/sfu/windows-_**_dev2dev<http://p.sf.net/sfu/windows-__dev2dev>
>> >
>> <http://p.sf.net/sfu/windows-_**_dev2dev<http://p.sf.net/sfu/windows-__dev2dev>
>> <http://p.sf.net/sfu/windows-**dev2dev<http://p.sf.net/sfu/windows-dev2dev>
>> >>
>> >>
>> ______________________________**_____________________
>> >> avr-llvm-devel mailing list
>> >>
>> avr-llvm-devel@lists.__sourcef**__orge.net<http://sourcef__orge.net/>
>> <http://sourceforge.net>
>> <mailto:avr-llvm-devel@lists._**_sourceforge.net
>> <mailto:avr-llvm-devel@lists.**sourceforge.net<avr...@li...>
>> >>
>> <mailto:avr-llvm-devel@lists.
>> <mailto:avr-llvm-devel@lists.>**____sourceforge.net
>> <http://sourceforge.net>
>> <mailto:avr-llvm-devel@lists._**_sourceforge.net
>> <mailto:avr-llvm-devel@lists.**sourceforge.net<avr...@li...>
>> >>>
>>
>> >>
>> https://lists.sourceforge.net/**
>> ____lists/listinfo/avr-llvm-__**devel<https://lists.sourceforge.net/____lists/listinfo/avr-llvm-__devel>
>> <https://lists.sourceforge.**net/__lists/listinfo/avr-llvm-**
>> devel <https://lists.sourceforge.net/__lists/listinfo/avr-llvm-devel>>
>>
>> <https://lists.sourceforge.__**net/lists/listinfo/avr-llvm-__
>> **devel
>> <https://lists.sourceforge.**net/lists/listinfo/avr-llvm-**
>> devel <https://lists.sourceforge.net/lists/listinfo/avr-llvm-devel>>>
>> >>
>> >
>> >
>> >
>> >
>>
>>
>> ------------------------------**
>> ____--------------------------**--__--__------------------
>>
>>
>> > This SF.net email is sponsored by
>> Windows:
>> >
>> > Build for Windows Store.
>> >
>> > http://p.sf.net/sfu/windows-__**
>> __dev2dev <http://p.sf.net/sfu/windows-____dev2dev>
>> <http://p.sf.net/sfu/windows-_**_dev2dev<http://p.sf.net/sfu/windows-__dev2dev>
>> >
>> <http://p.sf.net/sfu/windows-_**_dev2dev<http://p.sf.net/sfu/windows-__dev2dev>
>> <http://p.sf.net/sfu/windows-**dev2dev<http://p.sf.net/sfu/windows-dev2dev>
>> >>
>> >
>> >
>> >
>> >
>> ______________________________**_____________________
>> > avr-llvm-devel mailing list
>> >
>> avr-llvm-devel@lists.__sourcef**__orge.net<http://sourcef__orge.net/>
>> <http://sourceforge.net>
>> <mailto:avr-llvm-devel@lists._**_sourceforge.net
>> <mailto:avr-llvm-devel@lists.**sourceforge.net<avr...@li...>
>> >>
>> <mailto:avr-llvm-devel@lists.
>> <mailto:avr-llvm-devel@lists.>**____sourceforge.net
>> <http://sourceforge.net>
>> <mailto:avr-llvm-devel@lists._**_sourceforge.net
>> <mailto:avr-llvm-devel@lists.**sourceforge.net<avr...@li...>
>> >>>
>>
>> >
>> https://lists.sourceforge.net/**
>> ____lists/listinfo/avr-llvm-__**devel<https://lists.sourceforge.net/____lists/listinfo/avr-llvm-__devel>
>> <https://lists.sourceforge.**net/__lists/listinfo/avr-llvm-**
>> devel <https://lists.sourceforge.net/__lists/listinfo/avr-llvm-devel>>
>>
>> <https://lists.sourceforge.__**net/lists/listinfo/avr-llvm-__
>> **devel
>> <https://lists.sourceforge.**net/lists/listinfo/avr-llvm-**
>> devel <https://lists.sourceforge.net/lists/listinfo/avr-llvm-devel>>>
>> >
>>
>>
>>
>>
>> ------------------------------**
>> ____--------------------------**--__--__------------------
>>
>>
>> This SF.net email is sponsored by Windows:
>>
>> Build for Windows Store.
>> http://p.sf.net/sfu/windows-__**__dev2dev<http://p.sf.net/sfu/windows-____dev2dev>
>> <http://p.sf.net/sfu/windows-_**_dev2dev<http://p.sf.net/sfu/windows-__dev2dev>
>> >
>> <http://p.sf.net/sfu/windows-_**_dev2dev<http://p.sf.net/sfu/windows-__dev2dev>
>> <http://p.sf.net/sfu/windows-**dev2dev<http://p.sf.net/sfu/windows-dev2dev>
>> >>
>>
>> ______________________________**_____________________
>> avr-llvm-devel mailing list
>> avr-llvm-devel@lists.__sourcef**__orge.net<http://sourcef__orge.net/>
>> <http://sourceforge.net>
>> <mailto:avr-llvm-devel@lists._**_sourceforge.net
>> <mailto:avr-llvm-devel@lists.**sourceforge.net<avr...@li...>
>> >>
>> <mailto:avr-llvm-devel@lists.
>> <mailto:avr-llvm-devel@lists.>**____sourceforge.net
>> <http://sourceforge.net>
>> <mailto:avr-llvm-devel@lists._**_sourceforge.net
>> <mailto:avr-llvm-devel@lists.**sourceforge.net<avr...@li...>
>> >>>
>> https://lists.sourceforge.net/**
>> ____lists/listinfo/avr-llvm-__**devel<https://lists.sourceforge.net/____lists/listinfo/avr-llvm-__devel>
>> <https://lists.sourceforge.**net/__lists/listinfo/avr-llvm-**
>> devel <https://lists.sourceforge.net/__lists/listinfo/avr-llvm-devel>>
>>
>> <https://lists.sourceforge.__**net/lists/listinfo/avr-llvm-__
>> **devel
>> <https://lists.sourceforge.**net/lists/listinfo/avr-llvm-**
>> devel <https://lists.sourceforge.net/lists/listinfo/avr-llvm-devel>>>
>>
>>
>>
>>
>>
>>
>>
>>
>
|