[LLVMdev] ARM CPSR liveness

Jim Grosbach grosbach at apple.com
Thu Sep 8 10:37:29 PDT 2011


Hi David,

I'm not too familiar with the LiveVariables pass in particular for how it uses this information, but CPSR definition is handled on ARM instructions in two ways:
a) As an OptionalDef explicit MachineOperand ("cc_out" in the .td files) which is set to "zero_reg" if CPSR is not modified and "CPSR" if CPSR is modified, or
b) as an implicit definition on the instruction class, which you'll see in the .td file as a "let Defs = [CPSR]" on the instruction definition.

Uses of CPSR are handled like (b), with "let Uses = [CPSR]" on the instruction definition in the .td file.

These uses and defs, including <def> and <kill> markers on the operands, should be fairly reliable. If you find cases where they're not, that's bugs we want to fix.

-Jim

On Sep 7, 2011, at 10:45 AM, David Sehr wrote:

> All,
> 
> ARM LLVM afficianados: I'm trying to understand how LiveVariables computes liveness for CPSR.  In particular,
> I would like to tell whether a particular instruction is a use/kill/def for doing some within block liveness checking I need.
> 
> Thanks in advance,
> 
> David
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list