This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: inline asm and multi-alternative constraints


On 09/11/15 09:57, Richard Earnshaw wrote:
> On 07/11/15 09:23, Segher Boessenkool wrote:
>> On Fri, Nov 06, 2015 at 11:50:40PM -0800, David Wohlferd wrote:
>>>> The same goes for some constraints and almost all output modifiers.
>>>
>>> Are you suggesting more doc changes?  Looking thru the pages you reference:
>>>
>>> - Starting with 'modifiers', "=+&" and (reluctantly) "%" seem reasonable 
>>> for inline asm.  But both "#*" seem sketchy.
>>
>> Output modifiers, not constraint modifiers -- things like "%X0" in
>> the output template.  Many are only useful in the machine description,
>> but some (like that 'X' for rs6000) are vital for asm as well.
>>
> 
> They're not just useful, they're essential on AArch64 and ARM.  They're
> needed, for example, to get the 32/64-bit register sizing correct.
> 

On the other hand, we have %S on ARM which cannot ever be used from
inline assembler: it matches the result of a match_operator rule with
complex internal structure that could never be generated from user code.

> R.
> 
>>> - Under 'simple constraints', "mringX" all (more or less) make sense to 
>>> me.  But "oV<>sp" are not things I can envision using.
>>
>> Some are more useful on some targets than on others, sure.  But these
>> generic constraints are extremely unlikely to ever get a change; this
>> is not true for target constraints.  If we want to delete (or change
>> semantics of) some target constraint, and that constraint is documented,
>> we have to fear the ire of the one or two users of that constraint.
>>
>>> - The 'machine constraints' for i386 (the only machine I know) all seem 
>>> reasonable.  However for platforms that support autoincrement 
>>> (powerpc?), apparently using "m" needs more docs (per 
>>> https://gcc.gnu.org/ml/gcc/2008-03/msg01079.html).
>>
>> I think the manual (the "Simple Constraints" section) does describe it
>> all, but it could be clearer.  The PowerPC 'm' description does a good
>> job of explaining things further (for that target).
>>
>>> Are these the things to which you are referring?  I've always assumed 
>>> the parts that seem obscure here were due to my i386-centric view of the 
>>> world.  Are some of them actually md-only?
>>
>> Almost everything can be used in asm as well, but many constraints etc.
>> are much less useful there.
>>
>>> There are other minor changes I'd make on some of these pages.  But 
>>> mostly they are not worth it unless I'm doing something else there too.  
>>> So if there's something here you think needs changing, let me know and 
>>> I'll take a crack at it.
>>>
>>> Other than that, I'll keep working my way thru the doc issues in the 
>>> inline-asm bugs.  I've done what I can for 10396.
>>
>> Thanks again :-)
>>
>>
>> Segher
>>
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]