[llvm-commits] [llvm] r141567 - /llvm/trunk/include/llvm/Target/Target.td

Andrew Trick atrick at apple.com
Tue Oct 18 12:24:15 PDT 2011


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;

-Andy




More information about the llvm-commits mailing list