[llvm-commits] [llvm] r141567 - /llvm/trunk/include/llvm/Target/Target.td
Jim Grosbach
grosbach at apple.com
Tue Oct 18 12:34:08 PDT 2011
On Oct 18, 2011, at 12:24 PM, Andrew Trick wrote:
>
> On Oct 10, 2011, at 1:56 PM, Jim Grosbach wrote:
>
>>
>> On Oct 10, 2011, at 11:51 AM, Jakob Stoklund Olesen wrote:
>>
>>> Author: stoklund
>>> Date: Mon Oct 10 13:51:33 2011
>>> New Revision: 141567
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=141567&view=rev
>>> Log:
>>> Mark the standard pseudos as isPseudo = 1.
>>>
>>> The difference between isPseudo and isCodeGenOnly is a bit murky, but
>>> isCodeGenOnly should eventually go away. It is used for instructions
>>> that are clones of real instructions with slightly different properties.
>>
>> Generally, isPseudo denotes pseudo-instructions from the perspective of code-gen. isCodeGenOnly denotes pseudos from the perspective of the assembler instruction matcher.
>>
>> Specifically:
>> isPseudo: Does not have encoding information and should be expanded, at the latest, during lowering to MCInst.
>> isCodeGenOnly: Does have encoding information and can go through to the CodeEmitter unchanged, but duplicates a canonical instruction definition's encoding and should be ignored when constructing the assembler match tables.
>>
>> And yes, isCodeGenOnly should eventually go away. It's necessary for now until we convert the duplicate definitions into pseudos for code-gen.
>>
>> -Jim
>
>
> That makes sense. However, I always thought it was a subset relation given the definition of PseudoInst:
>
> class PseudoInst<dag oops, dag iops, InstrItinClass itin, list<dag> pattern>
> ...
> let isCodeGenOnly = 1;
> let isPseudo = 1;
Sorta. It should be sufficient to just mark them as isPseudo, but it just seems odd to have "isCodeGenOnly" not always be true for pseudos. This is a purely pragmatic thing, IIRC, to keep the predicate functions returning consistent results.
-Jim
More information about the llvm-commits
mailing list