[LLVMdev] ARM CPSR liveness (original) (raw)

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 and 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