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 11/07/2015 12:50 AM, David Wohlferd wrote:

- Starting with 'modifiers', "=+&" and (reluctantly) "%" seem reasonable
for inline asm.  But both "#*" seem sketchy.
Right. =+& are no-brainer yes, as are the constants 0-9. % is probably OK as well.

#* are similar to !? in that they are inherently tied into the register class preferencing implementation and documenting them would be inadvisable.


- Under 'simple constraints', "mringX" all (more or less) make sense to
me.  But "oV<>sp" are not things I can envision using.
The various offsettables (oV), pre/post increment (<>), address (p) make sense I'm not sure about (s).


- 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).


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?
A few may be md-only, but generally folks have found that getting access to the target's constraints to be useful in asms. I was hesitant to document them initially because it made it much easier for someone to setup a situation where the compiler couldn't generate correct code. Those issues have (mostly) been fixed through the years.


Jeff


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